Changeset 5862


Ignore:
Timestamp:
Mar 11, 2020, 11:05:26 AM (21 months ago)
Author:
Nicklas Nordborg
Message:

References #1231: Add support for sequencing with NovaSeq?

Fixes some minor isses with the "Check data files" functionality. A read string is generated in the same manner as for NextSeq.

The output doesn't contain tile information so we do not display a warning for this.

The 'genseq_check_illumina_dir.pl' script doesn't support cbcl files so this option is disabled.

NOTE! The current picard version has a bug that causes CheckIlluminaDirectory to fail if the read string contains S. A suggested fix has been submitted to the picard developers
https://github.com/broadinstitute/picard/issues/1485
https://github.com/nnordborg/picard/commit/0e87c4c0ed04dda492151c28bb3a6de1be3ec17f

If the fix is not accepted we either have to use our own modified picard version or use an alternate read-string where S is merged with the T:s.

Location:
extensions/net.sf.basedb.reggie/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • extensions/net.sf.basedb.reggie/trunk/resources/analysis/check_data_files.js

    r5531 r5862  
    66  var currentLaneNo = 1;
    77  var expectedCycles = 0;
    8   var expectedTiles = 0;
    9   var expectedTilesAlt = 0;
     8  var expectedTiles = -1;
     9  var expectedTilesAlt = -1;
    1010  var readString
    1111  var seqRun;
     
    4545    }
    4646   
     47    if (seqRun.flowCell.FlowCellType == 'NovaSeq')
     48    {
     49      Doc.element('genseq').disabled = true;
     50    }
     51   
    4752    var omitLanes = Data.json('page-data', 'omit-lanes');
    4853   
     
    109114    Doc.addClass('check', 'disabled');
    110115    currentLaneNo = 1;
    111     expectedTiles = seqRun.flowCell.FlowCellType == 'NextSeq' ? 216 : 96; // 8-lane HiSeq has 96
    112     expectedTilesAlt = seqRun.flowCell.FlowCellType == 'NextSeq' ? 216 : 64; // 2-lane HiSeq has 64
     116    if (seqRun.flowCell.FlowCellType == 'NextSeq')
     117    {
     118      expectedTiles = 216;
     119    }
     120    else if (seqRun.flowCell.FlowCellType == 'HiSeq')
     121    {
     122      expectedTiles = 96; // 8-lane HiSeq has 96
     123      expectedTilesAlt = 64; // 2-lane HiSeq has 64
     124    }
    113125    expectedCycles = 0;
    114126    var reads = readString.match(/\d+(?=T|B|M)/g);
     
    216228      }
    217229     
    218       msg += '; ' + (tiles == null ? 'unknown' : tiles.length) + ' tiles';
    219       if (tiles == null || (tiles.length != expectedTiles && tiles.length != expectedTilesAlt))
    220       {
    221         msg += ' (expected ' + expectedTiles;
    222         if (expectedTiles != expectedTilesAlt) msg += ' or ' + expectedTilesAlt;
    223         msg += ')';
    224         status = 'warning';
     230      if (expectedTiles > 0)
     231      {
     232        msg += '; ' + (tiles == null ? 'unknown' : tiles.length) + ' tiles';
     233        if (tiles == null || (tiles.length != expectedTiles && tiles.length != expectedTilesAlt))
     234        {
     235          msg += ' (expected ' + expectedTiles;
     236          if (expectedTiles != expectedTilesAlt) msg += ' or ' + expectedTilesAlt;
     237          msg += ')';
     238          status = 'warning';
     239        }
    225240      }
    226241    }
     
    260275  check.extractPicardErrorMessage = function(stdout)
    261276  {
     277    App.debug(stdout);
    262278    var lines = stdout.split(/\n/);
    263279    var errorLines = [];
     280    var stackTraceLines = [];
    264281    for (var lineNo = lines.length - 1; lineNo >= 0; lineNo--)
    265282    {
     
    279296      if (!lineIsOk)
    280297      {
    281         var cols = line.split('\t');
    282         if (cols.length > 3 && cols[0]=='INFO')
    283         {
    284           line = cols.slice(2).join('\t');
    285         }
    286         errorLines[errorLines.length] = line;
    287       }
    288     }
     298        if (line.indexOf('at picard.') > 0)
     299        {
     300          // Line from a stacktrace -- we need to revert the order
     301          stackTraceLines[stackTraceLines.length] = line;
     302        }
     303        else
     304        {
     305          var cols = line.split('\t');
     306          if (cols.length > 3 && cols[0]=='INFO')
     307          {
     308            line = cols.slice(2).join('\t');
     309          }
     310          errorLines[errorLines.length] = line;
     311        }
     312      }
     313    }
     314   
     315    if (stackTraceLines.length > 0)
     316    {
     317      errorLines = errorLines.concat(stackTraceLines.reverse());
     318    }
     319   
    289320    return errorLines.join('\n');
    290321  }
  • extensions/net.sf.basedb.reggie/trunk/resources/analysis/check_data_files.jsp

    r5531 r5862  
    112112      <th>Program</th>
    113113      <td colspan="2">
    114         <label><input type="radio" name="program" value="genseq" checked>genseq_check_illumina_dir.pl</label><br>
    115         <label><input type="radio" name="program" value="picard">Picard CheckIlluminaDirectory</label><br>
     114        <label><input type="radio" name="program" value="picard" checked id="picard">Picard CheckIlluminaDirectory</label><br>
     115        <label><input type="radio" name="program" value="genseq" id="genseq">genseq_check_illumina_dir.pl</label> (only for NextSeq or HiSeq data)<br>
    116116      </td>
    117117    </tr>
  • extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/servlet/DemuxMergeServlet.java

    r5808 r5862  
    712712        if (pipeline == Pipeline.RNA_SEQ)
    713713        {
     714          boolean skipLastInBarcode = FlowCell.FLOW_CELL_TYPE_HISEQ.equals(flowCellType);
     715         
    714716          // First value converted to (x-1)T1S
    715717          if (cycles[read1] > 0) readString.append(cycles[read1]-1).append("T1S");
    716718
    717           // Second value converted to (x-1)B1S (HiSeq) or (x)B (NextSeq)
     719          // Second value converted to (x-1)B1S (HiSeq) or (x)B (NextSeq,NovaSeq)
    718720          if (cycles[index1] > 0)
    719721          {
    720             if ("NextSeq".equals(flowCellType))
     722            if (skipLastInBarcode)
     723            {
     724              readString.append(cycles[index1]-1).append("B1S");
     725            }
     726            else
    721727            {
    722728              readString.append(cycles[index1]).append("B");
    723729            }
     730          }
     731          if (index2 > 0 && cycles[index2] > 0)
     732          {
     733            if (skipLastInBarcode)
     734            {
     735              readString.append(cycles[index2]-1).append("B1S");
     736            }
    724737            else
    725738            {
    726               readString.append(cycles[index1]-1).append("B1S");
    727             }
    728           }
    729           if (index2 > 0 && cycles[index2] > 0)
    730           {
    731             if ("NextSeq".equals(flowCellType))
    732             {
    733739              readString.append(cycles[index2]).append("B");
    734             }
    735             else
    736             {
    737               readString.append(cycles[index2]-1).append("B1S");
    738740            }
    739741          }
Note: See TracChangeset for help on using the changeset viewer.