moving some code around for better organizations, some fixes to the fields out of SSG
git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@1340 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
parent
4366ce16e0
commit
4033c718d2
|
|
@ -8,9 +8,8 @@ import org.broadinstitute.sting.gatk.walkers.LocusWalker;
|
|||
import org.broadinstitute.sting.utils.BaseUtils;
|
||||
import org.broadinstitute.sting.utils.ListUtils;
|
||||
import org.broadinstitute.sting.utils.cmdLine.Argument;
|
||||
import org.broadinstitute.sting.utils.genotype.Genotype;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.SSGGenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import org.broadinstitute.sting.utils.genotype.*;
|
|||
import java.io.File;
|
||||
|
||||
@ReadFilters(ZeroMappingQualityReadFilter.class)
|
||||
public class SingleSampleGenotyper extends LocusWalker<SSGGenotypeCall, GenotypeWriter> {
|
||||
public class SingleSampleGenotyper extends LocusWalker<org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall, GenotypeWriter> {
|
||||
// Control output settings
|
||||
@Argument(fullName = "variants_out", shortName = "varout", doc = "File to which variants should be written", required = true) public File VARIANTS_FILE;
|
||||
@Argument(fullName = "metrics_out", shortName = "metout", doc = "File to which metrics should be written", required = false) public File METRICS_FILE = new File("/dev/stderr");
|
||||
|
|
@ -123,14 +123,14 @@ public class SingleSampleGenotyper extends LocusWalker<SSGGenotypeCall, Genotype
|
|||
*
|
||||
* @return an AlleleFrequencyEstimate object
|
||||
*/
|
||||
public SSGGenotypeCall map(RefMetaDataTracker tracker, char ref, LocusContext context) {
|
||||
public org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall map(RefMetaDataTracker tracker, char ref, LocusContext context) {
|
||||
rationalizeSampleName(context.getReads().get(0));
|
||||
if (context.getLocation().getStart() == 73) {
|
||||
int stop = 1;
|
||||
}
|
||||
ReadBackedPileup pileup = new ReadBackedPileup(ref, context);
|
||||
GenotypeLikelihoods G = callGenotype(tracker);
|
||||
SSGGenotypeCall geno = (SSGGenotypeCall)G.callGenotypes(tracker, ref, pileup);
|
||||
org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall geno = (org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall)G.callGenotypes(tracker, ref, pileup);
|
||||
if (geno != null) {
|
||||
metricsOut.nextPosition(geno, tracker);
|
||||
}
|
||||
|
|
@ -228,7 +228,7 @@ public class SingleSampleGenotyper extends LocusWalker<SSGGenotypeCall, Genotype
|
|||
*
|
||||
* @return an empty string
|
||||
*/
|
||||
public GenotypeWriter reduce(SSGGenotypeCall call, GenotypeWriter sum) {
|
||||
public GenotypeWriter reduce(org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall call, GenotypeWriter sum) {
|
||||
if (call != null && call.isVariation()) {
|
||||
if (call.getConfidenceScore().getScore() > LOD_THRESHOLD)
|
||||
sum.addGenotypeCall(call);
|
||||
|
|
|
|||
|
|
@ -4,11 +4,8 @@ import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
|||
import org.broadinstitute.sting.gatk.refdata.ReferenceOrderedDatum;
|
||||
import org.broadinstitute.sting.gatk.refdata.rodDbSNP;
|
||||
import org.broadinstitute.sting.gatk.refdata.rodGFF;
|
||||
import org.broadinstitute.sting.utils.Pair;
|
||||
import org.broadinstitute.sting.utils.genotype.confidence.ConfidenceScore;
|
||||
import org.broadinstitute.sting.utils.genotype.Genotype;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.SSGGenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
|
|||
|
|
@ -2,15 +2,21 @@ package org.broadinstitute.sting.playground.utils;
|
|||
|
||||
import net.sf.samtools.SAMRecord;
|
||||
import org.broadinstitute.sting.gatk.refdata.RefMetaDataTracker;
|
||||
import org.broadinstitute.sting.utils.*;
|
||||
import org.broadinstitute.sting.utils.genotype.*;
|
||||
import org.broadinstitute.sting.utils.MathUtils;
|
||||
import org.broadinstitute.sting.utils.ReadBackedPileup;
|
||||
import org.broadinstitute.sting.utils.Utils;
|
||||
import org.broadinstitute.sting.utils.genotype.BasicGenotype;
|
||||
import org.broadinstitute.sting.utils.genotype.Genotype;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeGenerator;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.confidence.BayesianConfidenceScore;
|
||||
|
||||
import static java.lang.Math.log10;
|
||||
import static java.lang.Math.pow;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class GenotypeLikelihoods implements GenotypeGenerator {
|
||||
// precalculate these for performance (pow/log10 is expensive!)
|
||||
|
|
|
|||
|
|
@ -6,12 +6,11 @@ import org.broadinstitute.sting.utils.genotype.confidence.ConfidenceScore;
|
|||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aaron
|
||||
*
|
||||
* Class BasicGenotype
|
||||
*
|
||||
* A basic implementation of the genotype interface
|
||||
* @author aaron
|
||||
* <p/>
|
||||
* Class BasicGenotype
|
||||
* <p/>
|
||||
* A basic implementation of the genotype interface
|
||||
*/
|
||||
public class BasicGenotype implements Genotype {
|
||||
|
||||
|
|
@ -30,7 +29,7 @@ public class BasicGenotype implements Genotype {
|
|||
/**
|
||||
* construct a genotypeLikelihood, given the bases, the confidence score, and the ploidy
|
||||
*
|
||||
* @param loc the location of the genotype
|
||||
* @param loc the location of the genotype
|
||||
* @param bases the bases that make up this genotype
|
||||
* @param ploidy the ploidy of this genotype
|
||||
* @param score the confidence score
|
||||
|
|
@ -49,7 +48,7 @@ public class BasicGenotype implements Genotype {
|
|||
* construct a genotypeLikelihood, given the bases and the confidence score, and assume the
|
||||
* ploidy is 2.
|
||||
*
|
||||
* @param loc the location of the genotype
|
||||
* @param loc the location of the genotype
|
||||
* @param bases the bases that make up this genotype
|
||||
* @param score the confidence score
|
||||
*/
|
||||
|
|
@ -64,6 +63,7 @@ public class BasicGenotype implements Genotype {
|
|||
|
||||
/**
|
||||
* get the confidence score
|
||||
*
|
||||
* @return get the confidence score that we're based on
|
||||
*/
|
||||
public ConfidenceScore getConfidenceScore() {
|
||||
|
|
@ -81,6 +81,7 @@ public class BasicGenotype implements Genotype {
|
|||
|
||||
/**
|
||||
* get the ploidy
|
||||
*
|
||||
* @return the ploidy value
|
||||
*/
|
||||
public int getPloidy() {
|
||||
|
|
@ -117,6 +118,7 @@ public class BasicGenotype implements Genotype {
|
|||
|
||||
/**
|
||||
* get the genotype's location
|
||||
*
|
||||
* @return a GenomeLoc representing the location
|
||||
*/
|
||||
public GenomeLoc getLocation() {
|
||||
|
|
@ -142,7 +144,7 @@ public class BasicGenotype implements Genotype {
|
|||
*/
|
||||
@Override
|
||||
public boolean isVariant(char ref) {
|
||||
String ret = Utils.dupString(ref,this.getPloidy());
|
||||
String ret = Utils.dupString(ref, this.getPloidy());
|
||||
return !this.getBases().equals(ret);
|
||||
}
|
||||
|
||||
|
|
@ -155,4 +157,13 @@ public class BasicGenotype implements Genotype {
|
|||
public Variant toVariant() {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* set the confidence score
|
||||
* @param confidenceScore
|
||||
*/
|
||||
public void setConfidenceScore(ConfidenceScore confidenceScore) {
|
||||
this.mConfidenceScore = confidenceScore;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
package org.broadinstitute.sting.utils.genotype;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aaron
|
||||
*
|
||||
* Class ConfidenceScoreComparator
|
||||
*
|
||||
* A descriptions should go here. Blame aaron if it's missing.
|
||||
*/
|
||||
|
||||
public class ConfidenceScoreComparator implements Comparator<Genotype> {
|
||||
@Override
|
||||
public int compare(Genotype genotype, Genotype genotype1) {
|
||||
return genotype.getConfidenceScore().compareTo(genotype1.getConfidenceScore());
|
||||
}
|
||||
}
|
||||
|
|
@ -22,5 +22,5 @@ public interface GenotypeGenerator {
|
|||
* @param pileup a pileup of the reads, containing the reads and their offsets
|
||||
* @return a GenotypeLocus, containing each of the genotypes and their associated likelihood and posterior prob values
|
||||
*/
|
||||
public GenotypeCall callGenotypes(RefMetaDataTracker tracker, char ref, ReadBackedPileup pileup);
|
||||
public org.broadinstitute.sting.utils.genotype.calls.GenotypeCall callGenotypes(RefMetaDataTracker tracker, char ref, ReadBackedPileup pileup);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ public interface GenotypeWriter {
|
|||
* Add a genotype, given a genotype locus
|
||||
* @param locus the locus to add
|
||||
*/
|
||||
public void addGenotypeCall(GenotypeCall locus);
|
||||
public void addGenotypeCall(org.broadinstitute.sting.utils.genotype.calls.GenotypeCall locus);
|
||||
|
||||
/**
|
||||
* add a no call to the genotype file, if supported.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package org.broadinstitute.sting.utils.genotype;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @author aaron
|
||||
*
|
||||
* Class LexigraphicalComparator
|
||||
*
|
||||
* A descriptions should go here. Blame aaron if it's missing.
|
||||
*/
|
||||
|
||||
public class LexigraphicalComparator implements Comparator<Genotype> {
|
||||
private final Double EPSILON = 1.0e-15;
|
||||
|
||||
@Override
|
||||
public int compare(Genotype genotype, Genotype genotype1) {
|
||||
return genotype.getBases().compareTo(genotype1.getBases());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package org.broadinstitute.sting.utils.genotype;
|
||||
|
||||
import org.broadinstitute.sting.utils.StingException;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
package org.broadinstitute.sting.utils.genotype;
|
||||
package org.broadinstitute.sting.utils.genotype.calls;
|
||||
|
||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||
import org.broadinstitute.sting.utils.genotype.Genotype;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
|
@ -51,19 +51,3 @@ public interface GenotypeCall extends Genotype {
|
|||
public List<Genotype> getLexigraphicallySortedGenotypes();
|
||||
|
||||
}
|
||||
|
||||
class LexigraphicalComparator implements Comparator<Genotype> {
|
||||
private final Double EPSILON = 1.0e-15;
|
||||
|
||||
@Override
|
||||
public int compare(Genotype genotype, Genotype genotype1) {
|
||||
return genotype.getBases().compareTo(genotype1.getBases());
|
||||
}
|
||||
}
|
||||
|
||||
class ConfidenceScoreSort implements Comparator<Genotype> {
|
||||
@Override
|
||||
public int compare(Genotype genotype, Genotype genotype1) {
|
||||
return genotype.getConfidenceScore().compareTo(genotype1.getConfidenceScore());
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +1,20 @@
|
|||
package org.broadinstitute.sting.utils.genotype;
|
||||
package org.broadinstitute.sting.utils.genotype.calls;
|
||||
|
||||
import net.sf.samtools.SAMRecord;
|
||||
import org.broadinstitute.sting.utils.GenomeLoc;
|
||||
import org.broadinstitute.sting.utils.ReadBackedPileup;
|
||||
import org.broadinstitute.sting.utils.Utils;
|
||||
import org.broadinstitute.sting.utils.genotype.confidence.ConfidenceScore;
|
||||
import org.broadinstitute.sting.utils.genotype.BasicGenotype;
|
||||
import org.broadinstitute.sting.utils.genotype.Genotype;
|
||||
import org.broadinstitute.sting.utils.genotype.LexigraphicalComparator;
|
||||
import org.broadinstitute.sting.utils.genotype.Variant;
|
||||
import org.broadinstitute.sting.utils.genotype.confidence.BayesianConfidenceScore;
|
||||
import org.broadinstitute.sting.utils.genotype.confidence.ConfidenceScore;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import net.sf.samtools.SAMRecord;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.TreeMap;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -22,7 +28,7 @@ import net.sf.samtools.SAMRecord;
|
|||
public class SSGGenotypeCall implements GenotypeCall {
|
||||
// TODO: make SSG into a more robust Genotype call interface
|
||||
// our stored genotype locus
|
||||
private final char mRefBase;
|
||||
private final String mRefBase;
|
||||
private final int mPloidy;
|
||||
private final GenomeLoc mLoc;
|
||||
private TreeMap<Double, Genotype> mGenotypes = new TreeMap();
|
||||
|
|
@ -34,7 +40,7 @@ public class SSGGenotypeCall implements GenotypeCall {
|
|||
private double rmsMapping;
|
||||
|
||||
public SSGGenotypeCall(char mRefBase, int mPloidy, GenomeLoc mLoc, List<Genotype> genotypes, double likelihoods[], ReadBackedPileup pileup) {
|
||||
this.mRefBase = mRefBase;
|
||||
this.mRefBase = String.valueOf(mRefBase).toUpperCase();
|
||||
this.mPloidy = mPloidy;
|
||||
this.mLoc = mLoc;
|
||||
if (genotypes.size() < 1) throw new IllegalArgumentException("Genotypes list size must be greater than 0");
|
||||
|
|
@ -56,7 +62,7 @@ public class SSGGenotypeCall implements GenotypeCall {
|
|||
mLikelihoods = likelihoods;
|
||||
index = 0;
|
||||
for (Genotype g : genotypes) {
|
||||
((BasicGenotype)g).mConfidenceScore = new BayesianConfidenceScore(Math.abs(likelihoods[index] - ref));
|
||||
((BasicGenotype)g).setConfidenceScore( new BayesianConfidenceScore(Math.abs(likelihoods[index] - ref)));
|
||||
mGenotypes.put(likelihoods[index],g);
|
||||
index++;
|
||||
}
|
||||
|
|
@ -80,7 +86,7 @@ public class SSGGenotypeCall implements GenotypeCall {
|
|||
*/
|
||||
@Override
|
||||
public char getReferencebase() {
|
||||
return mRefBase;
|
||||
return mRefBase.charAt(0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -90,7 +96,7 @@ public class SSGGenotypeCall implements GenotypeCall {
|
|||
*/
|
||||
@Override
|
||||
public boolean isVariation() {
|
||||
return mGenotypes.get(mGenotypes.descendingKeySet().first()).isVariant(mRefBase);
|
||||
return mGenotypes.get(mGenotypes.descendingKeySet().first()).isVariant(mRefBase.charAt(0));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -3,10 +3,10 @@ package org.broadinstitute.sting.utils.genotype.geli;
|
|||
import edu.mit.broad.picard.genotype.geli.GeliFileWriter;
|
||||
import net.sf.samtools.SAMFileHeader;
|
||||
import net.sf.samtools.SAMSequenceRecord;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeWriter;
|
||||
import org.broadinstitute.sting.utils.genotype.IndelLikelihood;
|
||||
import org.broadinstitute.sting.utils.genotype.LikelihoodObject;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
|
|
@ -101,7 +101,7 @@ public class GeliAdapter implements GenotypeWriter {
|
|||
*/
|
||||
@Override
|
||||
public void addGenotypeCall(GenotypeCall locus) {
|
||||
//To change body of implemented methods use File | Settings | File Templates.
|
||||
// TODO: add code here
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
package org.broadinstitute.sting.utils.genotype.geli;
|
||||
|
||||
import org.broadinstitute.sting.utils.StingException;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeWriter;
|
||||
import org.broadinstitute.sting.utils.genotype.SSGGenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
|
@ -50,8 +50,8 @@ public class GeliTextWriter implements GenotypeWriter {
|
|||
call.getReadDepth(),
|
||||
-1,
|
||||
locus.getBases(),
|
||||
call.getConfidenceScore().getScore(),
|
||||
locus.getConfidenceScore().getScore(),
|
||||
call.getBestRef(),
|
||||
call.getBestNext(),
|
||||
call.getLikelihoods()[0],
|
||||
call.getLikelihoods()[1],
|
||||
call.getLikelihoods()[2],
|
||||
|
|
|
|||
|
|
@ -4,7 +4,11 @@ import net.sf.samtools.SAMSequenceRecord;
|
|||
import net.sf.samtools.util.BinaryCodec;
|
||||
import net.sf.samtools.util.BlockCompressedOutputStream;
|
||||
import org.broadinstitute.sting.utils.GenomeLocParser;
|
||||
import org.broadinstitute.sting.utils.genotype.*;
|
||||
import org.broadinstitute.sting.utils.genotype.GenotypeWriter;
|
||||
import org.broadinstitute.sting.utils.genotype.IndelLikelihood;
|
||||
import org.broadinstitute.sting.utils.genotype.LikelihoodObject;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.GenotypeCall;
|
||||
import org.broadinstitute.sting.utils.genotype.calls.SSGGenotypeCall;
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
|
|
|
|||
Loading…
Reference in New Issue