public AssayParam(int count, Assay[] assays, bool reduced, CVLookUp cv, string name = null) : base(name) { _reduced = reduced; _cv = cv; _count = count; Value = assays; Default = assays; }
public static IList<Assay> UniqueGroups(IList<Assay> assays, out int[] reference) { reference = new int[assays.Count]; IList<string> reagentList = new List<string>(); IList<string> modificationList = new List<string>(); IList<Assay> groups = new List<Assay>(); for (int i = 0; i < assays.Count; i++){ var a = assays[i]; string reagent = a.QuantificationReagent.Name; string modString = ""; if (a.QuantificationModMap != null){ modString = StringUtils.Concat("&&", a.QuantificationModMap.Where( x => x.Value != null && x.Value.Param != null) .Select(x => x.Value.Param.Name)); } bool add = false; if (!reagentList.Contains(reagent)){ add = true; reagentList.Add(reagent); modificationList.Add(modString); } if (!modificationList.Contains(modString)){ add = true; reagentList.Add(reagent); modificationList.Add(modString); } for (int j = 0; j < reagentList.Count && j < modificationList.Count; j++){ if (reagentList[j].Equals(reagent) || modificationList[j].Equals(modString)){ reference[i] = j; break; } } if (!add){ continue; } Assay assay = new Assay(groups.Count + 1){QuantificationReagent = a.QuantificationReagent}; if (a.QuantificationModMap != null){ foreach (var m in a.QuantificationModMap.Values){ assay.addQuantificationMod(m); } } groups.Add(assay); } return groups; }
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 void AddAssay(int pid, Assay assay) { assayMap.Add(pid, assay); }
public bool AddAssaySample(int id, Sample sample) { Assay assay; if (!_assayMap.ContainsKey(id)){ assay = new Assay(id){Sample = sample}; _assayMap.Add(id, assay); return true; } assay = _assayMap[id]; assay.Sample = sample; 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 override void Clear() { Value = new Assay[_count]; }
public bool AddAssayQuantificationReagent(int id, Param quantificationReagent) { Assay assay; if (!_assayMap.ContainsKey(id)){ assay = new Assay(id){QuantificationReagent = quantificationReagent}; _assayMap.Add(id, assay); return true; } assay = _assayMap[id]; if (assay.QuantificationReagent != null){ return false; } assay.QuantificationReagent = quantificationReagent; return true; }
public AssayPanel1(int count, Assay[] value, CVLookUp cv) { _cv = cv; _count = count; InitializeComponent(); Value = value; }
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); }
public static MZTabColumn createOptionalColumn(Section section, Assay assay, int offset) { return new AbundanceColumn(Section.toDataSection(section), Field.ABUNDANCE, assay, offset); }
protected IEnumerable<AssayQuantificationMod> GetModifications(Assay assay, ListSelectorControl listBox, CVLookUp cv) { List<AssayQuantificationMod> result = new List<AssayQuantificationMod>(); foreach (var item in listBox.SelectedItems){ string name = item.ToString(); Lib.Model.Param param = cv.GetParam(name, "MOD"); if (param == null){ continue; } string position = null; string site = null; if (Tables.Modifications.ContainsKey(name)){ var m = Tables.Modifications[name]; if (m != null){ switch (m.Position){ case ModificationPosition.anywhere: position = "Anywhere"; break; case ModificationPosition.anyNterm: position = "Any N-term"; break; case ModificationPosition.anyCterm: position = "Any C-term"; break; case ModificationPosition.proteinNterm: position = "Protein N-term"; break; case ModificationPosition.proteinCterm: position = "Protein C-term"; break; default: position = m.Position.ToString(); break; } site = m.GetSiteArray() != null ? StringUtils.Concat("|", m.GetSiteArray()) : "-"; } } result.Add(new AssayQuantificationMod(assay, result.Count + 1){ Param = param, Position = position, Site = site }); } return result; }
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 void AddAssay(Assay assay) { assayMap.Add(assay.Id, assay); }
private void addPSMValue() { Assay assay1 = new Assay(1); MZTabColumnFactory factory = MZTabColumnFactory.GetInstance(Section.PSM_Header); factory.AddOptionalColumn(assay1, "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); PSM psm = new PSM(factory, metadata); psm.Sequence = "KVPQVSTPTLVEVSR"; psm.SetPSM_ID("1"); psm.Accession = "P02768"; psm.Unique = MZBoolean.False; psm.Database = "UniProtKB"; psm.DatabaseVersion = "2011_11"; psm.setSearchEngine("[MS,MS:1001207,Mascot,]|[MS,MS:1001208,Sequest,]"); psm.setSearchEngineScore("[MS,MS:1001155,Sequest:xcorr,2]"); psm.setReliability("3"); psm.setModifications("CHEMMOD:+159.93"); psm.AddRetentionTime(10.2); psm.Charge = new Integer(2); psm.SetExpMassToCharge("1234.4"); psm.SetCalcMassToCharge("123.4"); psm.SetUri("http://www.ebi.ac.uk/pride/link/to/peptide"); psm.SetSpectraRef("ms_run[2]:index=7|ms_run[2]:index=9"); psm.Pre = "K"; psm.Post = "D"; psm.Start = "45"; psm.End = "57"; Console.WriteLine(psm); }
private string AssayToString(Assay assay) { return string.Format("[{0}] {1} - {2}", assay.Id, assay.QuantificationReagent.Name, assay.MsRun is MsRunImpl ? (assay.MsRun as MsRunImpl).Description : assay.MsRun.Location.Value); }
/** * Add {@link CVParamOptionColumn} followed by assay into {@link #optionalColumnMapping} and {@link #columnMapping}. * The header like: opt_assay[1]_cv_{accession}_{parameter name} * * @param assay SHOULD NOT empty. * @param param SHOULD NOT empty. * @param columnType SHOULD NOT empty. */ public string AddOptionalColumn(Assay assay, CVParam param, Type columnType) { MZTabColumn column = new CVParamOptionColumn(assay, param, columnType, ParseColumnOrder(columnMapping.Last().Key)); return AddOptionColumn(column); }
/** * Add {@link OptionColumn} followed by assay into {@link #optionalColumnMapping} and {@link #columnMapping}. * The header like: opt_assay[1]_{name} * * @param assay SHOULD NOT empty. * @param name SHOULD NOT empty. * @param columnType SHOULD NOT empty. */ public string AddOptionalColumn(Assay assay, string name, Type columnType) { MZTabColumn column = new OptionColumn(assay, name, columnType, ParseColumnOrder(columnMapping.Last().Key)); return AddOptionColumn(column); }
/** * Add {@link AbundanceColumn} into {@link AbundanceColumn}, {@link #optionalColumnMapping} and {@link #columnMapping}. * The header like: {Section}_abundance_assay[1] * * @see AbundanceColumn#createOptionalColumn(Section, Assay, int) * * @param assay SHOULD NOT empty. */ public string AddAbundanceOptionalColumn(Assay assay) { MZTabColumn column = AbundanceColumn.createOptionalColumn(section, assay, ParseColumnOrder( columnMapping.Last().Key)); abundanceColumnMapping.Add(column.LogicPosition, column); return AddOptionColumn(column); }
public AssayQuantificationMod(Assay assay, int id) : base(MetadataSubElement.ASSAY_QUANTIFICATION_MOD.Element, id) { this.assay = assay; }
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); }
protected Assay GetAssay(int id, int _count, string text, CVLookUp _cv) { Assay assay = new Assay(id); if (!string.IsNullOrEmpty(text)){ assay.QuantificationReagent = _cv.GetParam(text, "PRIDE"); } return assay; }
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 }
protected void SetModifications(Assay assay, ListSelectorControl listbox) { IList<int> indizes = new List<int>(); if (assay.QuantificationModMap != null && assay.QuantificationModMap.Count > 0){ foreach (var mod in assay.QuantificationModMap.Values){ if (mod == null || mod.Param == null || mod.Param.Name == null){ continue; } int index = MzTabMatrixUtils.GetSelectedIndex(mod.Param.Name, listbox.Items); if (index == -1){ continue; } indizes.Add(index); } } listbox.SelectedIndices = indizes.ToArray(); }
public bool AddAssayMsRun(int id, MsRun msRun) { Assay assay; if (!_assayMap.ContainsKey(id)){ assay = new Assay(id){MsRun = msRun}; _assayMap.Add(id, assay); return true; } assay = _assayMap[id]; assay.MsRun = msRun; return true; }
public AssayPanel2(int count, Assay[] value, CVLookUp cv) { _cv = cv; _count = count; foreach (var assay in value){ if (assay == null){ continue; } if (assay.MsRun != null){ _msRunText.Add(MsRunToString(assay.MsRun)); _msRunList.Add(assay.MsRun as MsRunImpl); } if (assay.Sample != null){ _sampleText.Add(SampleToString(assay.Sample)); _sampleList.Add(assay.Sample); } } _uniqueSamples = ArrayUtils.UniqueValues(_sampleText); InitializeComponent(); Value = value; }
public void AddAssayQuantificationModParam(int assayId, int quanModId, Param param) { Assay assay = _assayMap[assayId]; if (assay == null){ assay = new Assay(assayId); assay.addQuantificationModParam(quanModId, param); _assayMap.Add(assayId, assay); } else{ assay.addQuantificationModParam(quanModId, param); } }
public static string[] UniqueSamples(Assay[] value) { if (value != null){ Sample[] samples = value.Where(x => x.Sample != null).Select(x => x.Sample).ToArray(); string[] temp = samples.Select(x => x.Description).ToArray(); return ArrayUtils.UniqueValues(temp); } return new string[0]; }
public void AddAssayQuantificationModSite(int assayId, int quanModId, String site) { Assay assay = _assayMap[assayId]; if (assay == null){ assay = new Assay(assayId); assay.addQuantificationModSite(quanModId, site); _assayMap.Add(assayId, assay); } else{ assay.addQuantificationModSite(quanModId, site); } }