public void TestCorrectPlex8() { var calc = new IsobaricImpurityCorrectionCalculator(IsobaricType.PLEX8, @TestContext.CurrentContext.TestDirectory + "/../../../data//itraq-8plex.csv"); var b = new List <double>(); var m = calc.CloneTable(); for (int i = 0; i < m[0].Length; i++) { b.Add((from mm in m select mm[i]).Sum()); } var bb = b.ToArray(); double[] x = calc.Correct(bb); foreach (var v in x) { Assert.AreEqual(1, v, 0.001); } //repeat again to ensure that the matrix (a) in calc has not been changed. bb = b.ToArray(); x = calc.Correct(bb); foreach (var v in x) { Assert.AreEqual(1, v, 0.001); } }
public void TestCorrectPlex4() { var calc = new IsobaricImpurityCorrectionCalculator(IsobaricType.PLEX4, @TestContext.CurrentContext.TestDirectory + "/../../../data//itraq-4plex.csv"); double[] b = new double[] { 0.949, 1.013, 1.022, 0.969 }; double[] x = calc.Correct(b); foreach (var v in x) { Assert.AreEqual(1, v, 0.001); } //repeat again to ensure that the matrix (a) in calc has not been changed. b = new double[] { 0.949, 1.013, 1.022, 0.969 }; x = calc.Correct(b); foreach (var v in x) { Assert.AreEqual(1, v, 0.001); } }
public IsobaricResult GetTraqResult(string rawFileName) { Progress.SetMessage("Processing " + rawFileName + " ..."); string experimental = FileUtils.ChangeExtension(new FileInfo(rawFileName).Name, ""); string originalFileName = GetOriginalITraqFileName(rawFileName); string paramFileName = originalFileName + ".param"; IsobaricResult result = null; ITraqFileBuilder builder = new ITraqFileBuilder(itraqReader.PlexType.GetDefinition()); if (!CheckOriginalFile(originalFileName) || !File.Exists(paramFileName)) { itraqReader.Progress = this.Progress; Progress.SetMessage("Reading isobaric tag channels from " + new FileInfo(rawFileName).Name + "..."); List <IsobaricItem> pkls = itraqReader.ReadFromFile(rawFileName); Progress.SetMessage("Reading isobaric tag channels finished."); if (pkls.Count == 0) { throw new Exception(MyConvert.Format("No isobaric tag information readed from file {0}, contact with author.", rawFileName)); } var accs = builder.GetDistances(from pkl in pkls select pkl.RawPeaks); if (accs.Count == 0) { throw new Exception(MyConvert.Format("No isobaric tag information readed from file {0}, contact with author.", rawFileName)); } result = builder.GetITraqResult(pkls, accs, SigmaFoldTolerance, 1); result.Mode = itraqReader.ToString(); result.ForEach(m => m.Experimental = experimental); ITraqResultFileFormatFactory.GetXmlFormat().WriteToFile(originalFileName, result); using (StreamWriter sw = new StreamWriter(paramFileName)) { sw.WriteLine("Ion\tDetectedIon\tDeltaMass\tDeltaPPM\tDetectedSigma"); var ions = builder.Definition.Items; for (int i = 0; i < ions.Length; i++) { sw.WriteLine("{0:0.00000}\t{1:0.00000}\t{2:0.00000}\t{3:0.00}\t{4:0.00000}", ions[i].Mass, ions[i].Mass + accs[i].Mean, accs[i].Mean, PrecursorUtils.mz2ppm(ions[i].Mass, accs[i].Mean), accs[i].StdDev); } } } else { Progress.SetMessage("Read xml information from " + originalFileName + " ..."); var format = ITraqResultFileFormatFactory.GetXmlFormat(); format.Progress = this.Progress; result = format.ReadFromFile(originalFileName); } result.RemoveAll(m => m.PeakCount() < minPeakCount); result.ForEach(m => calc.Correct(m)); result.RemoveAll(m => m.PeakCount() < minPeakCount); result.ForEach(m => m.PrecursorPercentage = m.PeakInIsolationWindow.GetPrecursorPercentage(this.precursorPPM)); if (NormalizationBuilder != null) { NormalizationBuilder.Normalize(result); } return(result); }