Пример #1
0
        public static CanvasEnrichmentOutput GetFromStub(IFileLocation stub)
        {
            var           canvasOutput  = CanvasOutput.GetFromStub(stub);
            IFileLocation binSize       = stub.AppendName(".binsize");
            IFileLocation normalBinned  = stub.AppendName(".binned");
            IFileLocation unsmoothedCnd = stub.AppendName(".unsmoothed.cnd");

            return(new CanvasEnrichmentOutput(canvasOutput, binSize, normalBinned, unsmoothedCnd));
        }
Пример #2
0
        public static CanvasOutput GetFromStub(IFileLocation stub)
        {
            Vcf           cnvVcf = Vcf.GetVcfFromStub(stub);
            IFileLocation coverageAndVariantFrequencies = stub.AppendName(".CoverageAndVariantFrequency.txt");

            IFileLocation variantFrequencies    = stub.AppendName(".VFResults.txt.gz");
            IFileLocation variantFrequenciesBaf = stub.AppendName(".VFResults.baf");
            IFileLocation partitioned           = stub.AppendName(".partitioned");

            return(new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                    variantFrequenciesBaf, partitioned));
        }
Пример #3
0
        public static CanvasEnrichmentOutput GetFromStub(IFileLocation stub, bool includeIntermediateResults)
        {
            var canvasOutput = CanvasOutput.GetFromStub(stub, includeIntermediateResults);

            if (!includeIntermediateResults)
            {
                return(new CanvasEnrichmentOutput(canvasOutput));
            }
            IFileLocation binSize       = stub.AppendName(".binsize");
            IFileLocation normalBinned  = stub.AppendName(".binned");
            IFileLocation unsmoothedCnd = stub.AppendName(".unsmoothed.cnd");

            return(new CanvasEnrichmentOutput(canvasOutput, binSize, normalBinned, unsmoothedCnd));
        }
Пример #4
0
        private CanvasEnrichmentOutput GetCanvasOutput(string sampleId, IDirectoryLocation sampleSandbox)
        {
            var           cnvVcf                        = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));
            var           tempCnvDirectory              = sampleSandbox.GetDirectoryLocation($"TempCNV_{sampleId}");
            var           variantFrequencies            = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz");
            var           variantFrequenciesBaf         = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz.baf");
            IFileLocation coverageAndVariantFrequencies = sampleSandbox.GetFileLocation("CNV.CoverageAndVariantFrequency.txt");
            IFileLocation tempStub                      = tempCnvDirectory.GetFileLocation($"{sampleId}");
            IFileLocation partitioned                   = tempStub.AppendName(".partitioned");
            var           canvasOutput                  = new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                                                           variantFrequenciesBaf, partitioned);
            IFileLocation binSize       = tempStub.AppendName(".binsize");
            IFileLocation normalBinned  = tempStub.AppendName(".normal.binned");
            IFileLocation unsmoothedCnd = tempStub.AppendName(".ratio.binned.cnd");

            if (!binSize.Exists)
            {
                binSize = null;
            }
            return(new CanvasEnrichmentOutput(canvasOutput, binSize, normalBinned, unsmoothedCnd));
        }
Пример #5
0
        private CanvasOutput GetCanvasOutput(string sampleId, IDirectoryLocation sampleSandbox)
        {
            var           cnvVcf                        = new Vcf(sampleSandbox.GetFileLocation("CNV.vcf.gz"));
            var           tempCnvDirectory              = sampleSandbox.GetDirectoryLocation($"TempCNV_{sampleId}");
            var           variantFrequencies            = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz");
            var           variantFrequenciesBaf         = tempCnvDirectory.GetFileLocation($"VFResults{sampleId}.txt.gz.baf");
            IFileLocation coverageAndVariantFrequencies = sampleSandbox.GetFileLocation("CNV.CoverageAndVariantFrequency.txt");
            IFileLocation tempStub                      = tempCnvDirectory.GetFileLocation($"{sampleId}");
            IFileLocation partitioned                   = tempStub.AppendName(".partitioned");

            return(new CanvasOutput(cnvVcf, coverageAndVariantFrequencies, variantFrequencies,
                                    variantFrequenciesBaf, partitioned));
        }
Пример #6
0
 private static IFileLocation GetVfSummaryPathExtension(IFileLocation stub)
 {
     return(stub.AppendName(".txt.gz"));
 }
Пример #7
0
 public static Vcf GetVcfFromStub(IFileLocation stub)
 {
     return new Vcf(stub.AppendName(Extension));
 }
