Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #8
0
        // 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();
            }
        }
Example #9
0
        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);
        }
Example #10
0
        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();
        }
Example #12
0
        /// <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();//*/
        }
Example #15
0
        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.");
            }
        }
Example #16
0
        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);
        }
Example #17
0
        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;
        }