|
| 1 | +How to define a new protein modiifcation? |
| 2 | +=== |
| 3 | + |
| 4 | +The protmod module automatically loads [a list of protein modifications](supported-protein-modifications.md) into the protein modification registry. In case you have a protein modification that is not preloaded, it is possible to define it by yourself and add it into the registry. |
| 5 | + |
| 6 | +## Example: define and register disulfide bond in java code |
| 7 | + |
| 8 | +```java |
| 9 | +// define the involved components, in this case two cystines (CYS) |
| 10 | +List components = new ArrayList(2); |
| 11 | +components.add(Component.of("CYS")); |
| 12 | +components.add(Component.of("CYS")); |
| 13 | + |
| 14 | +// define the atom linkages between the components, in this case the SG atoms on both CYS groups |
| 15 | +ModificationLinkage linkage = new ModificationLinkage(components, 0, “SG”, 1, “SG”); |
| 16 | + |
| 17 | +// define the modification condition, i.e. what components are involved and what atoms are linked between them |
| 18 | +ModificationCondition condition = new ModificationConditionImpl(components, Collections.singletonList(linkage)); |
| 19 | + |
| 20 | +// build a modification |
| 21 | +ProteinModification mod = |
| 22 | + new ProteinModificationImpl.Builder("0018_test", |
| 23 | + ModificationCategory.CROSS_LINK_2, |
| 24 | + ModificationOccurrenceType.NATURAL, |
| 25 | + condition) |
| 26 | + .setDescription("A protein modification that effectively cross-links two L-cysteine residues to form L-cystine.") |
| 27 | + .setFormula("C 6 H 8 N 2 O 2 S 2") |
| 28 | + .setResidId("AA0025") |
| 29 | + .setResidName("L-cystine") |
| 30 | + .setPsimodId("MOD:00034") |
| 31 | + .setPsimodName("L-cystine (cross-link)") |
| 32 | + .setSystematicName("(R,R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)") |
| 33 | + .addKeyword("disulfide bond") |
| 34 | + .addKeyword("redox-active center") |
| 35 | + .build(); |
| 36 | + |
| 37 | +//register the modification |
| 38 | +ProteinModificationRegistry.register(mod); |
| 39 | +``` |
| 40 | + |
| 41 | +## Example: definedisulfide bond in xml file and register by java code |
| 42 | +```xml |
| 43 | +<ProteinModifications> |
| 44 | + <Entry> |
| 45 | + <Id>0018</Id> |
| 46 | + <Description>A protein modification that effectively cross-links two L-cysteine residues to form L-cystine.</Description> |
| 47 | + <SystematicName>(R,R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)</SystematicName> |
| 48 | + <CrossReference> |
| 49 | + <Source>RESID</Source> |
| 50 | + <Id>AA0025</Id> |
| 51 | + <Name>L-cystine</Name> |
| 52 | + </CrossReference> |
| 53 | + <CrossReference> |
| 54 | + <Source>PSI-MOD</Source> |
| 55 | + <Id>MOD:00034</Id> |
| 56 | + <Name>L-cystine (cross-link)</Name> |
| 57 | + </CrossReference> |
| 58 | + <Condition> |
| 59 | + <Component component="1"> |
| 60 | + <Id source="PDBCC">CYS</Id> |
| 61 | + </Component> |
| 62 | + <Component component="2"> |
| 63 | + <Id source="PDBCC">CYS</Id> |
| 64 | + </Component> |
| 65 | + <Bond> |
| 66 | + <Atom component="1">SG</Atom> |
| 67 | + <Atom component="2">SG</Atom> |
| 68 | + </Bond> |
| 69 | + </Condition> |
| 70 | + <Occurrence>natural</Occurrence> |
| 71 | + <Category>crosslink2</Category> |
| 72 | + <Keyword>redox-active center</Keyword> |
| 73 | + <Keyword>disulfide bond</Keyword> |
| 74 | + </Entry> |
| 75 | +</ProteinModifications> |
| 76 | +``` |
| 77 | + |
| 78 | +```java |
| 79 | +FileInputStream fis = new FileInputStream("path/to/file"); |
| 80 | +ProteinModificationXmlReader.registerProteinModificationFromXml(fis); |
| 81 | +``` |
| 82 | + |
| 83 | + |
| 84 | +Navigation: |
| 85 | +[Home](../README.md) |
| 86 | +| [Book 6: The ModFinder Modules](README.md) |
| 87 | +| Chapter 4 - How to define a new protein modiifcation |
| 88 | + |
| 89 | +Prev: [Chapter 3 : How to identify protein modifications in a structure](identify-protein-modifications.md) |
| 90 | + |
0 commit comments