Java Code Examples for org.biojava.nbio.structure.Atom#getElement()
The following examples show how to use
org.biojava.nbio.structure.Atom#getElement() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: StructureInterface.java From biojava with GNU Lesser General Public License v2.1 | 6 votes |
/** * Returns and array of all non-Hydrogen atoms in the given molecule, including all * main chain HETATOM groups. Non main-chain HETATOM groups with fewer than minSizeHetAtomToInclude * non-Hydrogen atoms are not included. * @param m * @param minSizeHetAtomToInclude HETATOM groups (non main-chain) with fewer number of * non-Hydrogen atoms are not included * @return */ private static Atom[] getAllNonHAtomArray(Atom[] m, int minSizeHetAtomToInclude) { List<Atom> atoms = new ArrayList<>(); for (Atom a:m){ if (a.getElement()==Element.H) continue; Group g = a.getGroup(); if (g.getType().equals(GroupType.HETATM) && !isInChain(g) && getSizeNoH(g)<minSizeHetAtomToInclude) { continue; } atoms.add(a); } return atoms.toArray(new Atom[atoms.size()]); }
Example 2
Source File: StructureInterface.java From biojava with GNU Lesser General Public License v2.1 | 5 votes |
/** * Calculates the number of non-Hydrogen atoms in the given group * @param g * @return */ private static int getSizeNoH(Group g) { int size = 0; for (Atom a:g.getAtoms()) { if (a.getElement()!=Element.H) size++; } return size; }
Example 3
Source File: FileConvert.java From biojava with GNU Lesser General Public License v2.1 | 5 votes |
private static String formatAtomName(Atom a) { String fullName = null; String name = a.getName(); Element element = a.getElement(); // RULES FOR ATOM NAME PADDING: 4 columns in total: 13, 14, 15, 16 // if length 4: nothing to do if (name.length()==4) fullName = name; // if length 3: they stay at 14 else if (name.length()==3) fullName = " "+name; // for length 2 it depends: // carbon, oxygens, nitrogens, phosphorous stay at column 14 // elements with 2 letters (e.g. NA, FE) will go to column 13 else if (name.length()==2) { if (element == Element.C || element == Element.N || element == Element.O || element == Element.P || element == Element.S) fullName = " "+name+" "; else fullName = name+" "; } // for length 1 (e.g. K but also C, O) they stay in column 14 else if (name.length()==1) fullName = " "+name+" "; //if (fullName.length()!=4) // logger.warn("Atom name "+fullName+"to be written in PDB format does not have length 4. Formatting will be incorrect"); return fullName; }
Example 4
Source File: MMCIFFileTools.java From biojava with GNU Lesser General Public License v2.1 | 4 votes |
/** * Converts an Atom object to an {@link AtomSite} object. * @param a the atom * @param model the model number for the output AtomSites * @param chainName the chain identifier (author id) for the output AtomSites * @param chainId the internal chain identifier (asym id) for the output AtomSites * @param atomId the atom id to be written to AtomSite * @return */ public static AtomSite convertAtomToAtomSite(Atom a, int model, String chainName, String chainId, int atomId) { /* ATOM 7 C CD . GLU A 1 24 ? -10.109 15.374 38.853 1.00 50.05 ? ? ? ? ? ? 24 GLU A CD 1 ATOM 8 O OE1 . GLU A 1 24 ? -9.659 14.764 37.849 1.00 49.80 ? ? ? ? ? ? 24 GLU A OE1 1 ATOM 9 O OE2 . GLU A 1 24 ? -11.259 15.171 39.310 1.00 50.51 ? ? ? ? ? ? 24 GLU A OE2 1 ATOM 10 N N . LEU A 1 25 ? -5.907 18.743 37.412 1.00 41.55 ? ? ? ? ? ? 25 LEU A N 1 ATOM 11 C CA . LEU A 1 25 ? -5.168 19.939 37.026 1.00 37.55 ? ? ? ? ? ? 25 LEU A CA 1 */ Group g = a.getGroup(); String record ; if ( g.getType().equals(GroupType.HETATM) ) { record = "HETATM"; } else { record = "ATOM"; } String entityId = "0"; String labelSeqId = Integer.toString(g.getResidueNumber().getSeqNum()); if (g.getChain()!=null && g.getChain().getEntityInfo()!=null) { entityId = Integer.toString(g.getChain().getEntityInfo().getMolId()); if (g.getChain().getEntityInfo().getType() == EntityType.POLYMER) { // this only makes sense for polymeric chains, non-polymer chains will never have seqres groups and there's no point in calling getAlignedResIndex labelSeqId = Integer.toString(g.getChain().getEntityInfo().getAlignedResIndex(g, g.getChain())); } } Character altLoc = a.getAltLoc(); String altLocStr; if (altLoc==null || altLoc == ' ') { altLocStr = MMCIF_DEFAULT_VALUE; } else { altLocStr = altLoc.toString(); } Element e = a.getElement(); String eString = e.toString().toUpperCase(); if ( e.equals(Element.R)) { eString = "X"; } String insCode = MMCIF_MISSING_VALUE; if (g.getResidueNumber().getInsCode()!=null ) { insCode = Character.toString(g.getResidueNumber().getInsCode()); } AtomSite atomSite = new AtomSite(); atomSite.setGroup_PDB(record); atomSite.setId(Integer.toString(atomId)); atomSite.setType_symbol(eString); atomSite.setLabel_atom_id(a.getName()); atomSite.setLabel_alt_id(altLocStr); atomSite.setLabel_comp_id(g.getPDBName()); atomSite.setLabel_asym_id(chainId); atomSite.setLabel_entity_id(entityId); atomSite.setLabel_seq_id(labelSeqId); atomSite.setPdbx_PDB_ins_code(insCode); atomSite.setCartn_x(FileConvert.d3.format(a.getX())); atomSite.setCartn_y(FileConvert.d3.format(a.getY())); atomSite.setCartn_z(FileConvert.d3.format(a.getZ())); atomSite.setOccupancy(FileConvert.d2.format(a.getOccupancy())); atomSite.setB_iso_or_equiv(FileConvert.d2.format(a.getTempFactor())); atomSite.setAuth_seq_id(Integer.toString(g.getResidueNumber().getSeqNum())); atomSite.setAuth_comp_id(g.getPDBName()); atomSite.setAuth_asym_id(chainName); atomSite.setAuth_atom_id(a.getName()); atomSite.setPdbx_PDB_model_num(Integer.toString(model)); return atomSite; }
Example 5
Source File: CifFileSupplierImpl.java From biojava with GNU Lesser General Public License v2.1 | 4 votes |
@Override public void accept(WrappedAtom wrappedAtom) { Atom atom = wrappedAtom.getAtom(); Group group = atom.getGroup(); Chain chain = group.getChain(); groupPDB.add(group.getType().equals(GroupType.HETATM) ? "HETATM" : "ATOM"); id.add(wrappedAtom.getAtomId()); Element element = atom.getElement(); typeSymbol.add(element.equals(Element.R) ? "X" : element.toString().toUpperCase()); labelAtomId.add(atom.getName()); Character altLoc = atom.getAltLoc(); if (altLoc == null || altLoc == ' ') { labelAltId.markNextNotPresent(); } else { labelAltId.add(String.valueOf(altLoc)); } labelCompId.add(group.getPDBName()); labelAsymId.add(wrappedAtom.getChainId()); String entityId = "0"; int seqId = group.getResidueNumber().getSeqNum(); if (chain.getEntityInfo() != null) { entityId = Integer.toString(chain.getEntityInfo().getMolId()); if (chain.getEntityInfo().getType() == EntityType.POLYMER) { // this only makes sense for polymeric chains, non-polymer chains will never have seqres groups and // there's no point in calling getAlignedResIndex seqId = chain.getEntityInfo().getAlignedResIndex(group, chain); } } labelEntityId.add(entityId); labelSeqId.add(seqId); String insCode = ""; if (group.getResidueNumber().getInsCode() != null ) { insCode = Character.toString(group.getResidueNumber().getInsCode()); } if (insCode.isEmpty()) { pdbxPDBInsCode.markNextUnknown(); } else { pdbxPDBInsCode.add(insCode); } cartnX.add(atom.getX()); cartnY.add(atom.getY()); cartnZ.add(atom.getZ()); occupancy.add(atom.getOccupancy()); bIsoOrEquiv.add(atom.getTempFactor()); authSeqId.add(group.getResidueNumber().getSeqNum()); authCompId.add(group.getPDBName()); authAsymId.add(wrappedAtom.getChainName()); authAtomId.add(atom.getName()); pdbxPDBModelNum.add(wrappedAtom.getModel()); }
Example 6
Source File: FileConvert.java From biojava with GNU Lesser General Public License v2.1 | 4 votes |
/** * Print ATOM record in the following syntax * <pre> * ATOM 1 N ASP A 15 110.964 24.941 59.191 1.00 83.44 N * * COLUMNS DATA TYPE FIELD DEFINITION * --------------------------------------------------------------------------------- * 1 - 6 Record name "ATOM " * 7 - 11 Integer serial Atom serial number. * 13 - 16 Atom name Atom name. * 17 Character altLoc Alternate location indicator. * 18 - 20 Residue name resName Residue name. * 22 Character chainID Chain identifier. * 23 - 26 Integer resSeq Residue sequence number. * 27 AChar iCode Code for insertion of residues. * 31 - 38 Real(8.3) x Orthogonal coordinates for X in * Angstroms. * 39 - 46 Real(8.3) y Orthogonal coordinates for Y in * Angstroms. * 47 - 54 Real(8.3) z Orthogonal coordinates for Z in * Angstroms. * 55 - 60 Real(6.2) occupancy Occupancy. * 61 - 66 Real(6.2) tempFactor Temperature factor. * 73 - 76 LString(4) segID Segment identifier, left-justified. * 77 - 78 LString(2) element Element symbol, right-justified. * 79 - 80 LString(2) charge Charge on the atom. * </pre> * @param a * @param str * @param chainID the chain ID that the Atom will have in the output string */ public static void toPDB(Atom a, StringBuffer str, String chainID) { Group g = a.getGroup(); GroupType type = g.getType() ; String record = "" ; if ( type.equals(GroupType.HETATM) ) { record = "HETATM"; } else { record = "ATOM "; } // format output ... String resName = g.getPDBName(); String pdbcode = g.getResidueNumber().toString(); int seri = a.getPDBserial() ; String serial = String.format("%5d",seri); String fullName = formatAtomName(a); Character altLoc = a.getAltLoc(); if ( altLoc == null) altLoc = ' '; String resseq = "" ; if ( hasInsertionCode(pdbcode) ) resseq = String.format("%5s",pdbcode); else resseq = String.format("%4s",pdbcode)+" "; String x = String.format("%8s",d3.format(a.getX())); String y = String.format("%8s",d3.format(a.getY())); String z = String.format("%8s",d3.format(a.getZ())); String occupancy = String.format("%6s",d2.format(a.getOccupancy())) ; String tempfactor = String.format("%6s",d2.format(a.getTempFactor())); String leftResName = String.format("%3s",resName); StringBuffer s = new StringBuffer(); s.append(record); s.append(serial); s.append(" "); s.append(fullName); s.append(altLoc); s.append(leftResName); s.append(" "); s.append(chainID); s.append(resseq); s.append(" "); s.append(x); s.append(y); s.append(z); s.append(occupancy); s.append(tempfactor); Element e = a.getElement(); String eString = e.toString().toUpperCase(); if ( e.equals(Element.R)) { eString = "X"; } str.append(String.format("%-76s%2s", s.toString(),eString)); str.append(newline); }