Exemple #1
0
        /// <summary>
        /// Computes errors for mass and retention time given a set of linked and matched features.
        /// </summary>
        public Tuple <AlignmentMeasurement <double>, AlignmentMeasurement <double> > MeasureErrors(IEnumerable <SpectralAnchorPointMatch> matches)
        {
            var netError  = new AlignmentMeasurement <double>();
            var massError = new AlignmentMeasurement <double>();

            var errors = new Tuple <AlignmentMeasurement <double>, AlignmentMeasurement <double> >
                             (netError, massError);


            foreach (var match in matches)
            {
                var x        = match.AnchorPointX;
                var y        = match.AnchorPointY;
                var featureX = x.Spectrum.ParentFeature;
                var featureY = y.Spectrum.ParentFeature;

                if (featureX == null || featureY == null)
                {
                    continue;
                }

                var umcX = featureX.ParentFeature;
                var umcY = featureY.ParentFeature;

                netError.PreAlignment.Add(umcX.Net - umcY.Net);
                netError.PostAlignment.Add(umcX.Net - umcY.NetAligned);

                massError.PreAlignment.Add(FeatureLight.ComputeMassPPMDifference(umcX.MassMonoisotopic, umcY.MassMonoisotopic));
                massError.PostAlignment.Add(FeatureLight.ComputeMassPPMDifference(umcX.MassMonoisotopic, umcY.MassMonoisotopicAligned));
            }

            return(errors);
        }
Exemple #2
0
 /// <summary>
 /// Constructor
 /// </summary>
 public SpectralAnalysis()
 {
     MassData     = new AlignmentMeasurement <double>();
     NetData      = new AlignmentMeasurement <double>();
     Matches      = new List <SpectralAnchorPointMatch>();
     Options      = new SpectralOptions();
     DatasetNames = new List <string>();
 }