now makes confident reference intervals.
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@247 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
6994cca988
commit
675505646d
|
|
@ -6,6 +6,7 @@ import org.broadinstitute.sting.gatk.refdata.rodDbSNP;
|
||||||
import org.broadinstitute.sting.gatk.walkers.LocusWalker;
|
import org.broadinstitute.sting.gatk.walkers.LocusWalker;
|
||||||
import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate;
|
import org.broadinstitute.sting.playground.utils.AlleleFrequencyEstimate;
|
||||||
import org.broadinstitute.sting.utils.cmdLine.Argument;
|
import org.broadinstitute.sting.utils.cmdLine.Argument;
|
||||||
|
import org.broadinstitute.sting.utils.*;
|
||||||
import net.sf.samtools.SAMRecord;
|
import net.sf.samtools.SAMRecord;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -15,7 +16,6 @@ import java.io.PrintStream;
|
||||||
|
|
||||||
public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate, String>
|
public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate, String>
|
||||||
{
|
{
|
||||||
|
|
||||||
@Argument public int N;
|
@Argument public int N;
|
||||||
@Argument public int DOWNSAMPLE;
|
@Argument public int DOWNSAMPLE;
|
||||||
@Argument public String GFF_OUTPUT_FILE;
|
@Argument public String GFF_OUTPUT_FILE;
|
||||||
|
|
@ -25,7 +25,6 @@ public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate,
|
||||||
|
|
||||||
public AlleleFrequencyEstimate map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context)
|
public AlleleFrequencyEstimate map(List<ReferenceOrderedDatum> rodData, char ref, LocusContext context)
|
||||||
{
|
{
|
||||||
// Convert context data into bases and 4-base quals
|
|
||||||
// Convert context data into bases and 4-base quals
|
// Convert context data into bases and 4-base quals
|
||||||
String bases = getBases(context);
|
String bases = getBases(context);
|
||||||
double quals[][] = getOneBaseQuals(context);
|
double quals[][] = getOneBaseQuals(context);
|
||||||
|
|
@ -354,16 +353,67 @@ public class AlleleFrequencyWalker extends LocusWalker<AlleleFrequencyEstimate,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String confident_interval_start = "";
|
private String confident_ref_interval_start = "";
|
||||||
private double confident_interval_min_LOD = 0;
|
private double confident_ref_interval_LOD_sum = 0;
|
||||||
private double confident_interval_max_LOD = 0;
|
private double confident_ref_interval_length = 0;
|
||||||
private boolean inside_confident_interval = false;
|
private boolean inside_confident_ref_interval = false;
|
||||||
|
|
||||||
|
public String reduceInit()
|
||||||
|
{
|
||||||
|
confident_ref_interval_start = "";
|
||||||
|
confident_ref_interval_LOD_sum = 0;
|
||||||
|
confident_ref_interval_length = 0;
|
||||||
|
inside_confident_ref_interval = false;
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
public String reduceInit() { return ""; }
|
|
||||||
public String reduce(AlleleFrequencyEstimate alleleFreq, String sum)
|
public String reduce(AlleleFrequencyEstimate alleleFreq, String sum)
|
||||||
{
|
{
|
||||||
// Print RESULT data for confident calls
|
// Print RESULT data for confident calls
|
||||||
if ((alleleFreq.lodVsRef >= 5) || (alleleFreq.lodVsRef <= -5)) { this.output.print(alleleFreq.asGFFString()); }
|
|
||||||
|
if (inside_confident_ref_interval && (alleleFreq.lodVsRef > -5.0))
|
||||||
|
{
|
||||||
|
// No longer hom-ref, so output a ref line.
|
||||||
|
String[] tokens;
|
||||||
|
tokens = confident_ref_interval_start.split(":");
|
||||||
|
|
||||||
|
String contig = tokens[0];
|
||||||
|
int start = Integer.parseInt(tokens[1]);
|
||||||
|
|
||||||
|
tokens = alleleFreq.location.split(":");
|
||||||
|
int end = Integer.parseInt(tokens[1])-1;
|
||||||
|
|
||||||
|
double lod = confident_ref_interval_LOD_sum / confident_ref_interval_length;
|
||||||
|
|
||||||
|
output.format("%s\tCALLER\tREFERENCE\t%d\t%d\t%f\t.\t.\tLENGTH %d\n",
|
||||||
|
contig,
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
lod,
|
||||||
|
(int)(confident_ref_interval_length));
|
||||||
|
|
||||||
|
inside_confident_ref_interval = false;
|
||||||
|
}
|
||||||
|
else if (inside_confident_ref_interval && (alleleFreq.lodVsRef <= -5.0))
|
||||||
|
{
|
||||||
|
// Still hom-ref so increment the counters.
|
||||||
|
confident_ref_interval_LOD_sum += alleleFreq.lodVsRef;
|
||||||
|
confident_ref_interval_length += 1;
|
||||||
|
}
|
||||||
|
else if ((!inside_confident_ref_interval) && (alleleFreq.lodVsRef > -5.0))
|
||||||
|
{
|
||||||
|
// do nothing.
|
||||||
|
}
|
||||||
|
else if ((!inside_confident_ref_interval) && (alleleFreq.lodVsRef <= -5.0))
|
||||||
|
{
|
||||||
|
// We moved into a hom-ref region so start a new interval.
|
||||||
|
confident_ref_interval_start = alleleFreq.location;
|
||||||
|
confident_ref_interval_LOD_sum = alleleFreq.lodVsRef;
|
||||||
|
confident_ref_interval_length = 1;
|
||||||
|
inside_confident_ref_interval = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alleleFreq.lodVsRef >= 5) { this.output.print(alleleFreq.asGFFString()); }
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue