public override IEnumerable <string> Process() { var conf = CountMappingSummaryBuilderConfiguration.Read(options.InputFile); var data = (from a in conf.SampleFiles select new { Sample = a.Item1, Data = (from b in a.Item2 let map = File.ReadAllLines(b).Where(m => !m.StartsWith("#")).ToDictionary(m => m.StringBefore("\t"), m => m.StringAfter("\t")) let totalreads = map.ContainsKey("TotalReads") ? map["TotalReads"] : map["Total reads"] let mappedreads = map.ContainsKey("MappedReads") ? map["MappedReads"] : map["Mapped reads"] let featurereads = map.ContainsKey("FeatureReads") ? map["FeatureReads"] : map["Feature reads"] select new { TotalReads = totalreads, MappedReads = mappedreads, FeatureReads = featurereads }).ToList() }).ToList(); using (var sw = new StreamWriter(options.OutputFile)) { sw.WriteLine("Sample\t" + (from s in conf.SearchTypes let ss = new[] { s + "_TotalReads", s + "_MappedReads", s + "_FeatureReads" } from sss in ss select sss).Merge("\t")); foreach (var d in data) { sw.Write(d.Sample); foreach (var dd in d.Data) { sw.Write("\t{0}\t{1}\t{2}", dd.TotalReads, dd.MappedReads, dd.FeatureReads); } sw.WriteLine(); } } return(new[] { options.OutputFile }); }
public static CountMappingSummaryBuilderConfiguration Read(string fileName) { var result = new CountMappingSummaryBuilderConfiguration(); var lines = File.ReadAllLines(fileName).Where(m => !string.IsNullOrWhiteSpace(m)).ToArray(); result.SearchTypes = lines[0].Split('\t').Skip(1).ToList(); result.SampleFiles = (from l in lines.Skip(1) let parts = l.Split('\t') let sample = parts[0] let files = parts.Skip(1).ToList() select new Tuple<string, List<string>>(sample, files)).ToList(); return result; }
public static CountMappingSummaryBuilderConfiguration Read(string fileName) { var result = new CountMappingSummaryBuilderConfiguration(); var lines = File.ReadAllLines(fileName).Where(m => !string.IsNullOrWhiteSpace(m)).ToArray(); result.SearchTypes = lines[0].Split('\t').Skip(1).ToList(); result.SampleFiles = (from l in lines.Skip(1) let parts = l.Split('\t') let sample = parts[0] let files = parts.Skip(1).ToList() select new Tuple <string, List <string> >(sample, files)).ToList(); return(result); }