public void update( SAMRecord read ) { if ( read.getReadUnmappedFlag() ) { numUnmappedReads++; if ( numUnmappedReads == 1 && lastRead != null ) { processContigChange(); numContigs--; } } else if ( lastRead == null ) { numContigs = 1; currentContigNumStacks = 1; currentStackNumReads = 1; } else if ( ! read.getReferenceIndex().equals(lastRead.getReferenceIndex()) ) { processContigChange(); } else if ( read.getAlignmentStart() != lastRead.getAlignmentStart() ) { processStackChangeWithinContig(read); } else { currentStackNumReads++; } updateReadLength(read.getReadLength()); allSamplesMatch = allSamplesMatch && readHasCorrectSample(read); totalReads++; lastRead = read; }