/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
* Created on Jun 2, 2010
* Author: Jianjiong Gao
*
*/
package org.biojava.nbio.protmod.structure;
import junit.framework.TestCase;
import org.biojava.nbio.protmod.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
/**
*
* @author Jianjiong Gao
* @since 3.0
*/
public class ProteinModificationRegistryTest extends TestCase {
//private static final Logger logger = LoggerFactory.getLogger(ProteinModificationRegistryTest.class);
/**
* Note: if you change this unit test, also change the cook book:
* http://www.biojava.org/wiki/BioJava:CookBook3:AddProtMod
*/
public void testRegisterModification() {
// define the involved components, in this case two cystines (CYS)
List<Component> components = new ArrayList<Component>(2);
components.add(Component.of("CYS"));
components.add(Component.of("CYS"));
// define the atom linkages between the components, in this case the SG atoms on both CYS groups
ModificationLinkage linkage = new ModificationLinkage(components, 0, "SG", 1, "SG");
// define the modification condition, i.e. what components are involved and what atoms are linked between them
ModificationCondition condition = new ModificationConditionImpl(components, Collections.singletonList(linkage));
// build a modification
ProteinModification mod =
new ProteinModificationImpl.Builder("0018_test",
ModificationCategory.CROSS_LINK_2,
ModificationOccurrenceType.NATURAL,
condition)
.setDescription("A protein modification that effectively cross-links two L-cysteine residues to form L-cystine.")
.setFormula("C 6 H 8 N 2 O 2 S 2")
.setResidId("AA0025")
.setResidName("L-cystine")
.setPsimodId("MOD:00034")
.setPsimodName("L-cystine (cross-link)")
.setSystematicName("(R,R)-3,3'-disulfane-1,2-diylbis(2-aminopropanoic acid)")
.addKeyword("disulfide bond")
.addKeyword("redox-active center")
.build();
//register the modification
ProteinModificationRegistry.register(mod);
assertNotNull(ProteinModificationRegistry.getById("0018_test"));
}
/**
* Test the initialization registry of common protein modifications.
* Note: if you change this unit test, also change the cook book:
* http://www.biojava.org/wiki/BioJava:CookBook3:SupportedProtMod
*/
public void testRegisterCommonModification() {
Set<ProteinModification> mods = ProteinModificationRegistry.allModifications();
assertTrue(mods!=null && !mods.isEmpty());
// logger.info("There are totally "+mods.size()
// +" protein modifications registered.");
//
// printModifications(mods);
}
/**
* Note: if you change this unit test, also change the cook book:
* http://www.biojava.org/wiki/BioJava:CookBook3:SupportedProtMod
*/
public void testGetBy() {
ProteinModification mod;
Set<ProteinModification> mods;
mod = ProteinModificationRegistry.getById("0001");
assertNotNull(mod);
// a set of protein modifications by RESID ID
mods = ProteinModificationRegistry.getByResidId("AA0151");
assertNotNull(mods);
// a set of protein modifications by PSI-MOD ID
mods = ProteinModificationRegistry.getByPsimodId("MOD:00305");
assertNotNull(mods);
// a set of protein modifications by PDBCC ID
mods = ProteinModificationRegistry.getByPdbccId("SEP");
assertNotNull(mods);
// a set of protein modifications by category
mods = ProteinModificationRegistry.getByCategory(ModificationCategory.ATTACHMENT);
assertNotNull(mods);
// a set of protein modifications by occurrence type
mods = ProteinModificationRegistry.getByOccurrenceType(ModificationOccurrenceType.NATURAL);
assertNotNull(mods);
// a set of protein modifications by a keyword
mods = ProteinModificationRegistry.getByKeyword("phosphoprotein");
assertNotNull(mods);
// a set of protein modifications by involved components.
mods = ProteinModificationRegistry.getByComponent(Component.of("FAD"));
assertNotNull(mods);
}
// /**
// * Print modifications.
// * @param mods {@link ProteinModification}s.
// */
// private void printModifications(Set<ProteinModification> mods) {
// for (ProteinModification mod:mods) {
// logger.info(mod);
// }
// }
}