public List <MappedItemGroup> ReadFromFile(string fileName) { var result = new List <MappedItemGroup>(); XElement root = XElement.Load(fileName); //Console.WriteLine("read locations ..."); Dictionary <string, SAMAlignedLocation> qmmap = root.ToSAMAlignedItems().ToSAMAlignedLocationMap(); //Console.WriteLine("read mapped items ..."); foreach (XElement groupEle in root.Element("subjectResult").Elements("subjectGroup")) { var group = new MappedItemGroup(); result.Add(group); foreach (XElement mirnaEle in groupEle.Elements("subject")) { var mirna = new MappedItem(); group.Add(mirna); mirna.Name = mirnaEle.Attribute("name").Value; foreach (XElement regionEle in mirnaEle.Elements("region")) { var region = new SequenceRegionMapped(); mirna.MappedRegions.Add(region); region.Region.Name = mirna.Name; region.Region.ParseLocation(regionEle); if (regionEle.Attribute("sequence") != null) { region.Region.Sequence = regionEle.Attribute("sequence").Value; } if (regionEle.Attribute("query_count_before_filter") != null) { region.QueryCountBeforeFilter = int.Parse(regionEle.Attribute("query_count_before_filter").Value); } if (regionEle.Attribute("pvalue") != null) { region.PValue = double.Parse(regionEle.Attribute("pvalue").Value); } foreach (XElement queryEle in regionEle.Elements("query")) { string qname = queryEle.Attribute("qname").Value; string loc = queryEle.Attribute("loc").Value; string key = SAMAlignedLocation.GetKey(qname, loc); SAMAlignedLocation query = qmmap[key]; region.AlignedLocations.Add(query); query.Features.Add(region.Region); } } } } qmmap.Clear(); return(result); }
public List <MappedMirnaGroup> ReadFromFile(string fileName) { List <MappedMirnaGroup> result = new List <MappedMirnaGroup>(); XElement root = XElement.Load(fileName); var qmmap = root.ToSAMAlignedItems().ToSAMAlignedLocationMap(); foreach (var mirnaGroupEle in root.Element("mirnas").Elements("mirnagroup")) { var group = new MappedMirnaGroup(); result.Add(group); foreach (var mirnaEle in mirnaGroupEle.Elements("mirna")) { var mirna = new MappedMirna(); group.Add(mirna); mirna.Name = mirnaEle.Attribute("name").Value; mirna.Sequence = mirnaEle.Attribute("sequence").Value; foreach (var regionEle in mirnaEle.Elements("region")) { var region = new MappedMirnaRegion(); mirna.MappedRegions.Add(region); region.Region.Name = mirna.Name; ParseLocation(regionEle, region.Region); foreach (var posEle in regionEle.Elements("position")) { var position = new SequenceRegionMapped(); position.Region = region.Region; position.Offset = int.Parse(posEle.Attribute("offset").Value); region.Mapped[position.Offset] = position; foreach (var queryEle in posEle.Elements("query")) { var qname = queryEle.Attribute("qname").Value; var loc = queryEle.Attribute("loc").Value; var key = GenerateKey(qname, loc); var query = qmmap[key]; position.AlignedLocations.Add(query); query.Features.Add(region.Region); } } } } } qmmap.Clear(); return(result); }