misc cleanup in active region traversal.
This commit is contained in:
parent
76853806b0
commit
7b366d4049
|
|
@ -185,7 +185,7 @@ public class TraverseActiveRegions <M,T> extends TraversalEngine<M,T,ActiveRegio
|
||||||
*/
|
*/
|
||||||
private void writeActiveRegionsToStream( final ActiveRegionWalker<M,T> walker ) {
|
private void writeActiveRegionsToStream( final ActiveRegionWalker<M,T> walker ) {
|
||||||
// Just want to output the active regions to a file, not actually process them
|
// Just want to output the active regions to a file, not actually process them
|
||||||
for( final org.broadinstitute.sting.utils.activeregion.ActiveRegion activeRegion : workQueue ) {
|
for( final ActiveRegion activeRegion : workQueue ) {
|
||||||
if( activeRegion.isActive ) {
|
if( activeRegion.isActive ) {
|
||||||
walker.activeRegionOutStream.println( activeRegion.getLocation() );
|
walker.activeRegionOutStream.println( activeRegion.getLocation() );
|
||||||
}
|
}
|
||||||
|
|
@ -198,7 +198,7 @@ public class TraverseActiveRegions <M,T> extends TraversalEngine<M,T,ActiveRegio
|
||||||
while( workQueue.peek() != null ) {
|
while( workQueue.peek() != null ) {
|
||||||
final GenomeLoc extendedLoc = workQueue.peek().getExtendedLoc();
|
final GenomeLoc extendedLoc = workQueue.peek().getExtendedLoc();
|
||||||
if ( extendedLoc.getStop() < minStart || (currentContig != null && !workQueue.peek().getExtendedLoc().getContig().equals(currentContig))) {
|
if ( extendedLoc.getStop() < minStart || (currentContig != null && !workQueue.peek().getExtendedLoc().getContig().equals(currentContig))) {
|
||||||
final org.broadinstitute.sting.utils.activeregion.ActiveRegion activeRegion = workQueue.remove();
|
final ActiveRegion activeRegion = workQueue.remove();
|
||||||
sum = processActiveRegion( activeRegion, myReads, workQueue, sum, walker );
|
sum = processActiveRegion( activeRegion, myReads, workQueue, sum, walker );
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
|
|
@ -208,15 +208,15 @@ public class TraverseActiveRegions <M,T> extends TraversalEngine<M,T,ActiveRegio
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
private T processActiveRegion( final org.broadinstitute.sting.utils.activeregion.ActiveRegion activeRegion, final LinkedHashSet<GATKSAMRecord> reads, final Queue<org.broadinstitute.sting.utils.activeregion.ActiveRegion> workQueue, final T sum, final ActiveRegionWalker<M,T> walker ) {
|
private T processActiveRegion( final ActiveRegion activeRegion, final LinkedHashSet<GATKSAMRecord> reads, final Queue<ActiveRegion> workQueue, final T sum, final ActiveRegionWalker<M,T> walker ) {
|
||||||
final ArrayList<GATKSAMRecord> placedReads = new ArrayList<GATKSAMRecord>();
|
final ArrayList<GATKSAMRecord> placedReads = new ArrayList<GATKSAMRecord>();
|
||||||
for( final GATKSAMRecord read : reads ) {
|
for( final GATKSAMRecord read : reads ) {
|
||||||
final GenomeLoc readLoc = this.engine.getGenomeLocParser().createGenomeLoc( read );
|
final GenomeLoc readLoc = this.engine.getGenomeLocParser().createGenomeLoc( read );
|
||||||
if( activeRegion.getLocation().overlapsP( readLoc ) ) {
|
if( activeRegion.getLocation().overlapsP( readLoc ) ) {
|
||||||
// The region which the highest amount of overlap is chosen as the primary region for the read (tie breaking is done as right most region)
|
// The region which the highest amount of overlap is chosen as the primary region for the read (tie breaking is done as right most region)
|
||||||
long maxOverlap = activeRegion.getLocation().sizeOfOverlap( readLoc );
|
long maxOverlap = activeRegion.getLocation().sizeOfOverlap( readLoc );
|
||||||
org.broadinstitute.sting.utils.activeregion.ActiveRegion bestRegion = activeRegion;
|
ActiveRegion bestRegion = activeRegion;
|
||||||
for( final org.broadinstitute.sting.utils.activeregion.ActiveRegion otherRegionToTest : workQueue ) {
|
for( final ActiveRegion otherRegionToTest : workQueue ) {
|
||||||
if( otherRegionToTest.getLocation().sizeOfOverlap(readLoc) >= maxOverlap ) {
|
if( otherRegionToTest.getLocation().sizeOfOverlap(readLoc) >= maxOverlap ) {
|
||||||
maxOverlap = otherRegionToTest.getLocation().sizeOfOverlap( readLoc );
|
maxOverlap = otherRegionToTest.getLocation().sizeOfOverlap( readLoc );
|
||||||
bestRegion = otherRegionToTest;
|
bestRegion = otherRegionToTest;
|
||||||
|
|
@ -229,7 +229,7 @@ public class TraverseActiveRegions <M,T> extends TraversalEngine<M,T,ActiveRegio
|
||||||
if( !bestRegion.equals(activeRegion) ) {
|
if( !bestRegion.equals(activeRegion) ) {
|
||||||
activeRegion.add( read );
|
activeRegion.add( read );
|
||||||
}
|
}
|
||||||
for( final org.broadinstitute.sting.utils.activeregion.ActiveRegion otherRegionToTest : workQueue ) {
|
for( final ActiveRegion otherRegionToTest : workQueue ) {
|
||||||
if( !bestRegion.equals(otherRegionToTest) && otherRegionToTest.getExtendedLoc().overlapsP( readLoc ) ) {
|
if( !bestRegion.equals(otherRegionToTest) && otherRegionToTest.getExtendedLoc().overlapsP( readLoc ) ) {
|
||||||
otherRegionToTest.add( read );
|
otherRegionToTest.add( read );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||||
import org.broadinstitute.sting.utils.GenomeLocSortedSet;
|
import org.broadinstitute.sting.utils.GenomeLocSortedSet;
|
||||||
|
import org.broadinstitute.sting.utils.activeregion.ActiveRegion;
|
||||||
import org.broadinstitute.sting.utils.activeregion.ActivityProfileResult;
|
import org.broadinstitute.sting.utils.activeregion.ActivityProfileResult;
|
||||||
import org.broadinstitute.sting.utils.interval.IntervalMergingRule;
|
import org.broadinstitute.sting.utils.interval.IntervalMergingRule;
|
||||||
import org.broadinstitute.sting.utils.interval.IntervalSetRule;
|
import org.broadinstitute.sting.utils.interval.IntervalSetRule;
|
||||||
|
|
@ -77,7 +78,7 @@ public abstract class ActiveRegionWalker<MapType, ReduceType> extends Walker<Map
|
||||||
public abstract ActivityProfileResult isActive(final RefMetaDataTracker tracker, final ReferenceContext ref, final AlignmentContext context);
|
public abstract ActivityProfileResult isActive(final RefMetaDataTracker tracker, final ReferenceContext ref, final AlignmentContext context);
|
||||||
|
|
||||||
// Map over the ActiveRegion
|
// Map over the ActiveRegion
|
||||||
public abstract MapType map(final org.broadinstitute.sting.utils.activeregion.ActiveRegion activeRegion, final RefMetaDataTracker metaDataTracker);
|
public abstract MapType map(final ActiveRegion activeRegion, final RefMetaDataTracker metaDataTracker);
|
||||||
|
|
||||||
public final GenomeLocSortedSet extendIntervals( final GenomeLocSortedSet intervals, final GenomeLocParser genomeLocParser, IndexedFastaSequenceFile reference ) {
|
public final GenomeLocSortedSet extendIntervals( final GenomeLocSortedSet intervals, final GenomeLocParser genomeLocParser, IndexedFastaSequenceFile reference ) {
|
||||||
final int activeRegionExtension = this.getClass().getAnnotation(ActiveRegionExtension.class).extension();
|
final int activeRegionExtension = this.getClass().getAnnotation(ActiveRegionExtension.class).extension();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue