Пример #1
0
        public override IEnumerable <string> Process()
        {
            var counts = new MappedCountItemList();

            var features = counts.Parse(options, m => SmallRNAUtils.SortNames(m));

            var featureCounts = (from feature in features
                                 let count = MathNet.Numerics.Statistics.Statistics.Median(from c in counts
                                                                                           select c.DisplayNameGroupMap.ContainsKey(feature) ? c.DisplayNameGroupMap[feature].GetEstimatedCount() : 0)
                                             select new { Feature = feature, Count = count }).OrderByDescending(m => m.Count).ToList();

            using (StreamWriter sw = new StreamWriter(options.OutputFile))
            {
                sw.Write("Feature\tLocation");

                var hassequence = !string.IsNullOrEmpty(counts.First().DisplayNameGroupMap.First().Value.First().Sequence);

                if (hassequence)
                {
                    sw.Write("\tSequence");
                }

                sw.WriteLine("\t" + (from c in counts select c.ItemName).Merge("\t"));

                foreach (var fc in featureCounts)
                {
                    var feature = fc.Feature;
                    var first   = counts.FirstOrDefault(m => m.DisplayNameGroupMap.ContainsKey(feature));
                    var item    = first.DisplayNameGroupMap[feature];
                    sw.Write(feature + "\t" + item.DisplayLocations);
                    if (hassequence)
                    {
                        sw.Write("\t" + item.DisplaySequence);
                    }
                    for (int i = 0; i < counts.Count; i++)
                    {
                        if (counts[i].DisplayNameGroupMap.ContainsKey(feature))
                        {
                            sw.Write("\t{0:0.##}", counts[i].DisplayNameGroupMap[feature].GetEstimatedCount());
                        }
                        else
                        {
                            sw.Write("\t0");
                        }
                    }
                    sw.WriteLine();
                }
            }

            var result = new[] { Path.GetFullPath(options.OutputFile) }.ToList();

            var infofile = Path.ChangeExtension(options.OutputFile, ".info");

            if (CountUtils.WriteInfoSummaryFile(infofile, options.GetCountFiles().ToDictionary(m => m.Name, m => m.File)))
            {
                result.Add(infofile);
            }

            return(new string[] { Path.GetFullPath(options.OutputFile) });
        }
Пример #2
0
        protected virtual void FilterAlignedItems(List <SAMAlignedItem> result)
        {
            SmallRNAUtils.InitializeSmallRnaNTA(result);

            result.ForEach(l =>
            {
                foreach (var loc in l.Locations)
                {
                    if (loc.Seqname.StartsWith("chr"))
                    {
                        loc.Seqname = loc.Seqname.StringAfter("chr");
                    }
                }
            });
        }