Skip to content

Commit

Permalink
feature(protein-prospector): Add new MSstatsPTM converter for protein…
Browse files Browse the repository at this point in the history
… prospector
  • Loading branch information
tonywu1999 committed Sep 16, 2024
1 parent 9631641 commit e4074d2
Show file tree
Hide file tree
Showing 7 changed files with 730 additions and 1 deletion.
2 changes: 2 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export(MetamorpheusToMSstatsPTMFormat)
export(PDtoMSstatsPTMFormat)
export(PStoMSstatsPTMFormat)
export(ProgenesistoMSstatsPTMFormat)
export(ProteinProspectortoMSstatsPTMFormat)
export(SkylinetoMSstatsPTMFormat)
export(SpectronauttoMSstatsPTMFormat)
export(annotSite)
Expand Down Expand Up @@ -36,6 +37,7 @@ importFrom(MSstatsConvert,MaxQtoMSstatsFormat)
importFrom(MSstatsConvert,MetamorpheusToMSstatsFormat)
importFrom(MSstatsConvert,PDtoMSstatsFormat)
importFrom(MSstatsConvert,ProgenesistoMSstatsFormat)
importFrom(MSstatsConvert,ProteinProspectortoMSstatsTMTFormat)
importFrom(MSstatsConvert,SkylinetoMSstatsFormat)
importFrom(MSstatsConvert,SpectronauttoMSstatsFormat)
importFrom(MSstatsTMT,MaxQtoMSstatsTMTFormat)
Expand Down
150 changes: 150 additions & 0 deletions R/converters.R
Original file line number Diff line number Diff line change
Expand Up @@ -1612,4 +1612,154 @@ MetamorpheusToMSstatsPTMFormat = function(input,

return(msstats_format)

}


