Exemple #1
0
        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);
        }