/** * Get a list of atoms for a group. Only add each atom once. * @param inputGroup the Biojava Group to consider * @return the atoms for the input Biojava Group */ public static List<Atom> getAtomsForGroup(Group inputGroup) { Set<Atom> uniqueAtoms = new HashSet<Atom>(); List<Atom> theseAtoms = new ArrayList<Atom>(); for(Atom a: inputGroup.getAtoms()){ theseAtoms.add(a); uniqueAtoms.add(a); } List<Group> altLocs = inputGroup.getAltLocs(); for(Group thisG: altLocs){ for(Atom a: thisG.getAtoms()){ if(uniqueAtoms.contains(a)){ continue; } theseAtoms.add(a); } } return theseAtoms; }
for (Group g : c.getAtomGroups()) { List<Group> removeList = new ArrayList<>(); for (Group altLoc : g.getAltLocs()) { g.getAltLocs().removeAll(removeList);
/** * Translates a group object, given a Vector3d (i.e. the vecmath library * double-precision 3-d vector) * * @param group * @param v */ public static final void translate (Group group, Vector3d v) { for (Atom atom : group.getAtoms()) { translate(atom,v); } for (Group altG : group.getAltLocs()) { translate(altG, v); } }
/** * Transforms a group object, given a Matrix4d (i.e. the vecmath library * double-precision 4x4 rotation+translation matrix). The transformation * Matrix must be a post-multiplication Matrix. * * @param group * @param m */ public static final void transform(Group group, Matrix4d m) { for (Atom atom : group.getAtoms()) { transform(atom, m); } for (Group altG : group.getAltLocs()) { transform(altG, m); } }
for(Group g : group.getAltLocs()) { g.setChain(this);
for (Group alt : g.getAltLocs() ) { for (AtomSite atomSite : convertGroupToAtomSites(alt, model, chainName, chainId)) { uniqueAtomSites.put(Integer.parseInt(atomSite.getId()), atomSite);
List<Group> altLocs = currentGroup.getAltLocs(); for ( Group altLocG : altLocs ){ atoms = altLocG.getAtoms(); altLocG.getAltLocs().clear(); currentGroup.addAltLoc(altLocG); return altLocG;
List<Group> altLocs = currentGroup.getAltLocs(); for ( Group altLocG : altLocs ){ atoms = altLocG.getAtoms(); altLocG.getAltLocs().clear(); currentGroup.addAltLoc(altLocG); return altLocG;
altLocG.getAltLocs().clear(); group.addAltLoc(altLocG); return altLocG;
private static void toPDB(Group g, StringBuffer str) { // iterate over all atoms ... // format output ... int groupsize = g.size(); for ( int atompos = 0 ; atompos < groupsize; atompos++) { Atom a = null ; a = g.getAtom(atompos); if ( a == null) continue ; toPDB(a, str); //line = record + serial + " " + fullname +altLoc //+ leftResName + " " + chainID + resseq //+ " " + x+y+z //+ occupancy + tempfactor; //str.append(line + newline); //System.out.println(line); } if ( g.hasAltLoc()){ for (Group alt : g.getAltLocs() ) { toPDB(alt,str); } } }
/** only shift CA positions. * */ public static void shiftCA2(AFPChain afpChain, Atom[] ca2, Matrix m, Atom shift, Group[] twistedGroups) { int i = -1; for (Atom a: ca2){ i++; Group g = a.getGroup(); Calc.rotate(g,m); Calc.shift(g, shift); if (g.hasAltLoc()){ for (Group alt: g.getAltLocs()){ for (Atom alta : alt.getAtoms()){ if ( g.getAtoms().contains(alta)) continue; Calc.rotate(alta,m); Calc.shift(alta,shift); } } } twistedGroups[i]=g; } }
for(Group altLoc: mainGroup.getAltLocs()){ totList.add(altLoc);
for (Group altLoc : g.getAltLocs()) { Atom altAtom = altLoc.getAtom(chemCompAtom.getAtom_id()); if(altAtom!=null){
/** * Cleans up the structure's alternate location (altloc) groups. All alternate location groups should have all atoms (except * in the case of microheterogenity) or when a deuterium exists. * Ensure that all the alt loc groups have all the atoms in the main group. * @param structure The Structure to be cleaned up */ public static void cleanUpAltLocs(Structure structure) { for (int i =0; i< structure.nrModels() ; i++){ for (Chain chain : structure.getModel(i)) { for (Group group : chain.getAtomGroups()) { for (Group altLocGroup : group.getAltLocs()) { for ( Atom groupAtom : group.getAtoms()) { // If this alt loc doesn't have this atom if (! altLocGroup.hasAtom(groupAtom.getName())) { // Fix for microheterogenity if (altLocGroup.getPDBName().equals(group.getPDBName())) { // If it's a Hydrogen then we check for it's Deuterated brother if(!hasDeuteratedEquiv(groupAtom, altLocGroup)){ altLocGroup.addAtom(groupAtom); } } } } } } } } }