2009-04-24 12:33:35 +08:00
|
|
|
package org.broadinstitute.sting.gatk.walkers;
|
|
|
|
|
|
|
|
|
|
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
|
|
|
|
import org.broadinstitute.sting.gatk.LocusContext;
|
|
|
|
|
|
2009-05-09 01:28:16 +08:00
|
|
|
import net.sf.samtools.SAMRecord;
|
|
|
|
|
|
2009-04-24 12:33:35 +08:00
|
|
|
/**
|
|
|
|
|
* Created by IntelliJ IDEA.
|
|
|
|
|
* User: ebanks
|
|
|
|
|
* Date: Apr 23, 2009
|
|
|
|
|
* Time: 2:52:28 PM
|
|
|
|
|
* To change this template use File | Settings | File Templates.
|
|
|
|
|
*/
|
2009-06-19 05:03:57 +08:00
|
|
|
@Requires({DataSource.READS,DataSource.REFERENCE, DataSource.REFERENCE_BASES})
|
2009-04-26 10:26:08 +08:00
|
|
|
public abstract class LocusWindowWalker<MapType, ReduceType> extends Walker<MapType, ReduceType> {
|
2009-04-24 12:33:35 +08:00
|
|
|
// Do we actually want to operate on the context?
|
|
|
|
|
public boolean filter(RefMetaDataTracker tracker, String ref, LocusContext context) {
|
2009-05-09 01:28:16 +08:00
|
|
|
return true; // We are keeping all the intervals
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// do we care about reads that are not part of our intervals?
|
|
|
|
|
public boolean actOnNonIntervalReads() {
|
|
|
|
|
return false; // Don't act on them
|
2009-04-24 12:33:35 +08:00
|
|
|
}
|
|
|
|
|
|
2009-05-09 01:28:16 +08:00
|
|
|
// What do we do with the reads that are not part of our intervals?
|
|
|
|
|
public void nonIntervalReadAction(SAMRecord read) { }
|
|
|
|
|
|
2009-04-24 12:33:35 +08:00
|
|
|
// Map over the org.broadinstitute.sting.gatk.LocusContext
|
|
|
|
|
public abstract MapType map(RefMetaDataTracker tracker, String ref, LocusContext context);
|
|
|
|
|
|
|
|
|
|
// Given result of map function
|
|
|
|
|
public abstract ReduceType reduceInit();
|
|
|
|
|
public abstract ReduceType reduce(MapType value, ReduceType sum);
|
|
|
|
|
}
|