public static void CalibrationTestLowRes() { CalibrationTask calibrationTask = new CalibrationTask(); EngineLayer.CommonParameters CommonParameters = new EngineLayer.CommonParameters (dissociationType: MassSpectrometry.DissociationType.LowCID, scoreCutoff: 1); string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestCalibrationLow"); string myFile = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\sliced_b6.mzML"); string myDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\LowResSnip_B6_mouse_11700_117500.xml.gz"); Directory.CreateDirectory(outputFolder); calibrationTask.RunTask(outputFolder, new List <DbForTask> { new DbForTask(myDatabase, false) }, new List <string> { myFile }, "test"); Assert.That(File.Exists(Path.Combine(outputFolder, @"sliced_b6-calib.mzML"))); Assert.That(File.Exists(Path.Combine(outputFolder, @"sliced_b6-calib.toml"))); var lines = File.ReadAllLines(Path.Combine(outputFolder, @"sliced_b6-calib.toml")); var tolerance = Regex.Match(lines[0], @"\d+\.\d*").Value; var tolerance1 = Regex.Match(lines[1], @"\d+\.\d*").Value; Assert.That(double.TryParse(tolerance, out double tol) == true); Assert.That(double.TryParse(tolerance1, out double tol1) == true); Assert.That(lines[0].Contains("PrecursorMassTolerance")); Assert.That(lines[1].Contains("ProductMassTolerance")); Directory.Delete(outputFolder, true); Directory.Delete(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Task Settings"), true); }
public static void GenerateDefaultTaskTomls(string folderLocation) { try { if (!Directory.Exists(folderLocation)) { Directory.CreateDirectory(folderLocation); } CalibrationTask c = new CalibrationTask(); Toml.WriteFile(c, Path.Combine(folderLocation, @"CalibrationTask.toml"), MetaMorpheusTask.tomlConfig); GptmdTask g = new GptmdTask(); Toml.WriteFile(g, Path.Combine(folderLocation, @"GptmdTask.toml"), MetaMorpheusTask.tomlConfig); SearchTask s = new SearchTask(); Toml.WriteFile(s, Path.Combine(folderLocation, @"SearchTask.toml"), MetaMorpheusTask.tomlConfig); XLSearchTask xl = new XLSearchTask(); Toml.WriteFile(xl, Path.Combine(folderLocation, @"XLSearchTask.toml"), MetaMorpheusTask.tomlConfig); GlycoSearchTask glyco = new GlycoSearchTask(); Toml.WriteFile(glyco, Path.Combine(folderLocation, @"GlycoSearchTask.toml"), MetaMorpheusTask.tomlConfig); } catch (Exception e) { throw new MetaMorpheusException("Default tomls could not be written: " + e.Message); } }
public static void ExperimentalDesignCalibrationAndSearch(string nonCalibratedFile) { // set up output directories string unitTestFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"ExperimentalDesignCalibrationAndSearch"); string outputFolder = Path.Combine(unitTestFolder, @"TaskOutput"); Directory.CreateDirectory(unitTestFolder); Directory.CreateDirectory(outputFolder); // set up original spectra file (input to calibration) string nonCalibratedFilePath = Path.Combine(unitTestFolder, nonCalibratedFile); File.Copy(Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SmallCalibratible_Yeast.mzML"), nonCalibratedFilePath, true); // set up original experimental design (input to calibration) SpectraFileInfo fileInfo = new SpectraFileInfo(nonCalibratedFilePath, "condition", 0, 0, 0); var experimentalDesignFilePath = ExperimentalDesign.WriteExperimentalDesignToFile(new List <SpectraFileInfo> { fileInfo }); // set up tasks (calibration + search) CalibrationTask calibrationTask = new CalibrationTask(); SearchTask searchTask = new SearchTask(); // protein db string myDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\smalldb.fasta"); // run the tasks EverythingRunnerEngine a = new EverythingRunnerEngine( new List <(string, MetaMorpheusTask)> { ("", calibrationTask), ("", searchTask) },
public CalibrateTaskWindow(CalibrationTask myCalibrateTask) { InitializeComponent(); PopulateChoices(); TheTask = myCalibrateTask; UpdateFieldsFromTask(TheTask); }
public CalibrateTaskWindow() { InitializeComponent(); PopulateChoices(); TheTask = new CalibrationTask(); UpdateFieldsFromTask(TheTask); this.saveButton.Content = "Add the Calibration Task"; }
protected void ProcessScanData(ScanData data) { if (data != null) { IqrFilter task1 = new IqrFilter(); task1.Factor = 0.1f; ScanData step1 = task1.Run(data); CalibrationTask task = new CalibrationTask(); task.NumClass = NumClass; ScanInfo = task.Run(step1); } this.PreviewPanel.Invalidate(); }
public CalibrateTaskWindow(CalibrationTask myCalibrateTask) { InitializeComponent(); PopulateChoices(); TheTask = myCalibrateTask ?? new CalibrationTask(); UpdateFieldsFromTask(TheTask); if (myCalibrateTask == null) { this.saveButton.Content = "Add the Calibration Task"; } SearchModifications.Timer.Tick += new EventHandler(TextChangeTimerHandler); base.Closing += this.OnClosing; }
public static void ExperimentalDesignCalibrationTest(string originalFileName) { CalibrationTask calibrationTask = new CalibrationTask(); string outputFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestCalibration"); string myFile = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\" + originalFileName); File.Copy(Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SmallCalibratible_Yeast.mzML"), myFile, true); string myDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\smalldb.fasta"); string experimentalDesignFilePath = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\ExperimentalDesign.tsv"); Directory.CreateDirectory(outputFolder); using (StreamWriter output = new StreamWriter(experimentalDesignFilePath)) { output.WriteLine("FileName\tCondition\tBiorep\tFraction\tTechrep"); output.WriteLine(Path.GetFileNameWithoutExtension(myFile) + "\t" + "condition" + "\t" + "1" + "\t" + "1" + "\t" + "1"); } calibrationTask.RunTask(outputFolder, new List <DbForTask> { new DbForTask(myDatabase, false) }, new List <string> { myFile }, "test"); var expDesignPath = Path.Combine(outputFolder, @"ExperimentalDesign.tsv"); var expDesign = File.ReadAllLines(expDesignPath); string expectedCalibratedFileName = Path.GetFileNameWithoutExtension(myFile) + "-calib.mzML"; string expectedTomlName = Path.GetFileNameWithoutExtension(myFile) + "-calib.toml"; Assert.That(expDesign[1].Contains(Path.GetFileNameWithoutExtension(expectedCalibratedFileName))); Assert.That(File.Exists(Path.Combine(outputFolder, myFile))); Assert.That(File.Exists(Path.Combine(outputFolder, expectedTomlName))); var lines = File.ReadAllLines(Path.Combine(outputFolder, expectedTomlName)); var tolerance = Regex.Match(lines[0], @"\d+\.\d*").Value; var tolerance1 = Regex.Match(lines[1], @"\d+\.\d*").Value; Assert.That(double.TryParse(tolerance, out double tol) == true); Assert.That(double.TryParse(tolerance1, out double tol1) == true); Assert.That(lines[0].Contains("PrecursorMassTolerance")); Assert.That(lines[1].Contains("ProductMassTolerance")); File.Delete(experimentalDesignFilePath); File.Delete(myFile); Directory.Delete(outputFolder, true); Directory.Delete(Path.Combine(TestContext.CurrentContext.TestDirectory, @"Task Settings"), true); }
public CalibrateTaskWindow(CalibrationTask myCalibrateTask) { InitializeComponent(); TheTask = myCalibrateTask ?? new CalibrationTask(); AutomaticallyAskAndOrUpdateParametersBasedOnProtease = false; PopulateChoices(); UpdateFieldsFromTask(TheTask); AutomaticallyAskAndOrUpdateParametersBasedOnProtease = true; if (myCalibrateTask == null) { SaveButton.Content = "Add the Calibration Task"; } SearchModifications.Timer.Tick += new EventHandler(TextChangeTimerHandler); base.Closing += this.OnClosing; }
public static void TestEverythingRunner() { foreach (var modFile in Directory.GetFiles(@"Mods")) { GlobalVariables.AddMods(PtmListLoader.ReadModsFromFile(modFile)); } CalibrationTask task1 = new CalibrationTask { CommonParameters = new CommonParameters(digestionParams: new DigestionParams(maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain)), CalibrationParameters = new CalibrationParameters { WriteIntermediateFiles = true, NumFragmentsNeededForEveryIdentification = 6, } }; GptmdTask task2 = new GptmdTask { CommonParameters = new CommonParameters() }; SearchTask task3 = new SearchTask { CommonParameters = new CommonParameters(), SearchParameters = new SearchParameters { DoParsimony = true, SearchTarget = true, SearchType = SearchType.Modern } }; SearchTask task4 = new SearchTask { CommonParameters = new CommonParameters(), SearchParameters = new SearchParameters { SearchType = SearchType.Modern, } }; List <(string, MetaMorpheusTask)> taskList = new List <(string, MetaMorpheusTask)> { ("task1", task1), ("task2", task2), ("task3", task3), ("task4", task4), }; List <ModificationWithMass> variableModifications = GlobalVariables.AllModsKnown.OfType <ModificationWithMass>().Where(b => task1.CommonParameters.ListOfModsVariable.Contains((b.modificationType, b.id))).ToList(); List <ModificationWithMass> fixedModifications = GlobalVariables.AllModsKnown.OfType <ModificationWithMass>().Where(b => task1.CommonParameters.ListOfModsFixed.Contains((b.modificationType, b.id))).ToList(); // Generate data for files Protein ParentProtein = new Protein("MPEPTIDEKANTHE", "accession1"); var digestedList = ParentProtein.Digest(task1.CommonParameters.DigestionParams, fixedModifications, variableModifications).ToList(); Assert.AreEqual(3, digestedList.Count); PeptideWithSetModifications pepWithSetMods1 = digestedList[0]; PeptideWithSetModifications pepWithSetMods2 = digestedList[2]; var dictHere = new Dictionary <int, List <Modification> >(); ModificationMotif.TryGetMotif("E", out ModificationMotif motif); dictHere.Add(3, new List <Modification> { new ModificationWithMass("21", null, motif, TerminusLocalization.Any, 21.981943) }); Protein ParentProteinToNotInclude = new Protein("MPEPTIDEK", "accession2", "organism", new List <Tuple <string, string> >(), dictHere); digestedList = ParentProteinToNotInclude.Digest(task1.CommonParameters.DigestionParams, fixedModifications, variableModifications).ToList(); MsDataFile myMsDataFile = new TestDataFile(new List <PeptideWithSetModifications> { pepWithSetMods1, pepWithSetMods2, digestedList[1] }); Protein proteinWithChain = new Protein("MAACNNNCAA", "accession3", "organism", new List <Tuple <string, string> >(), new Dictionary <int, List <Modification> >(), new List <ProteolysisProduct> { new ProteolysisProduct(4, 8, "chain") }, "name2", "fullname2"); string mzmlName = @"ok.mzML"; IO.MzML.MzmlMethods.CreateAndWriteMyMzmlWithCalibratedSpectra(myMsDataFile, mzmlName, false); string xmlName = "okk.xml"; ProteinDbWriter.WriteXmlDatabase(new Dictionary <string, HashSet <Tuple <int, Modification> > >(), new List <Protein> { ParentProtein, proteinWithChain }, xmlName); // RUN! var engine = new EverythingRunnerEngine(taskList, new List <string> { mzmlName }, new List <DbForTask> { new DbForTask(xmlName, false) }, Environment.CurrentDirectory); engine.Run(); }
private void UpdateFieldsFromTask(CalibrationTask task) { missedCleavagesTextBox.Text = task.CommonParameters.DigestionParams.MaxMissedCleavages.ToString(CultureInfo.InvariantCulture); txtMinPeptideLength.Text = task.CommonParameters.DigestionParams.MinPeptideLength.HasValue ? task.CommonParameters.DigestionParams.MinPeptideLength.Value.ToString(CultureInfo.InvariantCulture) : ""; txtMaxPeptideLength.Text = task.CommonParameters.DigestionParams.MaxPeptideLength.HasValue ? task.CommonParameters.DigestionParams.MaxPeptideLength.Value.ToString(CultureInfo.InvariantCulture) : ""; proteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.Protease; maxModificationIsoformsTextBox.Text = task.CommonParameters.DigestionParams.MaxModificationIsoforms.ToString(CultureInfo.InvariantCulture); initiatorMethionineBehaviorComboBox.SelectedIndex = (int)task.CommonParameters.DigestionParams.InitiatorMethionineBehavior; productMassToleranceTextBox.Text = task.CommonParameters.ProductMassTolerance.Value.ToString(CultureInfo.InvariantCulture); productMassToleranceComboBox.SelectedIndex = task.CommonParameters.ProductMassTolerance is AbsoluteTolerance ? 0 : 1; precursorMassToleranceTextBox.Text = task.CommonParameters.PrecursorMassTolerance.Value.ToString(CultureInfo.InvariantCulture); precursorMassToleranceComboBox.SelectedIndex = task.CommonParameters.PrecursorMassTolerance is AbsoluteTolerance ? 0 : 1; bCheckBox.IsChecked = task.CommonParameters.BIons; yCheckBox.IsChecked = task.CommonParameters.YIons; //maxDegreesOfParallelism.Text = task.CommonParameters.MaxParallelFilesToAnalyze.ToString(); zdotCheckBox.IsChecked = task.CommonParameters.ZdotIons; cCheckBox.IsChecked = task.CommonParameters.CIons; //conserveMemoryCheckBox.IsChecked = task.CommonParameters.ConserveMemory; //writeIntermediateFilesCheckBox.IsChecked = task.CalibrationParameters.WriteIntermediateFiles; minScoreAllowed.Text = task.CommonParameters.ScoreCutoff.ToString(CultureInfo.InvariantCulture); OutputFileNameTextBox.Text = task.CommonParameters.TaskDescriptor; foreach (var mod in task.CommonParameters.ListOfModsFixed) { var theModType = fixedModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.DisplayName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); fixedModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } foreach (var mod in task.CommonParameters.ListOfModsVariable) { var theModType = variableModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.DisplayName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); variableModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } //localizeAllCheckBox.IsChecked = task.CommonParameters.LocalizeAll; if (task.CommonParameters.LocalizeAll) { foreach (var heh in localizeModTypeForTreeViewObservableCollection) { heh.Use = false; } } else { foreach (var heh in localizeModTypeForTreeViewObservableCollection) { if (task.CommonParameters.ListOfModTypesLocalize.Contains(heh.DisplayName)) { heh.Use = true; } else { heh.Use = false; } } } foreach (var ye in variableModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } foreach (var ye in fixedModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } }
private void UpdateFieldsFromTask(CalibrationTask task) { ProteaseComboBox.SelectedItem = task.CommonParameters.DigestionParams.Protease; //protease needs to come first or recommended settings can overwrite the actual settings MissedCleavagesTextBox.Text = task.CommonParameters.DigestionParams.MaxMissedCleavages == int.MaxValue ? "" : task.CommonParameters.DigestionParams.MaxMissedCleavages.ToString(CultureInfo.InvariantCulture); MinPeptideLengthTextBox.Text = task.CommonParameters.DigestionParams.MinPeptideLength.ToString(CultureInfo.InvariantCulture); MaxPeptideLengthTextBox.Text = task.CommonParameters.DigestionParams.MaxPeptideLength == int.MaxValue ? "" : task.CommonParameters.DigestionParams.MaxPeptideLength.ToString(CultureInfo.InvariantCulture); MaxModsPerPeptideTextBox.Text = task.CommonParameters.DigestionParams.MaxModsForPeptide.ToString(CultureInfo.InvariantCulture); MaxModificationIsoformsTextBox.Text = task.CommonParameters.DigestionParams.MaxModificationIsoforms.ToString(CultureInfo.InvariantCulture); InitiatorMethionineBehaviorComboBox.SelectedIndex = (int)task.CommonParameters.DigestionParams.InitiatorMethionineBehavior; DissociationTypeComboBox.SelectedItem = task.CommonParameters.DissociationType.ToString(); MaxThreadsTextBox.Text = task.CommonParameters.MaxThreadsToUsePerFile.ToString(CultureInfo.InvariantCulture); MinVariantDepthTextBox.Text = task.CommonParameters.MinVariantDepth.ToString(CultureInfo.InvariantCulture); MaxHeterozygousVariantsTextBox.Text = task.CommonParameters.MaxHeterozygousVariants.ToString(CultureInfo.InvariantCulture); ProductMassToleranceTextBox.Text = task.CommonParameters.ProductMassTolerance.Value.ToString(CultureInfo.InvariantCulture); ProductMassToleranceComboBox.SelectedIndex = task.CommonParameters.ProductMassTolerance is AbsoluteTolerance ? 0 : 1; PrecursorMassToleranceTextBox.Text = task.CommonParameters.PrecursorMassTolerance.Value.ToString(CultureInfo.InvariantCulture); PrecursorMassToleranceComboBox.SelectedIndex = task.CommonParameters.PrecursorMassTolerance is AbsoluteTolerance ? 0 : 1; CustomFragmentationWindow = new CustomFragmentationWindow(task.CommonParameters.CustomIons); writeIndexMzmlCheckbox.IsChecked = task.CalibrationParameters.WriteIndexedMzml; //writeIntermediateFilesCheckBox.IsChecked = task.CalibrationParameters.WriteIntermediateFiles; MinScoreAllowed.Text = task.CommonParameters.ScoreCutoff.ToString(CultureInfo.InvariantCulture); OutputFileNameTextBox.Text = task.CommonParameters.TaskDescriptor; foreach (var mod in task.CommonParameters.ListOfModsFixed) { var theModType = FixedModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.ModName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); FixedModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } foreach (var mod in task.CommonParameters.ListOfModsVariable) { var theModType = VariableModTypeForTreeViewObservableCollection.FirstOrDefault(b => b.DisplayName.Equals(mod.Item1)); if (theModType != null) { var theMod = theModType.Children.FirstOrDefault(b => b.ModName.Equals(mod.Item2)); if (theMod != null) { theMod.Use = true; } else { theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } else { theModType = new ModTypeForTreeView(mod.Item1, true); VariableModTypeForTreeViewObservableCollection.Add(theModType); theModType.Children.Add(new ModForTreeView("UNKNOWN MODIFICATION!", true, mod.Item2, true, theModType)); } } foreach (var heh in LocalizeModTypeForTreeViewObservableCollection) { heh.Use = false; } foreach (var ye in VariableModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } foreach (var ye in FixedModTypeForTreeViewObservableCollection) { ye.VerifyCheckState(); } }
public static void ExperimentalDesignCalibrationTest(string nonCalibratedFile) { // set up directories string unitTestFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"ExperimentalDesignCalibrationTest"); string outputFolder = Path.Combine(unitTestFolder, @"TaskOutput"); Directory.CreateDirectory(unitTestFolder); Directory.CreateDirectory(outputFolder); // set up original spectra file (input to calibration) string nonCalibratedFilePath = Path.Combine(unitTestFolder, nonCalibratedFile); File.Copy(Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\SmallCalibratible_Yeast.mzML"), nonCalibratedFilePath, true); // protein db string myDatabase = Path.Combine(TestContext.CurrentContext.TestDirectory, @"TestData\smalldb.fasta"); // set up original experimental design (input to calibration) SpectraFileInfo fileInfo = new SpectraFileInfo(nonCalibratedFilePath, "condition", 0, 0, 0); var experimentalDesignFilePath = ExperimentalDesign.WriteExperimentalDesignToFile(new List <SpectraFileInfo> { fileInfo }); // run calibration CalibrationTask calibrationTask = new CalibrationTask(); calibrationTask.RunTask(outputFolder, new List <DbForTask> { new DbForTask(myDatabase, false) }, new List <string> { nonCalibratedFilePath }, "test"); // test new experimental design written by calibration var newExpDesignPath = Path.Combine(outputFolder, @"ExperimentalDesign.tsv"); string expectedCalibratedFileName = Path.GetFileNameWithoutExtension(nonCalibratedFilePath) + "-calib.mzML"; var expectedCalibratedFilePath = Path.Combine(outputFolder, expectedCalibratedFileName); var newExperDesign = ExperimentalDesign.ReadExperimentalDesign(newExpDesignPath, new List <string> { expectedCalibratedFilePath }, out var errors); Assert.That(!errors.Any()); Assert.That(newExperDesign.Count == 1); // test file-specific toml written by calibration w/ suggested ppm tolerances string expectedTomlName = Path.GetFileNameWithoutExtension(nonCalibratedFilePath) + "-calib.toml"; Assert.That(File.Exists(Path.Combine(outputFolder, expectedTomlName))); var lines = File.ReadAllLines(Path.Combine(outputFolder, expectedTomlName)); var tolerance = Regex.Match(lines[0], @"\d+\.\d*").Value; var tolerance1 = Regex.Match(lines[1], @"\d+\.\d*").Value; Assert.That(double.TryParse(tolerance, out double tol) == true); Assert.That(double.TryParse(tolerance1, out double tol1) == true); Assert.That(lines[0].Contains("PrecursorMassTolerance")); Assert.That(lines[1].Contains("ProductMassTolerance")); // check that calibrated .mzML exists Assert.That(File.Exists(Path.Combine(outputFolder, expectedCalibratedFilePath))); // clean up Directory.Delete(unitTestFolder, true); }