예제 #1
0
    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;
    }
    public void AddItem(string key, ChipSeqItem item)
    {
      if (!_itemMap.ContainsKey(key))
      {
        _itemMap[key] = new OverlappedChipSeqItem();
      }

      _itemMap[key].Add(item);
    }
    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;
    }