Exemple #1
0
        public IDictionary <int, IList <MSFeatureLight> > CreateXic(UMCLight feature, double massError, ISpectraProvider provider)
        {
            var features       = new Dictionary <int, IList <MSFeatureLight> >();
            var chargeFeatures = feature.CreateChargeMap();

            // For each UMC...
            foreach (var charge in chargeFeatures.Keys)
            {
                // Find the mininmum and maximum features
                var msFeatures = CreateXic(chargeFeatures[charge],
                                           massError,
                                           provider);

                features.Add(charge, new List <MSFeatureLight>());

                foreach (var newFeature in msFeatures)
                {
                    // Here we ask if this is a new MS Feature or old...
                    if (!chargeFeatures.ContainsKey(newFeature.Scan))
                    {
                        // Otherwise add the new feature
                        newFeature.MassMonoisotopic = feature.MassMonoisotopic;
                        newFeature.DriftTime        = feature.DriftTime;
                        newFeature.GroupId          = feature.GroupId;
                    }
                    features[charge].Add(newFeature);
                }
            }
            return(features);
        }
Exemple #2
0
        private void UpdateCharges(UMCLight feature)
        {
            Charges.Clear();
            m_scanMaps = feature.CreateChargeMap();

            foreach (var charge in m_scanMaps.Keys)
            {
                double mz           = 0;
                var    minScan      = int.MaxValue;
                var    maxScan      = int.MinValue;
                double maxIntensity = 0;

                foreach (var msFeature in m_scanMaps[charge])
                {
                    minScan = Math.Min(minScan, msFeature.Scan);
                    maxScan = Math.Max(maxScan, msFeature.Scan);

                    if (maxIntensity >= msFeature.Abundance)
                    {
                        continue;
                    }

                    maxIntensity = msFeature.Abundance;
                    mz           = msFeature.Mz;
                }

                Charges.Add(new ChargeStateViewModel(charge, mz, minScan, maxScan));
            }
            if (Charges.Count <= 0)
            {
                return;
            }

            SelectedCharge = Charges[0];
        }
Exemple #3
0
        /// <summary>
        ///     Creates SIC's mapped by charge state for the MS Features in the feature.
        /// </summary>
        /// <param name="feature"></param>
        /// <returns></returns>
        public static Dictionary <int, List <XYZData> > CreateChargeSICForMonoMass(this UMCLight feature)
        {
            var chargeMap = feature.CreateChargeMap();
            var sicMap    = new Dictionary <int, List <XYZData> >();

            foreach (var charge in chargeMap.Keys)
            {
                chargeMap[charge].Sort(delegate(MSFeatureLight x, MSFeatureLight y) { return(x.Scan.CompareTo(y.Scan)); }
                                       );
                var data = chargeMap[charge].ConvertAll(x => new XYZData(x.Scan, x.Abundance, x.MassMonoisotopicAligned));
                sicMap.Add(charge, data);
            }
            return(sicMap);
        }
Exemple #4
0
        /// <summary>
        ///     Creates SIC's mapped by charge state for the MS Features in the feature.
        /// </summary>
        /// <param name="feature"></param>
        /// <param name="provider">Object that can read data from a raw file or data source.</param>
        /// <returns></returns>
        public static Dictionary <int, List <XYZData> > CreateChargeSIC(this UMCLight feature, ISpectraProvider provider)
        {
            var chargeMap = feature.CreateChargeMap();
            var sicMap    = new Dictionary <int, List <XYZData> >();

            foreach (var charge in chargeMap.Keys)
            {
                chargeMap[charge].Sort(delegate(MSFeatureLight x, MSFeatureLight y) { return(x.Scan.CompareTo(y.Scan)); }
                                       );
                var data = chargeMap[charge].ConvertAll(x => new XYZData(x.Scan, x.Abundance, x.Mz));
                sicMap.Add(charge, data);
            }

            if (provider != null)
            {
                // Creates an SIC map for a given charge state of the feature.
                foreach (var charge in sicMap.Keys)
                {
                    var data = sicMap[charge];

                    // The data is alread sorted.
                    var minScan  = int.MaxValue;
                    var maxScan  = int.MinValue;
                    var mzValues = new List <double>();
                    foreach (var x in data)
                    {
                        mzValues.Add(x.Z);
                        minScan = Math.Min(minScan, Convert.ToInt32(x.X));
                        maxScan = Math.Max(maxScan, Convert.ToInt32(x.X));
                    }
                    mzValues.Sort();
                    double mz  = 0;
                    var    mid = Convert.ToInt32(mzValues.Count / 2);
                    mz       = mzValues[mid];
                    minScan -= 20;
                    maxScan += 20;

                    // Build the SIC
                    var intensities = new List <XYZData>();
                    for (var scan = minScan; scan < maxScan; scan++)
                    {
                        var    summary     = new ScanSummary();
                        var    spectrum    = provider.GetRawSpectra(scan, 1, out summary);
                        double intensity   = 0;
                        var    minDistance = double.MaxValue;
                        var    index       = -1;
                        for (var i = 0; i < spectrum.Count; i++)
                        {
                            var distance = spectrum[i].X - mz;
                            if (distance < minDistance)
                            {
                                index       = i;
                                minDistance = distance;
                            }
                        }

                        if (index >= 0)
                        {
                            intensity = spectrum[index].Y;
                        }
                        var newPoint = new XYZData(scan, intensity, mz);
                        intensities.Add(newPoint);
                    }

                    sicMap[charge] = intensities;
                }
            }

            return(sicMap);
        }
Exemple #5
0
        private void UpdateCharges(UMCLight feature)
        {
            Charges.Clear();
            m_scanMaps = feature.CreateChargeMap();

            foreach (var charge in m_scanMaps.Keys)
            {
                double mz = 0;
                var minScan = int.MaxValue;
                var maxScan = int.MinValue;
                double maxIntensity = 0;

                foreach (var msFeature in m_scanMaps[charge])
                {
                    minScan = Math.Min(minScan, msFeature.Scan);
                    maxScan = Math.Max(maxScan, msFeature.Scan);

                    if (maxIntensity >= msFeature.Abundance)
                        continue;

                    maxIntensity = msFeature.Abundance;
                    mz = msFeature.Mz;
                }

                Charges.Add(new ChargeStateViewModel(charge, mz, minScan, maxScan));
            }
            if (Charges.Count <= 0)
                return;

            SelectedCharge = Charges[0];
        }