Updating AlignmentStateMachinePerformance to include some more useful performance assessments

This commit is contained in:
Mark DePristo 2013-01-11 10:44:39 -05:00
parent 9e23c592e6
commit bd03511e35
1 changed files with 49 additions and 18 deletions

View File

@ -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<SAMRecord> reads = Collections.nCopies(30, (SAMRecord)read);
final org.broadinstitute.sting.utils.locusiterator.LocusIteratorByState libs =
new org.broadinstitute.sting.utils.locusiterator.LocusIteratorByState(
new LocusIteratorByStateBaseTest.FakeCloseableIterator<SAMRecord>(reads.iterator()),
LocusIteratorByStateBaseTest.createTestReadProperties(),
genomeLocParser,
LocusIteratorByStateBaseTest.sampleListForSAMWithoutReadGroups());
while ( libs.hasNext() ) {
AlignmentContext context = libs.next();
}
}
}
}