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); } } } }
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(); } } } } }