Corrected bug causing PhaseByTransmission to crash in case of new Genotype.Type
This commit is contained in:
parent
1347beef40
commit
0dc3d20d58
|
|
@ -151,16 +151,16 @@ public class PhaseByTransmission extends RodWalker<HashMap<Byte,Integer>, HashMa
|
||||||
alleles.add(VAR);
|
alleles.add(VAR);
|
||||||
alleles.add(VAR);
|
alleles.add(VAR);
|
||||||
}
|
}
|
||||||
else if(genotype == Genotype.Type.NO_CALL){
|
|
||||||
alleles.add(NO_CALL);
|
|
||||||
alleles.add(NO_CALL);
|
|
||||||
}
|
|
||||||
else{
|
else{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return alleles;
|
return alleles;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isPhasable(Genotype.Type genotype){
|
||||||
|
return genotype == Genotype.Type.HOM_REF || genotype == Genotype.Type.HET || genotype == Genotype.Type.HOM_VAR;
|
||||||
|
}
|
||||||
|
|
||||||
//Create a new Genotype based on information from a single individual
|
//Create a new Genotype based on information from a single individual
|
||||||
//Homozygous genotypes will be set as phased, heterozygous won't be
|
//Homozygous genotypes will be set as phased, heterozygous won't be
|
||||||
private void phaseSingleIndividualAlleles(Genotype.Type genotype, FamilyMember familyMember){
|
private void phaseSingleIndividualAlleles(Genotype.Type genotype, FamilyMember familyMember){
|
||||||
|
|
@ -271,21 +271,21 @@ public class PhaseByTransmission extends RodWalker<HashMap<Byte,Integer>, HashMa
|
||||||
public TrioPhase(Genotype.Type mother, Genotype.Type father, Genotype.Type child){
|
public TrioPhase(Genotype.Type mother, Genotype.Type father, Genotype.Type child){
|
||||||
|
|
||||||
//Take care of cases where one or more family members are no call
|
//Take care of cases where one or more family members are no call
|
||||||
if(child == Genotype.Type.NO_CALL || child == Genotype.Type.UNAVAILABLE){
|
if(!isPhasable(child)){
|
||||||
phaseSingleIndividualAlleles(mother, FamilyMember.MOTHER);
|
phaseSingleIndividualAlleles(mother, FamilyMember.MOTHER);
|
||||||
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
||||||
phaseSingleIndividualAlleles(child, FamilyMember.CHILD);
|
phaseSingleIndividualAlleles(child, FamilyMember.CHILD);
|
||||||
}
|
}
|
||||||
else if(mother == Genotype.Type.NO_CALL || mother == Genotype.Type.UNAVAILABLE){
|
else if(!isPhasable(mother)){
|
||||||
phaseSingleIndividualAlleles(mother, FamilyMember.MOTHER);
|
phaseSingleIndividualAlleles(mother, FamilyMember.MOTHER);
|
||||||
if(father == Genotype.Type.NO_CALL || father == Genotype.Type.UNAVAILABLE){
|
if(!isPhasable(father)){
|
||||||
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
||||||
phaseSingleIndividualAlleles(child, FamilyMember.CHILD);
|
phaseSingleIndividualAlleles(child, FamilyMember.CHILD);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
phasePairAlleles(father, child, FamilyMember.FATHER);
|
phasePairAlleles(father, child, FamilyMember.FATHER);
|
||||||
}
|
}
|
||||||
else if(father == Genotype.Type.NO_CALL || father == Genotype.Type.UNAVAILABLE){
|
else if(!isPhasable(father)){
|
||||||
phasePairAlleles(mother, child, FamilyMember.MOTHER);
|
phasePairAlleles(mother, child, FamilyMember.MOTHER);
|
||||||
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
phaseSingleIndividualAlleles(father, FamilyMember.FATHER);
|
||||||
}
|
}
|
||||||
|
|
@ -327,7 +327,7 @@ public class PhaseByTransmission extends RodWalker<HashMap<Byte,Integer>, HashMa
|
||||||
//Note that only cases where a null/missing/unavailable genotype was passed in the first place can lead to a null/missing/unavailable
|
//Note that only cases where a null/missing/unavailable genotype was passed in the first place can lead to a null/missing/unavailable
|
||||||
//genotype so it is safe to return the original genotype in this case.
|
//genotype so it is safe to return the original genotype in this case.
|
||||||
//In addition, if the phasing confidence is 0, then return the unphased, original genotypes.
|
//In addition, if the phasing confidence is 0, then return the unphased, original genotypes.
|
||||||
if(phredScoreTransmission ==0 || genotype == null || !phasedGenotype.isAvailable() || phasedGenotype.isNoCall())
|
if(phredScoreTransmission ==0 || genotype == null || !isPhasable(genotype.getType()))
|
||||||
return genotype;
|
return genotype;
|
||||||
|
|
||||||
//Add the transmission probability
|
//Add the transmission probability
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue