internal static MZTabColumn CreateOptionalColumn(Section section, MZTabColumn column, Integer id, IndexedElement element) { if (! column.isOptional()){ throw new ArgumentException(column + " is not optional column!"); } MZTabColumn optionColumn = null; if (section.Equals(Section.Protein_Header)){ optionColumn = new ProteinColumn(column.Name, column.Type, column.isOptional(), column.Order, id); } else if (section.Equals(Section.Peptide_Header)){ optionColumn = new PeptideColumn(column.Name, column.Type, column.isOptional(), column.Order, id); } else if (section.Equals(Section.PSM_Header)){ optionColumn = new PSMColumn(column.Name, column.Type, column.isOptional(), column.Order, id); } else if (section.Equals(Section.Small_Molecule_Header)){ optionColumn = new SmallMoleculeColumn(column.Name, column.Type, column.isOptional(), column.Order, id); } if (optionColumn != null && element != null){ optionColumn.Element = element; } return optionColumn; }
/** * Translate the data line to a {@link MZTabRecord}. * * NOTICE: Normally, we suggest user do convert operation after validate successfully. * * @see #parse(int, string, uk.ac.ebi.pride.jmztab.utils.errors.MZTabErrorList) */ protected MZTabRecord getRecord(Section section, string line) { MZTabRecord record = null; if (section.Equals(Section.Protein)){ record = new Protein(factory); } else if (section.Equals(Section.Peptide)){ record = new Peptide(factory, metadata); } else if (section.Equals(Section.PSM)){ record = new PSM(factory, metadata); } else if (section.Equals(Section.Small_Molecule)){ record = new SmallMolecule(factory, metadata); } int offset = loadStableData(record, line); if (offset == _items.Length - 1){ return record; } loadOptionalData(record, offset); return record; }
/** * Based on {@link #section} to generate stable columns, and store them into {@link #stableColumnMapping} and * {@link #columnMapping} which maintain all columns in the factory. * * @param section SHOULD be {@link Section#Protein_Header}, {@link Section#Peptide_Header} {@link Section#PSM_Header} * or {@link Section#Small_Molecule_Header}. */ public static MZTabColumnFactory GetInstance(Section section) { section = Section.toHeaderSection(section); if (section == null){ throw new ArgumentException( "Section should use Protein_Header, Peptide_Header, PSM_Header or Small_Molecule_Header."); } MZTabColumnFactory factory = new MZTabColumnFactory(); if (section.Equals(Section.Protein_Header)){ AddStableColumn(factory, ProteinColumn.ACCESSION); AddStableColumn(factory, ProteinColumn.DESCRIPTION); AddStableColumn(factory, ProteinColumn.TAXID); AddStableColumn(factory, ProteinColumn.SPECIES); AddStableColumn(factory, ProteinColumn.DATABASE); AddStableColumn(factory, ProteinColumn.DATABASE_VERSION); AddStableColumn(factory, ProteinColumn.SEARCH_ENGINE); AddStableColumn(factory, ProteinColumn.AMBIGUITY_MEMBERS); AddStableColumn(factory, ProteinColumn.MODIFICATIONS); AddStableColumn(factory, ProteinColumn.PROTEIN_COVERAGE); } else if (section.Equals(Section.Peptide_Header)){ AddStableColumn(factory, PeptideColumn.SEQUENCE); AddStableColumn(factory, PeptideColumn.ACCESSION); AddStableColumn(factory, PeptideColumn.UNIQUE); AddStableColumn(factory, PeptideColumn.DATABASE); AddStableColumn(factory, PeptideColumn.DATABASE_VERSION); AddStableColumn(factory, PeptideColumn.SEARCH_ENGINE); AddStableColumn(factory, PeptideColumn.MODIFICATIONS); AddStableColumn(factory, PeptideColumn.RETENTION_TIME); AddStableColumn(factory, PeptideColumn.RETENTION_TIME_WINDOW); AddStableColumn(factory, PeptideColumn.CHARGE); AddStableColumn(factory, PeptideColumn.MASS_TO_CHARGE); AddStableColumn(factory, PeptideColumn.SPECTRA_REF); } else if (section.Equals(Section.PSM_Header)){ AddStableColumn(factory, PSMColumn.SEQUENCE); AddStableColumn(factory, PSMColumn.PSM_ID); AddStableColumn(factory, PSMColumn.ACCESSION); AddStableColumn(factory, PSMColumn.UNIQUE); AddStableColumn(factory, PSMColumn.DATABASE); AddStableColumn(factory, PSMColumn.DATABASE_VERSION); AddStableColumn(factory, PSMColumn.SEARCH_ENGINE); AddStableColumn(factory, PSMColumn.MODIFICATIONS); AddStableColumn(factory, PSMColumn.RETENTION_TIME); AddStableColumn(factory, PSMColumn.CHARGE); AddStableColumn(factory, PSMColumn.EXP_MASS_TO_CHARGE); AddStableColumn(factory, PSMColumn.CALC_MASS_TO_CHARGE); AddStableColumn(factory, PSMColumn.SPECTRA_REF); AddStableColumn(factory, PSMColumn.PRE); AddStableColumn(factory, PSMColumn.POST); AddStableColumn(factory, PSMColumn.START); AddStableColumn(factory, PSMColumn.END); } else if (section.Equals(Section.Small_Molecule_Header)){ AddStableColumn(factory, SmallMoleculeColumn.IDENTIFIER); AddStableColumn(factory, SmallMoleculeColumn.CHEMICAL_FORMULA); AddStableColumn(factory, SmallMoleculeColumn.SMILES); AddStableColumn(factory, SmallMoleculeColumn.INCHI_KEY); AddStableColumn(factory, SmallMoleculeColumn.DESCRIPTION); AddStableColumn(factory, SmallMoleculeColumn.EXP_MASS_TO_CHARGE); AddStableColumn(factory, SmallMoleculeColumn.CALC_MASS_TO_CHARGE); AddStableColumn(factory, SmallMoleculeColumn.CHARGE); AddStableColumn(factory, SmallMoleculeColumn.RETENTION_TIME); AddStableColumn(factory, SmallMoleculeColumn.TAXID); AddStableColumn(factory, SmallMoleculeColumn.SPECIES); AddStableColumn(factory, SmallMoleculeColumn.DATABASE); AddStableColumn(factory, SmallMoleculeColumn.DATABASE_VERSION); AddStableColumn(factory, SmallMoleculeColumn.SPECTRA_REF); AddStableColumn(factory, SmallMoleculeColumn.SEARCH_ENGINE); AddStableColumn(factory, SmallMoleculeColumn.BEST_SEARCH_ENGINE_SCORE); AddStableColumn(factory, SmallMoleculeColumn.MODIFICATIONS); } else{ throw new NotImplementedException("Section should be Protein, Peptide or " + "Small_Molecule. Others can not setting. "); } foreach (var column in factory.StableColumnMapping){ factory.ColumnMapping.Add(column.Key, column.Value); } factory.section = section; return factory; }