Пример #1
0
        private void Read(string msDeconvFileName)
        {
            var curScan = 0;
            var isMs1   = false;
            var minMass = double.MaxValue;
            var maxMass = 0.0;

            var featureCountUnfiltered = 0;
            var featureCountFiltered   = 0;

            foreach (var line in File.ReadLines(msDeconvFileName))
            {
                if (line.StartsWith("SCANS="))
                {
                    curScan = Convert.ToInt32(line.Substring(line.LastIndexOf('=') + 1));
                    isMs1   = _run.GetMsLevel(curScan) == 1;
                }
                else if (isMs1 && line.Length > 0)
                {
                    var token = line.Split();
                    if (token.Length != 3)
                    {
                        continue;
                    }

                    featureCountUnfiltered++;

                    var charge = Convert.ToInt32(token[2]);
                    if (charge == 1)
                    {
                        continue;
                    }

                    var monoMass = Convert.ToDouble(token[0]);

                    if (minMass > monoMass)
                    {
                        minMass = monoMass;
                    }

                    if (maxMass < monoMass)
                    {
                        maxMass = monoMass;
                    }

                    featureCountFiltered++;

                    var minScan = _run.GetPrevScanNum(curScan, 1);
                    var maxScan = _run.GetNextScanNum(curScan, 1);
                    _lcMsMatchMap.SetMatches(monoMass, minScan, maxScan);
                }
            }

            Console.Write(@"{0}/{1} features loaded...", featureCountFiltered, featureCountUnfiltered);

            _lcMsMatchMap.CreateSequenceMassToMs2ScansMap(_run, _massTolerance, minMass, maxMass);
        }
 public Ms1IsotopeMostAbundantPlusOneFilter(
     InMemoryLcMsRun run,
     int minCharge             = 3, int maxCharge = 30,
     double ppmTolerance       = 10,
     double minMass            = 3000.0,
     double maxMass            = 50000.0,
     int maxNumPeaksToConsider = 40)
 {
     _run                  = run;
     _minCharge            = minCharge;
     _maxCharge            = maxCharge;
     MaxNumPeaksToConsider = maxNumPeaksToConsider;
     _tolerance            = new Tolerance(ppmTolerance);
     _comparer             = new MzComparerWithTolerance(ppmTolerance);
     _lcMsMatchMap         = new LcMsMatchMap();
     PrecomputePossibleSequenceMasses();
     _lcMsMatchMap.CreateSequenceMassToMs2ScansMap(_run, _tolerance, minMass, maxMass);
 }
Пример #3
0
        private void Read(string isosFileName)
        {
            var icrToolsparser = new TsvFileParser(isosFileName, ',');
            var monoMassArr    = icrToolsparser.GetData("monoisotopic_mw").Select(Convert.ToDouble).ToArray();
            var scanArray      = icrToolsparser.GetData("scan_num").Select(s => Convert.ToInt32(s)).ToArray();
            var chargeArray    = icrToolsparser.GetData("charge").Select(s => Convert.ToInt32(s)).ToArray();

            var fitStringArr = icrToolsparser.GetData("fit");
            var fitArray     = fitStringArr == null ? null : icrToolsparser.GetData("fit").Select(Convert.ToDouble).ToArray();

            var featureCountFiltered = 0;

            var minMass = double.MaxValue;
            var maxMass = 0.0;

            for (var i = 0; i < monoMassArr.Length; i++)
            {
                if (fitArray != null && fitArray[i] > _fitScoreThreshold || chargeArray[i] <= 1)
                {
                    continue;
                }

                featureCountFiltered++;

                var scan     = scanArray[i];
                var monoMass = monoMassArr[i];
                if (minMass > monoMass)
                {
                    minMass = monoMass;
                }
                if (maxMass < monoMass)
                {
                    maxMass = monoMass;
                }

                var minScan = _run.GetPrevScanNum(scan, 1);
                var maxScan = _run.GetNextScanNum(scan, 1);
                _lcMsMatchMap.SetMatches(monoMass, minScan, maxScan);
            }

            Console.Write(@"{0}/{1} features loaded...", featureCountFiltered, monoMassArr.Length);

            _lcMsMatchMap.CreateSequenceMassToMs2ScansMap(_run, _massTolerance, minMass, maxMass);
        }
Пример #4
0
 public Ms1IsotopeAndChargeCorrFilter(
     LcMsRun run,
     Tolerance tolerance,
     int minCharge  = 3, int maxCharge = 30,
     double minMass = 3000.0,
     double maxMass = 50000.0,
     double isotopeCorrThreshold = 0.7,
     double chargeCorrThreshold  = 0.7,
     double mostAbundantPlusOneIsotopeCorrThreshold = 0.7,
     int maxNumPeaksToConsider = 40)
 {
     _run       = run;
     _minCharge = minCharge;
     _maxCharge = maxCharge;
     _isotopeCorrThresholdThreshold           = isotopeCorrThreshold;
     _chargeCorrThresholdThreshold            = chargeCorrThreshold;
     _mostAbundantPlusOneIsotopeCorrThreshold = mostAbundantPlusOneIsotopeCorrThreshold;
     MaxNumPeaksToConsider = maxNumPeaksToConsider;
     _tolerance            = tolerance;
     _comparer             = new MzComparerWithTolerance(tolerance);
     _lcMsMatchMap         = new LcMsMatchMap();
     PrecomputePossibleSequenceMasses();
     _lcMsMatchMap.CreateSequenceMassToMs2ScansMap(_run, _tolerance, minMass, maxMass);
 }