Pool caller improvements: a) Log ref sample depth at every called site (will add more ref-related annotations later), b) Make -glm POOLBOTH work in case we want to genotype snp's and indels together, c) indel bug fix (pool and non-pool): prevent a bad GenomeLoc to be formed if we're running GGA and incoming alleles are larger than ref window size (typically 400 bb)
This commit is contained in:
parent
9346c5b37a
commit
5a9a37ba01
|
|
@ -186,7 +186,10 @@ public class IndelGenotypeLikelihoodsCalculationModel extends GenotypeLikelihood
|
||||||
final int hsize = ref.getWindow().size() - Math.abs(eventLength) - 1;
|
final int hsize = ref.getWindow().size() - Math.abs(eventLength) - 1;
|
||||||
final int numPrefBases = ref.getLocus().getStart() - ref.getWindow().getStart() + 1;
|
final int numPrefBases = ref.getLocus().getStart() - ref.getWindow().getStart() + 1;
|
||||||
|
|
||||||
haplotypeMap.putAll(Haplotype.makeHaplotypeListFromAlleles(alleleList, loc.getStart(),
|
if (hsize <= 0) // protect against event lengths larger than ref window sizes
|
||||||
|
haplotypeMap.clear();
|
||||||
|
else
|
||||||
|
haplotypeMap.putAll(Haplotype.makeHaplotypeListFromAlleles(alleleList, loc.getStart(),
|
||||||
ref, hsize, numPrefBases));
|
ref, hsize, numPrefBases));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -367,6 +367,8 @@ public class UnifiedGenotyperEngine {
|
||||||
// *** note that calculating strand bias involves overwriting data structures, so we do that last
|
// *** note that calculating strand bias involves overwriting data structures, so we do that last
|
||||||
final HashMap<String, Object> attributes = new HashMap<String, Object>();
|
final HashMap<String, Object> attributes = new HashMap<String, Object>();
|
||||||
|
|
||||||
|
// inherit attributed from input vc
|
||||||
|
attributes.putAll(vc.getAttributes());
|
||||||
// if the site was downsampled, record that fact
|
// if the site was downsampled, record that fact
|
||||||
if ( !limitedContext && rawContext.hasPileupBeenDownsampled() )
|
if ( !limitedContext && rawContext.hasPileupBeenDownsampled() )
|
||||||
attributes.put(VCFConstants.DOWNSAMPLED_KEY, true);
|
attributes.put(VCFConstants.DOWNSAMPLED_KEY, true);
|
||||||
|
|
@ -581,6 +583,9 @@ public class UnifiedGenotyperEngine {
|
||||||
final AlignmentContext rawContext) {
|
final AlignmentContext rawContext) {
|
||||||
|
|
||||||
final List<GenotypeLikelihoodsCalculationModel.Model> models = new ArrayList<GenotypeLikelihoodsCalculationModel.Model>(2);
|
final List<GenotypeLikelihoodsCalculationModel.Model> models = new ArrayList<GenotypeLikelihoodsCalculationModel.Model>(2);
|
||||||
|
String modelPrefix = "";
|
||||||
|
if ( UAC.GLmodel.name().toUpperCase().contains("BOTH") )
|
||||||
|
modelPrefix = UAC.GLmodel.name().toUpperCase().replaceAll("BOTH","");
|
||||||
|
|
||||||
// if we're genotyping given alleles and we have a requested SNP at this position, do SNP
|
// if we're genotyping given alleles and we have a requested SNP at this position, do SNP
|
||||||
if ( UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ) {
|
if ( UAC.GenotypingMode == GenotypeLikelihoodsCalculationModel.GENOTYPING_MODE.GENOTYPE_GIVEN_ALLELES ) {
|
||||||
|
|
@ -590,24 +595,24 @@ public class UnifiedGenotyperEngine {
|
||||||
|
|
||||||
if ( vcInput.isSNP() ) {
|
if ( vcInput.isSNP() ) {
|
||||||
// ignore SNPs if the user chose INDEL mode only
|
// ignore SNPs if the user chose INDEL mode only
|
||||||
if ( UAC.GLmodel == GenotypeLikelihoodsCalculationModel.Model.BOTH )
|
if ( UAC.GLmodel.name().toUpperCase().contains("BOTH") )
|
||||||
models.add(GenotypeLikelihoodsCalculationModel.Model.SNP);
|
models.add(GenotypeLikelihoodsCalculationModel.Model.valueOf(modelPrefix+"SNP"));
|
||||||
else if ( UAC.GLmodel.name().toUpperCase().contains("SNP") )
|
else if ( UAC.GLmodel.name().toUpperCase().contains("SNP") )
|
||||||
models.add(UAC.GLmodel);
|
models.add(UAC.GLmodel);
|
||||||
}
|
}
|
||||||
else if ( vcInput.isIndel() || vcInput.isMixed() ) {
|
else if ( vcInput.isIndel() || vcInput.isMixed() ) {
|
||||||
// ignore INDELs if the user chose SNP mode only
|
// ignore INDELs if the user chose SNP mode only
|
||||||
if ( UAC.GLmodel == GenotypeLikelihoodsCalculationModel.Model.BOTH )
|
if ( UAC.GLmodel.name().toUpperCase().contains("BOTH") )
|
||||||
models.add(GenotypeLikelihoodsCalculationModel.Model.INDEL);
|
models.add(GenotypeLikelihoodsCalculationModel.Model.valueOf(modelPrefix+"INDEL"));
|
||||||
else if (UAC.GLmodel.name().toUpperCase().contains("INDEL"))
|
else if (UAC.GLmodel.name().toUpperCase().contains("INDEL"))
|
||||||
models.add(UAC.GLmodel);
|
models.add(UAC.GLmodel);
|
||||||
}
|
}
|
||||||
// No support for other types yet
|
// No support for other types yet
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if ( UAC.GLmodel == GenotypeLikelihoodsCalculationModel.Model.BOTH ) {
|
if ( UAC.GLmodel.name().toUpperCase().contains("BOTH") ) {
|
||||||
models.add(GenotypeLikelihoodsCalculationModel.Model.SNP);
|
models.add(GenotypeLikelihoodsCalculationModel.Model.valueOf(modelPrefix+"SNP"));
|
||||||
models.add(GenotypeLikelihoodsCalculationModel.Model.INDEL);
|
models.add(GenotypeLikelihoodsCalculationModel.Model.valueOf(modelPrefix+"INDEL"));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
models.add(UAC.GLmodel);
|
models.add(UAC.GLmodel);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue