/**
         * Create a MZTabFile with defined metadata.
         *
         * @param metadata SHOULD NOT set null.
         */
        public MZTabFile(Metadata metadata)
        {
            if (metadata == null){
                throw new NullReferenceException("Metadata should be created first.");
            }

            this.metadata = metadata;
        }
        /**
         * Parse a header line into {@link MZTabColumnFactory} structure.
         *
         * @param factory SHOULD NOT set null
         * @param metadata SHOULD NOT set null
         */
        protected MZTabHeaderLineParser(MZTabColumnFactory factory, Metadata metadata)
        {
            if (factory == null){
                throw new NullReferenceException("Header line should be parse first!");
            }
            this.factory = factory;

            if (metadata == null){
                throw new NullReferenceException("Metadata should be create first!");
            }
            this.metadata = metadata;
        }
        /**
         * Generate a mzTab data line parser. A couple of common method used to parse a data line into
         * {@link MZTabRecord} structure.
         *
         * NOTICE: {@link MZTabColumnFactory} maintain a couple of {@link MZTabColumn} which have internal logical
         * position and order. In physical mzTab file, we allow user not obey this logical position organized way,
         * and provide their date with own order. In order to distinguish them, we use physical position (a positive
         * integer) to record the column location in mzTab file. And use {@link PositionMapping} structure the maintain
         * the mapping between them.
         *
         * @param factory SHOULD NOT set null
         * @param positionMapping SHOULD NOT set null
         * @param metadata SHOULD NOT set null
         */
        protected MZTabDataLineParser(MZTabColumnFactory factory, PositionMapping positionMapping,
                                      Metadata metadata, MZTabErrorList errorList)
        {
            if (factory == null){
                throw new NullReferenceException("Column header factory should be create first.");
            }
            this.factory = factory;

            this.positionMapping = positionMapping;
            exchangeMapping = positionMapping.exchange();

            mapping = factory.GetOffsetColumnsMap();

            if (metadata == null){
                throw new NullReferenceException("Metadata should be parser first.");
            }
            this.metadata = metadata;
            _errorList = errorList ?? new MZTabErrorList();
        }
        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);
        }
