public virtual IVcfFileWriter <CalledAllele> CreatePhasedVcfWriter() { //Write header. We can do this at the beginning, it's just copying from old vcf. List <string> header = AlleleReader.GetAllHeaderLines(_options.VcfPath); var originalFileName = Path.GetFileName(_options.VcfPath); string outputFileName; if (originalFileName != null && originalFileName.EndsWith(".genome.vcf")) { outputFileName = originalFileName.Substring(0, originalFileName.LastIndexOf(".genome.vcf", StringComparison.Ordinal)); outputFileName = outputFileName + ".phased.genome.vcf"; } else if (originalFileName != null && originalFileName.EndsWith(".vcf")) { outputFileName = originalFileName.Substring(0, originalFileName.LastIndexOf(".vcf", StringComparison.Ordinal)); outputFileName = outputFileName + ".phased.vcf"; } else { throw new InvalidDataException(string.Format("Input file is not a VCF file: '{0}'", originalFileName)); } var outFile = Path.Combine(_options.OutputDirectory, outputFileName); var phasingCommandLine = "##Scylla_cmdline=" + _options.QuotedCommandLineArgumentsString; return(new PhasedVcfWriter(outFile, new VcfWriterConfig(_options.VariantCallingParams, _options.VcfWritingParams, _options.BamFilterParams, null, _options.Debug, false), new VcfWriterInputContext(), header, phasingCommandLine)); }
public void GetHeaderTests() { var header = AlleleReader.GetAllHeaderLines(VcfTestFile_1); string firstLine = "##fileformat=VCFv4.1"; string lastLine = "#CHROM\tPOS\tID\tREF\tALT\tQUAL\tFILTER\tINFO\tFORMAT\tmySample"; Assert.Equal(23, header.Count); Assert.Equal(firstLine, header[0]); Assert.Equal(lastLine, header[22]); }
public VcfFilter(PsaraOptions settings) { var vcfIn = settings.VcfPath; var vcfName = Path.GetFileName(vcfIn); _originalHeaderLines = AlleleReader.GetAllHeaderLines(vcfIn); _geometricFilter = new GeometricFilter(settings.GeometricFilterParameters); _psaraOptions = (PsaraOptions)VcfConsumerAppParsingUtils.TryToUpdateWithOriginalOptions(settings, _originalHeaderLines, vcfIn); _outputFile = Path.Combine(settings.OutputDirectory, vcfName.Replace(".vcf", ".filtered.vcf")); _outputFile = _outputFile.Replace(".genome.filtered.vcf", ".filtered.genome.vcf"); }
public static VQRVcfWriter GetVQRVcfFileWriter(VcfConsumerAppOptions options, string outputFilePath) { var vcp = options.VariantCallingParams; var vwp = options.VcfWritingParams; var bfp = options.BamFilterParams; var vcfConfig = new VcfWriterConfig(vcp, vwp, bfp, null, false, false); var headerLines = AlleleReader.GetAllHeaderLines(options.VcfPath); var vqrCommandLineForVcfHeader = "##VQR_cmdline=" + options.QuotedCommandLineArgumentsString; return(new VQRVcfWriter(outputFilePath, vcfConfig, new VcfWriterInputContext(), headerLines, vqrCommandLineForVcfHeader)); }
private void AdjustOptions(ref ScyllaApplicationOptions scyllaOptions) { List <string> vcfHeaderLines = AlleleReader.GetAllHeaderLines(scyllaOptions.VcfPath); //where to find the Pisces options used to make the original vcf var piscesLogDirectory = Path.Combine(Path.GetDirectoryName(scyllaOptions.VcfPath), "PiscesLogs"); if (!Directory.Exists(piscesLogDirectory)) { piscesLogDirectory = Path.GetDirectoryName(scyllaOptions.VcfPath); } //figure out the original settings used, use those as the defaults. VcfConsumerAppParsingUtils.TryToUpdateWithOriginalOptions(scyllaOptions, vcfHeaderLines, piscesLogDirectory); //let anything input on the command line take precedence ApplicationOptionParser.ParseArgs(scyllaOptions.CommandLineArguments); _options.Save(Path.Combine(scyllaOptions.LogFolder, "ScyllaOptions.used.json")); }