Пример #8
0
 public static IFileLocation GetCoverageBigWig(IFileLocation stub)
 {
     return(stub.AppendName(".coverage.bigWig"));
 }
Пример #9
0
 public static IFileLocation GetCoverageAndVariantFrequencyOutput(IFileLocation stub)
 {
     return(stub.AppendName(".CoverageAndVariantFrequency.txt"));
 }
Пример #10
0
 private IFileLocation GetCnvVcf()
 {
     return(_pedigreefileNameStub.AppendName(".CNV.vcf.gz"));
 }
Пример #11
0
 public static IFileLocation GetVcfOutput(IFileLocation stub)
 {
     return(stub.AppendName(".vcf.gz"));
 }
Пример #12
0
 public static IFileLocation GetVfSummaryBafPath(IFileLocation stub)
 {
     return(stub.AppendName(".VFResults.baf"));
 }
Пример #13
0
 public static BgzfFile GetBAlleleBedGraph(IFileLocation stub)
 {
     return(new BgzfFile(stub.AppendName(".ballele.bedgraph.gz")));
 }
Пример #14
0
 public static BgzfFile GetCopyNumberBedGraph(IFileLocation stub)
 {
     return(new BgzfFile(stub.AppendName(".copynumber.bedgraph.gz")));
 }
Пример #15
0
 public static BgzfFile GetPartitionBedGraph(IFileLocation stub)
 {
     return(new BgzfFile(stub.AppendName(".partition.bedgraph.gz")));
 }
Пример #16
0
 public static IFileLocation GetVfSummaryPath(IFileLocation stub)
 {
     return(GetVfSummaryPathExtension(stub.AppendName(".VFResults")));
 }
Пример #17
0
 public static IFileLocation GetPartitionedPath(IFileLocation stub)
 {
     return(stub.AppendName(".partitioned"));
 }
Пример #18
0
        /// <summary>
        /// Intersect bins with the targeted regions defined in callset.Manifest.
        /// Assumes that the targeted regions don't intersect, the bins are sorted by genomic location and the bins don't intersect.
        /// </summary>
        /// <param name="callset"></param>
        /// <param name="partitionedPath">Output of CanvasPartition. Bins are assumed to be sorted</param>
        /// <returns></returns>
        private IFileLocation IntersectBinsWithTargetedRegions(CanvasCallset callset, IFileLocation partitionedPath)
        {
            if (!partitionedPath.Exists)
            {
                return(partitionedPath);
            }
            var rawPartitionedPath = partitionedPath.AppendName(".raw");

            if (rawPartitionedPath.Exists)
            {
                rawPartitionedPath.Delete();
            }
            partitionedPath.MoveTo(rawPartitionedPath);

            //callset.Manifest
            Dictionary <string, List <NexteraManifest.ManifestRegion> > manifestRegionsByChrom = callset.Manifest.GetManifestRegionsByChromosome();

            // CanvasPartition output file is in the BED format
            //   start: 0-based, inclusive
            //   end: 0-based, exclusive
            // Manifest
            //   start: 1-based, inclusive
            //   end: 1-based, inclusive
            using (GzipReader reader = new GzipReader(rawPartitionedPath.FullName))
                using (GzipWriter writer = new GzipWriter(partitionedPath.FullName))
                {
                    string   currentChrom      = null;
                    int      manifestRegionIdx = 0;
                    string   line;
                    string[] toks;
                    while ((line = reader.ReadLine()) != null)
                    {
                        toks = line.Split('\t');
                        string chrom = toks[0];
                        int    start = int.Parse(toks[1]) + 1; // 1-based, inclusive
                        int    end   = int.Parse(toks[2]);     // 1-based, inclusive
                        if (chrom != currentChrom)
                        {
                            currentChrom      = chrom;
                            manifestRegionIdx = 0;
                        }
                        if (!manifestRegionsByChrom.ContainsKey(currentChrom))
                        {
                            continue;
                        }
                        while (manifestRegionIdx < manifestRegionsByChrom[currentChrom].Count &&
                               manifestRegionsByChrom[currentChrom][manifestRegionIdx].End < start) // |- manifest region -| |- bin -|
                        {
                            manifestRegionIdx++;
                        }
                        if (manifestRegionIdx >= manifestRegionsByChrom[currentChrom].Count ||   // |- last manifest region -| |- bin -|
                            end < manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start) // |- bin -| |- manifest region -|
                        {
                            continue;                                                            // skip bin
                        }

                        // |- bin -|
                        //       |- manifest region -|
                        while (manifestRegionIdx < manifestRegionsByChrom[currentChrom].Count &&
                               end >= manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start)
                        {
                            // calculate intersection
                            int intersectionStart = Math.Max(start, manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start); // 1-based, inclusive
                            int intersectionEnd   = Math.Min(end, manifestRegionsByChrom[currentChrom][manifestRegionIdx].End);     // 1-based, inclusive
                                                                                                                                    // start/end in BED format
                            toks[1] = String.Format("{0}", intersectionStart - 1);                                                  // 0-based, inclusive
                            toks[2] = String.Format("{0}", intersectionEnd);                                                        // 0-based, exclusive

                            // write intersected bin
                            writer.WriteLine(String.Join("\t", toks));

                            manifestRegionIdx++;
                        }
                    }
                }

            return(partitionedPath);
        }
