restructure and add more tests
This commit is contained in:
parent
069398ad46
commit
a7fba5c209
|
|
@ -56,13 +56,15 @@ import htsjdk.variant.variantcontext.*;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.broadinstitute.gatk.utils.GenomeLocParser;
|
import org.broadinstitute.gatk.utils.GenomeLocParser;
|
||||||
import org.broadinstitute.gatk.utils.BaseTest;
|
import org.broadinstitute.gatk.utils.BaseTest;
|
||||||
import org.broadinstitute.gatk.utils.fasta.CachingIndexedFastaSequenceFile;
|
import org.broadinstitute.gatk.utils.fasta.CachingIndexedFastaSequenceFile;
|
||||||
import org.testng.Assert;
|
import org.testng.Assert;
|
||||||
import org.testng.annotations.BeforeClass;
|
import org.testng.annotations.BeforeSuite;
|
||||||
|
import org.testng.annotations.DataProvider;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -70,31 +72,30 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
|
|
||||||
private final int start = 10;
|
private final int start = 10;
|
||||||
private ReferenceSequenceFile referenceFile;
|
private ReferenceSequenceFile referenceFile;
|
||||||
|
private Genotype genotype1;
|
||||||
|
private Genotype genotype2;
|
||||||
|
private String contig;
|
||||||
|
private List<Allele> alleleList1;
|
||||||
|
private List<Allele> alleleList2;
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeSuite
|
||||||
public void init() throws FileNotFoundException {
|
public void init() throws FileNotFoundException {
|
||||||
referenceFile = new CachingIndexedFastaSequenceFile(new File(b37KGReference));
|
referenceFile = new CachingIndexedFastaSequenceFile(new File("/Users/ronlevine/src/human_g1k_v37.fasta"));
|
||||||
|
alleleList1 = Arrays.asList(Allele.create("T", true), Allele.create("C", false));
|
||||||
|
alleleList2 = Arrays.asList(Allele.create("G", true), Allele.create("A", false));
|
||||||
|
genotype1 = new GenotypeBuilder().name("sample1").attribute("HP", new String[]{"10-1", "10-2"}).alleles(alleleList1).make();
|
||||||
|
genotype2 = new GenotypeBuilder().name("sample2").attribute("HP", new String[]{"10-2", "10-1"}).alleles(alleleList2).make();
|
||||||
|
contig = new String("1");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestMatchHaplotypeAllelesKeyHP() {
|
public void TestMatchHaplotypeAllelesKeyHP() {
|
||||||
|
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
|
||||||
alleleList1.add(Allele.create("T", false));
|
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final Genotype genotype1 = new GenotypeBuilder("TC").attribute("HP", new String[]{"10-1", "10-2"}).alleles(alleleList1).make();
|
|
||||||
|
|
||||||
// Attributes in different order
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("G", false));
|
|
||||||
alleleList2.add(Allele.create("A", false));
|
|
||||||
final Genotype genotype2 = new GenotypeBuilder("GA").attribute("HP", new String[]{"10-2", "10-1"}).alleles(alleleList2).make();
|
|
||||||
|
|
||||||
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAlleles = PhasingUtils.matchHaplotypeAlleles(genotype1, genotype2);
|
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAlleles = PhasingUtils.matchHaplotypeAlleles(genotype1, genotype2);
|
||||||
|
|
||||||
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAllelesAnswer = new PhasingUtils.SameHaplotypeAlleles();
|
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAllelesAnswer = new PhasingUtils.SameHaplotypeAlleles();
|
||||||
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("T", false), Allele.create("A", false)));
|
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("T", true), Allele.create("A", false)));
|
||||||
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("C", false), Allele.create("G", false)));
|
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("C", false), Allele.create("G", true)));
|
||||||
sameHaplotypeAllelesAnswer.requiresSwap = true;
|
sameHaplotypeAllelesAnswer.requiresSwap = true;
|
||||||
|
|
||||||
Assert.assertEquals(sameHaplotypeAlleles.hapAlleles, sameHaplotypeAllelesAnswer.hapAlleles);
|
Assert.assertEquals(sameHaplotypeAlleles.hapAlleles, sameHaplotypeAllelesAnswer.hapAlleles);
|
||||||
|
|
@ -104,22 +105,12 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
@Test
|
@Test
|
||||||
public void TestMatchHaplotypeAllelesNoKeyHP() {
|
public void TestMatchHaplotypeAllelesNoKeyHP() {
|
||||||
|
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
Genotype genotype3 = new GenotypeBuilder().name("TC").alleles(alleleList1).make();
|
||||||
alleleList1.add(Allele.create("T", false));
|
Genotype genotype4 = new GenotypeBuilder().name("GA").alleles(alleleList2).make();
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final Genotype genotype1 = new GenotypeBuilder("TC").alleles(alleleList1).make();
|
|
||||||
|
|
||||||
// Attributes in different order
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("G", false));
|
|
||||||
alleleList2.add(Allele.create("A", false));
|
|
||||||
final Genotype genotype2 = new GenotypeBuilder("GA").alleles(alleleList2).make();
|
|
||||||
|
|
||||||
// Must match because the same genotype
|
|
||||||
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAlleles = PhasingUtils.matchHaplotypeAlleles(genotype1, genotype2);
|
|
||||||
|
|
||||||
|
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAlleles = PhasingUtils.matchHaplotypeAlleles(genotype3, genotype4);
|
||||||
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAllelesAnswer = new PhasingUtils.SameHaplotypeAlleles();
|
PhasingUtils.SameHaplotypeAlleles sameHaplotypeAllelesAnswer = new PhasingUtils.SameHaplotypeAlleles();
|
||||||
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("T", false), Allele.create("G", false)));
|
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("T", true), Allele.create("G", true)));
|
||||||
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("C", false), Allele.create("A", false)));
|
sameHaplotypeAllelesAnswer.hapAlleles.add(new PhasingUtils.AlleleOneAndTwo(Allele.create("C", false), Allele.create("A", false)));
|
||||||
Assert.assertEquals(sameHaplotypeAlleles.hapAlleles, sameHaplotypeAllelesAnswer.hapAlleles);
|
Assert.assertEquals(sameHaplotypeAlleles.hapAlleles, sameHaplotypeAllelesAnswer.hapAlleles);
|
||||||
Assert.assertEquals(sameHaplotypeAlleles.requiresSwap, sameHaplotypeAllelesAnswer.requiresSwap);
|
Assert.assertEquals(sameHaplotypeAlleles.requiresSwap, sameHaplotypeAllelesAnswer.requiresSwap);
|
||||||
|
|
@ -127,31 +118,49 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestMergeIntoMNPvalidationTrueCheck() {
|
public void TestMergeIntoMNPvalidationTrueCheck() {
|
||||||
final String contig = new String("1");
|
// TODO - genotypes must have the same sample name
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
|
||||||
alleleList1.add(Allele.create("T", true));
|
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("A", true));
|
|
||||||
alleleList2.add(Allele.create("C", false));
|
|
||||||
final VariantContext vc1 = new VariantContextBuilder("TC", contig, start, start, alleleList1).make();
|
|
||||||
final VariantContext vc2 = new VariantContextBuilder("AC", contig, start+1, start+1, alleleList2).make();
|
|
||||||
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).make();
|
||||||
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).make();
|
||||||
|
|
||||||
Assert.assertTrue(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
Assert.assertTrue(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestMergeIntoMNPvalidationCheckLocBefore() {
|
public void TestMergeIntoMNPvalidationCheckLocBefore() {
|
||||||
final String contig = new String("1");
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start+1).stop(start+1).alleles(alleleList1).make();
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start).stop(start).alleles(alleleList2).make();
|
||||||
alleleList1.add(Allele.create("T", true));
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
alleleList2.add(Allele.create("A", true));
|
}
|
||||||
alleleList2.add(Allele.create("C", false));
|
|
||||||
final VariantContext vc1 = new VariantContextBuilder("TC", contig, start+1, start+1, alleleList1).make();
|
@Test
|
||||||
final VariantContext vc2 = new VariantContextBuilder("AC", contig, start, start, alleleList2).make();
|
public void TestMergeIntoMNPvalidationFiltered() {
|
||||||
|
List<String> filters = Arrays.asList("filter");
|
||||||
|
Genotype genotype = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-1", "10-2"}).alleles(alleleList1).filters(filters).make();
|
||||||
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype).make();
|
||||||
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
|
|
||||||
|
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void TestMergeIntoMNPvalidationNoCall() {
|
||||||
|
List<Allele> alleleList = Arrays.asList(Allele.create("T", true), Allele.create(".", false));
|
||||||
|
Genotype genotype = new GenotypeBuilder().name("sample").attribute("HP", new String[]{"10-1", "10-2"}).alleles(alleleList).make();
|
||||||
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype).make();
|
||||||
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
|
|
||||||
|
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void TestMergeIntoMNPvalidationDiffSampleNames() {
|
||||||
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
||||||
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
|
|
||||||
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
|
|
@ -159,16 +168,8 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestMergeIntoMNPvalidationDiffContigs() {
|
public void TestMergeIntoMNPvalidationDiffContigs() {
|
||||||
final String contig1 = new String("1");
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
||||||
final String contig2 = new String("2");
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
|
||||||
alleleList1.add(Allele.create("T", true));
|
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("A", true));
|
|
||||||
alleleList2.add(Allele.create("C", false));
|
|
||||||
final VariantContext vc1 = new VariantContextBuilder("TC", contig1, start+1, start+1, alleleList1).make();
|
|
||||||
final VariantContext vc2 = new VariantContextBuilder("AC", contig2, start, start, alleleList2).make();
|
|
||||||
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
GenomeLocParser genomeLocParser = new GenomeLocParser(referenceFile);
|
||||||
|
|
||||||
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
Assert.assertFalse(PhasingUtils.mergeIntoMNPvalidationCheck(genomeLocParser, vc1, vc2));
|
||||||
|
|
@ -182,40 +183,23 @@ public class PhasingUtilsUnitTest extends BaseTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestMergeVariantContextAttributes() {
|
public void TestMergeVariantContextAttributes() {
|
||||||
final String contig = new String("1");
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
alleleList1.add(Allele.create("T", true));
|
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("A", true));
|
|
||||||
alleleList2.add(Allele.create("C", false));
|
|
||||||
final VariantContext vc1 = new VariantContextBuilder("TC", contig, start, start, alleleList1).make();
|
|
||||||
final VariantContext vc2 = new VariantContextBuilder("AC", contig, start+1, start+1, alleleList2).make();
|
|
||||||
|
|
||||||
Assert.assertEquals(0, PhasingUtils.mergeVariantContextAttributes(vc1, vc2).size());
|
Assert.assertEquals(0, PhasingUtils.mergeVariantContextAttributes(vc1, vc2).size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestAllSamplesAreMergeableDiffSampleNames() {
|
public void TestAllSamplesAreMergeableDiffSampleNames() {
|
||||||
final String contig = new String("1");
|
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(genotype1).make();
|
||||||
final List<Allele> alleleList1 = new ArrayList<>();
|
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("id2").source("AC").start(start+1).stop(start+1).alleles(alleleList2).genotypes(genotype2).make();
|
||||||
alleleList1.add(Allele.create("T", true));
|
|
||||||
alleleList1.add(Allele.create("C", false));
|
|
||||||
final List<Allele> alleleList2 = new ArrayList<>();
|
|
||||||
alleleList2.add(Allele.create("A", true));
|
|
||||||
alleleList2.add(Allele.create("C", false));
|
|
||||||
|
|
||||||
final Genotype g1 = new GenotypeBuilder().name("sample1").alleles(alleleList1).make();
|
Assert.assertFalse(PhasingUtils.allSamplesAreMergeable(vc1, vc2));
|
||||||
final VariantContext vc1 = new VariantContextBuilder().chr(contig).id("id1").source("TC").start(start).stop(start).alleles(alleleList1).genotypes(g1).make();
|
|
||||||
Genotype g2 = new GenotypeBuilder().name("sample2").alleles(alleleList2).make();
|
|
||||||
final VariantContext vc2 = new VariantContextBuilder().chr(contig).id("i21").source("AC").start(start).stop(start).alleles(alleleList2).genotypes(g2).make();
|
|
||||||
|
|
||||||
Assert.assertFalse( PhasingUtils.allSamplesAreMergeable(vc1, vc2));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void TestAlleleSegregationIsKnown(){
|
public void TestAlleleSegregationIsKnown(){
|
||||||
|
Assert.assertTrue(PhasingUtils.alleleSegregationIsKnown(genotype1, genotype2));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue