Beispiel #1
0
        private int FilterAndOutputFeatures(LcMsFeatureContainer container, LcMsPeakMatrix featureFinder, string outCsvFilePath, string ms1FeaturesFilePath)
        {
            var featureCounter = new int[1];

            Ms1FtEntry.WriteToFile(ms1FeaturesFilePath, FilterFeaturesWithOutput(container, featureFinder, outCsvFilePath, featureCounter), Parameters.ScoreReport);

            return(featureCounter[0]);
        }
Beispiel #2
0
        public static List <LcMsFeature> LoadProMexResult(int dataId, string featureFilePath, LcMsRun run, double minMass = 2000, double maxMass = 50000)
        {
            var featureList = new List <LcMsFeature>();

            var totalDatasetRunTime = run.GetElutionTime(run.MaxLcScan);

            foreach (var entry in Ms1FtEntry.ReadFromFile(featureFilePath, false))
            {
                if (entry.MonoMass < minMass || maxMass < entry.MonoMass)
                {
                    continue;
                }

                var feature = entry.ToLcMsFeature(totalDatasetRunTime);
                feature.DataSetId = dataId;

                featureList.Add(feature);
            }

            return(featureList);
        }
Beispiel #3
0
        /// <summary>
        /// Converts a <see cref="LcMsFeature"/> to a <see cref="Ms1FtEntry"/>
        /// </summary>
        /// <param name="feature"></param>
        /// <returns></returns>
        public static Ms1FtEntry ToMs1FtEntry(this LcMsFeature feature, int featureId = 0)
        {
            var ms1FtEntry = new Ms1FtEntry
            {
                FeatureId            = featureId,
                MinScan              = feature.MinScanNum,
                MaxScan              = feature.MaxScanNum,
                MinCharge            = feature.MinCharge,
                MaxCharge            = feature.MaxCharge,
                MonoMass             = feature.RepresentativeMass,
                RepresentativeScan   = feature.RepresentativeScanNum,
                RepresentativeCharge = feature.RepresentativeCharge,
                RepresentativeMz     = feature.RepresentativeMz,
                Abundance            = feature.Abundance,
                MinElutionTime       = feature.MinElutionTime,
                MaxElutionTime       = feature.MaxElutionTime,
                ElutionLength        = feature.ElutionLength,
                LikelihoodRatio      = feature.Score
            };

            return(ms1FtEntry);
        }
Beispiel #4
0
        /// <summary>
        /// Converts a <see cref="LcMsPeakCluster"/> to a <see cref="Ms1FtEntry"/>
        /// </summary>
        /// <param name="feature"></param>
        /// <param name="featureId"></param>
        /// <returns></returns>
        public static Ms1FtEntry ToMs1FtEntry(this LcMsPeakCluster feature, int featureId = 0)
        {
            var intensity    = feature.RepresentativeSummedEnvelop;
            var maxIntensity = intensity.Max();
            var sb           = new StringBuilder();

            for (var i = 0; i < intensity.Length; i++)
            {
                if (i != 0)
                {
                    sb.Append(";");
                }
                sb.AppendFormat("{0},{1:0.000}", feature.TheoreticalEnvelope.Isotopes[i].Index, intensity[i] / maxIntensity);
            }

            var ms1FtEntry = new Ms1FtEntry
            {
                FeatureId            = featureId,
                MinScan              = feature.MinScanNum,
                MaxScan              = feature.MaxScanNum,
                MinCharge            = feature.MinCharge,
                MaxCharge            = feature.MaxCharge,
                MonoMass             = feature.RepresentativeMass,
                RepresentativeScan   = feature.RepresentativeScanNum,
                RepresentativeCharge = feature.RepresentativeCharge,
                RepresentativeMz     = feature.RepresentativeMz,
                Abundance            = feature.Abundance,
                ApexScanNum          = feature.ApexScanNum,
                ApexIntensity        = feature.ApexIntensity,
                MinElutionTime       = feature.MinElutionTime,
                MaxElutionTime       = feature.MaxElutionTime,
                ElutionLength        = feature.ElutionLength,
                Envelope             = sb.ToString(),
                LikelihoodRatio      = feature.Score,
                ExtendedData         = feature.ToMs1FtEntryExtendedData()
            };

            return(ms1FtEntry);
        }
Beispiel #5
0
        private void Read(string ms1FtFileName)
        {
            var featureCountFiltered = 0;
            var totalFeatureCount    = 0;

            foreach (var entry in Ms1FtEntry.ReadFromFile(ms1FtFileName))
            {
                totalFeatureCount++;

                if (entry.LikelihoodRatio < _minLikelihoodRatio)
                {
                    continue;
                }

                featureCountFiltered++;
                _lcMsChargeMap.SetMatches(entry.FeatureId, entry.MonoMass, entry.MinScan, entry.MaxScan, entry.RepresentativeScan, entry.MinCharge, entry.MaxCharge);
                Ms1FtIndexToScanRange.Add(entry.FeatureId, new Tuple <int, int>(entry.MinScan, entry.MaxScan));
            }

            // NOTE: The DMS Analysis Manager looks for this statistic; do not change it
            Console.Write(@"{0}/{1} features loaded...", featureCountFiltered, totalFeatureCount);
            _lcMsChargeMap.CreateMassToScanNumMap();
        }
Beispiel #6
0
        /// <summary>
        /// Converts a <see cref="Ms1FtEntry"/> to a <see cref="LcMsFeature"/>
        /// </summary>
        /// <param name="ms1FtEntry"></param>
        /// <param name="totalDatasetRunTime">The total runtime of the dataset; generally the elution time of the last scan. Used to compute NET</param>
        /// <returns></returns>
        public static LcMsFeature ToLcMsFeature(this Ms1FtEntry ms1FtEntry, double totalDatasetRunTime = 0)
        {
            var repCharge  = ms1FtEntry.RepresentativeCharge != 0 ? ms1FtEntry.RepresentativeCharge : (int)Math.Round(0.5 * (ms1FtEntry.MinCharge + ms1FtEntry.MaxCharge));
            var repMz      = !ms1FtEntry.RepresentativeMz.Equals(0) ? ms1FtEntry.RepresentativeMz : (ms1FtEntry.MonoMass / repCharge) + Constants.Proton;
            var repScanNum = ms1FtEntry.RepresentativeScan > 0 ? ms1FtEntry.RepresentativeScan : ms1FtEntry.MinScan;

            var minNet = 0.0;
            var maxNet = 0.0;

            if (totalDatasetRunTime > 0)
            {
                minNet = ms1FtEntry.MinElutionTime / totalDatasetRunTime;
                maxNet = ms1FtEntry.MaxElutionTime / totalDatasetRunTime;
            }

            var feature = new LcMsFeature(ms1FtEntry.MonoMass, repCharge, repMz, repScanNum, ms1FtEntry.Abundance, ms1FtEntry.MinCharge, ms1FtEntry.MaxCharge, ms1FtEntry.MinScan, ms1FtEntry.MaxScan, ms1FtEntry.MinElutionTime, ms1FtEntry.MaxElutionTime, minNet, maxNet)
            {
                FeatureId = ms1FtEntry.FeatureId,
                Score     = ms1FtEntry.LikelihoodRatio,
            };

            return(feature);
        }