/** * creates a virtual C-beta atom. this might be needed when working with GLY * * <p>thanks to Peter Lackner for a python template of this method. * * @param amino the amino acid for which a "virtual" CB atom should be calculated * @return a "virtual" CB atom * @throws StructureException */ public static final Atom createVirtualCBAtom(AminoAcid amino) throws StructureException { AminoAcid ala = StandardAminoAcid.getAminoAcid("ALA"); Atom aN = ala.getN(); Atom aCA = ala.getCA(); Atom aC = ala.getC(); Atom aCB = ala.getCB(); Atom[] arr1 = new Atom[3]; arr1[0] = aN; arr1[1] = aCA; arr1[2] = aC; Atom[] arr2 = new Atom[3]; arr2[0] = amino.getN(); arr2[1] = amino.getCA(); arr2[2] = amino.getC(); // ok now we got the two arrays, do a SVD: SVDSuperimposer svd = new SVDSuperimposer(arr2, arr1); Matrix rotMatrix = svd.getRotation(); Atom tranMatrix = svd.getTranslation(); Calc.rotate(aCB, rotMatrix); Atom virtualCB = Calc.add(aCB, tranMatrix); virtualCB.setName("CB"); virtualCB.setFullName(" CB "); return virtualCB; }
@Test public void testHasAminoAtoms() { Atom CA = new AtomImpl(); CA.setName("CA"); CA.setElement(Element.C); CA.setPDBserial(1); Atom C = new AtomImpl(); C.setName("C"); C.setElement(Element.C); C.setPDBserial(2); Atom N = new AtomImpl(); N.setName("N"); N.setElement(Element.N); N.setPDBserial(3); Atom O = new AtomImpl(); O.setName("O"); O.setElement(Element.O); O.setPDBserial(4); Atom OXT = new AtomImpl(); OXT.setName("OXT"); OXT.setElement(Element.O); OXT.setPDBserial(5); Group g = new HetatomImpl(); g.addAtom(CA); g.addAtom(C); g.addAtom(N); g.addAtom(O); assertTrue(g.hasAminoAtoms()); g = new HetatomImpl(); g.addAtom(CA); g.addAtom(C); g.addAtom(N); g.addAtom(O); g.addAtom(OXT); assertTrue(g.hasAminoAtoms()); g = new AminoAcidImpl(); g.addAtom(CA); g.addAtom(C); g.addAtom(N); g.addAtom(O); assertTrue(g.hasAminoAtoms()); g = new HetatomImpl(); g.addAtom(CA); g.addAtom(C); g.addAtom(N); assertFalse(g.hasAminoAtoms()); g = new HetatomImpl(); g.addAtom(CA); g.addAtom(C); g.addAtom(N); g.addAtom(OXT); assertFalse(g.hasAminoAtoms()); }