extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/grid/scripts/novaseq_status.sh

Code
Comments
Other
Rev Date Author Line
6662 01 Apr 22 nicklas 1 #!/bin/bash
6662 01 Apr 22 nicklas 2 ##
6662 01 Apr 22 nicklas 3 ## Pipeline script for checking status of a NovaSeq sequencing run.
6662 01 Apr 22 nicklas 4 ## 
6662 01 Apr 22 nicklas 5 ## Environment variables that should be defined before calling this script
6662 01 Apr 22 nicklas 6 ##  -AllRunArchives: White-space separated list of locations to search for sequencing data
6662 01 Apr 22 nicklas 7 ##  -BARCODE: Barcode of the flow cell that we want to find information for
6662 01 Apr 22 nicklas 8 ## 
6662 01 Apr 22 nicklas 9 ## The output is a number of key-value pairs. All values may not be present.
6662 01 Apr 22 nicklas 10 ##  -RunArchive: The path to the data folder for the flow cell
6662 01 Apr 22 nicklas 11 ##  -Config: Date and time the 'Config' folder was last modified
6662 01 Apr 22 nicklas 12 ##  -RunParameters: Date and time the 'RunParameters.xml' file was last modified
6662 01 Apr 22 nicklas 13 ##  -Read1: Value from <Read1NumberOfCycles> tag in RunParameters.xml
6662 01 Apr 22 nicklas 14 ##  -Read2: Value from <Read2NumberOfCycles> tag in RunParameters.xml
6662 01 Apr 22 nicklas 15 ##  -Index1Read: Value from <IndexRead1NumberOfCycles> tag in RunParameters.xml
6662 01 Apr 22 nicklas 16 ##  -Index2Read: Value from <IndexRead2NumberOfCycles> tag in RunParameters.xml
6662 01 Apr 22 nicklas 17 ##  -NovaSeqSerial: Value from <InstrumentName> tag in RunParameters.xml
6662 01 Apr 22 nicklas 18 ##  -CbclCount: Number of files ending with '.cbcl'
6662 01 Apr 22 nicklas 19 ##  -LaneCount: Value from the LaneCount attribute in FlowcellLayout tag in RunInfo.xml
6662 01 Apr 22 nicklas 20 ##  -SurfaceCount: Value from the SurfaceCount attribute in FlowcellLayout tag in RunInfo.xml
6662 01 Apr 22 nicklas 21 ##  -SwathCount: Value from the SwathCount attribute in FlowcellLayout tag in RunInfo.xml
6662 01 Apr 22 nicklas 22 ##  -TileCount: Value from the TileCount attribute in FlowcellLayout tag in RunInfo.xml
6662 01 Apr 22 nicklas 23 ##  -RTAComplete: Date and time the 'RTAComplete.txt' was last modified
6662 01 Apr 22 nicklas 24
6662 01 Apr 22 nicklas 25
6662 01 Apr 22 nicklas 26 # Format string for file dates/times
6662 01 Apr 22 nicklas 27 DATE_FORMAT="%Y%m%d %H%M%S"
6662 01 Apr 22 nicklas 28
6662 01 Apr 22 nicklas 29 # Try to find a folder inside run-archive that has the barcode in the name
6662 01 Apr 22 nicklas 30 # The folder may not yet exist so a missing folder is not an error
6663 01 Apr 22 nicklas 31 DATA_FOLDER=`find ${AllRunArchives} -maxdepth 2 -iname "*${BARCODE}*" -type d -print 2> /dev/null || true`
6662 01 Apr 22 nicklas 32
6662 01 Apr 22 nicklas 33 # Fail if more than one folder is found
6662 01 Apr 22 nicklas 34 readarray -t lines <<< "${DATA_FOLDER}"
6662 01 Apr 22 nicklas 35 if [ ! ${#lines[@]} -eq 1 ]; then
6662 01 Apr 22 nicklas 36   echo "Found ${#lines[@]} data folders for flow cell ${BARCODE}" 1>&2
6662 01 Apr 22 nicklas 37   echo ${DATA_FOLDER} 1>&2
6662 01 Apr 22 nicklas 38   exit 1
6662 01 Apr 22 nicklas 39 fi
6662 01 Apr 22 nicklas 40
6662 01 Apr 22 nicklas 41 echo RunArchive: ${DATA_FOLDER}
6662 01 Apr 22 nicklas 42 # Config folder is created immediately when starting the NovaSeq
6662 01 Apr 22 nicklas 43 # We use the date of this folder to set the start date of the job
6662 01 Apr 22 nicklas 44 if [ -d "${DATA_FOLDER}/Config" ]; then
6662 01 Apr 22 nicklas 45   echo "Config: `date +"${DATE_FORMAT}" -r "${DATA_FOLDER}/Config"`"
6662 01 Apr 22 nicklas 46 fi
6662 01 Apr 22 nicklas 47
6662 01 Apr 22 nicklas 48 # RunParameters.xml is created after clustering
6662 01 Apr 22 nicklas 49 # We extract information about number of reads and lanes
6662 01 Apr 22 nicklas 50 # and compare that to the number of *.cbcl files we can find
6662 01 Apr 22 nicklas 51 # This gives an estimate of the current sequencing cycle and we can
6662 01 Apr 22 nicklas 52 # use this for progress reporting
6662 01 Apr 22 nicklas 53 RUN_PARAMETERS=${DATA_FOLDER}/RunParameters.xml
6662 01 Apr 22 nicklas 54 if [ -f "${RUN_PARAMETERS}" ]; then
6662 01 Apr 22 nicklas 55   echo "RunParameters: `date +"${DATE_FORMAT}" -r "${RUN_PARAMETERS}"`"
6662 01 Apr 22 nicklas 56   echo "Read1: `grep '<Read1NumberOfCycles>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 57   echo "Read2: `grep '<Read2NumberOfCycles>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 58   echo "Index1Read: `grep '<IndexRead1NumberOfCycles>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 59   echo "Index2Read: `grep '<IndexRead2NumberOfCycles>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 60   echo "NovaSeqSerial: `grep '<InstrumentName>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 61   echo "FlowCellMode: `grep '<FlowCellMode>' "${RUN_PARAMETERS}" | cut -d '>' -f 2 | cut -d '<' -f 1`"
6662 01 Apr 22 nicklas 62 fi
6662 01 Apr 22 nicklas 63
6662 01 Apr 22 nicklas 64 # Count number of BCL files which gives us information about
6662 01 Apr 22 nicklas 65 # the progress of the sequencing
6662 01 Apr 22 nicklas 66 CBCL_FOLDER=${DATA_FOLDER}/Data/Intensities/BaseCalls
6662 01 Apr 22 nicklas 67 if [ -d "${CBCL_FOLDER}" ]; then
6662 01 Apr 22 nicklas 68   echo "CbclCount: `find "${CBCL_FOLDER}" -type f -name *.cbcl | wc -l`"
6662 01 Apr 22 nicklas 69 fi
6662 01 Apr 22 nicklas 70
6662 01 Apr 22 nicklas 71
6662 01 Apr 22 nicklas 72 # RunInfo.xml contains information about the layout of the flowcell
6662 01 Apr 22 nicklas 73 # which we need to be able to compare the number of *.cbcl files
6662 01 Apr 22 nicklas 74 RUN_INFO=${DATA_FOLDER}/RunInfo.xml
6662 01 Apr 22 nicklas 75 if [ -f "${RUN_INFO}" ]; then
6662 01 Apr 22 nicklas 76   echo "LaneCount: `grep -o 'LaneCount="[^"]*"' "${RUN_INFO}" | cut -d '"' -f 2`"
6662 01 Apr 22 nicklas 77   echo "SurfaceCount: `grep -o 'SurfaceCount="[^"]*"' "${RUN_INFO}" | cut -d '"' -f 2`"
6662 01 Apr 22 nicklas 78   echo "SwathCount: `grep -o 'SwathCount="[^"]*"' "${RUN_INFO}" | cut -d '"' -f 2`"
6662 01 Apr 22 nicklas 79   echo "TileCount: `grep -o 'TileCount="[^"]*"' "${RUN_INFO}" | cut -d '"' -f 2`"
6662 01 Apr 22 nicklas 80   echo "TileTags: `grep '<Tile>' "${RUN_INFO}" | wc -l`"
6662 01 Apr 22 nicklas 81   RUN_INFO_DATE=`grep '<Date>' "${RUN_INFO}" | cut -d '>' -f 2 | cut -d '<' -f 1`
6662 01 Apr 22 nicklas 82   echo "RunInfoDate: `date -d "${RUN_INFO_DATE}" +"${DATE_FORMAT}"`"
6662 01 Apr 22 nicklas 83 fi
6662 01 Apr 22 nicklas 84
6662 01 Apr 22 nicklas 85
6662 01 Apr 22 nicklas 86 # RTAComplete.txt is created when everything is complete
6662 01 Apr 22 nicklas 87 # This becomes the end date of the job and should trigger
6662 01 Apr 22 nicklas 88 # Reggie to start file checks and secondary analysis
6662 01 Apr 22 nicklas 89 if [ -f "${DATA_FOLDER}/RTAComplete.txt" ]; then
6662 01 Apr 22 nicklas 90   echo "RTAComplete: `date +"${DATE_FORMAT}" -r "${DATA_FOLDER}/RTAComplete.txt"`"
6662 01 Apr 22 nicklas 91 fi