Exemple #5
0
 public Peptide(Metadata metadata)
     : base(MZTabColumnFactory.GetInstance(Section.Peptide))
 {
     this.metadata = metadata;
 }
 public PEHLineParser(Metadata metadata)
     : base(MZTabColumnFactory.GetInstance(Section.Peptide_Header), metadata)
 {
 }
 public PRHLineParser(Metadata metadata)
     : base(MZTabColumnFactory.GetInstance(Section.Protein_Header), metadata)
 {
 }
        public static void main(string[] args)
        {
            MZTabDescription tabDescription = new MZTabDescription(MzTabMode.Summary, MzTabType.Identification){
                Id = "PRIDE_1234"
            };
            Metadata mtd = new Metadata(tabDescription);

            mtd.Title = "My first test experiment";
            mtd.Description = "An experiment investigating the effects of Il-6.";

            mtd.AddSampleProcessingParam(1, new CVParam("SEP", "SEP:00173", "SDS PAGE", null));
            mtd.AddSampleProcessingParam(2, new CVParam("SEP", "SEP:00142", "enzyme digestion", null));
            mtd.AddSampleProcessingParam(2, new CVParam("MS", "MS:1001251", "Trypsin", null));

            mtd.AddInstrumentName(1, new CVParam("MS", "MS:100049", "LTQ Orbitrap", null));
            mtd.AddInstrumentName(2,
                                  new CVParam("MS", "MS:1000031", "Instrument model",
                                              "name of the instrument not included in the CV"));
            mtd.AddInstrumentSource(1, new CVParam("MS", "MS:1000073", "ESI", null));
            mtd.AddInstrumentSource(2, new CVParam("MS", "MS:1000598", "ETD", null));
            mtd.AddInstrumentAnalyzer(1, new CVParam("MS", "MS:1000291", "linear ion trap", null));
            mtd.AddInstrumentAnalyzer(2, new CVParam("MS", "MS:1000484", "orbitrap", null));
            mtd.AddInstrumentDetector(1, new CVParam("MS", "MS:1000253", "electron multiplier", null));
            mtd.AddInstrumentDetector(2, new CVParam("MS", "MS:1000348", "focal plane collector", null));

            mtd.AddSoftwareParam(1, new CVParam("MS", "MS:1001207", "Mascot", "2.3"));
            mtd.AddSoftwareParam(2, new CVParam("MS", "MS:1001561", "Scaffold", "1.0"));
            mtd.AddSoftwareSetting(1, "Fragment tolerance = 0.1Da");
            mtd.AddSoftwareSetting(1, "Parent tolerance = 0.5Da");

            mtd.AddFalseDiscoveryRateParam(new CVParam("MS", "MS:1001364", "pep:global FDR", "0.01"));
            mtd.AddFalseDiscoveryRateParam(new CVParam("MS", "MS:1001214", "pep:global FDR", "0.08"));

            mtd.AddPublicationItem(1, PublicationType.PUBMED, "21063943");
            mtd.AddPublicationItem(1, PublicationType.DOI, "10.1007/978-1-60761-987-1_6");
            mtd.AddPublicationItem(2, PublicationType.PUBMED, "20615486");
            mtd.AddPublicationItem(2, PublicationType.DOI, "10.1016/j.jprot.2010.06.008");

            mtd.AddContactName(1, "James D. Watson");
            mtd.AddContactName(2, "Francis Crick");
            mtd.AddContactAffiliation(1, "Cambridge University, UK");
            mtd.AddContactAffiliation(2, "Cambridge University, UK");
            mtd.AddContactEmail(1, "*****@*****.**");
            mtd.AddContactEmail(2, "*****@*****.**");

            mtd.AddUri(new Uri("http://www.ebi.ac.uk/pride/url/to/experiment"));
            mtd.AddUri(new Uri("http://proteomecentral.proteomexchange.org/cgi/GetDataset"));

            mtd.AddFixedModParam(1, new CVParam("UNIMOD", "UNIMOD:4", "Carbamidomethyl", null));
            mtd.AddFixedModSite(1, "M");
            mtd.AddFixedModParam(2, new CVParam("UNIMOD", "UNIMOD:35", "Oxidation", null));
            mtd.AddFixedModSite(2, "N-term");
            mtd.AddFixedModParam(3, new CVParam("UNIMOD", "UNIMOD:1", "Acetyl", null));
            mtd.AddFixedModPosition(3, "Protein C-term");

            mtd.AddVariableModParam(1, new CVParam("UNIMOD", "UNIMOD:21", "Phospho", null));
            mtd.AddVariableModSite(1, "M");
            mtd.AddVariableModParam(2, new CVParam("UNIMOD", "UNIMOD:35", "Oxidation", null));
            mtd.AddVariableModSite(2, "N-term");
            mtd.AddVariableModParam(3, new CVParam("UNIMOD", "UNIMOD:1", "Acetyl", null));
            mtd.AddVariableModPosition(3, "Protein C-term");

            mtd.QuantificationMethod = new CVParam("MS", "MS:1001837", "iTRAQ quantitation analysis", null);
            mtd.ProteinQuantificationUnit = new CVParam("PRIDE", "PRIDE:0000395", "Ratio", null);
            mtd.PeptideQuantificationUnit = new CVParam("PRIDE", "PRIDE:0000395", "Ratio", null);
            mtd.SmallMoleculeQuantificationUnit = new CVParam("PRIDE", "PRIDE:0000395", "Ratio", null);

            mtd.AddMsRunFormat(1, new CVParam("MS", "MS:1000584", "mzML file", null));
            mtd.AddMsRunFormat(2, new CVParam("MS", "MS:1001062", "Mascot MGF file", null));
            mtd.AddMsRunLocation(1, new Url("file://C:\\path\\to\\my\\file"));
            mtd.AddMsRunLocation(2, new Url("ftp://ftp.ebi.ac.uk/path/to/file"));
            mtd.AddMsRunIdFormat(1, new CVParam("MS", "MS:1001530", "mzML unique identifier", null));
            mtd.AddMsRunFragmentationMethod(1, new CVParam("MS", "MS:1000133", "CID", null));
            mtd.AddMsRunFragmentationMethod(2, new CVParam("MS", "MS:1000422", "HCD", null));

            mtd.AddCustom(new UserParam("MS operator", "Florian"));

            mtd.AddSampleSpecies(1, new CVParam("NEWT", "9606", "H**o sapiens (Human)", null));
            mtd.AddSampleSpecies(1, new CVParam("NEWT", "573824", "Human rhinovirus 1", null));
            mtd.AddSampleSpecies(2, new CVParam("NEWT", "9606", "H**o sapiens (Human)", null));
            mtd.AddSampleSpecies(2, new CVParam("NEWT", "12130", "Human rhinovirus 2", null));
            mtd.AddSampleTissue(1, new CVParam("BTO", "BTO:0000759", "liver", null));
            mtd.AddSampleCellType(1, new CVParam("CL", "CL:0000182", "hepatocyte", null));
            mtd.AddSampleDisease(1, new CVParam("DOID", "DOID:684", "hepatocellular carcinoma", null));
            mtd.AddSampleDisease(1, new CVParam("DOID", "DOID:9451", "alcoholic fatty liver", null));
            mtd.AddSampleDescription(1, "Hepatocellular carcinoma samples.");
            mtd.AddSampleDescription(2, "Healthy control samples.");
            mtd.AddSampleCustom(1, new UserParam("Extraction date", "2011-12-21"));
            mtd.AddSampleCustom(1, new UserParam("Extraction reason", "liver biopsy"));

            Sample sample1 = mtd.SampleMap[1];
            Sample sample2 = mtd.SampleMap[2];
            mtd.AddAssayQuantificationReagent(1, new CVParam("PRIDE", "PRIDE:0000114", "iTRAQ reagent", "114"));
            mtd.AddAssayQuantificationReagent(2, new CVParam("PRIDE", "PRIDE:0000115", "iTRAQ reagent", "115"));
            mtd.AddAssayQuantificationReagent(1, new CVParam("PRIDE", "MS:1002038", "unlabeled sample", null));
            mtd.AddAssaySample(1, sample1);
            mtd.AddAssaySample(2, sample2);

            mtd.AddAssayQuantificationModParam(2, 1, new CVParam("UNIMOD", "UNIMOD:188", "Label:13C(6)", null));
            mtd.AddAssayQuantificationModParam(2, 2, new CVParam("UNIMOD", "UNIMOD:188", "Label:13C(6)", null));
            mtd.AddAssayQuantificationModSite(2, 1, "R");
            mtd.AddAssayQuantificationModSite(2, 2, "K");
            mtd.AddAssayQuantificationModPosition(2, 1, "Anywhere");
            mtd.AddAssayQuantificationModPosition(2, 2, "Anywhere");

            MsRun msRun1 = mtd.MsRunMap[1];
            mtd.AddAssayMsRun(1, msRun1);

            Assay assay1 = mtd.AssayMap[1];
            Assay assay2 = mtd.AssayMap[2];
            mtd.AddStudyVariableAssay(1, assay1);
            mtd.AddStudyVariableAssay(1, assay2);

            mtd.AddStudyVariableSample(1, sample1);
            mtd.AddStudyVariableDescription(1, "description Group B (spike-in 0.74 fmol/uL)");

            mtd.AddCVLabel(1, "MS");
            mtd.AddCVFullName(1, "MS");
            mtd.AddCVVersion(1, "3.54.0");
            mtd.AddCVURL(1,
                         "http://psidev.cvs.sourceforge.net/viewvc/psidev/psi/psi-ms/mzML/controlledVocabulary/psi-ms.obo");

            mtd.AddProteinColUnit(ProteinColumn.RELIABILITY,
                                  new CVParam("MS", "MS:00001231", "PeptideProphet:Score", null));

            MZTabColumnFactory peptideFactory = MZTabColumnFactory.GetInstance(Section.Peptide);
            PeptideColumn peptideColumn = (PeptideColumn) peptideFactory.FindColumnByHeader("retention_time");
            mtd.AddPeptideColUnit(peptideColumn, new CVParam("UO", "UO:0000031", "minute", null));

            mtd.AddPSMColUnit(PSMColumn.RETENTION_TIME, new CVParam("UO", "UO:0000031", "minute", null));
            mtd.AddSmallMoleculeColUnit(SmallMoleculeColumn.RETENTION_TIME,
                                        new CVParam("UO", "UO:0000031", "minute", null));

            Console.WriteLine(mtd);
        }
 public SmallMolecule(Metadata metadata)
     : base(MZTabColumnFactory.GetInstance(Section.Small_Molecule))
 {
     this.metadata = metadata;
 }
        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 void AddTitleParameter(IList<Parameter> list, IList<ParameterDescription> help, Metadata mtd)
 {
     string name = MetadataElement.TITLE.Name;
     string desc = null;
     name = CheckIfDescriptionExists(help, name, ref desc, mtd);
     StringParam id = new StringParam(name){Value = mtd.Title, Help = desc};
     list.Add(id);
 }
        private void AddMzParameters(IList<Parameter> list, IList<ParameterDescription> help, Metadata mtd)
        {
            string name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS,
                                        MetadataProperty.MZTAB_VERSION);
            string desc = null;
            name = CheckIfDescriptionExists(help, name, ref desc, mtd);
            StringParam version = new StringParam(name, Constants.versions.Last()){
                Help = desc
            };
            list.Add(version);

            IList<string> values = Enum.GetNames(typeof (MzTabMode));
            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_MODE);
            desc = null;
            name = CheckIfDescriptionExists(help, name, ref desc, mtd);
            SingleChoiceParam mode = new SingleChoiceParam(name){
                Values = values,
                Value = values.IndexOf(mtd.TabDescription.MzTabMode.ToString()),
                Help = desc
            };
            list.Add(mode);

            values = Enum.GetNames(typeof (MzTabType));
            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_TYPE);
            desc = null;
            name = CheckIfDescriptionExists(help, name, ref desc, mtd);
            SingleChoiceParam type = new SingleChoiceParam(name){
                Values = values,
                Value = values.IndexOf(mtd.TabDescription.MzTabType.ToString()),
                Help = desc
            };
            list.Add(type);

            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_ID);
            desc = null;
            name = CheckIfDescriptionExists(help, name, ref desc, mtd);
            StringParam id = new StringParam(name){Value = mtd.TabDescription.Id, Help = desc};
            list.Add(id);
        }
        public override IMatrixData ProcessData(IMatrixData[] inputData, Parameters param, ref IMatrixData[] supplTables,
                                                ref IDocumentData[] documents, ProcessInfo processInfo)
        {
            Metadata mtd = new Metadata();

            string name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS,
                                        MetadataProperty.MZTAB_VERSION);
            StringParam stringParam = FindParam(param, name) as StringParam;
            if (stringParam != null && !string.IsNullOrEmpty(stringParam.Value)){
                mtd.MZTabVersion = stringParam.Value;
            }

            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_MODE);
            SingleChoiceParam single = FindParam(param, name) as SingleChoiceParam;
            if (single != null && !string.IsNullOrEmpty(single.SelectedValue)){
                MzTabMode mode;
                if (Enum.TryParse(single.SelectedValue, true, out mode)){
                    mtd.MzTabMode = mode;
                }
            }

            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_TYPE);
            single = FindParam(param, name) as SingleChoiceParam;
            if (single != null && !string.IsNullOrEmpty(single.SelectedValue)){
                MzTabType type;
                if (Enum.TryParse(single.SelectedValue, true, out type)){
                    mtd.MzTabType = type;
                }
            }

            name = string.Format("{0}{1}{2}", MetadataElement.MZTAB, MZTabConstants.MINUS, MetadataProperty.MZTAB_ID);
            stringParam = FindParam(param, name) as StringParam;
            if (stringParam != null && !string.IsNullOrEmpty(stringParam.Value)){
                mtd.MZTabID = stringParam.Value;
            }

            stringParam = FindParam(param, MetadataElement.TITLE.Name) as StringParam;
            if (stringParam != null && !string.IsNullOrEmpty(stringParam.Value)){
                mtd.SetTitle(stringParam.Value);
            }

            stringParam = FindParam(param, MetadataElement.DESCRIPTION.Name) as StringParam;
            if (stringParam != null && !string.IsNullOrEmpty(stringParam.Value)){
                mtd.SetDescription(stringParam.Value);
            }

            SingleChoiceWithSubParams singleSub =
                FindParam(param, MetadataElement.SAMPLE_PROCESSING.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                SampleProcessingParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as SampleProcessingParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.SampleProcessingMap.Add(j + 1, sub.Value[j]);
                        }
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.INSTRUMENT.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                InstrumentParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as InstrumentParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.InstrumentMap.Add(j + 1, sub.Value[j]);
                        }
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.SOFTWARE.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                SoftwareParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as SoftwareParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.SoftwareMap.Add(j + 1, sub.Value[j]);
                        }
                    }
                }
            }

            MultiChoiceParam multi = FindParam(param, MetadataElement.FALSE_DISCOVERY_RATE.Name) as MultiChoiceParam;
            if (multi != null && multi.SelectedValues != null && multi.SelectedValues.Any()){
                foreach (string sel in multi.SelectedValues){
                    string[] items = sel.Split('=');
                    if (items.Length != 2){
                        continue;
                    }
                    string key = items[0];
                    string value = items[1];

                    if (ContainsParameterKey(parameters.protein_fdr, key)){
                        key = "prot:global FDR";
                    } else if (ContainsParameterKey(parameters.psm_fdr, key)) {
                        key = "pep:global FDR";
                    } else if (ContainsParameterKey(parameters.site_fdr, key)) {
                        key = "site:global FDR";
                    }

                    Lib.Model.Param p = cv.GetParam(key, "MS", value);
                    if (p != null){
                        mtd.FalseDiscoveryRate.Add(p);
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.PUBLICATION.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                PublicationParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as PublicationParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.PublicationMap.Add(j + 1, sub.Value[j]);
                        }
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.CONTACT.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                ContactParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as ContactParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.ContactMap.Add(j + 1, sub.Value[j]);
                        }
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.FIXED_MOD.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                ModificationParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as ModificationParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.FixedModMap.Add(j + 1, (FixedMod) sub.Value[j]);
                        }
                    }
                }
            }

            singleSub = FindParam(param, MetadataElement.VARIABLE_MOD.Name) as SingleChoiceWithSubParams;
            if (singleSub != null){
                ModificationParam sub =
                    singleSub.SubParams[singleSub.Value].GetAllParameters().FirstOrDefault() as ModificationParam;
                if (sub != null){
                    if (sub.Value != null){
                        for (int j = 0; j < sub.Value.Length; j++){
                            mtd.VariableModMap.Add(j + 1, (VariableMod) sub.Value[j]);
                        }
                    }
                }
            }

            single = FindParam(param, MetadataElement.QUANTIFICATION_METHOD.Name) as SingleChoiceParam;
            if (single != null && !string.IsNullOrEmpty(single.SelectedValue)){
                Lib.Model.Param temp;
                mtd.QuantificationMethod = Lib.Model.Param.TryParse(single.SelectedValue, out temp)
                                               ? temp
                                               : cv.GetParam(single.SelectedValue, "MS");
            }

            name = string.Format("{0}{1}{2}", MetadataElement.PROTEIN, MZTabConstants.MINUS,
                                 MetadataProperty.PROTEIN_QUANTIFICATION_UNIT);
            single = FindParam(param, name) as SingleChoiceParam;
            if (single != null && !string.IsNullOrEmpty(single.SelectedValue)){
                Lib.Model.Param temp;
                mtd.ProteinQuantificationUnit = Lib.Model.Param.TryParse(single.SelectedValue, out temp)
                                                    ? temp
                                                    : cv.GetParam(single.SelectedValue, "PRIDE");
            }

            name = string.Format("{0}{1}{2}", MetadataElement.PEPTIDE, MZTabConstants.MINUS,
                                 MetadataProperty.PROTEIN_QUANTIFICATION_UNIT);
            single = FindParam(param, name) as SingleChoiceParam;
            if (single != null && !string.IsNullOrEmpty(single.SelectedValue)){
                Lib.Model.Param temp;
                mtd.PeptideQuantificationUnit = Lib.Model.Param.TryParse(single.SelectedValue, out temp)
                                                    ? temp
                                                    : cv.GetParam(single.SelectedValue, "PRIDE");
            }

            Regex regex = new Regex("[A-Z]{1}:/");
            MsRunParam msrunParam = FindParam(param, MetadataElement.MS_RUN.Name) as MsRunParam;
            if (msrunParam != null){
                if (msrunParam.Value != null){
                    for (int j = 0; j < msrunParam.Value.Length; j++){
                        MsRunImpl runImpl = msrunParam.Value[j];
                        if (regex.IsMatch(runImpl.Location.Value)){
                            runImpl.Location = new Url("file:\\\\\\" + runImpl.Location.Value);
                        }
                        mtd.MsRunMap.Add(j + 1, runImpl);
                    }
                }
            }

            SampleParam sampleParam = FindParam(param, MetadataElement.SAMPLE.Name) as SampleParam;
            if (sampleParam != null){
                if (sampleParam.Value != null){
                    for (int j = 0; j < sampleParam.Value.Length; j++){
                        mtd.SampleMap.Add(j + 1, sampleParam.Value[j]);
                    }
                }
            }

            AssayParam assayParam = FindParam(param, MetadataElement.ASSAY.Name) as AssayParam;
            if (assayParam != null){
                if (assayParam.Value != null){
                    for (int j = 0; j < assayParam.Value.Length; j++){
                        mtd.AssayMap.Add(j + 1, assayParam.Value[j]);
                    }
                }
            }

            StudyVariableParam studyVariableParam =
                FindParam(param, MetadataElement.STUDY_VARIABLE.Name) as StudyVariableParam;
            if (studyVariableParam != null){
                if (studyVariableParam.Value != null){
                    for (int j = 0; j < studyVariableParam.Value.Length; j++){
                        mtd.StudyVariableMap.Add(j + 1, studyVariableParam.Value[j]);
                    }
                }
            }

            multi = FindParam(param, MetadataElement.CV.Name) as MultiChoiceParam;
            if (multi != null && multi.SelectedValues != null){
                var headers = cv.Headers;
                foreach (string value in multi.SelectedValues){
                    var temp = headers.FirstOrDefault(x => x.FullName.Equals(value));
                    if (temp == null){
                        continue;
                    }
                    int id = mtd.CvMap.Count + 1;
                    mtd.CvMap.Add(id,
                                  new CV(id){
                                      FullName = temp.FullName,
                                      Label = temp.Label,
                                      Url = temp.Url,
                                      Version = temp.Version
                                  });
                }
            }

            string mtdString = mtd.ToString();
            string[] lines = mtdString.Split(new[]{"\n"}, StringSplitOptions.RemoveEmptyEntries);

            List<string> columnames = new List<string>{"MTH", "key", "value"};
            List<string[]> columns = columnames.Select(columname => new string[lines.Length]).ToList();

            for (int n = 0; n < lines.Length; n++){
                string[] items = lines[n].Split(new[]{"\t", "\n", "\r"}, StringSplitOptions.None);
                if (items.Length < 3){
                    continue;
                }
                columns[0][n] = items[0];
                columns[1][n] = items[1];
                columns[2][n] = items[2];
            }
            int nrows = lines.Length;
            int ncols = columnames.Count;
            IMatrixData data = (IMatrixData) inputData[0].CreateNewInstance(DataType.Matrix);
            data.SetData(Matrix.MetadataSection, new List<string>(), new float[nrows,ncols], columnames, columns,
                         new List<string>(), new List<string[][]>(), new List<string>(), new List<double[]>(),
                         new List<string>(), new List<double[][]>(), new List<string>(), new List<string[][]>(),
                         new List<string>(), new List<double[]>());

            return data;
        }
        public Metadata CreateMetadataDefault(IMatrixData parameters, IMatrixData experiment, IMatrixData search)
        {
            Metadata mtd = new Metadata(new MZTabDescription(MzTabMode.Complete, MzTabType.Quantification));

            List<MsRunImpl> runs = null;
            List<StudyVariable> studyvariables = null;
            List<Assay> assays = null;
            List<Sample> samples = null;
            List<Instrument> instruments = null;
            GetExperminetValues(null, null, experiment, search, ref runs, ref studyvariables, ref assays, ref samples,
                                ref instruments);

            foreach (var msRun in runs){
                mtd.MsRunMap.Add(msRun.Id, msRun);
            }

            foreach (var studyvariable in studyvariables){
                mtd.StudyVariableMap.Add(studyvariable.Id, studyvariable);
            }

            foreach (var sample in samples){
                mtd.SampleMap.Add(sample.Id, sample);
            }

            foreach (var assay in assays){
                mtd.AssayMap.Add(assay.Id, assay);
            }

            foreach (var instrument in instruments){
                mtd.InstrumentMap.Add(instrument.Id, instrument);
            }

            SplitList<Lib.Model.Param> sampleProcessing = new SplitList<Lib.Model.Param>{
                cv.GetParam("enzyme digestion", "SEP"),
                cv.GetParam("reversed-phase chromatography", "SEP")
            };
            //sampleProcessing.Add(_cv.GetParam("ion-exchange chromatography", "SEP"));

            mtd.SampleProcessingMap.Add(1, sampleProcessing);

            var paramDict = MzTabMatrixUtils.ConvertToParamDict(parameters);

            string key = Constants.GetKeywordName(Utils.parameters.fixedMod, paramDict.Keys.ToArray());
            if (key != null){
                string[] values = paramDict[key].Split(';');
                foreach (var mod in values.Select(x => BaseLib.Mol.Tables.Modifications[x])){
                    int id = mtd.FixedModMap.Count + 1;
                    mtd.AddFixedModParam(id, cv.GetModificationParam(mod));
                    mtd.AddFixedModPosition(id, mod.Position.ToString());
                    mtd.AddFixedModSite(id, StringUtils.Concat(", ", mod.GetSiteArray()));
                }
            }

            key = Constants.GetKeywordName(Utils.parameters.variableMod, paramDict.Keys.ToArray());
            if (key != null){
                string[] values = paramDict[key].Split(';');
                foreach (var mod in values.Select(x => BaseLib.Mol.Tables.Modifications[x])){
                    int id = mtd.VariableModMap.Count + 1;
                    mtd.AddVariableModParam(id, cv.GetModificationParam(mod));
                    mtd.AddVariableModPosition(id, mod.Position.ToString());
                    mtd.AddVariableModSite(id, StringUtils.Concat(", ", mod.GetSiteArray()));
                }
            }

            string version = Constants.GetKeywordName(Utils.parameters.version, paramDict.Keys.ToArray());
            Software software = new Software(1){
                Param = cv.GetParam("MaxQuant", "MS", GetParameterString(parameters, version, null))
            };
            mtd.SoftwareMap.Add(software.Id, software);

            software = new Software(2){
                Param = cv.GetParam("Andromeda", "MS", GetParameterString(parameters, version, null))
            };
            mtd.SoftwareMap.Add(software.Id, software);

            if (assays.Count > 0){
                var tmp = ArrayUtils.UniqueValues(assays.Select(x => x.QuantificationReagent.Name).ToArray());
                if (tmp.Length == 1 && tmp.First().Equals("Unlabeled sample")){
                    mtd.QuantificationMethod = cv.GetParam("label-free proteingroup level quantitation", "MS");
                }
                else if (tmp.Any(x => x.Contains("SILAC"))){
                    mtd.QuantificationMethod = cv.GetParam("SILAC quantitation analysis", "MS");
                }
            }

            return mtd;
        }
