public AmpliconBiasFileWriter CreateAmpliconBiasFileWriter(string outputVcfPath) { var writer = new AmpliconBiasFileWriter(outputVcfPath); writer.WriteHeader(); return(writer); }
public void Write() { var outFolder = Path.Combine(TestPaths.LocalScratchDirectory, "AmpliconBiasTestOutput"); var outputFile = Path.Combine(outFolder, "AmpliconBiasWriterTests.txt"); TestHelper.RecreateDirectory(outFolder); //check writing var chromosome = "chr1"; var reference = "A"; var alternate = "T"; var position = 123; var BaseCalledAlleles = new List <CalledAllele>(); var variant = new CalledAllele(AlleleCategory.Snv) { Chromosome = chromosome, ReferenceAllele = reference, AlternateAllele = alternate, ReferencePosition = position, SupportByAmplicon = new Domain.Models.AmpliconCounts { AmpliconNames = new string[] { "Amplicon1", "Amplicon2", "Amplicon3" }, CountsForAmplicon = new int[] { 12, 4, 5 } }, CoverageByAmplicon = new Domain.Models.AmpliconCounts { AmpliconNames = new string[] { "Amplicon1", "Amplicon2", "Amplicon3" }, CountsForAmplicon = new int[] { 120, 4000, 5000 } } }; AmpliconBiasCalculator.Compute(variant, 100, 0.01F); BaseCalledAlleles.Add(variant); var writer = new AmpliconBiasFileWriter(outputFile); writer.WriteHeader(); writer.Write(BaseCalledAlleles); writer.Dispose(); //check it reads in //Chr,Position,Reference,Alternate,Name,freq,obs support, expected support, prob its real, confidence Qscore, bias detected ?, Filter Variant? //chr1,123,A,T,Amplicon1,0.1,12,12,1,100,False,True, //chr1,123,A,T,Amplicon2,0.001,4,400,2.06343002707725E-165,0,True,True, //chr1,123,A,T,Amplicon3,0.001,5,500,1.87406134646469E-206,0,True,True, var biasFileContents = File.ReadAllLines(outputFile); Assert.True(biasFileContents.Length == 4); var header = biasFileContents.First(); var expectedHeader = "Chr,Position,Reference,Alternate,Name,freq,obs support, expected support, prob its real, confidence Qscore, bias detected?, Filter Variant?"; var data = biasFileContents.Skip(1).First(); var expectedData = "chr1,123,A,T,Amplicon1,0.1,12,12,1,100,False,True,"; // Make sure well-formed and populated with the right data Assert.Equal(expectedHeader, header); Assert.Equal(expectedData, data); //check IO Assert.Throws <IOException>(() => writer.WriteHeader()); Assert.Throws <IOException>(() => writer.Write(BaseCalledAlleles)); writer.Dispose(); }
protected override void Initialize() { if (ShouldThrottle) { // one writer per bam foreach (var workRequest in WorkRequests) { var vcfWriter = _factory.CreateVcfWriter(workRequest.OutputFilePath, new VcfWriterInputContext { ReferenceName = Genome.Directory, QuotedCommandLineString = _factory.GetCommandLine(), SampleName = Path.GetFileName(workRequest.BamFilePath), ContigsByChr = Genome.ChromosomeLengths }); if (_writeHeader) { vcfWriter.WriteHeader(); } StrandBiasFileWriter sbBiasFileWriter = null; AmpliconBiasFileWriter abBiasFileWriter = null; if (_factory.Options.OutputBiasFiles) { sbBiasFileWriter = _factory.CreateStrandBiasFileWriter(workRequest.OutputFilePath); abBiasFileWriter = _factory.CreateAmpliconBiasFileWriter(workRequest.OutputFilePath); } // use same writer across all chr. we will never be writing multiple chrs for a given bam at the same time foreach (var chrName in Genome.ChromosomesToProcess) { var writerKey = GetChrOutputPath(workRequest, chrName); _writerByChrLookup[writerKey] = vcfWriter; _sbBiasWriterByChrLookup[writerKey] = sbBiasFileWriter; _abBiasWriterByChrLookup[writerKey] = abBiasFileWriter; } _writers.Add(vcfWriter); if (sbBiasFileWriter != null) { _sbBiasWriters.Add(sbBiasFileWriter); } if (abBiasFileWriter != null) { _abBiasWriters.Add(abBiasFileWriter); } } } else { // one writer per bam and per chr // files will get stitched together later foreach (var workRequest in WorkRequests) { foreach (var chrName in Genome.ChromosomesToProcess) { var outputPath = GetChrOutputPath(workRequest, chrName); var vcfWriter = _factory.CreateVcfWriter(outputPath, new VcfWriterInputContext { ReferenceName = Genome.Directory, QuotedCommandLineString = _factory.GetCommandLine(), SampleName = Path.GetFileName(workRequest.BamFilePath), ContigsByChr = Genome.ChromosomeLengths }); StrandBiasFileWriter sbBiasFileWriter = null; AmpliconBiasFileWriter abBiasFileWriter = null; if (_factory.Options.OutputBiasFiles) { sbBiasFileWriter = _factory.CreateStrandBiasFileWriter(outputPath); abBiasFileWriter = _factory.CreateAmpliconBiasFileWriter(outputPath); } var writerKey = outputPath; _writerByChrLookup[writerKey] = vcfWriter; _sbBiasWriterByChrLookup[writerKey] = sbBiasFileWriter; _abBiasWriterByChrLookup[writerKey] = abBiasFileWriter; _writers.Add(vcfWriter); if (sbBiasFileWriter != null) { _sbBiasWriters.Add(sbBiasFileWriter); } if (abBiasFileWriter != null) { _abBiasWriters.Add(abBiasFileWriter); } } } } }