other/pipeline/trunk/novaseq_status.sh

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