private void WriteFile(string filepath) { onStartingFile(new FilepathEventArgs(filepath)); txt_outputs = new Dictionary<string, StreamWriter>(); mgf_outputs = new Dictionary<string, StreamWriter>(); SortedDictionary<string, int> spectrum_counts = new SortedDictionary<string, int>(); SortedDictionary<string, int> dta_counts = new SortedDictionary<string, int>(); SortedDictionary<int, double> retention_times = new SortedDictionary<int, double>(); SortedDictionary<int, double> scan_filter_mzs = new SortedDictionary<int, double>(); SortedDictionary<int, double> precursor_mzs = new SortedDictionary<int, double>(); SortedDictionary<int, double> precursor_intensities = new SortedDictionary<int, double>(); SortedDictionary<int, double> precursor_denormalized_intensities = new SortedDictionary<int, double>(); SortedDictionary<int, int> precursor_charge_states = new SortedDictionary<int, int>(); SortedDictionary<int, string> precursor_fragmentation_methods = new SortedDictionary<int, string>(); SortedDictionary<int, double> elapsed_scan_times = new SortedDictionary<int, double>(); SortedDictionary<int, double> ion_injection_times = new SortedDictionary<int, double>(); SortedDictionary<int, double?> precursor_sns = new SortedDictionary<int, double?>(); SortedDictionary<int, int> precursor_peak_depths = new SortedDictionary<int, int>(); using (RawFile raw = new RawFile(filepath)) { // Open connection to the raw file raw.Open(); // Can generate massive background spectrum here... to remove from all the other spectra using (StreamWriter writer = new StreamWriter(Path.Combine(outputFolder, Path.GetFileNameWithoutExtension(filepath) + ".txt"))) { int count = 0; foreach (Spectrum msms in raw.GetNextMSMS()) { // Clean the spectrum CleanSpectrum(msms); // Write the spectrum out WriteSpectrumToFile(writer, msms); // Change Progress if (count > 100) { count = 0; double progress = (double)(msms.ScanNumber - raw.FirstScanNumber + 1) / (raw.LastScanNumber - raw.FirstScanNumber + 1); onUpdateProgress(new ProgressEventArgs((int)(progress * 100))); } count++; } } } // for (int scan_number = first_scan_number; scan_number <= last_scan_number; scan_number++) // { // string scan_filter = null; // raw.GetFilterForScanNum(scan_number, ref scan_filter); // if (scan_filter != null && scan_filter.Contains("@")) // { //* retention_times.Add(scan_number, time); //* scan_filter_mzs.Add(scan_number, precursor_mz); // if (!no_precursor_scan) // { // / // int? precursor_index = null; // int precusor_data_index = (int)RawLabelDataColumn.MZ; // int min = precursor_data.GetLowerBound(1); // int max = precursor_data.GetUpperBound(1); // for (int i = min; i <= max; i++) // { // if (Math.Abs(precursor_data[precusor_data_index, i] - precursor_mz) <= PEAK_IDENTIFICATION_MASS_TOLERANCE) // { // if (!precursor_index.HasValue || precursor_data[(int)RawLabelDataColumn.Intensity, i] > precursor_data[(int)RawLabelDataColumn.Intensity, precursor_index.Value]) // { // precursor_index = i; // } // } // } // if (!precursor_index.HasValue) // { // for (int i = precursor_data.GetLowerBound(1); i <= precursor_data.GetUpperBound(1); i++) // { // if (!precursor_index.HasValue || Math.Abs(precursor_data[(int)RawLabelDataColumn.MZ, i] - precursor_mz) < Math.Abs(precursor_data[(int)RawLabelDataColumn.MZ, precursor_index.Value] - precursor_mz)) // { // precursor_index = i; // } // } // } // if (precursor_index.HasValue) // { // precursor_mz = precursor_data[(int)RawLabelDataColumn.MZ, precursor_index.Value]; // precursor_mzs.Add(scan_number, precursor_mz); // precursor_intensities.Add(scan_number, precursor_data[(int)RawLabelDataColumn.Intensity, precursor_index.Value]); // object precursor_header_labels = null; // object precursor_header_values = null; // int precursor_array_size = -1; // raw.GetTrailerExtraForScanNum(precursor_scan_number, ref precursor_header_labels, ref precursor_header_values, ref precursor_array_size); // string[] precursor_header_label_strings = (string[])precursor_header_labels; // string[] precursor_header_value_strings = (string[])precursor_header_values; // if (precursor_header_label_strings != null && precursor_header_value_strings != null) // { // for (int header_i = precursor_header_label_strings.GetLowerBound(0); header_i <= precursor_header_label_strings.GetUpperBound(0); header_i++) // { // if (precursor_header_label_strings[header_i].StartsWith("Ion Injection Time (ms)")) // { // precursor_denormalized_intensities.Add(scan_number, precursor_data[(int)RawLabelDataColumn.Intensity, precursor_index.Value] * double.Parse(precursor_header_value_strings[header_i]) / 1000.0); // } // } // } // if (precursor_data.GetLength(0) > 2) // { // precursor_sns.Add(scan_number, (precursor_data[(int)RawLabelDataColumn.Intensity, precursor_index.Value] - precursor_data[(int)RawLabelDataColumn.NoiseBaseline, precursor_index.Value]) / precursor_data[(int)RawLabelDataColumn.NoiseLevel, precursor_index.Value]); // } // else // { // precursor_sns.Add(scan_number, null); // } // int peak_depth = 1; // int precursor_data_index = (int)RawLabelDataColumn.Intensity; // double prec_value = precursor_data[precursor_data_index, precursor_index.Value]; // min = precursor_data.GetLowerBound(1); // max = precursor_data.GetUpperBound(1); // for (int i = min; i <= max; i++) // { // if (precursor_data[precursor_data_index, i] > prec_value && i != precursor_index.Value) // { // peak_depth++; // } // } // precursor_peak_depths.Add(scan_number, peak_depth); // } // } // object header_labels = null; // object header_values = null; // int array_size = -1; // raw.GetTrailerExtraForScanNum(scan_number, ref header_labels, ref header_values, ref array_size); // string[] header_label_strings = (string[])header_labels; // string[] header_value_strings = (string[])header_values; // int charge = 0; // if (header_label_strings != null && header_value_strings != null) // { // for (int header_i = header_label_strings.GetLowerBound(0); header_i <= header_label_strings.GetUpperBound(0); header_i++) // { // if (header_label_strings[header_i].StartsWith("Charge")) // { // charge = int.Parse(header_value_strings[header_i]); // if (scan_filter.Contains(" - ")) // { // charge = -charge; // } // precursor_charge_states.Add(scan_number, charge); // } // else if (header_label_strings[header_i].StartsWith("Elapsed Scan Time (sec)")) // { // elapsed_scan_times.Add(scan_number, double.Parse(header_value_strings[header_i])); // } // else if (header_label_strings[header_i].StartsWith("Ion Injection Time (ms)")) // { // ion_injection_times.Add(scan_number, double.Parse(header_value_strings[header_i])); // } // } // } // object labels = null; // object flags = null; // raw.GetLabelData(ref labels, ref flags, ref scan_number); // double[,] data = (double[,])labels; // if (data.Length == 0) // { // double centroid_peak_width = -1.0; // labels = null; // flags = null; // int mass_list_array_size = -1; // raw.GetMassListFromScanNum(ref scan_number, null, 0, 0, 0, 1, ref centroid_peak_width, ref labels, ref flags, ref mass_list_array_size); // data = (double[,])labels; // } // double total_ion_current = 0.0; // double base_peak_mz = -1.0; // double base_peak_intensity = -1.0; // for (int data_i = data.GetLowerBound(1); data_i <= data.GetUpperBound(1); data_i++) // { // total_ion_current += data[(int)RawLabelDataColumn.Intensity, data_i]; // if (base_peak_mz < 0.0 || // data[(int)RawLabelDataColumn.Intensity, data_i] > base_peak_intensity) // { // base_peak_mz = data[(int)RawLabelDataColumn.MZ, data_i]; // base_peak_intensity = data[(int)RawLabelDataColumn.Intensity, data_i]; // } // } // List<int> charges = new List<int>(); // if (charge == 0 || no_precursor_scan) // { // for (int assumed_charge_state = minimumAssumedPrecursorChargeState; assumed_charge_state <= maximumAssumedPrecursorChargeState; assumed_charge_state++) // { // charges.Add(assumed_charge_state); // } // } // else // { // charges.Add(charge); // } // string mass_analyzer = scan_filter.Substring(0, 4).ToUpper(); // if (!mass_analyzer.Contains("MS")) // { // mass_analyzer = "TQMS"; // } // string fragmentation_method = null; // if (groupByActivationEnergyTime) // { // foreach (int i in AllIndicesOf(scan_filter, '@')) // { // string temp_scan_filter = scan_filter.Substring(i + 1); // temp_scan_filter = temp_scan_filter.Substring(0, temp_scan_filter.IndexOf(' ')); // fragmentation_method += temp_scan_filter.ToUpper() + '-'; // } // } // else // { // foreach (int i in AllIndicesOf(scan_filter, '@')) // { // fragmentation_method += scan_filter.Substring(i + 1, 3).ToUpper() + '-'; // } // } // fragmentation_method = fragmentation_method.Substring(0, fragmentation_method.Length - 1); // string base_output_filename = Path.GetFileNameWithoutExtension(filepath) + '_' + mass_analyzer + '_' + fragmentation_method; // precursor_fragmentation_methods.Add(scan_number, fragmentation_method); // if (!spectrum_counts.ContainsKey(mass_analyzer)) // { // spectrum_counts.Add(mass_analyzer, 0); // } // spectrum_counts[mass_analyzer]++; // if (!dta_counts.ContainsKey(mass_analyzer)) // { // dta_counts.Add(mass_analyzer, 0); // } // dta_counts[mass_analyzer] += charges.Count; // if (!spectrum_counts.ContainsKey(fragmentation_method)) // { // spectrum_counts.Add(fragmentation_method, 0); // } // spectrum_counts[fragmentation_method]++; // if (!dta_counts.ContainsKey(fragmentation_method)) // { // dta_counts.Add(fragmentation_method, 0); // } // dta_counts[fragmentation_method] += charges.Count; // if (!spectrum_counts.ContainsKey(mass_analyzer + ' ' + fragmentation_method)) // { // spectrum_counts.Add(mass_analyzer + ' ' + fragmentation_method, 0); // } // spectrum_counts[mass_analyzer + ' ' + fragmentation_method]++; // if (!dta_counts.ContainsKey(mass_analyzer + ' ' + fragmentation_method)) // { // dta_counts.Add(mass_analyzer + ' ' + fragmentation_method, 0); // } // dta_counts[mass_analyzer + ' ' + fragmentation_method] += charges.Count; // if (sequestDtaOutput || omssaTxtOutput || mascotMgfOutput) // { // List<MSPeak> all_peaks = new List<MSPeak>(); // for (int data_i = data.GetLowerBound(1); data_i <= data.GetUpperBound(1); data_i++) // { // double mz = data[(int)RawLabelDataColumn.MZ, data_i]; // all_peaks.Add(new MSPeak(mz, data[(int)RawLabelDataColumn.Intensity, data_i])); // } // foreach (int charge_i in charges) // { // double retention_time_min = double.NaN; // raw.RTFromScanNum(scan_number, ref retention_time_min); // double retention_time_s = retention_time_min * 60; // string dta_filepath = Path.GetFileNameWithoutExtension(filepath) + // '.' + mass_analyzer + '.' + fragmentation_method + // '.' + scan_number.ToString() + '.' + // scan_number.ToString() + '.' + // charge_i.ToString() + '.' + // "RT_" + retention_time_min.ToString("0.000") + "_min_" + retention_time_s.ToString("0.0") + "_s" + // ".dta"; // double precursor_mass = MassFromMZ(precursor_mz, charge_i); // StringBuilder dta_content_sb = new StringBuilder(); // StringBuilder mgf_content_sb = new StringBuilder(); // dta_content_sb.AppendLine((precursor_mass + PROTON_MASS).ToString("0.00000") + ' ' + charge_i.ToString()); // mgf_content_sb.AppendLine("BEGIN IONS"); // mgf_content_sb.AppendLine("Title=" + Path.GetFileNameWithoutExtension(dta_filepath)); // mgf_content_sb.AppendLine("SCANS=" + scan_number.ToString()); // mgf_content_sb.AppendLine("RTINSECONDS=" + retention_time_s.ToString()); // mgf_content_sb.AppendLine("PEPMASS=" + precursor_mz.ToString("0.00000")); // mgf_content_sb.AppendLine("CHARGE=" + charge_i.ToString("0+;0-")); // List<MSPeak> peaks = new List<MSPeak>(all_peaks); // bool isHCD = fragmentation_method.StartsWith("HCD"); // bool isETD = fragmentation_method.StartsWith("ETD") || fragmentation_method.StartsWith("ECD"); // // FOR AARON //#if Aaron_Experiment // isETD = isETD || scan_filter.Contains("hcd0.5") || scan_filter.Contains("hcd1.5"); //#endif // // // if (neutralLossesIncluded) // { // List<KeyValuePair<double, double>> mzs = new List<KeyValuePair<double, double>>(); // foreach (double nl_mass in this.neutralLosses) // { // double mz = precursor_mz - MZFromMass(nl_mass, charge_i); // double min = mz - LOW_PRECURSOR_CLEANING_WINDOW_MZ; // double max = mz + HIGH_PRECURSOR_CLEANING_WINDOW_MZ; // mzs.Add(new KeyValuePair<double, double>(min, max)); // } // int p = 0; // while (p < peaks.Count) // { // double mz = peaks[p].MZ; // if (mz >= precursor_mz) // { // break; // } // bool removed = false; // foreach (KeyValuePair<double, double> minmax in mzs) // { // if (mz >= minmax.Key && mz <= minmax.Value) // { // peaks.RemoveAt(p); // removed = true; // break; // } // } // if (!removed) // { // p++; // } // } // } // // ETD pre-processing // if (enableEtdPreProcessing && isETD) // { // // negative ETD // if (scan_filter.Contains(" - ")) // { // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // bool clean = false; // for (int reduced_precursor_charge = -2; reduced_precursor_charge >= charge_i + 1; reduced_precursor_charge--) // { // if (mz >= MZFromMass(precursor_mass - NETD_LOW_NEUTRAL_LOSS_CLEANING_WINDOW_DA, reduced_precursor_charge) && // mz <= MZFromMass(precursor_mass + NETD_HIGH_NEUTRAL_LOSS_CLEANING_WINDOW_DA, reduced_precursor_charge)) // { // clean = true; // break; // } // if (mz >= MZFromMass(precursor_mass + NETD_ADDUCT_CLEANING_WINDOW_DA, reduced_precursor_charge) - NETD_ADDUCT_LOW_CLEANING_WINDOW_MZ && // mz <= MZFromMass(precursor_mass + NETD_ADDUCT_CLEANING_WINDOW_DA, reduced_precursor_charge) + NETD_ADDUCT_LOW_CLEANING_WINDOW_MZ) // { // clean = true; // break; // } // } // if (!clean) // { // if (mz >= MZFromMass(precursor_mass, -1) - NETD_SINGLY_CHARGED_LOW_NEUTRAL_LOSS_CLEANING_WINDOW_MZ) // { // clean = true; // } // } // if (clean) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // // positive ETD // else // { // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // bool clean = false; // for (int reduced_precursor_charge = 1; reduced_precursor_charge <= charge_i - 1; reduced_precursor_charge++) // { // if (mz >= MZFromMass(precursor_mass - LOW_NEUTRAL_LOSS_CLEANING_WINDOW_DA, reduced_precursor_charge) && // mz < MZFromMass(precursor_mass, reduced_precursor_charge) + HIGH_PRECURSOR_CLEANING_WINDOW_MZ) // { // clean = true; // break; // } // } // if (clean) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // // TMT duplex cleaning // if (cleanTmtDuplex) // { // if (fragmentation_method.StartsWith("CID") || fragmentation_method.StartsWith("PQD") || fragmentation_method.StartsWith("HCD")) // { // for (int reduced_charge_i = charge_i - 1; reduced_charge_i >= 1; reduced_charge_i--) // { // double precursor_tmt_duplex_tag_cleaning_mz = precursor_mz * reduced_charge_i - TMT_DUPLEX_CAD_TAG_LOSS_DA / reduced_charge_i; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_TMT_DUPLEX_CAD_REPORTER_MZ - TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_TMT_DUPLEX_CAD_REPORTER_MZ + TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= TMT_DUPLEX_CAD_TAG_MZ - TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= TMT_DUPLEX_CAD_TAG_MZ + TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_duplex_tag_cleaning_mz - TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_duplex_tag_cleaning_mz + TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // else if (fragmentation_method.StartsWith("ETD")) // { // for (int reduced_charge_i = charge_i - 1; reduced_charge_i >= 1; reduced_charge_i--) // { // double precursor_tmt_duplex_reporter_loss_cleaning_mz = precursor_mz * charge_i - TMT_DUPLEX_ETD_REPORTER_LOSS_DA / reduced_charge_i; // double precursor_tmt_duplex_tag_loss_cleaning_mz = precursor_mz * charge_i - TMT_DUPLEX_ETD_TAG_LOSS_DA / reduced_charge_i; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_TMT_DUPLEX_ETD_REPORTER_MZ - TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_TMT_DUPLEX_ETD_REPORTER_MZ + TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= TMT_DUPLEX_ETD_TAG_MZ - TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= TMT_DUPLEX_ETD_TAG_MZ + TMT_DUPLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_duplex_reporter_loss_cleaning_mz - TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_duplex_reporter_loss_cleaning_mz + TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_duplex_tag_loss_cleaning_mz - TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_duplex_tag_loss_cleaning_mz + TMT_DUPLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // } // // iTRAQ 4-plex cleaning // if (cleanItraq4Plex) // { // if (fragmentation_method.StartsWith("CID") || fragmentation_method.StartsWith("PQD") || fragmentation_method.StartsWith("HCD")) // { // double precursor_itraq_4plex_tag_cleaning_mz = precursor_mz * charge_i - ITRAQ_4PLEX_CAD_TAG_LOSS_DA; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_ITRAQ_4PLEX_CAD_REPORTER_MZ - ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_ITRAQ_4PLEX_CAD_REPORTER_MZ + ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= ITRAQ_4PLEX_CAD_TAG_MZ - ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= ITRAQ_4PLEX_CAD_TAG_MZ + ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_itraq_4plex_tag_cleaning_mz - ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_itraq_4plex_tag_cleaning_mz + ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // else if (fragmentation_method.StartsWith("ETD")) // { // double precursor_itraq_4plex_reporter_loss_cleaning_mz = precursor_mz * charge_i - ITRAQ_4PLEX_ETD_REPORTER_LOSS_DA; // double precursor_itraq_4plex_tag_loss_cleaning_mz = precursor_mz * charge_i - ITRAQ_4PLEX_ETD_TAG_LOSS_DA; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_ITRAQ_4PLEX_ETD_REPORTER_MZ - ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_ITRAQ_4PLEX_ETD_REPORTER_MZ + ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= ITRAQ_4PLEX_ETD_TAG_MZ - ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= ITRAQ_4PLEX_ETD_TAG_MZ + ITRAQ_4PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_itraq_4plex_reporter_loss_cleaning_mz - ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_itraq_4plex_reporter_loss_cleaning_mz + ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_itraq_4plex_tag_loss_cleaning_mz - ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_itraq_4plex_tag_loss_cleaning_mz + ITRAQ_4PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // // TMT 6-plex cleaning // if (cleanTmt6Plex) // { // if (fragmentation_method.StartsWith("CID") || fragmentation_method.StartsWith("PQD") || fragmentation_method.StartsWith("HCD")) // { // for (int reduced_charge_i = charge_i - 1; reduced_charge_i >= 1; reduced_charge_i--) // { // double precursor_tmt_6plex_tag_cleaning_mz = precursor_mz * reduced_charge_i - TMT_6PLEX_CAD_TAG_LOSS_DA / reduced_charge_i; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_TMT_6PLEX_CAD_REPORTER_MZ - TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_TMT_6PLEX_CAD_REPORTER_MZ + TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= TMT_6PLEX_CAD_TAG_MZ - TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= TMT_6PLEX_CAD_TAG_MZ + TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_6plex_tag_cleaning_mz - TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_6plex_tag_cleaning_mz + TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // else if (fragmentation_method.StartsWith("ETD")) // { // for (int reduced_charge_i = charge_i - 1; reduced_charge_i >= 1; reduced_charge_i--) // { // double precursor_tmt_6plex_reporter_loss_cleaning_mz = precursor_mz * charge_i - TMT_6PLEX_ETD_REPORTER_LOSS_DA / reduced_charge_i; // double precursor_tmt_6plex_tag_loss_cleaning_mz = precursor_mz * charge_i - TMT_6PLEX_ETD_TAG_LOSS_DA / reduced_charge_i; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_TMT_6PLEX_ETD_REPORTER_MZ - TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_TMT_6PLEX_ETD_REPORTER_MZ + TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= TMT_6PLEX_ETD_TAG_MZ - TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= TMT_6PLEX_ETD_TAG_MZ + TMT_6PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_6plex_reporter_loss_cleaning_mz - TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_6plex_reporter_loss_cleaning_mz + TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_tmt_6plex_tag_loss_cleaning_mz - TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_tmt_6plex_tag_loss_cleaning_mz + TMT_6PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // } // // iTRAQ 8-plex cleaning // if (cleanItraq8Plex) // { // if (fragmentation_method.StartsWith("CID") || fragmentation_method.StartsWith("PQD") || fragmentation_method.StartsWith("HCD")) // { // double precursor_itraq_4plex_tag_cleaning_mz = precursor_mz * charge_i - ITRAQ_8PLEX_CAD_TAG_LOSS_DA; // int p1 = 0; // while (p1 < peaks.Count) // { // double mz = peaks[p1].MZ; // if ((mz >= MINIMUM_ITRAQ_8PLEX_CAD_REPORTER_MZ - ITRAQ_8PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= MAXIMUM_ITRAQ_8PLEX_CAD_REPORTER_MZ + ITRAQ_8PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= ITRAQ_8PLEX_CAD_TAG_MZ - ITRAQ_8PLEX_CLEANING_MASS_TOLERANCE_MZ // && mz <= ITRAQ_8PLEX_CAD_TAG_MZ + ITRAQ_8PLEX_CLEANING_MASS_TOLERANCE_MZ) // || (mz >= precursor_itraq_4plex_tag_cleaning_mz - ITRAQ_8PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ // && mz <= precursor_itraq_4plex_tag_cleaning_mz + ITRAQ_8PLEX_LOSS_CLEANING_MASS_TOLERANCE_MZ)) // { // peaks.RemoveAt(p1); // } // else // { // p1++; // } // } // } // } // MSPeak base_peak = null; // foreach (MSPeak peak in peaks) // { // if (base_peak == null || peak.Intensity > base_peak.Intensity) // { // base_peak = peak; // } // } // //if (omssaTxtOutput) // //{ // //foreach (MSPeak peak in peaks) // //{ // // dta_content_sb.AppendFormat(" {0:0.00000} {1:0.000}", peak.MZ, peak.Intensity).AppendLine(); // //dta_content_sb.AppendLine(string.Format(" {0:0.00000} {1:0.00}", peak.MZ, peak.Intensity)); // //} // //} // if (mascotMgfOutput) // { // foreach (MSPeak peak in peaks) // { // mgf_content_sb.AppendLine(string.Format("{0:0.00000} {1:0.00}", peak.MZ, peak.Intensity)); // } // } // if (sequestDtaOutput) // { // StreamWriter dta = new StreamWriter(Path.Combine(outputFolder, dta_filepath)); // if (dta_content_sb.Length > 0) // { // dta.Write(dta_content_sb.ToString()); // } // dta.Close(); // } // if (omssaTxtOutput) // { // string txt_filepath = Path.Combine(outputFolder, // base_output_filename + ".txt"); // if (!txt_outputs.ContainsKey(txt_filepath)) // { // txt_outputs.Add(txt_filepath, new StreamWriter(txt_filepath)); // } // StreamWriter txt = txt_outputs[txt_filepath]; // txt.WriteLine("<dta id=\"" + scan_number.ToString() + "\" name=\"" + dta_filepath + "\">"); // txt.WriteLine(); // foreach (MSPeak peak in peaks) // { // txt.WriteLine(" {0:0.00000} {1:0.000}", peak.MZ, peak.Intensity); // // dta_content_sb.AppendFormat(" {0:0.00000} {1:0.000}", peak.MZ, peak.Intensity).AppendLine(); // //dta_content_sb.AppendLine(string.Format(" {0:0.00000} {1:0.00}", peak.MZ, peak.Intensity)); // } // // if(dta_content_sb.Length > 0) // // { // // txt.Write(dta_content_sb.ToString()); // // } // txt.WriteLine(); // txt.WriteLine(); // } // if (mascotMgfOutput) // { // string mgf_filepath = Path.Combine(outputFolder, // base_output_filename + ".mgf"); // if (!mgf_outputs.ContainsKey(mgf_filepath)) // { // mgf_outputs.Add(mgf_filepath, new StreamWriter(mgf_filepath)); // } // StreamWriter mgf = mgf_outputs[mgf_filepath]; // if (mgf_content_sb.Length > 0) // { // mgf.Write(mgf_content_sb.ToString()); // } // mgf.WriteLine("END IONS"); // mgf.WriteLine(); // } // } // } // } // // Perform update progress every 100 scans so not to slow down with all the callbacks // if (scan_number % 100 == 0) // { // double progress = (double)(scan_number - first_scan_number + 1) / (last_scan_number - first_scan_number + 1); // onUpdateProgress(new ProgressEventArgs((int)(progress * 100))); // } //} //raw.Close(); //if (txt_outputs != null) //{ // foreach (StreamWriter sw in txt_outputs.Values) // { // if (sw != null) // { // sw.Close(); // } // } //} //if (mgf_outputs != null) //{ // foreach (StreamWriter sw in mgf_outputs.Values) // { // if (sw != null) // { // sw.Close(); // } // } //} //using (StreamWriter log = new StreamWriter(Path.Combine(LogFolder, Path.GetFileNameWithoutExtension(filepath) + "_log.txt"))) //{ // log.WriteLine("DTA Generator PARAMETERS"); // log.WriteLine("Assumed Precursor Charge State Range: " + minimumAssumedPrecursorChargeState.ToString() + '-' + maximumAssumedPrecursorChargeState.ToString()); // log.WriteLine("Clean Precursor: " + cleanPrecursor.ToString()); // log.WriteLine("Enable ETD Pre-Processing: " + enableEtdPreProcessing.ToString()); // log.WriteLine("Clean TMT Duplex: " + cleanTmtDuplex.ToString()); // log.WriteLine("Clean iTRAQ 4-Plex: " + cleanItraq4Plex.ToString()); // log.WriteLine("Clean TMT 6-Plex: " + cleanTmt6Plex.ToString()); // log.WriteLine("Clean iTRAQ 8-Plex: " + cleanItraq8Plex.ToString()); // log.WriteLine(); // log.WriteLine("Spectrum Type\tNumber of Scans"); // foreach (KeyValuePair<string, int> kvp in spectrum_counts) // { // log.WriteLine(kvp.Key + '\t' + kvp.Value.ToString()); // } // log.WriteLine(); // log.WriteLine("Spectrum Type\tNumber of DTAs"); // foreach (KeyValuePair<string, int> kvp in dta_counts) // { // log.WriteLine(kvp.Key + '\t' + kvp.Value.ToString()); // } // log.WriteLine(); // double? min_elapsed = null; // double? max_elapsed = null; // double mean_elapsed = 0.0; // foreach (double elapsed_scan_time in elapsed_scan_times.Values) // { // if (!min_elapsed.HasValue || elapsed_scan_time < min_elapsed) // { // min_elapsed = elapsed_scan_time; // } // if (!max_elapsed.HasValue || elapsed_scan_time > max_elapsed) // { // max_elapsed = elapsed_scan_time; // } // mean_elapsed += elapsed_scan_time; // } // mean_elapsed /= elapsed_scan_times.Count; // if (min_elapsed.HasValue) // { // log.WriteLine("Minimum Fragmentation Elapsed Scan Time (sec): " + min_elapsed.Value.ToString()); // } // if (max_elapsed.HasValue) // { // log.WriteLine("Maximum Fragmentation Elapsed Scan Time (sec): " + max_elapsed.Value.ToString()); // } // if (!Double.IsNaN(mean_elapsed)) // { // log.WriteLine("Average Fragmentation Elapsed Scan Time (sec): " + mean_elapsed.ToString()); // } // log.WriteLine(); // double? min_injection = null; // double? max_injection = null; // double mean_injection = 0.0; // foreach (double ion_injection_time in ion_injection_times.Values) // { // if (!min_injection.HasValue || ion_injection_time < min_injection) // { // min_injection = ion_injection_time; // } // if (!max_injection.HasValue || ion_injection_time > max_injection) // { // max_injection = ion_injection_time; // } // mean_injection += ion_injection_time; // } // mean_injection /= ion_injection_times.Count; // if (min_injection.HasValue) // { // log.WriteLine("Minimum Fragmentation Ion Injection Time (msec): " + min_injection.Value.ToString()); // } // if (max_injection.HasValue) // { // log.WriteLine("Maximum Fragmentation Ion Injection Time (msec): " + max_injection.Value.ToString()); // } // if (!Double.IsNaN(mean_injection)) // { // log.WriteLine("Average Fragmentation Ion Injection Time (msec): " + mean_injection.ToString()); // } // log.WriteLine(); // log.WriteLine("Fragmentation Scan Summary"); // log.Write("Fragmentation Scan Number\t"); // log.Write("Retention Time (min.)\t"); // log.Write("Scan Filter m/z\t"); // log.Write("Precursor m/z\t"); // log.Write("Precursor Intensity\t"); // log.Write("Precursor Denormalized Intensity\t"); // log.Write("Precursor Charge State\t"); // log.Write("Precursor S/N Ratio\t"); // log.Write("Precursor Peak Depth\t"); // log.Write("Fragmentation Method\t"); // log.Write("Elapsed Scan Time (sec)\t"); // log.Write("Ion Injection Time (msec)"); // log.WriteLine(); // foreach (int sn2 in retention_times.Keys) // { // log.Write(sn2.ToString() + '\t'); // log.Write(retention_times[sn2].ToString("0.00") + '\t'); // log.Write(scan_filter_mzs[sn2].ToString("0.00") + '\t'); // log.Write((precursor_mzs.ContainsKey(sn2) ? precursor_mzs[sn2].ToString("0.00000") : "n/a") + '\t'); // log.Write((precursor_intensities.ContainsKey(sn2) ? precursor_intensities[sn2].ToString("0.0") : "n/a") + '\t'); // log.Write((precursor_denormalized_intensities.ContainsKey(sn2) ? precursor_denormalized_intensities[sn2].ToString("0.0") : "n/a") + '\t'); // log.Write((precursor_charge_states.ContainsKey(sn2) ? precursor_charge_states[sn2].ToString() : "n/a") + '\t'); // log.Write((precursor_sns.ContainsKey(sn2) && precursor_sns[sn2].HasValue ? precursor_sns[sn2].Value.ToString() : "n/a") + '\t'); // log.Write((precursor_peak_depths.ContainsKey(sn2) ? precursor_peak_depths[sn2].ToString() : "n/a") + '\t'); // log.Write((precursor_fragmentation_methods.ContainsKey(sn2) ? precursor_fragmentation_methods[sn2] : "n/a") + '\t'); // log.Write((elapsed_scan_times.ContainsKey(sn2) ? elapsed_scan_times[sn2].ToString() : "n/a") + '\t'); // log.Write((ion_injection_times.ContainsKey(sn2) ? ion_injection_times[sn2].ToString() : "n/a") + '\t'); // log.WriteLine(); // } //} onFinishedFile(new FilepathEventArgs(filepath)); }