From bd03511e3592a7dd9c0497b2664d557d82486fbd Mon Sep 17 00:00:00 2001 From: Mark DePristo Date: Fri, 11 Jan 2013 10:44:39 -0500 Subject: [PATCH] Updating AlignmentStateMachinePerformance to include some more useful performance assessments --- .../AlignmentStateMachinePerformance.java | 67 ++++++++++++++----- 1 file changed, 49 insertions(+), 18 deletions(-) diff --git a/public/java/test/org/broadinstitute/sting/utils/locusiterator/AlignmentStateMachinePerformance.java b/public/java/test/org/broadinstitute/sting/utils/locusiterator/AlignmentStateMachinePerformance.java index 2a2c07268..0fa55c651 100644 --- a/public/java/test/org/broadinstitute/sting/utils/locusiterator/AlignmentStateMachinePerformance.java +++ b/public/java/test/org/broadinstitute/sting/utils/locusiterator/AlignmentStateMachinePerformance.java @@ -26,6 +26,9 @@ package org.broadinstitute.sting.utils.locusiterator; import net.sf.samtools.SAMFileHeader; +import net.sf.samtools.SAMRecord; +import org.broadinstitute.sting.gatk.contexts.AlignmentContext; +import org.broadinstitute.sting.utils.GenomeLocParser; import org.broadinstitute.sting.utils.QualityUtils; import org.broadinstitute.sting.utils.Utils; import org.broadinstitute.sting.utils.locusiterator.old.SAMRecordAlignmentState; @@ -33,6 +36,8 @@ import org.broadinstitute.sting.utils.sam.ArtificialSAMUtils; import org.broadinstitute.sting.utils.sam.GATKSAMRecord; import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * Caliper microbenchmark of fragment pileup @@ -42,33 +47,59 @@ public class AlignmentStateMachinePerformance { final static int nReads = 10000; final static int locus = 1; + private enum Op { + NEW_STATE, OLD_STATE, NEW_LIBS + } + public static void main(String[] args) { final int rep = Integer.valueOf(args[0]); - final boolean useNew = Boolean.valueOf(args[1]); + final Op op = Op.valueOf(args[1]); SAMFileHeader header = ArtificialSAMUtils.createArtificialSamHeader(1, 1, 1000); + final GenomeLocParser genomeLocParser = new GenomeLocParser(header.getSequenceDictionary()); int nIterations = 0; for ( final String cigar : Arrays.asList("101M", "50M10I40M", "50M10D40M") ) { - for ( int j = 0; j < nReads; j++ ) { - GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "read", 0, locus, readLength); - read.setReadBases(Utils.dupBytes((byte) 'A', readLength)); - final byte[] quals = new byte[readLength]; - for ( int i = 0; i < readLength; i++ ) - quals[i] = (byte)(i % QualityUtils.MAX_QUAL_SCORE); - read.setBaseQualities(quals); - read.setCigarString(cigar); + GATKSAMRecord read = ArtificialSAMUtils.createArtificialRead(header, "read", 0, locus, readLength); + read.setReadBases(Utils.dupBytes((byte) 'A', readLength)); + final byte[] quals = new byte[readLength]; + for ( int i = 0; i < readLength; i++ ) + quals[i] = (byte)(i % QualityUtils.MAX_QUAL_SCORE); + read.setBaseQualities(quals); + read.setCigarString(cigar); + for ( int j = 0; j < nReads; j++ ) { for ( int i = 0; i < rep; i++ ) { - if ( useNew ) { - final AlignmentStateMachine alignmentStateMachine = new AlignmentStateMachine(read); - while ( alignmentStateMachine.stepForwardOnGenome() != null ) { - nIterations++; + switch ( op ) { + case NEW_STATE: + { + final AlignmentStateMachine alignmentStateMachine = new AlignmentStateMachine(read); + while ( alignmentStateMachine.stepForwardOnGenome() != null ) { + nIterations++; + } } - } else { - final SAMRecordAlignmentState alignmentStateMachine = new SAMRecordAlignmentState(read); - while ( alignmentStateMachine.stepForwardOnGenome() != null ) { - alignmentStateMachine.getRead(); - nIterations++; + break; + case OLD_STATE: + { + final SAMRecordAlignmentState alignmentStateMachine = new SAMRecordAlignmentState(read); + while ( alignmentStateMachine.stepForwardOnGenome() != null ) { + alignmentStateMachine.getRead(); + nIterations++; + } + } + break; + case NEW_LIBS: + { + final List reads = Collections.nCopies(30, (SAMRecord)read); + final org.broadinstitute.sting.utils.locusiterator.LocusIteratorByState libs = + new org.broadinstitute.sting.utils.locusiterator.LocusIteratorByState( + new LocusIteratorByStateBaseTest.FakeCloseableIterator(reads.iterator()), + LocusIteratorByStateBaseTest.createTestReadProperties(), + genomeLocParser, + LocusIteratorByStateBaseTest.sampleListForSAMWithoutReadGroups()); + + while ( libs.hasNext() ) { + AlignmentContext context = libs.next(); + } } } }