Add profile range contract

This commit is contained in:
Joel Thibault 2012-11-26 13:44:13 -05:00
parent cc550b4145
commit d83ad906ef
2 changed files with 19 additions and 0 deletions

View File

@ -1,5 +1,6 @@
package org.broadinstitute.sting.gatk.walkers; package org.broadinstitute.sting.gatk.walkers;
import com.google.java.contract.Ensures;
import net.sf.picard.reference.IndexedFastaSequenceFile; import net.sf.picard.reference.IndexedFastaSequenceFile;
import org.broad.tribble.Feature; import org.broad.tribble.Feature;
import org.broadinstitute.sting.commandline.Input; import org.broadinstitute.sting.commandline.Input;
@ -75,6 +76,7 @@ public abstract class ActiveRegionWalker<MapType, ReduceType> extends Walker<Map
} }
// Determine probability of active status over the AlignmentContext // Determine probability of active status over the AlignmentContext
@Ensures({"result.isActiveProb >= 0.0", "result.isActiveProb <= 1.0"})
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

View File

@ -1,5 +1,6 @@
package org.broadinstitute.sting.gatk.traversals; package org.broadinstitute.sting.gatk.traversals;
import com.google.java.contract.PreconditionError;
import net.sf.samtools.*; import net.sf.samtools.*;
import org.broadinstitute.sting.utils.interval.IntervalMergingRule; import org.broadinstitute.sting.utils.interval.IntervalMergingRule;
import org.broadinstitute.sting.utils.interval.IntervalUtils; import org.broadinstitute.sting.utils.interval.IntervalUtils;
@ -52,6 +53,10 @@ public class TraverseActiveRegionsTest extends BaseTest {
this.prob = 1.0; this.prob = 1.0;
} }
public DummyActiveRegionWalker(double constProb) {
this.prob = constProb;
}
@Override @Override
public ActivityProfileResult isActive(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) { public ActivityProfileResult isActive(RefMetaDataTracker tracker, ReferenceContext ref, AlignmentContext context) {
isActiveCalls.add(ref.getLocus()); isActiveCalls.add(ref.getLocus());
@ -132,6 +137,18 @@ public class TraverseActiveRegionsTest extends BaseTest {
return activeIntervals; return activeIntervals;
} }
@Test (expectedExceptions = PreconditionError.class)
public void testIsActiveRangeLow () {
DummyActiveRegionWalker walker = new DummyActiveRegionWalker(-0.1);
getActiveRegions(walker, intervals).values();
}
@Test (expectedExceptions = PreconditionError.class)
public void testIsActiveRangeHigh () {
DummyActiveRegionWalker walker = new DummyActiveRegionWalker(1.1);
getActiveRegions(walker, intervals).values();
}
@Test @Test
public void testActiveRegionCoverage() { public void testActiveRegionCoverage() {
DummyActiveRegionWalker walker = new DummyActiveRegionWalker(); DummyActiveRegionWalker walker = new DummyActiveRegionWalker();