#' Generate MSstatsPTM required input format from Protein Prospector output
#'
#' @author Anthony Wu
#'
#' @param input Input txt peptide report file from Protein Prospector with
#' "Keep Replicates", "Mods in Peptide", and "Protein Mods" options selected.
#' @param annotation data frame which contains column Run, Fraction,
#' TechRepMixture, Mixture, Channel, BioReplicate, Condition.
#' @param input_protein same as `input` for global profiling run. Default is NULL.
#' @param annotation_protein same as `annotation` for global profiling run. Default is NULL.
#' @param use_unmod_peptides If `protein_input` is not provided,
#' unmodified peptides can be extracted from `input` to be used in place of a
#' global profiling run. Default is `FALSE`.
#' @param mod_ids List of modifications of interest. Default
#' is a list with only `\\(Phospho\\)`.
#' Please note that the 'mod_ids' parameter currently supports lists of size 1 only.
#' Future updates aim to extend its functionality to accommodate lists of greater sizes.
#' Note `\\` must be included before special characters.
#' @param useUniquePeptide TRUE (default) removes peptides that are assigned for
#' more than one proteins. We assume to use unique peptide for each protein.
#' @param removeFewMeasurements TRUE (default) will remove the features that
#' have 1 or 2 measurements across runs.
#' @param removeProtein_with1Feature TRUE will remove the proteins which have
#' only 1 feature, which is the combination of peptide, precursor charge,
#' fragment and charge. FALSE is default.
#' @param summaryforMultipleRows sum(default) or max - when there are multiple
#' measurements for certain feature and certain run, use highest or sum of
#' multiple intensities.
#' @param use_log_file logical. If TRUE, information about data processing will
#' be saved to a file.
#' @param append logical. If TRUE, information about data processing will be
#' added to an existing log file.
#' @param verbose logical. If TRUE, information about data processing wil be
#' printed to the console.
#' @param log_file_path character. Path to a file to which information about
#' data processing will be saved. If not provided, such a file will be created
#' automatically. If 'append = TRUE', has to be a valid path to a file.
#' @return a list of two data.tables named 'PTM' and 'PROTEIN' in the format
#' required by MSstatsPTM.
#' @importFrom MSstatsConvert ProteinProspectortoMSstatsTMTFormat
#'
#' @export
#'
#' @examples
#' input = system.file("tinytest/raw_data/ProteinProspector/Prospector_PhosphoTMT.txt",
#' package = "MSstatsPTM")
#' input = data.table::fread(input)
#' annot = system.file("tinytest/raw_data/ProteinProspector/Annotation.csv",
#' package = "MSstatsPTM")
#' annot = data.table::fread(annot)
#' input_protein = system.file("tinytest/raw_data/ProteinProspector/Prospector_TotalTMT.txt",
#' package = "MSstatsConvert")
#' input_protein = data.table::fread(input_protein)
#' annot_protein = system.file("tinytest/raw_data/ProteinProspector/Annotation.csv",
#' package = "MSstatsConvert")
#' annot_protein = data.table::fread(annot_protein)
#' output <- ProteinProspectortoMSstatsPTMFormat(
#' input,
#' annot,
#' input_protein,
#' annot_protein
#' )
#' head(output)
#'
ProteinProspectortoMSstatsPTMFormat = function(
input,
annotation,
input_protein = NULL,
annotation_protein = NULL,
use_unmod_peptides = FALSE,
mod_ids = c("\\(Phospho\\)"),
useUniquePeptide = TRUE,
removeFewMeasurements = TRUE,
removeProtein_with1Feature = FALSE,
summaryforMultipleRows = sum,
use_log_file = TRUE,
append = FALSE,
verbose = TRUE,
log_file_path = NULL
) {
MSstatsConvert::MSstatsLogsSettings(use_log_file, append, verbose,
log_file_path,
base = "MSstatsPTM_converter_log_")

mod_id = mod_ids[[1]]
input = as.data.table(input)

## Check input parameters
checkmate::assertTRUE(!is.null(input))
.checkAnnotation(annotation, "TMT")
if (!is.null(input_protein)) {
checkmate::assertTRUE(!is.null(annotation_protein))
}

input$Peptide = gsub("TMT[0-9]*plex-", "", input$Peptide) # remove TMT tags
input = input[!grepl("\\|", input$`Protein Mods`),] # filter out rows with uncertainty in protein mods

protein_id_col = "Acc #"
input = MSstatsPTMSiteLocator(input,
protein_name_col=protein_id_col,
unmod_pep_col = "DB Peptide",
mod_pep_col = "Peptide",
clean_mod=FALSE,
mod_id=mod_id,
remove_other_mods = TRUE,
bracket = "("
)

if (use_unmod_peptides){
input_protein = input[input[,..protein_id_col][[1]] == input$ProteinNameUnmod]
annotation_protein = annotation
} else {
input = input[input[,..protein_id_col][[1]] != input$ProteinNameUnmod]
}

input[["DB Peptide"]] = input[[colnames(input)[grepl("new_peptide_col", colnames(input))][[1]]]]
ptm_input = ProteinProspectortoMSstatsTMTFormat(input,
annotation,
useUniquePeptide,
removeFewMeasurements,
removeProtein_with1Feature,
summaryforMultipleRows,
use_log_file,
append,
verbose,
log_file_path)

msstats_format = list(PTM = ptm_input, PROTEIN = NULL)

if (!is.null(input_protein)) {
protein_input = ProteinProspectortoMSstatsTMTFormat(input_protein,
annotation_protein,
useUniquePeptide,
removeFewMeasurements,
removeProtein_with1Feature,
summaryforMultipleRows,
use_log_file,
append,
verbose,
log_file_path)

ptm_input = ptm_input[grepl(mod_id, ptm_input$PeptideSequence),]

msstats_format = list(PTM = ptm_input, PROTEIN = protein_input)
}

return(msstats_format)
}
193 changes: 193 additions & 0 deletions inst/tinytest/raw_data/ProteinProspector/Annotation.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
Run,Fraction,TechRepMixture,Channel,Condition,Mixture,BioReplicate
Z20180612-04_FTMSms2hcd,1,1,Int 126,Young,Mixture1,S1
Z20180612-05_FTMSms2hcd,2,1,Int 126,Young,Mixture1,S1
Z20180612-06_FTMSms2hcd,3,1,Int 126,Young,Mixture1,S1
Z20180612-29_FTMSms2hcd,4,1,Int 126,Young,Mixture1,S1
Z20180612-30_FTMSms2hcd,5,1,Int 126,Young,Mixture1,S1
Z20180612-20_FTMSms2hcd,6,1,Int 126,Young,Mixture1,S1
Z20180612-13_FTMSms2hcd,7,1,Int 126,Young,Mixture1,S1
Z20180612-15_FTMSms2hcd,8,1,Int 126,Young,Mixture1,S1
Z20180612-33_FTMSms2hcd,9,1,Int 126,Young,Mixture1,S1
Z20180612-12_FTMSms2hcd,10,1,Int 126,Young,Mixture1,S1
Z20180612-31_FTMSms2hcd,11,1,Int 126,Young,Mixture1,S1
Z20180612-32_FTMSms2hcd,12,1,Int 126,Young,Mixture1,S1
Z20180612-21_FTMSms2hcd,13,1,Int 126,Young,Mixture1,S1
Z20180612-18_FTMSms2hcd,14,1,Int 126,Young,Mixture1,S1
Z20180612-16_FTMSms2hcd,15,1,Int 126,Young,Mixture1,S1
Z20180612-34_FTMSms2hcd,16,1,Int 126,Young,Mixture1,S1
Z20180612-35_FTMSms2hcd,17,1,Int 126,Young,Mixture1,S1
Z20180612-07_FTMSms2hcd,18,1,Int 126,Young,Mixture1,S1
Z20180612-08_FTMSms2hcd,19,1,Int 126,Young,Mixture1,S1
Z20180612-09_FTMSms2hcd,20,1,Int 126,Young,Mixture1,S1
Z20180612-14_FTMSms2hcd,21,1,Int 126,Young,Mixture1,S1
Z20180619-03_FTMSms2hcd,22,1,Int 126,Young,Mixture1,S1
Z20180612-11_FTMSms2hcd,23,1,Int 126,Young,Mixture1,S1
Z20180612-10_FTMSms2hcd,24,1,Int 126,Young,Mixture1,S1
Z20180619-02_FTMSms2hcd,25,1,Int 126,Young,Mixture1,S1
Z20180612-26_FTMSms2hcd,26,1,Int 126,Young,Mixture1,S1
Z20180612-24_FTMSms2hcd,27,1,Int 126,Young,Mixture1,S1
Z20180612-25_FTMSms2hcd,28,1,Int 126,Young,Mixture1,S1
Z20180612-22_FTMSms2hcd,29,1,Int 126,Young,Mixture1,S1
Z20180612-23_FTMSms2hcd,30,1,Int 126,Young,Mixture1,S1
Z20180612-19_FTMSms2hcd,31,1,Int 126,Young,Mixture1,S1
Z20180612-28_FTMSms2hcd,32,1,Int 126,Young,Mixture1,S1
Z20180612-04_FTMSms2hcd,1,1,Int 127,Young,Mixture1,S2
Z20180612-05_FTMSms2hcd,2,1,Int 127,Young,Mixture1,S2
Z20180612-06_FTMSms2hcd,3,1,Int 127,Young,Mixture1,S2
Z20180612-29_FTMSms2hcd,4,1,Int 127,Young,Mixture1,S2
Z20180612-30_FTMSms2hcd,5,1,Int 127,Young,Mixture1,S2
Z20180612-20_FTMSms2hcd,6,1,Int 127,Young,Mixture1,S2
Z20180612-13_FTMSms2hcd,7,1,Int 127,Young,Mixture1,S2
Z20180612-15_FTMSms2hcd,8,1,Int 127,Young,Mixture1,S2
Z20180612-33_FTMSms2hcd,9,1,Int 127,Young,Mixture1,S2
Z20180612-12_FTMSms2hcd,10,1,Int 127,Young,Mixture1,S2
Z20180612-31_FTMSms2hcd,11,1,Int 127,Young,Mixture1,S2
Z20180612-32_FTMSms2hcd,12,1,Int 127,Young,Mixture1,S2
Z20180612-21_FTMSms2hcd,13,1,Int 127,Young,Mixture1,S2
Z20180612-18_FTMSms2hcd,14,1,Int 127,Young,Mixture1,S2
Z20180612-16_FTMSms2hcd,15,1,Int 127,Young,Mixture1,S2
Z20180612-34_FTMSms2hcd,16,1,Int 127,Young,Mixture1,S2
Z20180612-35_FTMSms2hcd,17,1,Int 127,Young,Mixture1,S2
Z20180612-07_FTMSms2hcd,18,1,Int 127,Young,Mixture1,S2
Z20180612-08_FTMSms2hcd,19,1,Int 127,Young,Mixture1,S2
Z20180612-09_FTMSms2hcd,20,1,Int 127,Young,Mixture1,S2
Z20180612-14_FTMSms2hcd,21,1,Int 127,Young,Mixture1,S2
Z20180619-03_FTMSms2hcd,22,1,Int 127,Young,Mixture1,S2
Z20180612-11_FTMSms2hcd,23,1,Int 127,Young,Mixture1,S2
Z20180612-10_FTMSms2hcd,24,1,Int 127,Young,Mixture1,S2
Z20180619-02_FTMSms2hcd,25,1,Int 127,Young,Mixture1,S2
Z20180612-26_FTMSms2hcd,26,1,Int 127,Young,Mixture1,S2
Z20180612-24_FTMSms2hcd,27,1,Int 127,Young,Mixture1,S2
Z20180612-25_FTMSms2hcd,28,1,Int 127,Young,Mixture1,S2
Z20180612-22_FTMSms2hcd,29,1,Int 127,Young,Mixture1,S2
Z20180612-23_FTMSms2hcd,30,1,Int 127,Young,Mixture1,S2
Z20180612-19_FTMSms2hcd,31,1,Int 127,Young,Mixture1,S2
Z20180612-28_FTMSms2hcd,32,1,Int 127,Young,Mixture1,S2
Z20180612-04_FTMSms2hcd,1,1,Int 128,Young,Mixture1,S3
Z20180612-05_FTMSms2hcd,2,1,Int 128,Young,Mixture1,S3
Z20180612-06_FTMSms2hcd,3,1,Int 128,Young,Mixture1,S3
Z20180612-29_FTMSms2hcd,4,1,Int 128,Young,Mixture1,S3
Z20180612-30_FTMSms2hcd,5,1,Int 128,Young,Mixture1,S3
Z20180612-20_FTMSms2hcd,6,1,Int 128,Young,Mixture1,S3
Z20180612-13_FTMSms2hcd,7,1,Int 128,Young,Mixture1,S3
Z20180612-15_FTMSms2hcd,8,1,Int 128,Young,Mixture1,S3
Z20180612-33_FTMSms2hcd,9,1,Int 128,Young,Mixture1,S3
Z20180612-12_FTMSms2hcd,10,1,Int 128,Young,Mixture1,S3
Z20180612-31_FTMSms2hcd,11,1,Int 128,Young,Mixture1,S3
Z20180612-32_FTMSms2hcd,12,1,Int 128,Young,Mixture1,S3
Z20180612-21_FTMSms2hcd,13,1,Int 128,Young,Mixture1,S3
Z20180612-18_FTMSms2hcd,14,1,Int 128,Young,Mixture1,S3
Z20180612-16_FTMSms2hcd,15,1,Int 128,Young,Mixture1,S3
Z20180612-34_FTMSms2hcd,16,1,Int 128,Young,Mixture1,S3
Z20180612-35_FTMSms2hcd,17,1,Int 128,Young,Mixture1,S3
Z20180612-07_FTMSms2hcd,18,1,Int 128,Young,Mixture1,S3
Z20180612-08_FTMSms2hcd,19,1,Int 128,Young,Mixture1,S3
Z20180612-09_FTMSms2hcd,20,1,Int 128,Young,Mixture1,S3
Z20180612-14_FTMSms2hcd,21,1,Int 128,Young,Mixture1,S3
Z20180619-03_FTMSms2hcd,22,1,Int 128,Young,Mixture1,S3
Z20180612-11_FTMSms2hcd,23,1,Int 128,Young,Mixture1,S3
Z20180612-10_FTMSms2hcd,24,1,Int 128,Young,Mixture1,S3
Z20180619-02_FTMSms2hcd,25,1,Int 128,Young,Mixture1,S3
Z20180612-26_FTMSms2hcd,26,1,Int 128,Young,Mixture1,S3
Z20180612-24_FTMSms2hcd,27,1,Int 128,Young,Mixture1,S3
Z20180612-25_FTMSms2hcd,28,1,Int 128,Young,Mixture1,S3
Z20180612-22_FTMSms2hcd,29,1,Int 128,Young,Mixture1,S3
Z20180612-23_FTMSms2hcd,30,1,Int 128,Young,Mixture1,S3
Z20180612-19_FTMSms2hcd,31,1,Int 128,Young,Mixture1,S3
Z20180612-28_FTMSms2hcd,32,1,Int 128,Young,Mixture1,S3
Z20180612-04_FTMSms2hcd,1,1,Int 129,Old,Mixture1,S4
Z20180612-05_FTMSms2hcd,2,1,Int 129,Old,Mixture1,S4
Z20180612-06_FTMSms2hcd,3,1,Int 129,Old,Mixture1,S4
Z20180612-29_FTMSms2hcd,4,1,Int 129,Old,Mixture1,S4
Z20180612-30_FTMSms2hcd,5,1,Int 129,Old,Mixture1,S4
Z20180612-20_FTMSms2hcd,6,1,Int 129,Old,Mixture1,S4
Z20180612-13_FTMSms2hcd,7,1,Int 129,Old,Mixture1,S4
Z20180612-15_FTMSms2hcd,8,1,Int 129,Old,Mixture1,S4
Z20180612-33_FTMSms2hcd,9,1,Int 129,Old,Mixture1,S4
Z20180612-12_FTMSms2hcd,10,1,Int 129,Old,Mixture1,S4
Z20180612-31_FTMSms2hcd,11,1,Int 129,Old,Mixture1,S4
Z20180612-32_FTMSms2hcd,12,1,Int 129,Old,Mixture1,S4
Z20180612-21_FTMSms2hcd,13,1,Int 129,Old,Mixture1,S4
Z20180612-18_FTMSms2hcd,14,1,Int 129,Old,Mixture1,S4
Z20180612-16_FTMSms2hcd,15,1,Int 129,Old,Mixture1,S4
Z20180612-34_FTMSms2hcd,16,1,Int 129,Old,Mixture1,S4
Z20180612-35_FTMSms2hcd,17,1,Int 129,Old,Mixture1,S4
Z20180612-07_FTMSms2hcd,18,1,Int 129,Old,Mixture1,S4
Z20180612-08_FTMSms2hcd,19,1,Int 129,Old,Mixture1,S4
Z20180612-09_FTMSms2hcd,20,1,Int 129,Old,Mixture1,S4
Z20180612-14_FTMSms2hcd,21,1,Int 129,Old,Mixture1,S4
Z20180619-03_FTMSms2hcd,22,1,Int 129,Old,Mixture1,S4
Z20180612-11_FTMSms2hcd,23,1,Int 129,Old,Mixture1,S4
Z20180612-10_FTMSms2hcd,24,1,Int 129,Old,Mixture1,S4
Z20180619-02_FTMSms2hcd,25,1,Int 129,Old,Mixture1,S4
Z20180612-26_FTMSms2hcd,26,1,Int 129,Old,Mixture1,S4
Z20180612-24_FTMSms2hcd,27,1,Int 129,Old,Mixture1,S4
Z20180612-25_FTMSms2hcd,28,1,Int 129,Old,Mixture1,S4
Z20180612-22_FTMSms2hcd,29,1,Int 129,Old,Mixture1,S4
Z20180612-23_FTMSms2hcd,30,1,Int 129,Old,Mixture1,S4
Z20180612-19_FTMSms2hcd,31,1,Int 129,Old,Mixture1,S4
Z20180612-28_FTMSms2hcd,32,1,Int 129,Old,Mixture1,S4
Z20180612-04_FTMSms2hcd,1,1,Int 130,Old,Mixture1,S5
Z20180612-05_FTMSms2hcd,2,1,Int 130,Old,Mixture1,S5
Z20180612-06_FTMSms2hcd,3,1,Int 130,Old,Mixture1,S5
Z20180612-29_FTMSms2hcd,4,1,Int 130,Old,Mixture1,S5
Z20180612-30_FTMSms2hcd,5,1,Int 130,Old,Mixture1,S5
Z20180612-20_FTMSms2hcd,6,1,Int 130,Old,Mixture1,S5
Z20180612-13_FTMSms2hcd,7,1,Int 130,Old,Mixture1,S5
Z20180612-15_FTMSms2hcd,8,1,Int 130,Old,Mixture1,S5
Z20180612-33_FTMSms2hcd,9,1,Int 130,Old,Mixture1,S5
Z20180612-12_FTMSms2hcd,10,1,Int 130,Old,Mixture1,S5
Z20180612-31_FTMSms2hcd,11,1,Int 130,Old,Mixture1,S5
Z20180612-32_FTMSms2hcd,12,1,Int 130,Old,Mixture1,S5
Z20180612-21_FTMSms2hcd,13,1,Int 130,Old,Mixture1,S5
Z20180612-18_FTMSms2hcd,14,1,Int 130,Old,Mixture1,S5
Z20180612-16_FTMSms2hcd,15,1,Int 130,Old,Mixture1,S5
Z20180612-34_FTMSms2hcd,16,1,Int 130,Old,Mixture1,S5
Z20180612-35_FTMSms2hcd,17,1,Int 130,Old,Mixture1,S5
Z20180612-07_FTMSms2hcd,18,1,Int 130,Old,Mixture1,S5
Z20180612-08_FTMSms2hcd,19,1,Int 130,Old,Mixture1,S5
Z20180612-09_FTMSms2hcd,20,1,Int 130,Old,Mixture1,S5
Z20180612-14_FTMSms2hcd,21,1,Int 130,Old,Mixture1,S5
Z20180619-03_FTMSms2hcd,22,1,Int 130,Old,Mixture1,S5
Z20180612-11_FTMSms2hcd,23,1,Int 130,Old,Mixture1,S5
Z20180612-10_FTMSms2hcd,24,1,Int 130,Old,Mixture1,S5
Z20180619-02_FTMSms2hcd,25,1,Int 130,Old,Mixture1,S5
Z20180612-26_FTMSms2hcd,26,1,Int 130,Old,Mixture1,S5
Z20180612-24_FTMSms2hcd,27,1,Int 130,Old,Mixture1,S5
Z20180612-25_FTMSms2hcd,28,1,Int 130,Old,Mixture1,S5
Z20180612-22_FTMSms2hcd,29,1,Int 130,Old,Mixture1,S5
Z20180612-23_FTMSms2hcd,30,1,Int 130,Old,Mixture1,S5
Z20180612-19_FTMSms2hcd,31,1,Int 130,Old,Mixture1,S5
Z20180612-28_FTMSms2hcd,32,1,Int 130,Old,Mixture1,S5
Z20180612-04_FTMSms2hcd,1,1,Int 131,Old,Mixture1,S6
Z20180612-05_FTMSms2hcd,2,1,Int 131,Old,Mixture1,S6
Z20180612-06_FTMSms2hcd,3,1,Int 131,Old,Mixture1,S6
Z20180612-29_FTMSms2hcd,4,1,Int 131,Old,Mixture1,S6
Z20180612-30_FTMSms2hcd,5,1,Int 131,Old,Mixture1,S6
Z20180612-20_FTMSms2hcd,6,1,Int 131,Old,Mixture1,S6
Z20180612-13_FTMSms2hcd,7,1,Int 131,Old,Mixture1,S6
Z20180612-15_FTMSms2hcd,8,1,Int 131,Old,Mixture1,S6
Z20180612-33_FTMSms2hcd,9,1,Int 131,Old,Mixture1,S6
Z20180612-12_FTMSms2hcd,10,1,Int 131,Old,Mixture1,S6
Z20180612-31_FTMSms2hcd,11,1,Int 131,Old,Mixture1,S6
Z20180612-32_FTMSms2hcd,12,1,Int 131,Old,Mixture1,S6
Z20180612-21_FTMSms2hcd,13,1,Int 131,Old,Mixture1,S6
Z20180612-18_FTMSms2hcd,14,1,Int 131,Old,Mixture1,S6
Z20180612-16_FTMSms2hcd,15,1,Int 131,Old,Mixture1,S6
Z20180612-34_FTMSms2hcd,16,1,Int 131,Old,Mixture1,S6
Z20180612-35_FTMSms2hcd,17,1,Int 131,Old,Mixture1,S6
Z20180612-07_FTMSms2hcd,18,1,Int 131,Old,Mixture1,S6
Z20180612-08_FTMSms2hcd,19,1,Int 131,Old,Mixture1,S6
Z20180612-09_FTMSms2hcd,20,1,Int 131,Old,Mixture1,S6
Z20180612-14_FTMSms2hcd,21,1,Int 131,Old,Mixture1,S6
Z20180619-03_FTMSms2hcd,22,1,Int 131,Old,Mixture1,S6
Z20180612-11_FTMSms2hcd,23,1,Int 131,Old,Mixture1,S6
Z20180612-10_FTMSms2hcd,24,1,Int 131,Old,Mixture1,S6
Z20180619-02_FTMSms2hcd,25,1,Int 131,Old,Mixture1,S6
Z20180612-26_FTMSms2hcd,26,1,Int 131,Old,Mixture1,S6
Z20180612-24_FTMSms2hcd,27,1,Int 131,Old,Mixture1,S6
Z20180612-25_FTMSms2hcd,28,1,Int 131,Old,Mixture1,S6
Z20180612-22_FTMSms2hcd,29,1,Int 131,Old,Mixture1,S6
Z20180612-23_FTMSms2hcd,30,1,Int 131,Old,Mixture1,S6
Z20180612-19_FTMSms2hcd,31,1,Int 131,Old,Mixture1,S6
Z20180612-28_FTMSms2hcd,32,1,Int 131,Old,Mixture1,S6
Loading

0 comments on commit e4074d2

Please sign in to comment.