Пример #19
0
 public static IFileLocation GetSingleSamplePedigreeVcfOutput(IFileLocation stub)
 {
     return(stub.AppendName(".vcf.gz"));
 }
Пример #20
0
        /// <summary>
        /// Intersect bins with the targeted regions defined in callset.Manifest.
        /// Assumes that the targeted regions don't intersect, the bins are sorted by genomic location and the bins don't intersect.
        /// </summary>
        /// <param name="callset"></param>
        /// <param name="partitionedPath">Output of CanvasPartition. Bins are assumed to be sorted</param>
        /// <returns></returns>
        private IFileLocation IntersectBinsWithTargetedRegions(CanvasCallset callset, IFileLocation partitionedPath)
        {
            if (!partitionedPath.Exists) { return partitionedPath; }
            var rawPartitionedPath = partitionedPath.AppendName(".raw");
            if (rawPartitionedPath.Exists) { rawPartitionedPath.Delete(); }
            partitionedPath.MoveTo(rawPartitionedPath);

            //callset.Manifest
            Dictionary<string, List<NexteraManifest.ManifestRegion>> manifestRegionsByChrom = callset.Manifest.GetManifestRegionsByChromosome();

            // CanvasPartition output file is in the BED format
            //   start: 0-based, inclusive
            //   end: 0-based, exclusive
            // Manifest
            //   start: 1-based, inclusive
            //   end: 1-based, inclusive
            using (GzipReader reader = new GzipReader(rawPartitionedPath.FullName))
            using (GzipWriter writer = new GzipWriter(partitionedPath.FullName))
            {
                string currentChrom = null;
                int manifestRegionIdx = 0;
                string line;
                string[] toks;
                while ((line = reader.ReadLine()) != null)
                {
                    toks = line.Split('\t');
                    string chrom = toks[0];
                    int start = int.Parse(toks[1]) + 1; // 1-based, inclusive
                    int end = int.Parse(toks[2]); // 1-based, inclusive
                    if (chrom != currentChrom)
                    {
                        currentChrom = chrom;
                        manifestRegionIdx = 0;
                    }
                    if (!manifestRegionsByChrom.ContainsKey(currentChrom)) { continue; }
                    while (manifestRegionIdx < manifestRegionsByChrom[currentChrom].Count
                        && manifestRegionsByChrom[currentChrom][manifestRegionIdx].End < start) // |- manifest region -| |- bin -|
                    {
                        manifestRegionIdx++;
                    }
                    if (manifestRegionIdx >= manifestRegionsByChrom[currentChrom].Count || // |- last manifest region -| |- bin -|
                        end < manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start) // |- bin -| |- manifest region -|
                    {
                        continue; // skip bin
                    }

                    // |- bin -|
                    //       |- manifest region -|
                    while (manifestRegionIdx < manifestRegionsByChrom[currentChrom].Count &&
                        end >= manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start)
                    {
                        // calculate intersection
                        int intersectionStart = Math.Max(start, manifestRegionsByChrom[currentChrom][manifestRegionIdx].Start); // 1-based, inclusive
                        int intersectionEnd = Math.Min(end, manifestRegionsByChrom[currentChrom][manifestRegionIdx].End); // 1-based, inclusive
                                                                                                                          // start/end in BED format
                        toks[1] = String.Format("{0}", intersectionStart - 1); // 0-based, inclusive
                        toks[2] = String.Format("{0}", intersectionEnd); // 0-based, exclusive

                        // write intersected bin
                        writer.WriteLine(String.Join("\t", toks));

                        manifestRegionIdx++;
                    }
                }
            }

            return partitionedPath;
        }