Merge pull request #1030 from broadinstitute/rhl_incorrect_rbp
Merge if both GT are phased
This commit is contained in:
commit
d8e5d663fd
|
|
@ -363,7 +363,7 @@ class PhasingUtils {
|
||||||
*
|
*
|
||||||
* @param gt1 genotype 1
|
* @param gt1 genotype 1
|
||||||
* @param gt2 genotype 2
|
* @param gt2 genotype 2
|
||||||
* @return true if genotypes have the same number of chromosomes, haplotype, number of attributes
|
* @return true if genotypes have the same number of chromosomes, haplotype, phased, number of attributes
|
||||||
* as chromosomes, and either genotype is homozygous, false otherwise
|
* as chromosomes, and either genotype is homozygous, false otherwise
|
||||||
*/
|
*/
|
||||||
static boolean alleleSegregationIsKnown(Genotype gt1, Genotype gt2) {
|
static boolean alleleSegregationIsKnown(Genotype gt1, Genotype gt2) {
|
||||||
|
|
@ -371,6 +371,10 @@ class PhasingUtils {
|
||||||
if (gt1.getPloidy() != gt2.getPloidy())
|
if (gt1.getPloidy() != gt2.getPloidy())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// If gt1 or gt2 are not phased, then can not be merged.
|
||||||
|
if (!gt1.isPhased() || !gt2.isPhased())
|
||||||
|
return false;
|
||||||
|
|
||||||
// If gt1 or gt2 are homozygous, then could be merged.
|
// If gt1 or gt2 are homozygous, then could be merged.
|
||||||
if (gt1.isHom() || gt2.isHom())
|
if (gt1.isHom() || gt2.isHom())
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
private ReferenceSequenceFile referenceFile;
|
private ReferenceSequenceFile referenceFile;
|
||||||
private Genotype genotype1;
|
private Genotype genotype1;
|
||||||
private Genotype genotype2;
|
private Genotype genotype2;
|
||||||
|
private Genotype genotype2unphased;
|
||||||
private String contig;
|
private String contig;
|
||||||
private List<Allele> alleleList1;
|
private List<Allele> alleleList1;
|
||||||
private List<Allele> alleleList2;
|
private List<Allele> alleleList2;
|
||||||
|
|
@ -93,8 +94,9 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
genomeLocParser = new GenomeLocParser(referenceFile);
|
genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
alleleList1 = Arrays.asList(Allele.create("T", true), Allele.create("C", false));
|
alleleList1 = Arrays.asList(Allele.create("T", true), Allele.create("C", false));
|
||||||
alleleList2 = Arrays.asList(Allele.create("G", true), Allele.create("A", false));
|
alleleList2 = Arrays.asList(Allele.create("G", true), Allele.create("A", false));
|
||||||
genotype1 = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-1", "10-2"}).attribute("PQ", 100.0).alleles(alleleList1).make();
|
genotype1 = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-1", "10-2"}).attribute("PQ", 100.0).alleles(alleleList1).phased(true).make();
|
||||||
genotype2 = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-2", "10-1"}).attribute("PQ", 200.0).alleles(alleleList2).make();
|
genotype2 = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-2", "10-1"}).attribute("PQ", 200.0).alleles(alleleList2).phased(true).make();
|
||||||
|
genotype2unphased = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-2", "10-1"}).attribute("PQ", 200.0).alleles(alleleList2).phased(false).make();
|
||||||
contig = new String("1");
|
contig = new String("1");
|
||||||
vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
||||||
vc2 = new VariantContextBuilder().chr(contig).id("id2").source("GA").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
vc2 = new VariantContextBuilder().chr(contig).id("id2").source("GA").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
|
|
@ -184,6 +186,7 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
public void TestAlleleSegregationIsKnown(){
|
public void TestAlleleSegregationIsKnown(){
|
||||||
Assert.assertTrue(PhasingUtils.alleleSegregationIsKnown(genotype1, genotype2));
|
Assert.assertTrue(PhasingUtils.alleleSegregationIsKnown(genotype1, genotype2));
|
||||||
|
Assert.assertFalse(PhasingUtils.alleleSegregationIsKnown(genotype1, genotype2unphased));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,21 @@ public class ReadBackedPhasingIntegrationTest extends WalkerTest {
|
||||||
+ " -L chr20:332341-802503",
|
+ " -L chr20:332341-802503",
|
||||||
1,
|
1,
|
||||||
Arrays.asList("ac41d1aa9c9a67c07d894f485c29c574"));
|
Arrays.asList("ac41d1aa9c9a67c07d894f485c29c574"));
|
||||||
executeTest("Use trio-phased VCF, adding read-backed phasing infomration in HP tag (as is now standard for RBP) [TEST SEVEN]", spec);
|
executeTest("Use trio-phased VCF, adding read-backed phasing information in HP tag (as is now standard for RBP) [TEST SEVEN]", spec);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDoNotMergeUnphasedSNPs() {
|
||||||
|
WalkerTestSpec spec = new WalkerTestSpec(
|
||||||
|
"-T ReadBackedPhasing" +
|
||||||
|
" -R " + hg19Reference +
|
||||||
|
" -I " + privateTestDir + "S17C1-8.KRAS.bam" +
|
||||||
|
" --variant " + privateTestDir + "S17C1-8_bwa_mutect_filtered.vcf" +
|
||||||
|
" --phaseQualityThresh 20.0 -enableMergeToMNP -maxDistMNP 3 -L 12:25398281-25398284" +
|
||||||
|
" -o %s" +
|
||||||
|
" --no_cmdline_in_header",
|
||||||
|
1,
|
||||||
|
Arrays.asList("59ee67d657ee955477bca94d07014ac3"));
|
||||||
|
executeTest("Do not merge unphased SNPs", spec);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue