Exemple #1
0
        public void IonPresent()
        {
            var methodName = MethodBase.GetCurrentMethod().Name;

            TestUtils.ShowStarting(methodName);

            if (!File.Exists(RawFile))
            {
                Assert.Ignore(@"Skipping test {0} since folder not found: {1}", methodName, RawFile);
            }

            var spectrumMatchList = InitTest();

            var ionProbabilityTable = new Dictionary <IonType, Probability <IonType> > [MaxPrecCharge];

            for (int i = 0; i < ionProbabilityTable.Count(); i++)
            {
                ionProbabilityTable[i] = new Dictionary <IonType, Probability <IonType> >();
            }
            StreamWriter outputFile = File.AppendText(OutputFileName);

            foreach (var spectrumMatch in spectrumMatchList)
            {
                var charge            = spectrumMatch.PrecursorCharge - 1;
                var offsetFrequencies = new IonFrequencyTable(_ionTypes, _tolerance, RelativeIntensityThreshold);
                offsetFrequencies.AddMatches(new List <SpectrumMatch> {
                    spectrumMatch
                });
                var probabilities = offsetFrequencies.GetProbabilities();

                var testProbabilities = ComputeOffsetFrequencies(spectrumMatch);

                Assert.True(probabilities.Length == testProbabilities.Count);

                Array.Sort(probabilities, new CompareIonProbabilityByIon());
                testProbabilities.Sort(new CompareIonProbabilityByIon());

                outputFile.WriteLine("Scan:\t{0}\tPeptide:\t{1}\tCharge:\t{2}", spectrumMatch.Spectrum.ScanNum, spectrumMatch.Peptide, spectrumMatch.PrecursorCharge);
                outputFile.WriteLine("Ion\tFound\tTotal\tTestFound\tTestTotal\tEqual?");
                for (int i = 0; i < probabilities.Length; i++)
                {
                    Assert.True(probabilities[i].Label.Name == testProbabilities[i].Label.Name);

                    bool foundEqual = probabilities[i].Found.Equals(testProbabilities[i].Found);
                    bool totalEqual = probabilities[i].Total.Equals(testProbabilities[i].Total);

                    var ion = testProbabilities[i].Label;
                    if (!ionProbabilityTable[charge].ContainsKey(ion))
                    {
                        ionProbabilityTable[charge].Add(ion, new Probability <IonType>(ion));
                    }
                    ionProbabilityTable[charge][ion] += testProbabilities[i];

                    outputFile.Write(probabilities[i].Label + "\t");
                    outputFile.Write("{0}\t{1}\t", probabilities[i].Found, probabilities[i].Total);
                    outputFile.Write("{0}\t{1}\t", testProbabilities[i].Found, testProbabilities[i].Total);
                    outputFile.WriteLine(foundEqual && totalEqual);
                }
                outputFile.WriteLine();
            }
            outputFile.Close();
            for (int i = 0; i < MaxPrecCharge; i++)
            {
                var chargeOutName = IonProbabilityFileName + "_Charge" + (i + 1) + ".txt";
                using (var ionProbOut = new StreamWriter(chargeOutName))
                {
                    ionProbOut.WriteLine("Ion\tProbability");
                    foreach (var key in ionProbabilityTable[i].Keys)
                    {
                        ionProbOut.WriteLine(ionProbabilityTable[i][key].Label.Name + "\t" + ionProbabilityTable[i][key].Prob);
                    }
                }
            }
        }
Exemple #2
0
        public void IonFrequencyFunction()
        {
            var methodName = MethodBase.GetCurrentMethod().Name;

            TestUtils.ShowStarting(methodName);

            const string configFilePath = @"C:\Users\wilk011\Documents\DataFiles\IonFreqConfig.ini";

            if (!File.Exists(configFilePath))
            {
                Assert.Ignore(@"Skipping test {0} since file not found: {1}", methodName, configFilePath);
            }

            InitTest(new ConfigFileReader(configFilePath));

            foreach (var name in _names)
            {
                var tsvName      = _preTsv.Replace("@", name);
                var rawName      = _preRaw.Replace("@", name);
                var txtFiles     = Directory.GetFiles(tsvName).ToList();
                var rawFilesTemp = Directory.GetFiles(rawName).ToList();
                var rawFiles     = rawFilesTemp.Where(rawFile => Path.GetExtension(rawFile) == ".raw").ToList();

                Assert.True(rawFiles.Count == txtFiles.Count);

                int tableCount = 1;
                if (_precursorCharge > 0)
                {
                    tableCount = _precursorCharge;
                }

                var ionFrequencyFunctions      = new IonFrequencyTable[tableCount];
                var decoyionFrequencyFunctions = new IonFrequencyTable[tableCount];
                for (int i = 0; i < tableCount; i++)
                {
                    ionFrequencyFunctions[i] = new IonFrequencyTable(_ionTypes,
                                                                     _defaultTolerance, _relativeIntensityThreshold, _combineCharges);
                    decoyionFrequencyFunctions[i] = new IonFrequencyTable(_ionTypes,
                                                                          _defaultTolerance, _relativeIntensityThreshold, _combineCharges);
                }

                for (int i = 0; i < txtFiles.Count; i++)
                {
                    string textFile = txtFiles[i];
                    string rawFile  = rawFiles[i];
                    Console.WriteLine("{0}\t{1}", Path.GetFileName(textFile), Path.GetFileName(rawFile));
                    var lcms      = new LazyLcMsRun(rawFile, NoiseFiltration, NoiseFiltration);
                    var matchList = new SpectrumMatchList(lcms, txtFiles[i], DataFileFormat.IcBottomUp);
                    SpectrumMatchList decoyMatchList = null;
                    if (_useDecoy)
                    {
                        decoyMatchList = new SpectrumMatchList(lcms, txtFiles[i], DataFileFormat.IcBottomUp, 0, true);
                    }

                    for (int j = 0; j < tableCount; j++)
                    {
                        var matches = _precursorCharge > 0 ? matchList.GetCharge(j + 1) : matchList;

                        matches.FilterSpectra();
                        ionFrequencyFunctions[j].AddMatches(matches);

                        if (decoyMatchList != null)
                        {
                            var decoyMatches = _precursorCharge > 0 ? decoyMatchList.GetCharge(j + 1) : decoyMatchList;
                            decoyMatches.FilterSpectra();
                            decoyionFrequencyFunctions[j].AddMatches(decoyMatches);
                        }
                    }
                }

                // Print Offset Frequency tables to output file
                var outFile = _outFileName.Replace("@", name);
                for (int i = 0; i < tableCount; i++)
                {
                    string outFileName         = outFile.Replace("*", (i + 1).ToString(CultureInfo.InvariantCulture));
                    var    ionFrequencies      = ionFrequencyFunctions[i].GetProbabilities();
                    var    decoyionFrequencies = decoyionFrequencyFunctions[i].GetProbabilities();
                    using (var finalOutputFile = new StreamWriter(outFileName))
                    {
                        finalOutputFile.Write("Ion\tTarget");
                        if (_useDecoy)
                        {
                            finalOutputFile.Write("\tDecoy");
                        }
                        finalOutputFile.WriteLine();
                        for (int j = 0; j < ionFrequencies.Length; j++)
                        {
                            finalOutputFile.Write("{0}\t{1}", ionFrequencies[j].Label.Name, ionFrequencies[j].Prob);
                            if (_useDecoy)
                            {
                                finalOutputFile.Write("\t{0}", decoyionFrequencies[j]);
                            }
                            finalOutputFile.WriteLine();
                        }
                    }
                }
            }
        }