public void CallSomaticVariants_LowDepthTest() { List <ChrReference> chrRef = new List <ChrReference>() { new ChrReference() { Name = "chr19", Sequence = "TTGTCAGTGCGCTTTTCCCAACACCACCTGCTCCGACCACCACCAGTTTGTACTCAGTCATTTCACACCAGCAAGAACCTGTTGGAAACCAGTAATCAGGGTTAATTGGCGGCGAAAAAAAAAAAAAAAAAAAAAAAAAA" } }; var options = new ApplicationOptions() { BAMPaths = new[] { _bamSmallS1 }, GenomePaths = new[] { _genomeChr19 }, //IntervalPaths = new[] { _intervalsChr17Chr19 }, DebugMode = true, CallMNVs = true, UseMNVReallocation = false, MaxSizeMNV = 100, OutputgVCFFiles = true, MinimumCoverage = 1000, OutputFolder = UnitTestPaths.TestDataDirectory }; var vcfFilePath = Path.ChangeExtension(options.BAMPaths[0], "genome.vcf"); var factory = new Factory(options); IGenome genomeRef; genomeRef = new MockGenome(chrRef); var bp = new BamProcessor(factory, genomeRef); bp.Execute(1); List <VcfVariant> coverage1000results = VcfReader.GetAllVariantsInFile(vcfFilePath); options = new ApplicationOptions() { BAMPaths = new[] { _bamSmallS1 }, GenomePaths = new[] { _genomeChr19 }, // IntervalPaths = new[] { _intervalsChr17Chr19 }, DebugMode = true, CallMNVs = true, UseMNVReallocation = false, OutputgVCFFiles = true, OutputFolder = UnitTestPaths.TestDataDirectory }; factory = new Factory(options); bp = new BamProcessor(factory, genomeRef); bp.Execute(1); List <VcfVariant> coverage10results = VcfReader.GetAllVariantsInFile(vcfFilePath); // Assert.NotEqual(coverage1000results.Count, coverage10results.Count); // Assert.Equal(coverage1000results.Count, 84); // Assert.Equal(coverage10results.Count, 100); }
public void TestCommandLineGeneration() { var jobManager = new Mock <IJobManager>(); List <IJob> jobs = null; jobManager.Setup(x => x.Process(It.IsAny <List <IJob> >())) .Callback <List <IJob> >(x => jobs = x); List <ChrReference> chrRef = new List <ChrReference>() { new ChrReference() { Name = "chr19", Sequence = "AAA" }, new ChrReference() { Name = "chrX", Sequence = "AAA" }, }; var genome = new MockGenome(chrRef); var files = new[] { @"C:\foo\foo.bam", @"C:\foo\bar.bam" }; var processor = new MyProcessor(genome, jobManager.Object, files, new[] { "-bamFoLder", @"C:\foo", "-maxNumThreads", "5", "-outFOLDER", @"C:\blee" }, @"C:\blee", ""); processor.Execute(0); // should be 1 job for each file x each chromosome Assert.NotNull(jobs); var realJobs = jobs.Cast <ExternalProcessJob>().ToArray(); Assert.Equal(4, realJobs.Length); Assert.Equal(0, realJobs.Count(x => x.CommandLineArguments.Contains("outFOLDER"))); Assert.Equal(0, realJobs.Count(x => x.CommandLineArguments.Contains("bamFoLder"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains(@"-OutFolder C:\blee\chr19"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains(@"-OutFolder C:\blee\chrX"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains(@"-bampaths C:\foo\foo.bam"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains(@"-bampaths C:\foo\bar.bam"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains("-chrfilter chr19"))); Assert.Equal(2, realJobs.Count(x => x.CommandLineArguments.Contains("-chrfilter chrX"))); Assert.Equal(4, realJobs.Count(x => x.CommandLineArguments.Contains("-InsideSubProcess true"))); Assert.Equal(4, realJobs.Count(x => x.CommandLineArguments.Contains("-MaxNumThreads 1"))); }
public void Execute( string bamFilePath, string vcfFilePath, string intervalPath, List <BaseCalledAllele> expectedVariants, List <ChrReference> fakeReferences = null, bool doCheckVariants = true, bool doCheckReferences = false, int expectedNumCoveredPositions = 0, bool threadByChr = false, int doCountsOnly = 0, bool doLog = false, bool callMnvs = true, ApplicationOptions applicationOptions = null) { if (doCheckReferences) { vcfFilePath = Path.ChangeExtension(vcfFilePath, "genome.vcf"); } if (applicationOptions == null) { applicationOptions = new ApplicationOptions { BAMPaths = new[] { bamFilePath }, IntervalPaths = string.IsNullOrEmpty(intervalPath) ? null : new[] { intervalPath }, GenomePaths = new[] { GenomeDirectory }, OutputgVCFFiles = doCheckReferences, OutputBiasFiles = true, DebugMode = doLog, MinimumBaseCallQuality = 20, CallMNVs = callMnvs }; } Logger.TryOpenLog(applicationOptions.LogFolder, ApplicationOptions.LogFileName); var factory = GetFactory(applicationOptions); IGenome genome; if (fakeReferences == null) { genome = factory.GetReferenceGenome(GenomeDirectory); } else { genome = new MockGenome(fakeReferences, GenomeDirectory); } if (threadByChr) { var processor = new BamProcessor(factory, genome); processor.Execute(1); } else { var processor = new GenomeProcessor(factory, genome); processor.Execute(1); } Logger.TryCloseLog(); using (var reader = new VcfReader(vcfFilePath)) { var alleles = reader.GetVariants().ToList(); var variantCalls = alleles.Where(a => a.VariantAlleles[0] != ".").ToList(); if (doCheckVariants) { if (doCountsOnly > 0) { Assert.Equal(variantCalls.Count(), doCountsOnly); } else { CheckVariants(variantCalls, expectedVariants); } } if (doCheckReferences) { var referenceAlleles = alleles.Where(a => a.VariantAlleles[0] == ".").ToList(); // make sure no reference calls at variant positions Assert.Equal(referenceAlleles.Count(), alleles.Count(a => !variantCalls.Select(v => v.ReferencePosition).Contains(a.ReferencePosition))); } } }
public void Execute( string bamFilePath, string vcfFilePath, string intervalPath, List <CalledAllele> expectedVariants, List <ChrReference> fakeReferences = null, bool doCheckVariants = true, bool doCheckReferences = false, int expectedNumCoveredPositions = 0, bool threadByChr = false, int doCountsOnly = 0, bool doLog = false, bool callMnvs = true, PiscesApplicationOptions applicationOptions = null, bool collapse = true) { if (doCheckReferences) { vcfFilePath = Path.ChangeExtension(vcfFilePath, "genome.vcf"); } if (applicationOptions == null) { applicationOptions = new PiscesApplicationOptions { BAMPaths = new[] { bamFilePath }, IntervalPaths = string.IsNullOrEmpty(intervalPath) ? null : new[] { intervalPath }, GenomePaths = new[] { GenomeDirectory }, OutputBiasFiles = true, DebugMode = doLog, CallMNVs = callMnvs, MaxGapBetweenMNV = 10, MaxSizeMNV = 15, Collapse = collapse, BamFilterParameters = new BamFilterParameters() { MinimumBaseCallQuality = 20 }, VariantCallingParameters = new VariantCallingParameters(), VcfWritingParameters = new VcfWritingParameters() { OutputGvcfFile = doCheckReferences, }, CommandLineArguments = new string[] { "some", "cmds" } }; } applicationOptions.OutputDirectory = OutputDirectory; var factory = GetFactory(applicationOptions); IGenome genome; if (fakeReferences == null) { genome = factory.GetReferenceGenome(GenomeDirectory); } else { genome = new MockGenome(fakeReferences, GenomeDirectory); } if (threadByChr) { var processor = new GenomeProcessor(factory, genome, false); processor.Execute(1); } else { var processor = new GenomeProcessor(factory, genome); processor.Execute(1); } var alleles = AlleleReader.GetAllVariantsInFile(vcfFilePath); var variantCalls = alleles.Where(a => !a.IsRefType).ToList(); if (doCheckVariants) { if (doCountsOnly > 0) { Assert.Equal(variantCalls.Count(), doCountsOnly); } else { CheckVariants(variantCalls, expectedVariants); } } if (doCheckReferences) { var referenceAlleles = alleles.Where(a => a.IsRefType).ToList(); // make sure no reference calls at variant positions Assert.Equal(referenceAlleles.Count(), alleles.Count(a => !variantCalls.Select(v => v.ReferencePosition).Contains(a.ReferencePosition))); } }
public void Pisces_LowDepthTest() { List <ChrReference> chrRef = new List <ChrReference>() { new ChrReference() { Name = "chr19", Sequence = "TTGTCAGTGCGCTTTTCCCAACACCACCTGCTCCGACCACCACCAGTTTGTACTCAGTCATTTCACACCAGCAAGAACCTGTTGGAAACCAGTAATCAGGGTTAATTGGCGGCGAAAAAAAAAAAAAAAAAAAAAAAAAA" } }; var options = new PiscesApplicationOptions() { BAMPaths = new[] { _bamSmallS1 }, GenomePaths = new[] { _genomeChr19 }, //IntervalPaths = new[] { _intervalsChr17Chr19 }, DebugMode = true, CallMNVs = true, UseMNVReallocation = false, MaxSizeMNV = 100, OutputDirectory = TestPaths.LocalTestDataDirectory, BamFilterParameters = new Domain.Options.BamFilterParameters() { MinimumBaseCallQuality = 20 }, VariantCallingParameters = new Domain.Options.VariantCallingParameters() { MinimumVariantQScore = 20, MinimumCoverage = 1000, }, VcfWritingParameters = new Domain.Options.VcfWritingParameters() { OutputGvcfFile = true, } }; var vcfFilePath = Path.ChangeExtension(options.BAMPaths[0], "genome.vcf"); var factory = new Factory(options); IGenome genomeRef; genomeRef = new MockGenome(chrRef, _genomeChr19); var bp = new GenomeProcessor(factory, genomeRef); bp.Execute(1); var coverage1000results = AlleleReader.GetAllVariantsInFile(vcfFilePath); options = new PiscesApplicationOptions() { BAMPaths = new[] { _bamSmallS1 }, GenomePaths = new[] { _genomeChr19 }, // IntervalPaths = new[] { _intervalsChr17Chr19 }, DebugMode = true, CallMNVs = true, UseMNVReallocation = false, OutputDirectory = TestPaths.LocalTestDataDirectory, VcfWritingParameters = new Domain.Options.VcfWritingParameters() { OutputGvcfFile = false, } }; factory = new Factory(options); bp = new GenomeProcessor(factory, genomeRef); bp.Execute(1); var coverage10results = AlleleReader.GetAllVariantsInFile(vcfFilePath); }