private static void LoadModifications() { _AllModsKnown = new List <Modification>(); _AllModTypesKnown = new HashSet <string>(); ErrorsReadingMods = new List <string>(); AllModsKnownDictionary = new Dictionary <string, Modification>(); UnimodDeserialized = Loaders.LoadUnimod(Path.Combine(DataDir, @"Data", @"unimod.xml")).ToList(); PsiModDeserialized = Loaders.LoadPsiMod(Path.Combine(DataDir, @"Data", @"PSI-MOD.obo.xml")); var formalChargesDictionary = Loaders.GetFormalChargesDictionary(PsiModDeserialized); UniprotDeseralized = Loaders.LoadUniprot(Path.Combine(DataDir, @"Data", @"ptmlist.txt"), formalChargesDictionary).ToList(); foreach (var modFile in Directory.GetFiles(Path.Combine(DataDir, @"Mods"))) { AddMods(PtmListLoader.ReadModsFromFile(modFile, out var errorMods), false); } AddMods(UniprotDeseralized.OfType <Modification>(), false); AddMods(UnimodDeserialized.OfType <Modification>(), false); foreach (Modification mod in AllModsKnown) { if (!AllModsKnownDictionary.ContainsKey(mod.IdWithMotif)) { AllModsKnownDictionary.Add(mod.IdWithMotif, mod); } // no error thrown if multiple mods with this ID are present - just pick one } ProteaseMods = UsefulProteomicsDatabases.PtmListLoader.ReadModsFromFile(Path.Combine(DataDir, @"Mods", @"ProteaseMods.txt"), out var errors).ToList(); ProteaseDictionary.Dictionary = ProteaseDictionary.LoadProteaseDictionary(Path.Combine(DataDir, @"ProteolyticDigestion", @"proteases.tsv"), ProteaseMods); }
public static DBOptions GetDBOptions(bool loadFromRaw, bool onlyYions, IConSol console) { string outputDir = @"C:\_IRIC\DATA\Test\testNB\Iso3\"; string fastaFile = @"C:\_IRIC\Data\NB\peptide.fasta"; DBOptions dbOptions = new DBOptions(fastaFile, console); dbOptions.precursorMassTolerance = new MassTolerance(8 /*8*//*8withoutisotopes*/, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(20 /*8*//*8withoutisotopes*/, MassToleranceUnits.ppm); //dbOptions.productMassTolerance = new MassTolerance(0.05/*0.034*//*without isotopes*/, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; //trypsin (no proline rule)"]; dbOptions.NoEnzymeSearch = false; // true; dbOptions.DecoyFusion = false; dbOptions.MaximumNumberOfFragmentsPerSpectrum = 400; //dbOptions.protease = proteases["trypsin (no proline rule)"]; dbOptions.ToleratedMissedCleavages = 200;// 2; dbOptions.MinimumPeptideLength = 5; dbOptions.MaximumPeptideLength = 300; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); //fixMods.Add(ModificationDictionary.Instance["propionylation of K"]); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); varMods.Add(ModificationDictionary.Instance["acetylation of K"]); varMods.Add(ModificationDictionary.Instance["propionylation of K"]); dbOptions.maximumVariableModificationIsoforms = 1024; dbOptions.variableModifications = varMods; dbOptions.addFragmentLoss = false; // true; dbOptions.addFragmentMods = false; // true; dbOptions.fragments = new Fragments(); if (!onlyYions) { dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); dbOptions.fragments.Add(new FragmentC()); dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentZ()); } dbOptions.fragments.Add(new FragmentY()); dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = !loadFromRaw; dbOptions.NbPSMToKeep = 100; return(dbOptions); }
private DBOptions CreateOptions(string fastaFile, string outputFolder, IConSol consol) { DBOptions dbOptions = new DBOptions(fastaFile, consol); dbOptions.precursorMassTolerance = new MassTolerance(precTolPpm, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(prodTolPpm, MassToleranceUnits.ppm); dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputFolder; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; //dbOptions.DigestionEnzyme = proteases["top-down"]; dbOptions.NoEnzymeSearch = false; dbOptions.DecoyFusion = false; dbOptions.MaximumNumberOfFragmentsPerSpectrum = 400; dbOptions.ToleratedMissedCleavages = 200; dbOptions.MinimumPeptideLength = 5; dbOptions.MaximumPeptideLength = 300; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); foreach (string strMod in ModificationDictionary.Instance.Keys) { varMods.Add(ModificationDictionary.Instance[strMod]); } dbOptions.maximumVariableModificationIsoforms = 1024; dbOptions.variableModifications = varMods; dbOptions.addFragmentLoss = false; dbOptions.addFragmentMods = false;//Gives very bad results... might by off dbOptions.fragments = new Fragments(); dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); dbOptions.fragments.Add(new FragmentC()); dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentY()); dbOptions.fragments.Add(new FragmentZ()); dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = true; dbOptions.NbPSMToKeep = 100; return(dbOptions); }
public static void ProteaseLoader() { string path1 = Path.Combine(TestContext.CurrentContext.TestDirectory, "ProteaseFilesForLoadingTests", "TestProteases_badMod.tsv"); string path2 = Path.Combine(TestContext.CurrentContext.TestDirectory, "ProteaseFilesForLoadingTests", "TestProteases_badMod_dupName.tsv"); string path3 = Path.Combine(TestContext.CurrentContext.TestDirectory, "ProteaseFilesForLoadingTests", "TestProteases_dupName.tsv"); string path4 = Path.Combine(TestContext.CurrentContext.TestDirectory, "ProteaseFilesForLoadingTests", "TestProteases_Mod_dupName.tsv"); var proteaseMods = PtmListLoader.ReadModsFromFile(Path.Combine(TestContext.CurrentContext.TestDirectory, "ModificationTests", "ProteaseMods.txt"), out var errors).ToList(); Assert.Throws <MzLibUtil.MzLibException>(() => ProteaseDictionary.LoadProteaseDictionary(path1, proteaseMods)); Assert.Throws <MzLibUtil.MzLibException>(() => ProteaseDictionary.LoadProteaseDictionary(path2, proteaseMods)); Assert.Throws <MzLibUtil.MzLibException>(() => ProteaseDictionary.LoadProteaseDictionary(path3, proteaseMods)); Assert.Throws <MzLibUtil.MzLibException>(() => ProteaseDictionary.LoadProteaseDictionary(path4, proteaseMods)); }
public static DBOptions CreateOptions(string outputDir) { //@"G:\Thibault\Olivier\MnR\Databases\BD_RefGenome_WithReverse_2012-06-20.fasta"; string fastaFile = @"C:\_IRIC\DATA\MHC\human_reference_2013-26-03.fasta";// Ref genome //@"C:\_IRIC\DATA\Test\testMHC\MHC_Sette_Peptides_20091001.fasta";//Sette Peptides //C:\_IRIC\DATA\MHC\4468.fasta";//MnR\Mixed_M_2013-21-01.fasta";//MHC M One sample DBOptions dbOptions = new DBOptions(fastaFile); dbOptions.precursorMassTolerance = new MassTolerance(8 /*8withoutisotopes*/, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(0.05 /*without isotopes*/, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; dbOptions.NoEnzymeSearch = true; dbOptions.ToleratedMissedCleavages = 20;// 2; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); varMods.Add(ModificationDictionary.Instance["oxidation of M"]);//+ Deamidation M Q varMods.Add(ModificationDictionary.Instance["phosphorylation of S"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of T"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of Y"]);//*/ varMods.Add(ModificationDictionary.Instance["deamidation of N"]); varMods.Add(ModificationDictionary.Instance["deamidation of Q"]); varMods.Add(ModificationDictionary.Instance["cysteinylation of C"]); dbOptions.variableModifications = varMods; dbOptions.maximumVariableModificationIsoforms = 1024;// 2 * (varMods.Count + fixMods.Count);//TODO Evaluate the viability of this parameter dbOptions.PSMFalseDiscoveryRate = 0.01; dbOptions.addFragmentMods = false; dbOptions.addFragmentLoss = false; dbOptions.fragments = new Fragments(); //dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); //dbOptions.fragments.Add(new FragmentC()); //dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentY()); //dbOptions.fragments.Add(new FragmentZ()); return(dbOptions); }
public static void ReadCustomFile() { Protein ParentProtein = new Protein("OKAREDY", "accession1"); string path = Path.Combine(TestContext.CurrentContext.TestDirectory, "DoubleProtease.tsv"); Assert.That(File.Exists(path)); var proteaseDict = ProteaseDictionary.LoadProteaseDictionary(path); Assert.That(proteaseDict.ContainsKey("Test1")); Assert.That(proteaseDict.ContainsKey("Test2")); Assert.That(proteaseDict.ContainsKey("Test3")); ProteaseDictionary.Dictionary.Add("Test1", proteaseDict["Test1"]); DigestionParams multiProtease1 = new DigestionParams(protease: "Test1", maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); var digestedList1 = ParentProtein.Digest(multiProtease1, new List <Modification>(), new List <Modification>()).ToList(); ProteaseDictionary.Dictionary.Remove("Test1"); var sequences = digestedList1.Select(p => p.BaseSequence).ToList(); Assert.That(sequences.Count == 3); Assert.That(sequences.Contains("OK")); Assert.That(sequences.Contains("A")); Assert.That(sequences.Contains("REDY")); ProteaseDictionary.Dictionary.Add("Test2", proteaseDict["Test2"]); DigestionParams multiProtease2 = new DigestionParams(protease: "Test2", maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); var digestedList2 = ParentProtein.Digest(multiProtease2, new List <Modification>(), new List <Modification>()).ToList(); ProteaseDictionary.Dictionary.Remove("Test2"); var sequences2 = digestedList2.Select(p => p.BaseSequence).ToList(); Assert.That(sequences2.Count == 3); Assert.That(sequences2.Contains("OK")); Assert.That(sequences2.Contains("ARED")); Assert.That(sequences2.Contains("Y")); ProteaseDictionary.Dictionary.Add("Test3", proteaseDict["Test3"]); DigestionParams multiProtease3 = new DigestionParams(protease: "Test3", maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); var digestedList3 = ParentProtein.Digest(multiProtease3, new List <Modification>(), new List <Modification>()).ToList(); ProteaseDictionary.Dictionary.Remove("Test3"); var sequences3 = digestedList3.Select(p => p.BaseSequence).ToList(); Assert.That(sequences3.Count == 2); Assert.That(sequences3.Contains("OK")); Assert.That(sequences3.Contains("AREDY")); }
public static void ProteaseModTest() { Loaders.LoadElements(); string subFolder = Path.Combine(TestContext.CurrentContext.TestDirectory, @"DigestionTest"); Directory.CreateDirectory(subFolder); string databasePath1 = Path.Combine(TestContext.CurrentContext.TestDirectory, "DatabaseTests", "ProteaseModTest.fasta"); var protDic = ProteaseDictionary.LoadProteaseDictionary(Path.Combine(GlobalVariables.DataDir, @"ProteolyticDigestion", @"proteases.tsv"), GlobalVariables.ProteaseMods); DigestionParams param = new DigestionParams(protease: "CNBr", maxMissedCleavages: 0); var proteinList = ProteinDbLoader.LoadProteinFasta(databasePath1, true, DecoyType.None, false, out List <string> errors); var protein = proteinList[0]; var peptides = protein.Digest(param, new List <Modification>(), new List <Modification>()).ToList(); Assert.AreEqual(2, peptides.Count()); Assert.AreNotEqual(peptides[0].FullSequence, peptides[1].FullSequence); Assert.AreEqual(882.39707781799996, peptides[0].MonoisotopicMass); Assert.AreEqual(930.400449121, peptides[1].MonoisotopicMass); }
// Status log stuff public SettingsForAnalysis(string name) { this.Name = name; this.fixedModifications = new List <Modification>(); this.variableModifications = new List <Modification>(); this.Adducts = new List <Adduct>(); this.Polymers = new List <Polymer>(); ProteaseDictionary proteases = null; try { proteases = ProteaseDictionary.Instance; _proteases = proteases.Values.ToArray(); } catch { //MessageBox.Show("Your proteases file (" + Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "Morpheus\\proteases.tsv") + ") is likely corrupt. Please correct it. Program will now exit."); //Application.Exit(); } }
public static DBOptions CreateOptions() { DBOptions dbOptions = new DBOptions(""); dbOptions.precursorMassTolerance = new MassTolerance(8 /*8withoutisotopes*/, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(0.034 /*without isotopes*/, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 20000; dbOptions.OutputFolder = ""; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; dbOptions.ToleratedMissedCleavages = 20000; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); dbOptions.variableModifications = varMods; dbOptions.maximumVariableModificationIsoforms = 2 * (varMods.Count + fixMods.Count);//TODO Evaluate the viability of this parameter dbOptions.MinimumPeptideLength = 4; return(dbOptions); }
public static void Launch()//Trinity.UnitTest.SettePeptideSample.Launch() { string outputDir = @"C:\_IRIC\DATA\Test\testMHCSette\"; string fastaFile = @"C:\_IRIC\DATA\MHC Sette\MHC_Sette_Peptides_20091001.fasta"; string projectFile = @"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\JUL03_2013\ProjectFile_SETTEpep_OneRAW.csv"; DBOptions dbOptions = new DBOptions(fastaFile); try { Samples Project = new Samples(projectFile, 0, dbOptions); dbOptions.precursorMassTolerance = new MassTolerance(5, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(0.068, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; dbOptions.NoEnzymeSearch = false; dbOptions.ToleratedMissedCleavages = 20;// 2; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); //fixMods.Add(ModificationDictionary.Instance["carbamidomethylation of C"]); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); varMods.Add(ModificationDictionary.Instance["oxidation of M"]); //+ Deamidation M Q varMods.Add(ModificationDictionary.Instance["phosphorylation of S"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of T"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of Y"]); //*/ varMods.Add(ModificationDictionary.Instance["deamidation of N"]); varMods.Add(ModificationDictionary.Instance["deamidation of Q"]); varMods.Add(ModificationDictionary.Instance["cysteinylation of C"]); dbOptions.variableModifications = varMods; dbOptions.maximumVariableModificationIsoforms = 1024;// 2 * (varMods.Count + fixMods.Count);//TODO Evaluate the viability of this parameter dbOptions.PSMFalseDiscoveryRate = 0.05; dbOptions.addFragmentMods = false; dbOptions.addFragmentLoss = false; dbOptions.fragments = new Fragments(); // dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); // dbOptions.fragments.Add(new FragmentC()); // dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentY()); // dbOptions.fragments.Add(new FragmentZ()); //ClusterOptions clusterOptions = new ClusterOptions(Project, outputDir, 5, true, 90, true);//TODO validate its in seconds for all file types Propheus propheus = new Propheus(dbOptions, Project); dbOptions.SaveMS1Peaks = false; dbOptions.SaveMSMSPeaks = false; dbOptions.LoadSpectraIfFound = true; propheus.Preload(true); propheus.PrepareQueries(); //First pass (used to optimize parameters and score weights) Result tmp = propheus.SearchVersionAugust2013(propheus.AllQueries, true);//, 1.0, false, false, null); tmp.WriteInfoToCsv(true); tmp.Export(0.02, "FirstPass_02_"); dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; //Second search propheus.Preload(true); propheus.PrepareQueries(); Result finalRez = propheus.SearchLatestVersion(propheus.AllQueries, false);//, 1.0, false, false, null); //tmp.Export(0.05, "05_"); tmp.Export(0.02, "02_"); //tmp.Export(1.0, "All_"); //UnitTest.Tests.MatchAllFragments(tmp); //tmp.WriteInfoToConsole(); //tmp.Save(); /* * Optimizer op = new Optimizer(propheus); * op.LaunchBestPSMOptimization(tmp); * op.LaunchPrecursorScoreOptimization(tmp); * /* * propheus.Align(tmp); * * Result tmp2 = propheus.Search(1.0, false, null, propheus.CreateQueries(propheus.AllSpectras)); * tmp2.Export(0.05, "Aligned_05_"); * tmp2.Export(0.02, "Aligned_02_"); * tmp2.Export(double.MaxValue, "Aligned_All_"); * MSSearcher.Export(dbOptions.outputFolder + "Aligned_5PercentOptimized_precursors.csv", Optimizer.PrecursorOptimizer(tmp2.precursors, 0.05)); * tmp2.WriteInfoToConsole();//*/ } catch (Exception ex) { dbOptions.ConSole.WriteLine("Error in SettePeptideSample : " + ex.Message); dbOptions.ConSole.WriteLine(ex.StackTrace); } }
static GlobalVariables() { ProteaseGuruVersion = typeof(GlobalVariables).Assembly.GetName().Version.ToString(); if (ProteaseGuruVersion.Equals("1.0.0.0")) { #if DEBUG ProteaseGuruVersion = "Not a release version. DEBUG."; #else ProteaseGuruVersion = "0.0.23"; #endif } else { // AppVeyor appends the build number // this is intentional; it's to avoid conflicting AppVeyor build numbers // trim the build number off the version number for displaying/checking versions, etc var foundIndexes = new List <int>(); for (int i = 0; i < ProteaseGuruVersion.Length; i++) { if (ProteaseGuruVersion[i] == '.') { foundIndexes.Add(i); } } ProteaseGuruVersion = ProteaseGuruVersion.Substring(0, foundIndexes.Last()); } { var pathToProgramFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); if (!String.IsNullOrWhiteSpace(pathToProgramFiles) && AppDomain.CurrentDomain.BaseDirectory.Contains(pathToProgramFiles) && !AppDomain.CurrentDomain.BaseDirectory.Contains("Jenkins")) { DataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "ProteaseGuru"); } else { DataDir = AppDomain.CurrentDomain.BaseDirectory; } } ElementsLocation = Path.Combine(DataDir, @"Data", @"elements.dat"); UsefulProteomicsDatabases.Loaders.LoadElements(); UnimodDeserialized = UsefulProteomicsDatabases.Loaders.LoadUnimod(Path.Combine(DataDir, @"Data", @"unimod.xml")).ToList(); PsiModDeserialized = UsefulProteomicsDatabases.Loaders.LoadPsiMod(Path.Combine(DataDir, @"Data", @"PSI-MOD.obo.xml")); var formalChargesDictionary = UsefulProteomicsDatabases.Loaders.GetFormalChargesDictionary(PsiModDeserialized); UniprotDeseralized = UsefulProteomicsDatabases.Loaders.LoadUniprot(Path.Combine(DataDir, @"Data", @"ptmlist.txt"), formalChargesDictionary).ToList(); foreach (var modFile in Directory.GetFiles(Path.Combine(DataDir, @"Mods"))) { AddMods(UsefulProteomicsDatabases.PtmListLoader.ReadModsFromFile(modFile, out var errorMods), false); } AddMods(UniprotDeseralized.OfType <Modification>(), false); AddMods(UnimodDeserialized.OfType <Modification>(), false); // populate dictionaries of known mods/proteins for deserialization AllModsKnownDictionary = new Dictionary <string, Modification>(); foreach (Modification mod in AllModsKnown) { if (!AllModsKnownDictionary.ContainsKey(mod.IdWithMotif)) { AllModsKnownDictionary.Add(mod.IdWithMotif, mod); } // no error thrown if multiple mods with this ID are present - just pick one } ProteaseMods = UsefulProteomicsDatabases.PtmListLoader.ReadModsFromFile(Path.Combine(DataDir, @"Mods", @"ProteaseMods.txt"), out var errors).ToList(); ProteaseDictionary.Dictionary = ProteaseDictionary.LoadProteaseDictionary(Path.Combine(DataDir, @"ProteolyticDigestion", @"proteases.tsv"), ProteaseMods); RefreshAminoAcidDictionary(); }
/// <summary> /// Creates the options used through the system for peptide identification /// </summary> /// <param name="fastaFile"></param> /// <param name="outputFolder"></param> /// <param name="consol"></param> /// <returns></returns> public static DBOptions CreateOptions(string fastaFile, string outputFolder, double precTolPpm, double prodTolDa, IConSol consol) { DBOptions dbOptions = new DBOptions(fastaFile, consol); dbOptions.precursorMassTolerance = new MassTolerance(precTolPpm, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(prodTolDa, MassToleranceUnits.Da); dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputFolder; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; //dbOptions.DigestionEnzyme = proteases["top-down"]; dbOptions.NoEnzymeSearch = false; dbOptions.DecoyFusion = false; dbOptions.MaximumNumberOfFragmentsPerSpectrum = 400; dbOptions.ToleratedMissedCleavages = 200; dbOptions.MinimumPeptideLength = 5; dbOptions.MaximumPeptideLength = 300; List <Modification> fixMods = new List <Modification>(); dbOptions.fixedModifications = fixMods; List <Modification> varMods = new List <Modification>(); foreach (string strMod in ModificationDictionary.Instance.Keys) { varMods.Add(ModificationDictionary.Instance[strMod]); } dbOptions.maximumVariableModificationIsoforms = 4096;// 2048;// 1024; dbOptions.variableModifications = varMods; dbOptions.addFragmentLoss = false; dbOptions.addFragmentMods = false; dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = true; dbOptions.NbPSMToKeep = 16; dbOptions.fullFragment = new FullFragments(false);//true by default //18 Mars 2014 Uptimized scores dbOptions.dProduct = 0.0917981081138356; dbOptions.dPrecursor = 0.345789190542786; dbOptions.dMatchingProductFraction = 0.427418045898628; dbOptions.dMatchingProduct = 0; dbOptions.dIntensityFraction = 0.429418127252449; dbOptions.dIntensity = 0; dbOptions.dProtein = 0.692270441303156; dbOptions.dPeptideScore = 0.636739763262095; dbOptions.dFragmentScore = 0.0229058195943506; /* * dbOptions.dProduct = 0.0886869235377232; * dbOptions.dPrecursor = 0.714634842572098; * dbOptions.dMatchingProductFraction = 0.432872176371921; * dbOptions.dMatchingProduct = 0.00492531899592156; * dbOptions.dIntensityFraction = 0.73908941342453; * dbOptions.dIntensity = 0;// 0.687398171372431; * dbOptions.dProtein = 0.574124578188231; * dbOptions.dPeptideScore = 0.315866923572434; * dbOptions.dFragmentScore = 0.0322849750669137;//*/ /* * dbOptions.dProduct = 0.0; * dbOptions.dPrecursor = 0.12; * dbOptions.dMatchingProductFraction = 0.45; * dbOptions.dMatchingProduct = 0;// 0; * dbOptions.dIntensityFraction = 0.13; * dbOptions.dIntensity = 0; * dbOptions.dProtein = 0; * dbOptions.dPeptideScore = 0.3; * dbOptions.dFragmentScore = 0.0;//*/ /* * //Morpheus original score * dbOptions.dProduct = 1.0; * dbOptions.dPrecursor = 0; * dbOptions.dMatchingProductFraction = 0; * dbOptions.dMatchingProduct = 0; * dbOptions.dIntensityFraction = 1; * dbOptions.dIntensity = 0; * dbOptions.dProtein = 0; * dbOptions.dPeptideScore = 0; * dbOptions.dFragmentScore = 0.0;//*/ return(dbOptions); }
public static void Launch(bool restrain = false) { //@"G:\Thibault\Olivier\MnR\Databases\BD_RefGenome_WithReverse_2012-06-20.fasta"; //Trypsin string outputDir = @"C:\_IRIC\DATA\Test\testPK\"; string fastaFile = @"C:\_IRIC\DATA\Yeast\Yeast_SwissProt.fasta";//Yeast //@"G:\Thibault\Olivier\MQ_vs_Morpheus\Yeast_SwissProt.fasta";//Yeast //@"G:\Thibault\Olivier\Databases\SProHNoIso_20130430\current\sequences_2013-05-30.fa"; //G:\Thibault\Olivier\MnR\Databases\mini_human_reference_2013-26-03.fasta";//Yeast string projectFile = @"C:\_IRIC\DATA\PK\NotCalibrated\project_fr1.csv";//Yeast //@"G:\Thibault\Olivier\MQ_vs_Morpheus\project.csv";//Yeast //@"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\JAN22_2013\_Project_FL_Single.csv"; //G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\JUN27_2012\MR 4Rep DS\MassSense\_Test_ProjectFile_MF3.csv"; //G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\MAR18_2013\ProjectFile_TestForProPheus.csv"; DBOptions dbOptions = new DBOptions(fastaFile); Samples Project = new Samples(projectFile, 0, dbOptions); dbOptions.precursorMassTolerance = new MassTolerance(80, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(80, MassToleranceUnits.ppm);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["trypsin (no proline rule)"]; //"no enzyme"]; dbOptions.NoEnzymeSearch = false; // true; dbOptions.DecoyFusion = false; //dbOptions.protease = proteases["trypsin (no proline rule)"]; dbOptions.ToleratedMissedCleavages = 2; dbOptions.MinimumPeptideLength = 5; dbOptions.MaximumPeptideLength = 300; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); fixMods.Add(ModificationDictionary.Instance["carbamidomethylation of C"]); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); //Oxidation (M);Acetyl (Protein N-term);Phospho (STY) //Mods for Yeast if (!restrain) { //varMods.Add(ModificationDictionary.Instance["oxidation of M"]); //varMods.Add(ModificationDictionary.Instance["acetylation of protein N-terminus"]); //varMods.Add(ModificationDictionary.Instance["phosphorylation of S"]); //varMods.Add(ModificationDictionary.Instance["phosphorylation of T"]); //varMods.Add(ModificationDictionary.Instance["phosphorylation of Y"]);//*/ varMods.Add(ModificationDictionary.Instance["Pionylation of peptide N-terminus"]); dbOptions.maximumVariableModificationIsoforms = 1024;// 2 * (varMods.Count + fixMods.Count);//TODO Evaluate the viability of this parameter } else { dbOptions.maximumVariableModificationIsoforms = 2; } dbOptions.variableModifications = varMods; dbOptions.addFragmentLoss = false; dbOptions.addFragmentMods = false; dbOptions.fragments = new Fragments(); //dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); //dbOptions.fragments.Add(new FragmentC()); //dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentY()); //dbOptions.fragments.Add(new FragmentZ()); //ClusterOptions clusterOptions = new ClusterOptions(Project, outputDir, 5, true, 90, true);//TODO validate its in seconds for all file types Propheus propheus = new Propheus(dbOptions, Project); dbOptions.SaveMS1Peaks = false; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = true; dbOptions.NbPSMToKeep = 10; propheus.Preload(false, false); propheus.PrepareQueries(); //First pass (used to optimize parameters and score weights) Result tmp = propheus.SearchLatestVersion(propheus.AllQueries, false); //Compute number of Moded (Pionylated peptides) at given Ms tolerance long nbPsmDecoy = 0; long nbPsmTarget = 0; double avgShift = 0; foreach (Query query in tmp.queries) { foreach (PeptideSpectrumMatch psm in query.psms) { if (string.IsNullOrEmpty(psm.Peptide.VariableModificationsInString)) { nbPsmTarget++; avgShift += psm.PrecursorMzError; } else { nbPsmDecoy++; } } } avgShift /= (double)nbPsmTarget; dbOptions.ConSole.WriteLine("Average shift : " + avgShift); //tmp.WriteInfoToCsv(true); //tmp.Export(0.02, "FirstPass_02_"); }
public static void Launch(IConSol console) { //@"G:\Thibault\Olivier\MnR\Databases\BD_RefGenome_WithReverse_2012-06-20.fasta"; //Trypsin string outputDir = @"C:\_IRIC\DATA\Yeast\Results\"; string fastaFile = @"C:\_IRIC\DATA\Yeast\Yeast_SwissProt.fasta";//Yeast //@"G:\Thibault\Olivier\MQ_vs_Morpheus\Yeast_SwissProt.fasta";//Yeast //@"G:\Thibault\Olivier\Databases\SProHNoIso_20130430\current\sequences_2013-05-30.fa"; //G:\Thibault\Olivier\MnR\Databases\mini_human_reference_2013-26-03.fasta";//Yeast string projectFile = @"C:\_IRIC\DATA\Yeast\project.csv";//Yeast //@"G:\Thibault\Olivier\MQ_vs_Morpheus\project.csv";//Yeast //@"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\JAN22_2013\_Project_FL_Single.csv"; //G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\JUN27_2012\MR 4Rep DS\MassSense\_Test_ProjectFile_MF3.csv"; //G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\MAR18_2013\ProjectFile_TestForProPheus.csv"; DBOptions dbOptions = new DBOptions(fastaFile, console); Samples Project = new Samples(projectFile, 0, dbOptions); dbOptions.precursorMassTolerance = new MassTolerance(8 /*8*//*8withoutisotopes*/, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(0.034 /*0.034*//*without isotopes*/, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz //dbOptions.productMassTolerance = new MassTolerance(20, MassToleranceUnits.ppm); dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["trypsin (no proline rule)"]; //"no enzyme"]; dbOptions.NoEnzymeSearch = false; // true; dbOptions.DecoyFusion = false; //dbOptions.protease = proteases["trypsin (no proline rule)"]; dbOptions.ToleratedMissedCleavages = 2; dbOptions.MinimumPeptideLength = 5; dbOptions.MaximumPeptideLength = 300; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); fixMods.Add(ModificationDictionary.Instance["carbamidomethylation of C"]); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); //Oxidation (M);Acetyl (Protein N-term);Phospho (STY) //Mods for Yeast varMods.Add(ModificationDictionary.Instance["oxidation of M"]); varMods.Add(ModificationDictionary.Instance["acetylation of protein N-terminus"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of S"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of T"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of Y"]); //*/ dbOptions.maximumVariableModificationIsoforms = 2 * (varMods.Count + fixMods.Count); //TODO Evaluate the viability of this parameter dbOptions.variableModifications = varMods; dbOptions.NbPSMToKeep = 16; dbOptions.addFragmentLoss = false; dbOptions.addFragmentMods = false; dbOptions.fragments = new Fragments(); dbOptions.fragments.Add(new FragmentA()); dbOptions.fragments.Add(new FragmentB()); dbOptions.fragments.Add(new FragmentC()); dbOptions.fragments.Add(new FragmentX()); dbOptions.fragments.Add(new FragmentY()); dbOptions.fragments.Add(new FragmentZ()); dbOptions.dProduct = 0.0; dbOptions.dPrecursor = 0.1; // 0.12; dbOptions.dMatchingProductFraction = 0.8; // 0.45; dbOptions.dMatchingProduct = 0.0; // 0.5; dbOptions.dIntensityFraction = 0.1; // 45;// 0.0;//0.13; dbOptions.dIntensity = 0; dbOptions.dProtein = 0; dbOptions.dPeptideScore = 0.0; // 0.3; dbOptions.dFragmentScore = 0.0; // 0.5; //ClusterOptions clusterOptions = new ClusterOptions(Project, outputDir, 5, true, 90, true);//TODO validate its in seconds for all file types dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = true; Propheus propheus = new Propheus(dbOptions, Project); propheus.Preload(false, false); propheus.PrepareQueries(); //To beat : 4653 (MaxQuant) Psm at 2%FDR //First pass (used to optimize parameters and score weights) Result tmp = propheus.SearchLatestVersion(propheus.AllQueries, true, false);//, 1.0, false, false, null); tmp.WriteInfoToCsv(true); tmp.Export(0.02, "FirstPass_02_"); //Second search propheus.Preload(true); propheus.PrepareQueries(); Result finalRez = propheus.SearchLatestVersion(propheus.AllQueries, false);//, 1.0, false, false, null); //tmp.Export(0.05, "05_"); tmp.Export(0.02, "02_"); //tmp.Export(0.05, "05_AllFragments"); // tmp.Export(0.01, "01_"); //tmp.Export(double.MaxValue, "All_"); //tmp.WriteInfoToConsole(); /* * Optimizer op = new Optimizer(propheus); * op.LaunchBestPSMOptimization(tmp);//.proteins, propheus.AllQueries); * //*/ //Optimizer op = new Optimizer(propheus); //MSSearcher.Export(dbOptions.outputFolder + "5PercentOptimized_precursors.csv", Optimizer.PrecursorOptimizer(tmp.precursors, 0.05)); //op.LaunchBestPSMOptimization(tmp);//.proteins, propheus.AllQueries); //op.LaunchPrecursorScoreOptimization(tmp);//.proteins, propheus.AllQueries); //op.Launch(tmp.proteins, propheus.AllQueries); /* * propheus.Align(tmp); * * Result tmp2 = propheus.Search(1.0, false, null, propheus.CreateQueries(propheus.AllSpectras)); * tmp2.Export(0.05, "Aligned_05_"); * tmp2.Export(double.MaxValue, "Aligned_All_"); * MSSearcher.Export(dbOptions.outputFolder + "Aligned_5PercentOptimized_precursors.csv", Optimizer.PrecursorOptimizer(tmp2.precursors, 0.05)); * tmp.WriteInfoToConsole();//*/ }
public UIsettings()//SettingsForAnalysis analysisSettings) { //this.analysisSettings = analysisSettings; this.informationKey = new BindingList <InformationKey>(); this.rawFiles = new BindingList <RawFileName>(); this.codeNames = new BindingList <CodeName>(); this.UserList = new BindingList <FileNameCategoryRow>(); this.SamplesList = new BindingList <FileNameCategoryRow>(); this.LcList = new BindingList <FileNameCategoryRow>(); this.MsList = new BindingList <FileNameCategoryRow>(); this.statusLogItems = new BindingList <StatusLogItem>(); this.ExternalResults = new BindingList <ExternalResultParseSetting>(); //this.emails = new BindingList<string>(); //this.proteaseList = new BindingList<Protease>(); //this.proteaseList.Clear(); this.initiatorMethionine = (InitiatorMethionineBehavior[])Enum.GetValues(typeof(InitiatorMethionineBehavior)); this.massToleranceUnitsPrecursor = (MassToleranceUnits[])Enum.GetValues(typeof(MassToleranceUnits)); this.massToleranceUnitsProduct = (MassToleranceUnits[])Enum.GetValues(typeof(MassToleranceUnits)); this.massTypePrecursor = (MassType[])Enum.GetValues(typeof(MassType)); this.massTypeProduct = (MassType[])Enum.GetValues(typeof(MassType)); ProteaseDictionary proteases = null; try { proteases = ProteaseDictionary.Instance; //foreach (Protease protease in proteases.Values) //{ // proteaseList.Add(protease); //} proteaseList = proteases.Values.ToArray(); } catch { //MessageBox.Show("Your proteases file (" + Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "Morpheus\\proteases.tsv") + ") is likely corrupt. Please correct it. Program will now exit."); //Application.Exit(); } ModificationDictionary modifications = null; try { modifications = ModificationDictionary.Instance; this.modificationList1 = new Modification[modifications.Count]; this.modificationList2 = new Modification[modifications.Count]; int i = 0; foreach (Modification modification in modifications.Values) { modificationList1[i] = modification; modificationList2[i] = modification; i++; } } catch { //MessageBox.Show("Your modifications file (" + Path.Combine(Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]), "modifications.tsv") + ") is likely corrupt. Please correct it."); } }
public static void CNBrProteinDigestion() { var proteaseMods = PtmListLoader.ReadModsFromFile(Path.Combine(TestContext.CurrentContext.TestDirectory, "ModificationTests", "ProteaseMods.txt"), out var errors).ToList(); var prot = new Protein("PEPTIDEMPEPTIDEM", null); var prot2 = new Protein("MPEPTIDEMPEPTIDE", null); string path = Path.Combine(TestContext.CurrentContext.TestDirectory, "DoubleProtease.tsv"); Assert.That(File.Exists(path)); var proteaseDict = ProteaseDictionary.LoadProteaseDictionary(path, proteaseMods); ProteaseDictionary.Dictionary = ProteaseDictionary.LoadProteaseDictionary(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ProteolyticDigestion", "proteases.tsv"), proteaseMods); var protease1 = proteaseDict["CNBr"]; DigestionParams digestionParams1 = new DigestionParams( protease: protease1.Name, maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); List <Modification> variableModifications1 = new List <Modification>(); var protease2 = proteaseDict["CNBr_old"]; DigestionParams digestionParams2 = new DigestionParams( protease: protease2.Name, maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); List <Modification> variableModifications2 = new List <Modification>(); var protease3 = proteaseDict["CNBr_N"]; DigestionParams digestionParams3 = new DigestionParams( protease: protease3.Name, maxMissedCleavages: 0, minPeptideLength: 1, initiatorMethionineBehavior: InitiatorMethionineBehavior.Retain); List <Modification> variableModifications3 = new List <Modification>(); var peps1 = prot.Digest(digestionParams1, new List <Modification>(), variableModifications1).ToList(); var peps2 = prot.Digest(digestionParams2, new List <Modification>(), variableModifications2).ToList(); var peps3 = prot2.Digest(digestionParams3, new List <Modification>(), variableModifications1).ToList(); Assert.AreNotEqual(null, protease3.CleavageMod); Assert.AreEqual("M", protease3.CleavageMod.Target.ToString()); Assert.AreNotEqual(peps3[0].MonoisotopicMass, peps3[1].MonoisotopicMass); Assert.AreEqual(882.39707781799996, peps3[1].MonoisotopicMass); Assert.AreEqual(930.400449121, peps3[0].MonoisotopicMass); Assert.AreEqual(null, protease2.CleavageMod); Assert.AreNotEqual(null, protease1.CleavageMod); Assert.AreEqual("M", protease1.CleavageMod.Target.ToString()); Assert.AreEqual(peps1[1].MonoisotopicMass, peps2[1].MonoisotopicMass); Assert.AreEqual(peps1[1].MonoisotopicMass, peps2[0].MonoisotopicMass); Assert.AreEqual(peps2[0].MonoisotopicMass, peps2[1].MonoisotopicMass); Assert.AreNotEqual(peps1[0].MonoisotopicMass, peps1[1].MonoisotopicMass); Assert.AreNotEqual(peps1[0].MonoisotopicMass, peps2[0].MonoisotopicMass); Assert.AreNotEqual(peps1[0].MonoisotopicMass, peps2[1].MonoisotopicMass); Assert.AreEqual(882.39707781799996, peps1[0].MonoisotopicMass); Assert.AreEqual(930.400449121, peps1[1].MonoisotopicMass); }
public static void Launch()//Trinity.UnitTest.SettePeptideSample.Launch() { string outputDir = @"C:\_IRIC\DATA\Test\testRTMHC\"; string fastaFile = @"C:\_IRIC\DATA\MHC Sette\MHC_Sette_Peptides_20091001.fasta"; string projectFile = //@"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\AUG06_2013\RT_MHC\Project_TEST_600mM.csv"; @"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\MAR26_2013\Project_NonFAIMS.csv"; // @"G:\Thibault\-=Proteomics_Raw_Data=-\ELITE\SEP10_2013\Project_TEST_75_100_300mM.csv"; DBOptions dbOptions = new DBOptions(fastaFile); try { Samples Project = new Samples(projectFile, 0, dbOptions); dbOptions.precursorMassTolerance = new MassTolerance(5, MassToleranceUnits.ppm); dbOptions.productMassTolerance = new MassTolerance(0.068, MassToleranceUnits.Da);//0.034 is a 60 000 resolution over 2000 range in mz dbOptions.MaximumPeptideMass = 200000; dbOptions.OutputFolder = outputDir; ProteaseDictionary proteases = ProteaseDictionary.Instance; dbOptions.DigestionEnzyme = proteases["no enzyme"]; dbOptions.NoEnzymeSearch = false; dbOptions.ToleratedMissedCleavages = 20;// 2; GraphML_List <Modification> fixMods = new GraphML_List <Modification>(); //fixMods.Add(ModificationDictionary.Instance["carbamidomethylation of C"]); dbOptions.fixedModifications = fixMods; GraphML_List <Modification> varMods = new GraphML_List <Modification>(); varMods.Add(ModificationDictionary.Instance["oxidation of M"]); //+ Deamidation M Q varMods.Add(ModificationDictionary.Instance["phosphorylation of S"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of T"]); varMods.Add(ModificationDictionary.Instance["phosphorylation of Y"]); //*/ varMods.Add(ModificationDictionary.Instance["deamidation of N"]); varMods.Add(ModificationDictionary.Instance["deamidation of Q"]); varMods.Add(ModificationDictionary.Instance["cysteinylation of C"]); dbOptions.variableModifications = varMods; dbOptions.maximumVariableModificationIsoforms = 1024;// 2 * (varMods.Count + fixMods.Count);//TODO Evaluate the viability of this parameter dbOptions.PSMFalseDiscoveryRate = 0.05; dbOptions.addFragmentMods = false; dbOptions.addFragmentLoss = false; dbOptions.fragments = new Fragments(); dbOptions.fragments.Add(new FragmentB()); dbOptions.fragments.Add(new FragmentY()); dbOptions.MinimumPrecursorIntensityRatioInIsolationWindow = 0.05; Propheus propheus = new Propheus(dbOptions, Project); dbOptions.SaveMS1Peaks = true; dbOptions.SaveMSMSPeaks = true; dbOptions.LoadSpectraIfFound = true; propheus.Preload(true); propheus.PrepareQueries(); } catch (Exception ex) { dbOptions.ConSole.WriteLine("Error in SettePeptideSample : " + ex.Message); dbOptions.ConSole.WriteLine(ex.StackTrace); } }
//Save all the user provided information in the proteases file for future use private void SaveCustomProtease_Click(object sender, RoutedEventArgs e) { string proteaseDirectory = System.IO.Path.Combine(GlobalVariables.DataDir, @"ProteolyticDigestion"); string proteaseFilePath = System.IO.Path.Combine(proteaseDirectory, @"proteases.tsv"); List <string> proteaseFileText = new List <string>(); proteaseFileText = File.ReadAllLines(proteaseFilePath).ToList(); //all of the protease properties that the user provided string name = proteaseNameTextBox.Text; string allCleavageResidues = sequencesInducingCleavageTextBox.Text; string allResiduesStoppingCleavage = sequencesPreventingCleavageBox.Text; var cleavageTerminus = (string)cleavageTerminusListBox.SelectedItem; var cleavageSpecificity = (string)cleavageSpecificityListBox.SelectedItem; string psiAccession = psiAccessionNumber.Text; string psiNames = psiName.Text; //formatting these properties for writing to the protease file, so they can be read in each time ProteaseGuru is used string proteaseInfo = name + "\t"; var singleCleavageSites = new List <string>(); var singlePreventionSites = new List <string>(); if (allCleavageResidues != "") { singleCleavageSites = allCleavageResidues.Split(',').ToList(); } if (allResiduesStoppingCleavage != "") { singlePreventionSites = allResiduesStoppingCleavage.Split(',').ToList(); } if (cleavageTerminus == "C") { string cleavageMotif = ""; var residues = singleCleavageSites.Count(); var count = 1; foreach (var residue in singleCleavageSites) { cleavageMotif += residue; if (singlePreventionSites.Count() != 0) { foreach (var prevent in singlePreventionSites) { cleavageMotif += "[" + prevent + "]"; } } if (count < residues) { cleavageMotif += "|,"; count++; } else if (count == residues) { cleavageMotif += "|"; } } proteaseInfo += cleavageMotif; } else if (cleavageTerminus == "N") { string cleavageMotif = ""; var residues = singleCleavageSites.Count(); var count = 1; foreach (var residue in singleCleavageSites) { cleavageMotif += "|" + residue; if (singlePreventionSites.Count() != 0) { foreach (var prevent in singlePreventionSites) { cleavageMotif += "[" + prevent + "]"; } } if (count < residues) { cleavageMotif += ","; count++; } } proteaseInfo += cleavageMotif; } if (modName != "") { proteaseInfo += "\t" + "\t" + "\t" + cleavageSpecificity + "\t" + psiAccession + "\t" + psiNames + "\t" + "\t" + modName; } else { proteaseInfo += "\t" + "\t" + "\t" + cleavageSpecificity + "\t" + psiAccession + "\t" + psiNames + "\t" + "\t"; } proteaseFileText.Add(proteaseInfo); File.WriteAllLines(proteaseFilePath, proteaseFileText); ProteaseDictionary.Dictionary = ProteaseDictionary.LoadProteaseDictionary(proteaseFilePath, GlobalVariables.ProteaseMods); proteaseAdded = true; }