コード例 #1
0
ファイル: Factory.cs プロジェクト: zhaohongqiangsoliva/Pisces
        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));
        }
コード例 #2
0
        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]);
        }
コード例 #3
0
        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");
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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"));
        }