Пример #1
0
        static void Main(string[] args)
        {
            if(args.Length > 0)
            {
                Arguments arguments = new Arguments(args);
                List<string> data = new List<string>(arguments["d"].Split(','));
                int min_assumed_precursor_charge_state = 2;
                if(arguments["minprecz"] != null)
                {
                    min_assumed_precursor_charge_state = int.Parse(arguments["minprecz"]);
                }
                int max_assumed_precursor_charge_state = 4;
                if(arguments["maxprecz"] != null)
                {
                    max_assumed_precursor_charge_state = int.Parse(arguments["maxprecz"]);
                }
                double abs_threshold = -1.0;
                if(arguments["at"] != null)
                {
                    abs_threshold = double.Parse(arguments["at"], CultureInfo.InvariantCulture);
                }
                double rel_threshold_percent = -1.0;
                if(arguments["rt"] != null)
                {
                    rel_threshold_percent = double.Parse(arguments["rt"], CultureInfo.InvariantCulture);
                }
                int max_peaks = 400;
                if(arguments["mp"] != null)
                {
                    max_peaks = int.Parse(arguments["mp"]);
                }
                bool assign_charge_states = true;
                if(arguments["acs"] != null)
                {
                    assign_charge_states = bool.Parse(arguments["acs"]);
                }
                bool deisotope = true;
                if(arguments["di"] != null)
                {
                    deisotope = bool.Parse(arguments["di"]);
                }
                string database = arguments["db"];
                bool append_decoys;
                if(arguments["ad"] != null)
                {
                    append_decoys = bool.Parse(arguments["ad"]);
                }
                else
                {
                    append_decoys = !ProteinFastaReader.HasDecoyProteins(database);
                }
                ProteaseDictionary proteases = ProteaseDictionary.Instance;
                Protease protease = proteases["trypsin (no proline rule)"];
                if(arguments["p"] != null)
                {
                    protease = proteases[arguments["p"]];
                }
                int max_missed_cleavages = 2;
                if(arguments["mmc"] != null)
                {
                    max_missed_cleavages = int.Parse(arguments["mmc"]);
                }
                InitiatorMethionineBehavior initiator_methionine_behavior = InitiatorMethionineBehavior.Variable;
                if(arguments["imb"] != null)
                {
                    initiator_methionine_behavior = (InitiatorMethionineBehavior)Enum.Parse(typeof(InitiatorMethionineBehavior), arguments["imb"], true);
                }
                ModificationDictionary mods = ModificationDictionary.Instance;
                List<Modification> fixed_mods = new List<Modification>();
                if(arguments["fm"] != null)
                {
                    foreach(string fixed_mod in arguments["fm"].Split(','))
                    {
                        fixed_mods.Add(mods[fixed_mod]);
                    }
                }
                List<Modification> variable_mods = new List<Modification>();
                if(arguments["vm"] != null)
                {
                    foreach(string variable_mod in arguments["vm"].Split(','))
                    {
                        variable_mods.Add(mods[variable_mod]);
                    }
                }
                int max_variable_mod_isoforms_per_peptide = 1024;
                if(arguments["mvmi"] != null)
                {
                    max_variable_mod_isoforms_per_peptide = int.Parse(arguments["mvmi"]);
                }
                double precursor_mass_tolerance_value = 2.1;
                if(arguments["precmtv"] != null)
                {
                    precursor_mass_tolerance_value = double.Parse(arguments["precmtv"], CultureInfo.InvariantCulture);
                }
                MassToleranceUnits precursor_mass_tolerance_units = MassToleranceUnits.Da;
                if(arguments["precmtu"] != null)
                {
                    precursor_mass_tolerance_units = (MassToleranceUnits)Enum.Parse(typeof(MassToleranceUnits), arguments["precmtu"], true);
                }
                MassTolerance precursor_mass_tolerance = new MassTolerance(precursor_mass_tolerance_value, precursor_mass_tolerance_units);
                MassType precursor_mass_type = MassType.Monoisotopic;
                if(arguments["precmt"] != null)
                {
                    precursor_mass_type = (MassType)Enum.Parse(typeof(MassType), arguments["precmt"], true);
                }
                bool prec_mono_correction = false;
                if(arguments["pmc"] != null)
                {
                    prec_mono_correction = bool.Parse(arguments["pmc"]);
                }
                int min_prec_mono_offset = -3;
                if(arguments["minpmo"] != null)
                {
                    min_prec_mono_offset = int.Parse(arguments["minpmo"]);
                }
                int max_prec_mono_offset = 1;
                if(arguments["maxpmo"] != null)
                {
                    max_prec_mono_offset = int.Parse(arguments["maxpmo"]);
                }
                double product_mass_tolerance_value = 0.025;
                if(arguments["prodmtv"] != null)
                {
                    product_mass_tolerance_value = double.Parse(arguments["prodmtv"], CultureInfo.InvariantCulture);
                }
                MassToleranceUnits product_mass_tolerance_units = MassToleranceUnits.Da;
                if(arguments["prodmtu"] != null)
                {
                    product_mass_tolerance_units = (MassToleranceUnits)Enum.Parse(typeof(MassToleranceUnits), arguments["prodmtu"], true);
                }
                MassTolerance product_mass_tolerance = new MassTolerance(product_mass_tolerance_value, product_mass_tolerance_units);
                MassType product_mass_type = MassType.Monoisotopic;
                if(arguments["prodmt"] != null)
                {
                    product_mass_type = (MassType)Enum.Parse(typeof(MassType), arguments["prodmt"], true);
                }
                double max_fdr = 0.01;
                if(arguments["fdr"] != null)
                {
                    max_fdr = double.Parse(arguments["fdr"], CultureInfo.InvariantCulture) / 100.0;
                }
                bool consider_mods_unique = false;
                if(arguments["cmu"] != null)
                {
                    consider_mods_unique = bool.Parse(arguments["cmu"]);
                }
                int max_threads = Environment.ProcessorCount;
                if(arguments["mt"] != null)
                {
                    max_threads = int.Parse(arguments["mt"]);
                }
                bool minimize_memory_usage = false;
                if(arguments["mmu"] != null)
                {
                    minimize_memory_usage = bool.Parse(arguments["mmu"]);
                }
                string output_folder = Environment.CurrentDirectory;
                if(arguments["o"] != null)
                {
                    output_folder = arguments["o"];
                }

                DatabaseSearcher database_searcher = new DatabaseSearcher(data,
                    min_assumed_precursor_charge_state, max_assumed_precursor_charge_state,
                    abs_threshold, rel_threshold_percent, max_peaks,
                    assign_charge_states, deisotope,
                    database, append_decoys,
                    protease, max_missed_cleavages, initiator_methionine_behavior,
                    fixed_mods, variable_mods, max_variable_mod_isoforms_per_peptide,
                    precursor_mass_tolerance, precursor_mass_type,
                    prec_mono_correction, min_prec_mono_offset, max_prec_mono_offset,
                    product_mass_tolerance, product_mass_type,
                    max_fdr, consider_mods_unique,
                    max_threads, minimize_memory_usage,
                    output_folder);

                database_searcher.Starting += HandleStarting;
                database_searcher.StartingFile += HandleStartingFile;
                database_searcher.UpdateStatus += HandleUpdateStatus;
                database_searcher.UpdateProgress += HandleUpdateProgress;
                database_searcher.ThrowException += HandleThrowException;
                database_searcher.FinishedFile += HandleFinishedFile;
                database_searcher.Finished += HandleFinished;

                database_searcher.Search();
            }
            else
            {
                Console.WriteLine("USAGE");
            }
        }
