public StudyVariableParam(StudyVariable[] studyVariables, bool reduced, CVLookUp cv, string name = null) : base(name) { _reduced = reduced; _cv = cv; _count = studyVariables.Length; Value = studyVariables; Default = studyVariables; }
public StudyVariablePanel1(StudyVariable[] value) { _count = value.Length; MaxWidth = 750; InitializeComponent(); Value = value; }
public static SortedDictionary<string, MZTabColumn> createOptionalColumns(Section section, StudyVariable studyVariable, int offset) { SortedDictionary<string, MZTabColumn> columns = new SortedDictionary<string, MZTabColumn>(); Section dataSection = Section.toDataSection(section); AbundanceColumn column = new AbundanceColumn(dataSection, Field.ABUNDANCE, studyVariable, offset); columns.Add(column.LogicPosition, column); column = new AbundanceColumn(dataSection, Field.ABUNDANCE_STDEV, studyVariable, offset); columns.Add(column.LogicPosition, column); column = new AbundanceColumn(dataSection, Field.ABUNDANCE_STD_ERROR, studyVariable, offset); columns.Add(column.LogicPosition, column); return columns; }
private void addPeptideValue() { MsRun msRun1 = new MsRun(1); Assay assay1 = new Assay(1); Assay assay2 = new Assay(2); StudyVariable studyVariable1 = new StudyVariable(1); MZTabColumnFactory factory = MZTabColumnFactory.GetInstance(Section.Peptide_Header); factory.AddOptionalColumn(PeptideColumn.SEARCH_ENGINE_SCORE, msRun1); factory.AddAbundanceOptionalColumn(assay1); factory.AddAbundanceOptionalColumn(studyVariable1); factory.AddAbundanceOptionalColumn(assay2); factory.AddOptionalColumn(msRun1, "my_value", typeof (string)); CVParam param = new CVParam("MS", "MS:1002217", "decoy peptide", null); factory.AddOptionalColumn(param, typeof (string)); Metadata metadata = new Metadata(); metadata.AddMsRunLocation(2, new Url("file://C:\\path\\to\\my\\file")); Console.WriteLine(factory); Peptide peptide = new Peptide(factory, metadata); peptide.Sequence = "KVPQVSTPTLVEVSR"; peptide.Accession = "P02768"; peptide.SetUnique("0"); peptide.Database = "UniProtKB"; peptide.DatabaseVersion = "2011_11"; peptide.SetSearchEngine("[MS,MS:1001207,Mascot,]|[MS,MS:1001208,Sequest,]"); peptide.SetBestSearchEngineScore("[MS,MS:1001155,Sequest:xcorr,2]"); peptide.Reliability = Reliability.findReliability("3"); peptide.SetModifications( "3[MS,MS:1001876, modification probability, 0.8]|4[MS,MS:1001876, modification probability, 0.2]-MOD:00412,8[MS,MS:1001876, modification probability, 0.3]-MOD:00412"); peptide.AddRetentionTime(10.2); peptide.AddRetentionTimeWindow(1123.2); peptide.AddRetentionTimeWindow(1145.3); peptide.Charge = new Integer(2); peptide.MassToCharge = 1234.4; peptide.URI = new Uri("http://www.ebi.ac.uk/pride/link/to/peptide"); peptide.SetSpectraRef("ms_run[2]:index=7|ms_run[2]:index=9"); Console.WriteLine(peptide); }
public bool AddStudyVariableDescription(int id, string description) { StudyVariable studyVariable; if (!_studyVariableMap.ContainsKey(id)){ studyVariable = new StudyVariable(id){Description = description}; //TODO: add return value _studyVariableMap.Add(id, studyVariable); return true; } studyVariable = _studyVariableMap[id]; studyVariable.Description = description; //TODO: Moved it to the upper if studyVariableMap.Add(id, studyVariable); return true; }
public bool AddStudyVariableAssay(int id, Assay assay) { StudyVariable studyVariable; if (!_studyVariableMap.ContainsKey(id)){ studyVariable = new StudyVariable(id); studyVariable.AddAssay(assay.Id, assay); _studyVariableMap.Add(id, studyVariable); return true; } studyVariable = _studyVariableMap[id]; studyVariable.AddAssay(assay.Id, assay); return true; }
public void AddStudyVariable(StudyVariable studyVariable) { _studyVariableMap.Add(studyVariable.Id, studyVariable); }
public override void Clear() { Value = new StudyVariable[_count]; }
private IEnumerable<StudyVariable> SILAC(StudyVariable variable, string[] labels) { StudyVariable[] result = new StudyVariable[labels.Length]; for (int i = 0; i < result.Length; i++) { result[i] = new StudyVariable(variable.Id); result[i].AddAllAssays(variable.AssayMap.Values.ToList()); result[i].AddAllSamples(variable.SampleMap.Values.ToList()); result[i].Description = String.Format("{0} {1}", labels[i], variable.Description); } return result; }
/** * Add three {@link AbundanceColumn} into {@link AbundanceColumn}, {@link #optionalColumnMapping} and {@link #columnMapping} at one time. * The header like: {Section}_abundance_study_variable[1], {Section}_abundance_stdev_study_variable[1], * {Section}_abundance_std_error_study_variable[1]. * * @see AbundanceColumn#createOptionalColumns(Section, StudyVariable, String) * * @param studyVariable SHOULD NOT empty. */ public string AddAbundanceOptionalColumn(StudyVariable studyVariable) { SortedDictionary<string, MZTabColumn> columns = AbundanceColumn.createOptionalColumns(section, studyVariable, ParseColumnOrder(columnMapping.Last().Key)); foreach (var column in columns){ abundanceColumnMapping.Add(column.Key, column.Value); optionalColumnMapping.Add(column.Key, column.Value); columnMapping.Add(column.Key, column.Value); } return columns.Last().Key; }
private void addProteinValue() { MsRun msRun1 = new MsRun(1); MsRun msRun2 = new MsRun(2); Assay assay1 = new Assay(1); Assay assay2 = new Assay(2); StudyVariable studyVariable1 = new StudyVariable(1); MZTabColumnFactory factory = MZTabColumnFactory.GetInstance(Section.Protein_Header); factory.AddOptionalColumn(ProteinColumn.SEARCH_ENGINE_SCORE, msRun1); factory.AddOptionalColumn(ProteinColumn.NUM_PSMS, msRun1); factory.AddOptionalColumn(ProteinColumn.NUM_PEPTIDES_DISTINCT, msRun1); factory.AddOptionalColumn(ProteinColumn.NUM_PEPTIDES_UNIQUE, msRun1); factory.AddOptionalColumn(ProteinColumn.NUM_PSMS, msRun2); factory.AddOptionalColumn(ProteinColumn.NUM_PEPTIDES_DISTINCT, msRun2); factory.AddAbundanceOptionalColumn(assay1); factory.AddAbundanceOptionalColumn(studyVariable1); factory.AddAbundanceOptionalColumn(assay2); factory.AddOptionalColumn(assay1, "my_value", typeof (string)); CVParam param = new CVParam("MS", "MS:1002217", "decoy peptide", null); factory.AddOptionalColumn(param, typeof (string)); Console.WriteLine(factory); Protein protein = new Protein(factory); // set stable columns data. protein.Accession = "P12345"; protein.Description = "Aspartate aminotransferase, mitochondrial"; protein.SetTaxid("10116"); protein.Species = "Rattus norvegicus (Rat)"; protein.Database = "UniProtKB"; protein.DatabaseVersion = "2011_11"; protein.SetSearchEngine("[MS,MS:1001207,Mascot,]"); protein.AddSearchEngine("[MS,MS:1001208,Sequest,]"); protein.SetBestSearchEngineScore("[MS,MS:1001171,Mascot score,50]|[MS,MS:1001155,Sequest:xcorr,2]"); protein.Reliability = Reliability.High; protein.SetAmbiguityMembers("P12347,P12348"); protein.SetModifications("3|4|8-MOD:00412, 3|4|8-MOD:00412"); protein.SetURI("http://www.ebi.ac.uk/pride/url/to/P12345"); protein.SetGOTerms("GO:0006457|GO:0005759|GO:0005886|GO:0004069"); protein.SetProteinCoverage("0.4"); Console.WriteLine(protein); // set optional columns which have stable order. protein.setSearchEngineScore(msRun1, "[MS,MS:1001171,Mascot score,50]|[MS,MS:1001155,Sequest:xcorr,2]"); protein.setNumPSMs(msRun1, 4); protein.setNumPSMs(msRun2, 2); protein.setNumPeptidesDistinct(msRun1, 3); protein.setNumPeptidesUnique(msRun1, 2); Console.WriteLine(protein); // set abundance columns protein.setAbundanceColumn(assay1, "0.4"); protein.setAbundanceColumn(assay2, "0.2"); protein.setAbundanceColumn(studyVariable1, "0.4"); protein.setAbundanceStdevColumn(studyVariable1, "0.3"); protein.setAbundanceStdErrorColumn(studyVariable1, "0.2"); Console.WriteLine(protein); // set user defined optional columns protein.setOptionColumn(assay1, "my_value", "My value about assay[1]"); protein.setOptionColumn(param, "TOM value"); Console.WriteLine(protein); }
private void addSmallMoleculeValue() { MsRun msRun1 = new MsRun(1); Assay assay1 = new Assay(1); Assay assay2 = new Assay(2); StudyVariable studyVariable1 = new StudyVariable(1); MZTabColumnFactory factory = MZTabColumnFactory.GetInstance(Section.Small_Molecule); factory.AddAbundanceOptionalColumn(assay1); factory.AddAbundanceOptionalColumn(studyVariable1); factory.AddAbundanceOptionalColumn(assay2); factory.AddOptionalColumn(msRun1, "my_value", typeof (string)); CVParam param = new CVParam("MS", "MS:1002217", "decoy peptide", null); factory.AddOptionalColumn(param, typeof (string)); Metadata metadata = new Metadata(); metadata.AddMsRunLocation(2, new Url("file://C:\\path\\to\\my\\file")); Console.WriteLine(factory); /*TODO: SmallMolecule sm = new SmallMolecule(factory, metadata); sm.setIdentifier("CID:00027395"); sm.setChemicalFormula("C17H20N4O2"); sm.setSmiles("C1=CC=C(C=C1)CCNC(=O)CCNNC(=O)C2=CC=NC=C2"); sm.setInchiKey("QXBMEGUKVLFJAM-UHFFFAOYSA-N"); sm.setDescription("N-(2-phenylethyl)-3-[2-(pyridine-4-carbonyl)hydrazinyl]propanamide"); sm.setExpMassToCharge("1234.4"); sm.setCalcMassToCharge("1234.5"); sm.setCharge("2"); sm.setRetentionTime("10.2|11.5"); sm.setTaxid("10116"); sm.setSpecies("Rattus norvegicus (Rat)"); sm.setDatabase("UniProtKB"); sm.setDatabaseVersion("2011_11"); sm.setReliability("2"); sm.setURI("http://www.ebi.ac.uk/pride/link/to/identification"); sm.setSpectraRef("ms_run[2]:index=7|ms_run[2]:index=9"); sm.setSearchEngine("[MS, MS:1001477, SpectraST,]"); sm.setBestSearchEngineScore("[MS, MS:1001419, SpectraST:discriminant score F, 0.7]"); sm.setModifications("CHEMMOD:+Na-H"); Console.WriteLine(sm);*/ }
public StudyVariablePanel2(StudyVariable[] value) { HorizontalAlignment = HorizontalAlignment.Left; _count = value.Length; foreach (StudyVariable variable in value){ if (variable.AssayMap != null){ foreach (var assay in variable.AssayMap.Values){ if (assay == null){ continue; } _assayText.Add(AssayToString(assay)); _assayList.Add(assay); } } if (variable.SampleMap != null){ foreach (var sample in variable.SampleMap.Values){ if (sample == null){ continue; } _sampleText.Add(SampleToString(sample)); _sampleList.Add(sample); } } } MaxWidth = 750; Width = MaxWidth; _sampleRefs = new MultiListSelectorControl{ MinHeight = _count*Constants.height - 6, HorizontalAlignment = HorizontalAlignment.Stretch }; _assayRefs = new MultiListSelectorControl{ MinHeight = _count*Constants.height - 6, HorizontalAlignment = HorizontalAlignment.Stretch }; InitializeComponent(); Value = value; }
/** * Add {@link CVParamOptionColumn} followed by study variable into {@link #optionalColumnMapping} and {@link #columnMapping}. * The header like: opt_study_variable[1]_cv_{accession}_{parameter name} * * @param studyVariable SHOULD NOT empty. * @param param SHOULD NOT empty. * @param columnType SHOULD NOT empty. */ public string AddOptionalColumn(StudyVariable studyVariable, CVParam param, Type columnType) { MZTabColumn column = new CVParamOptionColumn(studyVariable, param, columnType, ParseColumnOrder(columnMapping.Last().Key)); return AddOptionColumn(column); }
/** * Add {@link OptionColumn} followed by study variable into {@link #optionalColumnMapping} and {@link #columnMapping}. * The header like: opt_study_variable[1]_{name} * * @param studyVariable SHOULD NOT empty. * @param name SHOULD NOT empty. * @param columnType SHOULD NOT empty. */ public string AddOptionalColumn(StudyVariable studyVariable, string name, Type columnType) { MZTabColumn column = new OptionColumn(studyVariable, name, columnType, ParseColumnOrder(columnMapping.Last().Key)); return AddOptionColumn(column); }
public bool AddStudyVariableSample(int id, Sample sample) { StudyVariable studyVariable; if (!_studyVariableMap.ContainsKey(id)){ studyVariable = new StudyVariable(id); studyVariable.AddSample(sample.Id, sample); _studyVariableMap.Add(id, studyVariable); return true; } studyVariable = _studyVariableMap[id]; studyVariable.AddSample(sample.Id, sample); return true; }
protected void GetExperminetValues(IMatrixData summary, IMatrixData experimentalDesignTemplate, IMatrixData experiment, IMatrixData spectraRef, ref List<MsRunImpl> msruns, ref List<StudyVariable> studyvariables, ref List<Assay> assays, ref List<Sample> samples, ref List<Instrument> instruments) { if (msruns == null) { msruns = new List<MsRunImpl>(); } if (studyvariables == null) { studyvariables = new List<StudyVariable>(); } if (assays == null) { assays = new List<Assay>(); } if (samples == null) { samples = new List<Sample>(); } if (instruments == null) { instruments = new List<Instrument>(); } #region parse experiment if (experiment != null) { int studyvarIndex = experiment.StringColumnNames.IndexOf(MetadataElement.STUDY_VARIABLE.Name); int assayIndex = experiment.StringColumnNames.IndexOf(MetadataElement.ASSAY.Name); int msrunIndex = experiment.StringColumnNames.IndexOf(MetadataElement.MS_RUN.Name); int sampleIndex = experiment.StringColumnNames.IndexOf(MetadataElement.SAMPLE.Name); Regex sampleRegex = new Regex(@"^([^\[]+) <([^;]*);([^;]*);([^;]*);([^;]*)>"); Regex runRegex = new Regex(@"^([^\[]+) <([^;]*);([^;]*);([^;]*);([^;]*)>"); Regex assayRegex = new Regex(@"^([^\[]+) <([^>]*)>"); for (int row = 0; row < experiment.RowCount; row++) { string studyvariableDescription = experiment.StringColumns[studyvarIndex][row]; string assayReagent = experiment.StringColumns[assayIndex][row]; string msrunText = experiment.StringColumns[msrunIndex][row]; string sampleDescription = experiment.StringColumns[sampleIndex][row]; Lib.Model.Param specie = null; Lib.Model.Param tissue = null; Lib.Model.Param cellType = null; Lib.Model.Param disease = null; IList<Lib.Model.Param> mod = new List<Lib.Model.Param>(); if (sampleDescription != null && sampleRegex.IsMatch(sampleDescription)) { var match = sampleRegex.Match(sampleDescription); sampleDescription = match.Groups[1].Value; string temp = match.Groups[2].Value; if (!String.IsNullOrEmpty(temp)) { specie = cv.GetParam(temp, "NEWT"); } temp = match.Groups[3].Value; if (!String.IsNullOrEmpty(temp)) { tissue = cv.GetParam(temp, "BTO"); } temp = match.Groups[4].Value; if (!String.IsNullOrEmpty(temp)) { cellType = cv.GetParam(temp, "CL"); } temp = match.Groups[5].Value; if (!String.IsNullOrEmpty(temp)) { disease = cv.GetParam(temp, "DOID"); } } if (assayRegex != null && assayRegex.IsMatch(assayReagent)) { var match = assayRegex.Match(assayReagent); string temp = match.Groups[2].Value; if (!String.IsNullOrEmpty(temp)) { foreach (var t in temp.Split(';')) { mod.Add(cv.GetParam(t, "PRIDE")); } } assayReagent = match.Groups[1].Value; } string filename = null; string path = null; Lib.Model.Param format = null; Lib.Model.Param idformat = null; Lib.Model.Param fragementaion = null; if (runRegex != null && runRegex.IsMatch(msrunText)) { var match = runRegex.Match(msrunText); filename = match.Groups[1].Value; string temp = match.Groups[2].Value; if (!String.IsNullOrEmpty(temp)) { path = temp; } temp = match.Groups[3].Value; if (!String.IsNullOrEmpty(temp)) { format = cv.GetParam(temp, "MS"); } temp = match.Groups[4].Value; if (!String.IsNullOrEmpty(temp)) { idformat = cv.GetParam(temp, "MS"); } temp = match.Groups[5].Value; if (!String.IsNullOrEmpty(temp)) { fragementaion = cv.GetParam(temp, "MS"); } } StudyVariable studyvariable; if (!studyvariables.Any(x => x.Description.Equals(studyvariableDescription))) { studyvariable = new StudyVariable(studyvariables.Count + 1) { Description = studyvariableDescription }; studyvariables.Add(studyvariable); } else { studyvariable = studyvariables.First(x => x.Description.Equals(studyvariableDescription)); } Assay assay = new Assay(assays.Count + 1) { QuantificationReagent = cv.GetParam(assayReagent, "PRIDE") }; foreach (var m in mod) { if (m == null) { continue; } assay.addQuantificationMod(new AssayQuantificationMod(assay, assay.QuantificationModMap.Count + 1) { Param = m }); } assays.Add(assay); MsRunImpl msrun; if (!String.IsNullOrEmpty(filename) && !msruns.Any(x => x.Description != null && x.Description.Equals(filename))) { msrun = new MsRunImpl(msruns.Count + 1) { Format = format, IdFormat = idformat, FragmentationMethod = fragementaion }; msruns.Add(msrun); msrun.Location = new Url(String.IsNullOrEmpty(path) ? filename : Path.Combine(path, filename)); } else { msrun = msruns.First(x => x.Description != null && x.Description.Equals(filename)); } Sample sample; if (!samples.Any(x => x.Description.Equals(sampleDescription))) { sample = new Sample(samples.Count + 1) { Description = sampleDescription }; if (specie != null) { sample.AddSpecies(specie); } if (tissue != null) { sample.AddTissue(tissue); } if (cellType != null) { sample.AddCellType(cellType); } if (disease != null) { sample.AddDisease(disease); } samples.Add(sample); } else { sample = samples.First(x => x.Description.Equals(sampleDescription)); } if (!studyvariable.AssayMap.ContainsKey(assay.Id)) { studyvariable.AddAssay(assay); } if (!studyvariable.SampleMap.ContainsKey(sample.Id)) { studyvariable.AddSample(sample); } assay.MsRun = msrun; assay.Sample = sample; } } #endregion Dictionary<int, IList<string>> dictionary = new Dictionary<int, IList<string>>(); #region parse experimentalDesign if (experimentalDesignTemplate != null) { string[] rawfiles = null; int index = Constants.GetKeywordIndex(experimentalDesign.rawfile, experimentalDesignTemplate.StringColumnNames); if (index != -1) { rawfiles = experimentalDesignTemplate.StringColumns[index]; } string[] experimentNames = null; if ( (index = Constants.GetKeywordIndex(experimentalDesign.variable, experimentalDesignTemplate.StringColumnNames)) != -1) { experimentNames = experimentalDesignTemplate.StringColumns[index]; } else if ( (index = Constants.GetKeywordIndex(experimentalDesign.variable, experimentalDesignTemplate.CategoryColumnNames)) != -1) { experimentNames = MzTabMatrixUtils.ConvertToStringArray(experimentalDesignTemplate.GetCategoryColumnAt(index)); } if (rawfiles != null && experimentNames != null) { for (int i = 0; i < rawfiles.Length && i < experimentNames.Length; i++) { string name = experimentNames[i]; StudyVariable variable = studyvariables.FirstOrDefault(x => x.Description.Equals(name)); if (variable == null) { variable = new StudyVariable(studyvariables.Count + 1) { Description = name }; studyvariables.Add(variable); } string rawfile = rawfiles[i]; MsRunImpl runImpl = msruns.FirstOrDefault(x => x.Description.Equals(rawfile)); if (runImpl == null) { runImpl = new MsRunImpl(msruns.Count + 1) { Location = new Url(rawfile), Format = cv.GetParam("MS:1000563", "MS"), IdFormat = cv.GetParam("MS:1000768", "MS") }; msruns.Add(runImpl); } if (rawfile != null) { if (!dictionary.ContainsKey(variable.Id)) { dictionary.Add(variable.Id, new List<string>()); } dictionary[variable.Id].Add(rawfile); } } } else { Console.Out.WriteLine("Rawfiles " + rawfiles); Console.Out.WriteLine("experimentNames " + experimentNames); throw new Exception("Could not parse " + Matrix.ExperimentalDesign); } } #endregion #region add default samples from studyvariables if (studyvariables != null && studyvariables.Count > 0) { foreach (StudyVariable variable in studyvariables) { string text = variable.Description; Sample sample = samples.FirstOrDefault(x => text.Contains(x.Description)); if (sample == null) { sample = new Sample(samples.Count + 1) { Description = text }; samples.Add(sample); } variable.AddSample(sample); } } #endregion #region parse summary if (summary != null) { int maxRow = msruns.Count; string multi = "1"; string[] labels0 = null; int index; if ((index = Constants.GetKeywordIndex(Utils.summary.labels0, summary.StringColumnNames)) != -1) { labels0 = summary.StringColumns[index]; multi = "1"; } else if ((index = Constants.GetKeywordIndex(Utils.summary.labels0, summary.CategoryColumnNames)) != -1) { labels0 = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); multi = "1"; } string[] labels1 = null; if ((index = Constants.GetKeywordIndex(Utils.summary.labels1, summary.StringColumnNames)) != -1) { labels1 = summary.StringColumns[index]; multi = "2"; } else if ((index = Constants.GetKeywordIndex(Utils.summary.labels1, summary.CategoryColumnNames)) != -1) { labels1 = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); multi = "2"; } string[] labels2 = null; if ((index = Constants.GetKeywordIndex(Utils.summary.labels2, summary.StringColumnNames)) != -1) { labels2 = summary.StringColumns[index]; multi = "3"; } else if ((index = Constants.GetKeywordIndex(Utils.summary.labels2, summary.CategoryColumnNames)) != -1) { labels2 = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); multi = "3"; } string[] multiplicity; if ((index = Constants.GetKeywordIndex(Utils.summary.multiplicity, summary.StringColumnNames)) != -1) { multiplicity = summary.StringColumns[index]; multiplicity = multiplicity.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } else if ( (index = Constants.GetKeywordIndex(Utils.summary.multiplicity, summary.CategoryColumnNames)) != -1) { multiplicity = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); multiplicity = multiplicity.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } else { multiplicity = new string[maxRow]; for (int i = 0; i < multiplicity.Length; i++) { multiplicity[i] = multi; } } string[] labels; switch (multi) { case "1": labels = null; break; case "2": labels = new[] { "L", "H" }; break; case "3": labels = new[] { "L", "H", "M" }; break; default: labels = null; break; } if (labels != null) { List<StudyVariable> list = new List<StudyVariable>(); Dictionary<int, IList<string>> dict = new Dictionary<int, IList<string>>(); foreach (StudyVariable studyVariable in studyvariables){ foreach (var variable in SILAC(studyVariable, labels)) { IList<string> rawfile = null; if (dictionary.ContainsKey(variable.Id)) { rawfile = dictionary[variable.Id]; } StudyVariable tmp = new StudyVariable(list.Count + 1){Description = variable.Description}; tmp.AddAllAssays(variable.AssayMap.Values.ToList()); tmp.AddAllSamples(variable.SampleMap.Values.ToList()); list.Add(tmp); if (rawfile != null) { if (!dict.ContainsKey(tmp.Id)) { dict.Add(tmp.Id, rawfile); } } } } studyvariables = list; dictionary = dict; } string[] rawfiles = null; if ((index = Constants.GetKeywordIndex(Utils.summary.rawfile, summary.StringColumnNames)) != -1) { rawfiles = summary.StringColumns[index]; rawfiles = rawfiles.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } else if ((index = Constants.GetKeywordIndex(Utils.summary.rawfile, summary.CategoryColumnNames)) != -1) { rawfiles = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); rawfiles = rawfiles.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } string[] orbitrapInstruments = new[] { "LTQ Orbitrap", "LTQ Orbitrap XL", "LTQ Orbitrap Velos", "LTQ Orbitrap Elite", "Q Exactive" }; string[] instrument = null; if ((index = Constants.GetKeywordIndex(Utils.summary.instrument, summary.StringColumnNames)) != -1) { instrument = summary.StringColumns[index]; instrument = instrument.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } else if ((index = Constants.GetKeywordIndex(Utils.summary.instrument, summary.CategoryColumnNames)) != -1) { instrument = MzTabMatrixUtils.ConvertToStringArray(summary.GetCategoryColumnAt(index)); instrument = instrument.Where(x => !String.IsNullOrEmpty(x)).ToArray(); } if (rawfiles != null) { for (int i = 0; i < rawfiles.Length; i++) { int id = assays.Count + 1; string rawfile = rawfiles[i]; if (!dictionary.Values.Any(x => x.Contains(rawfile))) { continue; } IList<StudyVariable> temp = new List<StudyVariable>(); foreach (var v in dictionary.Where(x => x.Value.Contains(rawfile))) { temp.Add(studyvariables.FirstOrDefault(x => x.Id == v.Key)); } StudyVariable variable1 = null; StudyVariable variable2 = null; StudyVariable variable3 = null; if (temp != null) { if (temp.Any()) { variable1 = temp[0]; } if (temp.Count() > 1) { variable2 = temp[1]; } if (temp.Count() > 2) { variable3 = temp[2]; } } if (multiplicity[i].Equals("1")) { #region Add assay for label free Assay assay = new Assay(id) { QuantificationReagent = cv.GetParam("Unlabeled sample", "PRIDE"), MsRun = msruns[i] }; if (variable1 != null) { assay.Sample = variable1.SampleMap.Values.FirstOrDefault(); variable1.AddAssay(assay); } assays.Add(assay); #endregion } else if (multiplicity[i].Equals("2")) { #region Add assays for Double SILAC labeling Assay assay = new Assay(id) { QuantificationReagent = cv.GetParam("SILAC light", "PRIDE"), MsRun = msruns[i] }; IList<AssayQuantificationMod> mods = MzTabMatrixUtils.GetQuantificationMod(labels0, i, assay); if (mods != null) { foreach (var m in mods) { assay.addQuantificationMod(m); } } if (variable1 != null) { assay.Sample = variable1.SampleMap.Values.FirstOrDefault(); variable1.AddAssay(assay); } assays.Add(assay); assay = new Assay(id + 1) { QuantificationReagent = cv.GetParam("SILAC heavy", "PRIDE"), MsRun = msruns[i] }; mods = MzTabMatrixUtils.GetQuantificationMod(labels1, i, assay); if (mods != null) { foreach (var m in mods) { assay.addQuantificationMod(m); } } if (variable2 != null) { assay.Sample = variable2.SampleMap.Values.FirstOrDefault(); variable2.AddAssay(assay); } assays.Add(assay); #endregion } else if (multiplicity[i].Equals("3")) { #region Add assays for Triple SILAC labeling Assay assay = new Assay(id) { QuantificationReagent = cv.GetParam("SILAC light", "PRIDE"), MsRun = msruns[i] }; IList<AssayQuantificationMod> mods = MzTabMatrixUtils.GetQuantificationMod(labels0, i, assay); if (mods != null) { foreach (var m in mods) { assay.addQuantificationMod(m); } } if (variable1 != null) { assay.Sample = variable1.SampleMap.Values.FirstOrDefault(); variable1.AddAssay(assay); } assays.Add(assay); assay = new Assay(id + 1) { QuantificationReagent = cv.GetParam("SILAC medium", "PRIDE"), MsRun = msruns[i] }; mods = MzTabMatrixUtils.GetQuantificationMod(labels1, i, assay); if (mods != null) { foreach (var m in mods) { assay.addQuantificationMod(m); } } if (variable2 != null) { assay.Sample = variable2.SampleMap.Values.FirstOrDefault(); variable2.AddAssay(assay); } assays.Add(assay); assay = new Assay(id + 2) { QuantificationReagent = cv.GetParam("SILAC heavy", "PRIDE"), MsRun = msruns[i] }; mods = MzTabMatrixUtils.GetQuantificationMod(labels2, i, assay); if (mods != null) { foreach (var m in mods) { assay.addQuantificationMod(m); } } if (variable3 != null) { assay.Sample = variable3.SampleMap.Values.FirstOrDefault(); variable3.AddAssay(assay); } assays.Add(assay); #endregion } if (instrument != null && !String.IsNullOrEmpty(instrument[i])) { var tmp = new Instrument(instruments.Count + 1) { Name = cv.GetParam(instrument[i], "MS") }; if (orbitrapInstruments.Contains(instrument[i])) { tmp.Source = cv.GetParam("electrospray ionization", "MS"); tmp.Analyzer = cv.GetParam("orbitrap", "MS"); } instruments.Add(tmp); } } } } #endregion #region parse search Lib.Model.Param run_idFormat = cv.GetParam("MS:1000774", "MS"); Lib.Model.Param run_format = cv.GetParam("Andromeda Peak list file", "MS"); if (spectraRef != null && Constants.GetKeywordName(Utils.spectraRef.location, spectraRef.StringColumnNames) != null) { int colindex = Constants.GetKeywordIndex(Utils.spectraRef.location, spectraRef.StringColumnNames); string[] values = ArrayUtils.UniqueValues(spectraRef.StringColumns[colindex]); for (int i = 0; i < values.Length; i++) { Lib.Model.Param frag = null; if (values[i].Contains("CID")) { frag = cv.GetParam("MS:1000133", "MS"); } else if (values[i].Contains("HCD")) { frag = cv.GetParam("MS:1000422", "MS"); } msruns.Add(new MsRunImpl(msruns.Count + 1) { IdFormat = run_idFormat, Format = run_format, FragmentationMethod = frag, Location = new Url(values[i]) }); } } else { msruns.Add(new MsRunImpl(msruns.Count + 1) { IdFormat = run_idFormat, Format = run_format }); } #endregion }
private void AddRow(List<string[]> matrix, List<string> columnnames, int row, MsRunImpl runImpl, Assay assay, Sample sample, StudyVariable studyVariable, Instrument instrument) { string value = runImpl == null ? "" : string.Format(@"{0} <{1};{2};{3};{4}>", runImpl.Description, runImpl.FilePath, runImpl.Format == null ? "" : runImpl.Format.Name, runImpl.IdFormat == null ? "" : runImpl.IdFormat.Name, runImpl.FragmentationMethod == null ? "" : runImpl.FragmentationMethod.Name); matrix[columnnames.IndexOf(MetadataElement.MS_RUN.Name)][row] = value; value = assay == null ? "" : string.Format(@"{0} <{1}>", assay.QuantificationReagent.Name, StringUtils.Concat(";", ConvertToString(assay.QuantificationModMap))); matrix[columnnames.IndexOf(MetadataElement.ASSAY.Name)][row] = value; value = sample == null ? "" : string.Format(@"{0} <{1};{2};{3};{4}>", sample.Description, GetParamListString(sample.SpeciesList), GetParamListString(sample.TissueList), GetParamListString(sample.CellTypeList), GetParamListString(sample.DiseaseList)); matrix[columnnames.IndexOf(MetadataElement.SAMPLE.Name)][row] = value; matrix[columnnames.IndexOf(MetadataElement.STUDY_VARIABLE.Name)][row] = studyVariable == null ? "" : studyVariable.Description; matrix[columnnames.IndexOf(MetadataElement.INSTRUMENT.Name)][row] = instrument == null ? "" : string.Format( @"{0} <{1};{2};{3}>", instrument.Name == null ? "" : instrument.Name.Name, instrument.Analyzer == null ? "" : instrument.Analyzer.Name, instrument.Detector == null ? "" : instrument.Detector.Name, instrument.Source == null ? "" : instrument.Source.Name); }