Exemplo n.º 1
0
        public static void AddToList(List <OverlappedChipSeqItem> currResult, ChipSeqItem chipSeqItem)
        {
            var maxpercentage           = 0.0;
            OverlappedChipSeqItem maxcr = null;

            foreach (var cr in currResult)
            {
                foreach (var item in cr)
                {
                    var oc = item.GetOverlapPercentage(chipSeqItem);
                    if (oc > maxpercentage)
                    {
                        maxcr         = cr;
                        maxpercentage = oc;
                    }
                }
            }

            if (maxcr != null)
            {
                maxcr.Add(chipSeqItem);
            }
            else
            {
                maxcr = new OverlappedChipSeqItem();
                maxcr.Add(chipSeqItem);
                currResult.Add(maxcr);
            }
        }
        public static Dictionary <string, List <OverlappedChipSeqItem> > ReadItems(List <string> sourceFiles)
        {
            if (sourceFiles.Count <= 2)
            {
                throw new ArgumentException("Input at least two data files first!");
            }

            var firstFile = ReadInGeneItem(sourceFiles[0]);

            var curResult = OverlappedChipSeqItem.Build(firstFile);

            for (int i = 1; i < sourceFiles.Count; i++)
            {
                var curFile = ReadInGeneItem(sourceFiles[i]);

                foreach (var item in curFile)
                {
                    if (!curResult.ContainsKey(item.GeneSymbol))
                    {
                        var oi = new OverlappedChipSeqItem();
                        oi.Add(item);
                        var oil = new List <OverlappedChipSeqItem>();
                        oil.Add(oi);
                        curResult[item.GeneSymbol] = oil;
                        continue;
                    }

                    var curGroup = curResult[item.GeneSymbol];
                    OverlappedChipSeqItem.AddToList(curGroup, item);
                }
            }
            return(curResult);
        }
Exemplo n.º 3
0
        public void AddItem(string key, ChipSeqItem item)
        {
            if (!_itemMap.ContainsKey(key))
            {
                _itemMap[key] = new OverlappedChipSeqItem();
            }

            _itemMap[key].Add(item);
        }
Exemplo n.º 4
0
        public static OverlappedChipSeqComparisonItem Build(OverlappedChipSeqItem item, Dictionary <string, string> fileNameGroup)
        {
            var result = new OverlappedChipSeqComparisonItem();

            foreach (var csi in item)
            {
                var key = fileNameGroup[csi.Filename];
                result.AddItem(key, csi);
            }

            return(result);
        }
Exemplo n.º 5
0
        public static Dictionary <string, List <OverlappedChipSeqItem> > Build(List <ChipSeqItem> items)
        {
            var result = new Dictionary <string, List <OverlappedChipSeqItem> >();

            var grp = items.GroupBy(m => m.GeneSymbol);

            foreach (var g in grp)
            {
                var currResult = new List <OverlappedChipSeqItem>();
                var cs         = g.OrderBy(m => m.Start).ToList();
                var r          = new OverlappedChipSeqItem();
                r.Add(cs[0]);
                currResult.Add(r);

                for (int i = 1; i < cs.Count; i++)
                {
                    AddToList(currResult, cs[i]);
                }

                result[g.Key] = currResult;
            }

            return(result);
        }