Пример #2
0
        private void btnSearch_Click(object sender, EventArgs e)
        {
            if(lstData.Items.Count == 0)
            {
                MessageBox.Show("No data files selected");
                btnAdd.Focus();
                return;
            }
            List<string> data_filepaths = new List<string>(lstData.Items.Count);
            foreach(string data_filepath in lstData.Items)
            {
                data_filepaths.Add(data_filepath);
            }
            bool assign_charge_states = chkAssignChargeStates.Checked;
            bool deisotope = chkDeisotope.Checked;
            string fasta_filepath = txtFastaFile.Text;
            if(!File.Exists(fasta_filepath))
            {
                if(fasta_filepath.Length > 0)
                {
                    MessageBox.Show("Invalid protein database file: " + fasta_filepath);
                }
                else
                {
                    MessageBox.Show("Invalid protein database file");
                }
                txtFastaFile.Focus();
                return;
            }
            bool on_the_fly_decoys = chkOnTheFlyDecoys.Checked;
            Protease protease = (Protease)cboProtease.SelectedItem;
            int max_missed_cleavages = (int)numMaxMissedCleavages.Value;
            InitiatorMethionineBehavior initiator_methionine_behavior = (InitiatorMethionineBehavior)Enum.Parse(typeof(InitiatorMethionineBehavior), cboInitiatorMethionineBehavior.Text, true);
            List<Modification> fixed_modifications = new List<Modification>(clbFixedModifications.CheckedItems.Count);
            foreach(object fixed_modification in clbFixedModifications.CheckedItems)
            {
                fixed_modifications.Add((Modification)fixed_modification);
            }
            List<Modification> variable_modifications = new List<Modification>(clbVariableModifications.CheckedItems.Count);
            foreach(object variable_modification in clbVariableModifications.CheckedItems)
            {
                variable_modifications.Add((Modification)variable_modification);
            }
            int max_variable_mod_isoforms = (int)numMaxVariableModIsoforms.Value;
            int min_assumed_precursor_charge_state = (int)numMinimumAssumedPrecursorChargeState.Value;
            int max_assumed_precursor_charge_state = (int)numMaximumAssumedPrecursorChargeState.Value;
            double absolute_threshold = -1.0;
            if(chkAbsoluteThreshold.Checked)
            {
                if(!double.TryParse(txtAbsoluteThreshold.Text, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out absolute_threshold))
                {
                    MessageBox.Show("Cannot parse absolute MS/MS peak threshold: " + txtAbsoluteThreshold.Text);
                    txtAbsoluteThreshold.Focus();
                    return;
                }
            }
            double relative_threshold_percent = -1.0;
            if(chkRelativeThreshold.Checked)
            {
                if(!double.TryParse(txtRelativeThresholdPercent.Text, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out relative_threshold_percent))
                {
                    MessageBox.Show("Cannot parse relative MS/MS peak threshold: " + txtRelativeThresholdPercent.Text);
                    txtRelativeThresholdPercent.Focus();
                    return;
                }
            }
            int max_peaks = -1;
            if(chkMaxNumPeaks.Checked)
            {
                max_peaks = (int)numMaxPeaks.Value;
            }
            MassTolerance precursor_mass_tolerance = new MassTolerance((double)numPrecursorMassTolerance.Value, (MassToleranceUnits)cboPrecursorMassToleranceUnits.SelectedIndex);
            MassType precursor_mass_type = (MassType)cboPrecursorMassType.SelectedIndex;
            List<double> accepted_precursor_mass_errors = new List<double>();
            if(txtAcceptedPrecursorMassErrors.Text.Length > 0)
            {
                foreach(string accepted_precursor_mass_error_text in txtAcceptedPrecursorMassErrors.Text.Split(';'))
                {
                    double accepted_precursor_mass_error;
                    if(!double.TryParse(accepted_precursor_mass_error_text, NumberStyles.Float | NumberStyles.AllowThousands, CultureInfo.InvariantCulture, out accepted_precursor_mass_error))
                    {
                        MessageBox.Show("Cannot parse accepted precursor mass errors: " + txtRelativeThresholdPercent.Text);
                        txtAcceptedPrecursorMassErrors.Focus();
                        return;
                    }
                    accepted_precursor_mass_errors.Add(accepted_precursor_mass_error);
                }
            }
            else
            {
                accepted_precursor_mass_errors.Add(0.0);
            }
            MassTolerance product_mass_tolerance = new MassTolerance((double)numProductMassTolerance.Value, (MassToleranceUnits)cboProductMassToleranceUnits.SelectedIndex);
            MassType product_mass_type = (MassType)cboProductMassType.SelectedIndex;
            double max_false_discovery_rate = (double)numMaximumFalseDiscoveryRatePercent.Value / 100.0;
            bool consider_modified_unique = chkConsiderModifiedUnique.Checked;
            int max_threads = (int)numMaxThreads.Value;
            bool minimize_memory_usage = chkMinimizeMemoryUsage.Checked;
            string output_folder = txtOutputFolder.Text;
            if(!Directory.Exists(output_folder))
            {
                try
                {
                    Directory.CreateDirectory(output_folder);
                }
                catch
                {
                    if(output_folder.Length > 0)
                    {
                        MessageBox.Show("Invalid output folder: " + output_folder);
                    }
                    else
                    {
                        MessageBox.Show("Invalid output folder");
                    }
                    txtOutputFolder.Focus();
                    return;
                }
            }

            DatabaseSearcher database_searcher = new DatabaseSearcher(data_filepaths,
                min_assumed_precursor_charge_state, max_assumed_precursor_charge_state,
                absolute_threshold, relative_threshold_percent, max_peaks,
                assign_charge_states, deisotope,
                fasta_filepath, on_the_fly_decoys,
                protease, max_missed_cleavages, initiator_methionine_behavior,
                fixed_modifications, variable_modifications, max_variable_mod_isoforms,
                precursor_mass_tolerance, precursor_mass_type,
                accepted_precursor_mass_errors,
                product_mass_tolerance, product_mass_type,
                max_false_discovery_rate, consider_modified_unique,
                max_threads, minimize_memory_usage,
                output_folder);

            database_searcher.Starting += HandleStarting;
            database_searcher.StartingFile += HandleStartingFile;
            database_searcher.UpdateStatus += HandleUpdateStatus;
            database_searcher.ReportTaskWithoutProgress += HandleReportTaskWithoutProgress;
            database_searcher.ReportTaskWithProgress += HandleReportTaskWithProgress;
            database_searcher.UpdateProgress += HandleUpdateProgress;
            database_searcher.ThrowException += HandleThrowException;
            database_searcher.FinishedFile += HandleFinishedFile;
            database_searcher.Finished += HandleFinished;

            lstData.SelectedItem = null;
            tspbProgress.Value = tspbProgress.Minimum;

            Thread thread = new Thread(new ThreadStart(database_searcher.Search));
            thread.IsBackground = true;
            thread.Start();
        }
