Ejemplo n.º 1
0
        public ElutionCurve Merge()
        {
            if (Curves.Count > 1)
            {
                ElutionCurve newCurve = new ElutionCurve();
                double       sum      = 0.0;
                foreach (double val in Factor)
                {
                    sum += val;
                }

                Dictionary <double, int> times = new Dictionary <double, int>();
                foreach (ElutionCurve curve in Curves)
                {
                    foreach (double timePoint in curve.time)
                    {
                        if (!times.ContainsKey(timePoint))
                        {
                            times.Add(timePoint, 1);
                        }
                        else
                        {
                            times[timePoint]++;
                        }
                    }
                }
                List <double> sortedTime = new List <double>(times.Keys);
                sortedTime.Sort();
                foreach (double key in sortedTime)
                {
                    if (times[key] > 1)
                    {
                        double cumulIntensity = 0.0;
                        for (int i = 0; i < Curves.Count; i++)
                        {
                            cumulIntensity += Curves[i].InterpolateIntensity(key) * Factor[i] / sum;
                        }

                        newCurve.AddPoint(key, cumulIntensity);
                    }
                }
                return(newCurve);
            }
            else if (Curves.Count == 1)
            {
                return(Curves[0]);
            }
            return(new ElutionCurve());
        }
Ejemplo n.º 2
0
        public static ElutionCurve Create(Dictionary <double, double> dicOfTimeInMsVsIntensityPerMs)
        {
            ElutionCurve theCurve = new ElutionCurve();

            // -- Test curve fitting function -- //
            theCurve.time           = new List <double>();
            theCurve.intensityCount = new List <double>();
            List <double> sortedKeys = new List <double>(dicOfTimeInMsVsIntensityPerMs.Keys);

            sortedKeys.Sort();
            foreach (double time in sortedKeys)
            {
                theCurve.time.Add(time);
                theCurve.intensityCount.Add(dicOfTimeInMsVsIntensityPerMs[time]);
            }
            theCurve.Compute();
            return(theCurve);
        }
Ejemplo n.º 3
0
 public void AddCurve(ElutionCurve newCurve, double weight)
 {
     Curves.Add(newCurve);
     Factor.Add(weight);
 }