Exemple #15
0
 public Peptide(MZTabColumnFactory factory, Metadata metadata)
     : base(factory)
 {
     this.metadata = metadata;
 }
        public static SplitList<SpectraRef> ParseSpectraRefList(Metadata metadata, string target)
        {
            SplitList<string> list = ParseStringList(MZTabConstants.BAR, target);
            SplitList<SpectraRef> refList = new SplitList<SpectraRef>(MZTabConstants.BAR);

            Regex regex = new Regex("ms_run\\[(\\d+)\\]:(.*)");

            foreach (string item in list){
                if (regex.IsMatch(item.Trim())){
                    int ms_file_id = int.Parse(regex.Match(item.Trim()).Groups[1].Value);
                    string reference = regex.Match(item.Trim()).Groups[2].Value;

                    MsRun msRun = metadata.MsRunMap[ms_file_id];
                    SpectraRef sref = msRun == null ? null : new SpectraRef(msRun, reference);

                    if (sref == null){
                        refList.Clear();
                        break;
                    }
                    refList.Add(sref);
                }
            }

            return refList;
        }
        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 SmallMolecule(MZTabColumnFactory factory, Metadata metadata)
     : base(factory)
 {
     this.metadata = metadata;
 }
 internal static string CheckIfDescriptionExists(IList<ParameterDescription> help, string title, ref string desc,
                                                 Metadata mtd)
 {
     string shortName = ParameterDescription.Shorten(title);
     if (help != null && help.Count > 0) {
         ParameterDescription parameterDescription = help.FirstOrDefault(x => x.Match(shortName));
         if (parameterDescription != null) {
             if (mtd != null) {
                 string type = parameterDescription.GetFieldType(mtd.TabDescription.MzTabType,
                                                                 mtd.TabDescription.MzTabMode);
                 if (type != null) {
                     if (type.Equals("mandatory")) {
                         title += "*";
                     } else if (type.Equals("(mandatory)")) {
                         title += "(*)";
                     } else if (type.Equals("optional")) {
                         title += "(optional)";
                     } else if (type.Equals("none")) {
                         //TODO:
                     }
                 }
             }
             desc = parameterDescription.Definition;
         }
     }
     return title;
 }
 public PSMLineParser(MZTabColumnFactory factory, PositionMapping positionMapping, Metadata metadata,
                      MZTabErrorList errorList)
     : base(factory, positionMapping, metadata, errorList)
 {
 }
 public SMHLineParser(Metadata metadata)
     : base(MZTabColumnFactory.GetInstance(Section.Small_Molecule_Header), metadata)
 {
 }