예제 #1
0
        public Dictionary <int, FeatureSet> GetFeaturesMultiThreading(int minTargetBin, int maxTargetBin, Tolerance tolerance, DataReader.FrameType frameType)
        {
            var featureDictionary = new Dictionary <int, FeatureSet>();

            var targetMzList = Enumerable.Range(minTargetBin, maxTargetBin - minTargetBin + 1).Select(targetBin => _uimfUtil.GetMzFromBin(targetBin)).ToList();
            var featureStatisticsDictionary = _featureDetectionUtil.GetFeatureStatistics(targetMzList, tolerance.GetValue(), frameType,
                                                                                         tolerance.GetUnit() == ToleranceUnit.Ppm ? DataReader.ToleranceType.PPM : DataReader.ToleranceType.Thomson);

            foreach (var entry in featureStatisticsDictionary)
            {
                var targetBin    = _uimfUtil.GetBinFromMz(entry.Key);
                var featureStats = entry.Value;
                featureDictionary.Add(targetBin, new FeatureSet(featureStats));
            }
            return(featureDictionary);
        }
예제 #2
0
        public void TestDoWaterShedAlgorithmAllBins()
        {
            var fileLocation = @"\\proto-2\UnitTest_Files\MultidimensionalFeatureFinding\BSA_10ugml_IMS6_TOF03_CID_27Aug12_Frodo_Collision_Energy_Collapsed.UIMF";
            var uimfUtil     = new UimfUtil(fileLocation);

            // ReSharper disable once UnusedVariable
            var numberOfBins = uimfUtil.GetNumberOfBins();

            var smoother = new SavitzkyGolaySmoother(5, 2);

            for (var i = 73009; i <= 84000; i++)
            {
                var mz = uimfUtil.GetMzFromBin(i);
                var intensityPointList = uimfUtil.GetXic(mz, 25, UIMFData.FrameType.MS1, DataReader.ToleranceType.PPM);
                //List<IntensityPoint> intensityPointList = uimfUtil.GetXic(i, DataReader.FrameType.MS1);

                //SavitzkyGolaySmoother smoother = new SavitzkyGolaySmoother(9, 2);
                //smoother.Smooth(ref intensityBlock);

                //int boundX = intensityBlock.GetUpperBound(0);
                //int boundY = intensityBlock.GetUpperBound(1);

                //TextWriter smoothedWriter = new StreamWriter("smoothedRaw.csv");
                //for (int j = 0; j < boundX; j++)
                //{
                //    StringBuilder row = new StringBuilder();
                //    for (int k = 0; k < boundY; k++)
                //    {
                //        row.Append(intensityBlock[j, k] + ",");
                //    }
                //    smoothedWriter.WriteLine(row.ToString());
                //}

                //smoothedWriter.Close();

                var pointList = WaterShedMapUtil.BuildWatershedMap(intensityPointList);
                smoother.Smooth(ref pointList);
                var featureList = FeatureDetection.DoWatershedAlgorithm(pointList);

                Console.WriteLine(DateTime.Now + "\tBin = " + i + "\tNumPoints = " + pointList.Count() + "\tNumFeatures = " + featureList.Count());
            }
        }