Exemple #1
0
        public static NexteraManifest GetUpdatedNexteraManifestsWithNewRegions(NexteraManifest manifest, List<RegionStatistics> regionStats)
        {
            NexteraManifest nexteraManifestsWithNewRegions = new NexteraManifest(manifest);

            // create a dictionary for new regions
            Dictionary<string, RegionStatistics> regionStatsLookup = new Dictionary<string, RegionStatistics>();
            foreach (RegionStatistics regionStat in regionStats)
            {
                regionStatsLookup.Add(regionStat.RegionName, regionStat);
        }

            //update the regions
            if (nexteraManifestsWithNewRegions.Regions != null && nexteraManifestsWithNewRegions.Regions.Count > 0)
            {
                var newRegions = new List<NexteraManifest.ManifestRegion>();
                foreach (NexteraManifest.ManifestRegion region in nexteraManifestsWithNewRegions.Regions)
                {
                    NexteraManifest.ManifestRegion tmpRegion = new NexteraManifest.ManifestRegion(region);
                    if (!regionStatsLookup.ContainsKey(region.Name))
                        continue;

                    tmpRegion.Start = regionStatsLookup[region.Name].StartPosition;
                    tmpRegion.End = regionStatsLookup[region.Name].EndPosition;
                    newRegions.Add(tmpRegion);

                }
                nexteraManifestsWithNewRegions.Regions = newRegions;
            }

            return nexteraManifestsWithNewRegions;
        }
Exemple #2
0
        public static void WriteNexteraManifests(NexteraManifest manifest, TextWriter writer)
        {
                writer.WriteLine("#{0}: {1}", "Manifest Type", "Regions");
            writer.WriteLine("#{0}: {1}", "Target Region Count", manifest.Regions.Count);
                writer.WriteLine("#{0}: {1}", "Date", DateTime.Now.ToShortDateString());
                writer.WriteLine("[Header]");
                //writer.WriteLine("Manifest Version\t1.0");
                if (!string.IsNullOrEmpty(manifest.GenomeName))
                {
                    writer.WriteLine("ReferenceGenome\t" + manifest.GenomeName);
                }
                writer.WriteLine("[Regions]");
                List<string> headers = new List<string>();
                if (manifest.ColumnNames != null && manifest.ColumnNames.Length > 0)
                {
                    foreach (int columnNumber in manifest.ColumnNumbers)
                    {
                        if (columnNumber >= 0 && columnNumber < manifest.ColumnNames.Length)
                        {
                            headers.Add(manifest.ColumnNames[columnNumber]);
                        }
                    }
                    writer.WriteLine(string.Join("\t", headers.ToArray()));
                }

                if (manifest.Regions != null && manifest.Regions.Count > 0)
                {
                    foreach (NexteraManifest.ManifestRegion region in manifest.Regions)
                    {
                        NexteraManifest.ManifestRegion tmpRegion = new NexteraManifest.ManifestRegion(region);

                        List<string> line = new List<string>();
                        foreach (string header in headers)
                        {
                            switch (header.ToLowerInvariant())
                            {
                                case "name":
                                    line.Add(tmpRegion.Name);
                                    break;
                                case "chromosome":
                                    line.Add(tmpRegion.Chromosome);
                                    break;
                                case "start":
                                case "amplicon start":
                                    line.Add(tmpRegion.Start.ToString());
                                    break;
                                case "end":
                                case "amplicon end":
                                    line.Add(tmpRegion.End.ToString());
                                    break;
                                case "startprobelength":
                                case "upstream probe length":
                                    line.Add(tmpRegion.StartProbeLength.ToString());
                                    break;
                                case "endprobelength":
                                case "downstream probe length":
                                    line.Add(tmpRegion.EndProbeLength.ToString());
                                    break;
                                case "groupname":
                                case "group name":
                                case "group":
                                case "ip group":
                                    line.Add(tmpRegion.GroupName);
                                    break;
                            }
                        }
                        writer.WriteLine(string.Join("\t", line.ToArray()));
                    }
                }
            }