Пример #3
0
        static void Main(string[] args)
        {
            if(args.Length > 0)
            {
                Arguments arguments = new Arguments(args);
                List<string> data = new List<string>(arguments["d"].Split(','));
                int min_assumed_precursor_charge_state = 2;
                if(arguments["minprecz"] != null)
                {
                    min_assumed_precursor_charge_state = int.Parse(arguments["minprecz"]);
                }
                int max_assumed_precursor_charge_state = 4;
                if(arguments["maxprecz"] != null)
                {
                    max_assumed_precursor_charge_state = int.Parse(arguments["maxprecz"]);
                }
                double abs_threshold = -1.0;
                if(arguments["at"] != null)
                {
                    abs_threshold = double.Parse(arguments["at"], CultureInfo.InvariantCulture);
                }
                double rel_threshold_percent = -1.0;
                if(arguments["rt"] != null)
                {
                    rel_threshold_percent = double.Parse(arguments["rt"], CultureInfo.InvariantCulture);
                }
                int max_peaks = 400;
                if(arguments["mp"] != null)
                {
                    max_peaks = int.Parse(arguments["mp"]);
                }
                bool assign_charge_states = true;
                if(arguments["acs"] != null)
                {
                    assign_charge_states = bool.Parse(arguments["acs"]);
                }
                bool deisotope = true;
                if(arguments["di"] != null)
                {
                    deisotope = bool.Parse(arguments["di"]);
                }
                string database = arguments["db"];
                Dictionary<string, Modification> known_variable_modifications = null;
                HashSet<Modification> variable_mods = new HashSet<Modification>();
                if(Path.GetExtension(database).Equals(".xml", StringComparison.InvariantCultureIgnoreCase))
                {
                    bool no_uniprot_mods = false;
                    if(arguments["noup"] != null)
                    {
                        no_uniprot_mods = bool.Parse(arguments["noup"]);
                    }
                    if (!no_uniprot_mods)
                    {
                        known_variable_modifications = ProteomeDatabaseReader.ReadUniProtXmlModifications(database);
                        variable_mods.UnionWith(known_variable_modifications.Values);
                    }
                }
                bool append_decoys = false;
                if(arguments["ad"] != null)
                {
                    append_decoys = bool.Parse(arguments["ad"]);
                }
                else
                {
                    append_decoys = Path.GetExtension(database).Equals(".xml", StringComparison.InvariantCultureIgnoreCase) || !ProteomeDatabaseReader.HasDecoyProteins(database);
                }
                ProteaseDictionary proteases = ProteaseDictionary.Instance;
                Protease protease = proteases["trypsin (no proline rule)"];
                if(arguments["p"] != null)
                {
                    protease = proteases[arguments["p"]];
                }
                int max_missed_cleavages = 2;
                if(arguments["mmc"] != null)
                {
                    max_missed_cleavages = int.Parse(arguments["mmc"]);
                }
                InitiatorMethionineBehavior initiator_methionine_behavior = InitiatorMethionineBehavior.Variable;
                if(arguments["imb"] != null)
                {
                    initiator_methionine_behavior = (InitiatorMethionineBehavior)Enum.Parse(typeof(InitiatorMethionineBehavior), arguments["imb"], true);
                }
                ModificationDictionary mods = ModificationDictionary.Instance;
                List<Modification> fixed_mods = new List<Modification>();
                if(arguments["fm"] != null)
                {
                    foreach(string fixed_mod in arguments["fm"].Split(';'))
                    {
                        fixed_mods.Add(mods[fixed_mod]);
                    }
                }
                if(arguments["vm"] != null)
                {
                    foreach(string variable_mod in arguments["vm"].Split(';'))
                    {
                        Modification mod;
                        if(!mods.TryGetValue(variable_mod, out mod))
                        {
                            known_variable_modifications.TryGetValue(variable_mod, out mod);
                        }
                        variable_mods.Add(mod);
                    }
                }
                int max_variable_mod_isoforms_per_peptide = 1024;
                if(arguments["mvmi"] != null)
                {
                    max_variable_mod_isoforms_per_peptide = int.Parse(arguments["mvmi"]);
                }
                double precursor_mass_tolerance_value = 2.1;
                if(arguments["precmtv"] != null)
                {
                    precursor_mass_tolerance_value = double.Parse(arguments["precmtv"], CultureInfo.InvariantCulture);
                }
                MassToleranceUnits precursor_mass_tolerance_units = MassToleranceUnits.Da;
                if(arguments["precmtu"] != null)
                {
                    precursor_mass_tolerance_units = (MassToleranceUnits)Enum.Parse(typeof(MassToleranceUnits), arguments["precmtu"], true);
                }
                MassTolerance precursor_mass_tolerance = new MassTolerance(precursor_mass_tolerance_value, precursor_mass_tolerance_units);
                MassType precursor_mass_type = MassType.Monoisotopic;
                if(arguments["precmt"] != null)
                {
                    precursor_mass_type = (MassType)Enum.Parse(typeof(MassType), arguments["precmt"], true);
                }
                List<double> accepted_precursor_mass_errors = new List<double>();
                if(arguments["apme"] != null && arguments["apme"].Length > 0)
                {
                    foreach(string accepted_precursor_mass_error in arguments["apme"].Split(';'))
                    {
                        accepted_precursor_mass_errors.Add(double.Parse(accepted_precursor_mass_error, CultureInfo.InvariantCulture));
                    }
                }
                else
                {
                    accepted_precursor_mass_errors.Add(0.0);
                }
                double product_mass_tolerance_value = 0.015;
                if(arguments["prodmtv"] != null)
                {
                    product_mass_tolerance_value = double.Parse(arguments["prodmtv"], CultureInfo.InvariantCulture);
                }
                MassToleranceUnits product_mass_tolerance_units = MassToleranceUnits.Da;
                if(arguments["prodmtu"] != null)
                {
                    product_mass_tolerance_units = (MassToleranceUnits)Enum.Parse(typeof(MassToleranceUnits), arguments["prodmtu"], true);
                }
                MassTolerance product_mass_tolerance = new MassTolerance(product_mass_tolerance_value, product_mass_tolerance_units);
                MassType product_mass_type = MassType.Monoisotopic;
                if(arguments["prodmt"] != null)
                {
                    product_mass_type = (MassType)Enum.Parse(typeof(MassType), arguments["prodmt"], true);
                }
                double max_fdr = 0.01;
                if(arguments["fdr"] != null)
                {
                    max_fdr = double.Parse(arguments["fdr"], CultureInfo.InvariantCulture) / 100.0;
                }
                bool consider_mods_unique = false;
                if(arguments["cmu"] != null)
                {
                    consider_mods_unique = bool.Parse(arguments["cmu"]);
                }
                int max_threads = Environment.ProcessorCount;
                if(arguments["mt"] != null)
                {
                    max_threads = int.Parse(arguments["mt"]);
                }
                bool minimize_memory_usage = false;
                if(arguments["mmu"] != null)
                {
                    minimize_memory_usage = bool.Parse(arguments["mmu"]);
                }
                string output_folder = Environment.CurrentDirectory;
                if(arguments["o"] != null)
                {
                    output_folder = arguments["o"];
                }

                DatabaseSearcher database_searcher = new DatabaseSearcher(data,
                    min_assumed_precursor_charge_state, max_assumed_precursor_charge_state,
                    abs_threshold, rel_threshold_percent, max_peaks,
                    assign_charge_states, deisotope,
                    database, append_decoys,
                    protease, max_missed_cleavages, initiator_methionine_behavior,
                    fixed_mods, variable_mods, max_variable_mod_isoforms_per_peptide,
                    precursor_mass_tolerance, precursor_mass_type,
                    accepted_precursor_mass_errors,
                    product_mass_tolerance, product_mass_type,
                    max_fdr, consider_mods_unique,
                    max_threads, minimize_memory_usage,
                    output_folder);

                database_searcher.Starting += HandleStarting;
                database_searcher.StartingFile += HandleStartingFile;
                database_searcher.UpdateStatus += HandleUpdateStatus;
                database_searcher.UpdateProgress += HandleUpdateProgress;
                database_searcher.ThrowException += HandleThrowException;
                database_searcher.FinishedFile += HandleFinishedFile;
                database_searcher.Finished += HandleFinished;

                database_searcher.Search();
            }
            else
            {
                Console.WriteLine(Program.GetProductNameAndVersion() + " USAGE");
            }
        }