From: Michael T H. <mic...@us...> - 2003-12-15 22:50:38
|
Update of /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb In directory sc8-pr-cvs1:/tmp/cvs-serv16002/src/org/openscience/jmol/viewer/pdb Modified Files: PdbAtom.java PdbChain.java PdbGroup.java PdbModel.java PdbPolymer.java Log Message: added atom BitSets to PDB objects Index: PdbAtom.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb/PdbAtom.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- PdbAtom.java 12 Dec 2003 17:52:55 -0000 1.8 +++ PdbAtom.java 15 Dec 2003 22:50:34 -0000 1.9 @@ -140,6 +140,18 @@ return group.chain.chainID; } + public PdbModel getPdbModel() { + return group.chain.model; + } + + public PdbChain getPdbChain() { + return group.chain; + } + + public PdbPolymer getPdbPolymer() { + return group.polymer; + } + public int getAtomSerial() { return atomSerial; } Index: PdbChain.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb/PdbChain.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- PdbChain.java 12 Dec 2003 17:52:55 -0000 1.9 +++ PdbChain.java 15 Dec 2003 22:50:34 -0000 1.10 @@ -26,8 +26,10 @@ import org.openscience.jmol.viewer.*; import org.openscience.jmol.viewer.datamodel.Atom; +import org.openscience.jmol.viewer.datamodel.Frame; import java.util.Hashtable; import javax.vecmath.Point3f; +import java.util.BitSet; public class PdbChain { @@ -37,6 +39,7 @@ PdbGroup[] groups = new PdbGroup[16]; PdbGroup[] mainchain; PdbPolymer polymer; + BitSet atomSet; public PdbChain(PdbModel model, char chainID) { this.model = model; @@ -49,6 +52,7 @@ System.arraycopy(groups, 0, t, 0, groupCount); groups = t; } + polymer = new PdbPolymer(this); } PdbGroup allocateGroup(int sequence, String group3) { @@ -115,8 +119,6 @@ } public PdbPolymer getPolymer() { - if (polymer == null) - polymer = new PdbPolymer(this); return polymer; } @@ -163,5 +165,19 @@ midPoint.x + "," + midPoint.y + "," + midPoint.z); */ } + } + + public BitSet getAtomSet() { + if (atomSet == null) { + BitSet bs = atomSet = new BitSet(); + Frame frame = model.file.frame; + Atom[] atoms = frame.getAtoms(); + for (int i = frame.getAtomCount(); --i >= 0; ) { + Atom atom = atoms[i]; + if (atom.getPdbChain() == this) + bs.set(i); + } + } + return atomSet; } } Index: PdbGroup.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb/PdbGroup.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- PdbGroup.java 12 Dec 2003 17:52:55 -0000 1.9 +++ PdbGroup.java 15 Dec 2003 22:50:34 -0000 1.10 @@ -33,6 +33,7 @@ public PdbStructure structure; public PdbChain chain; + public PdbPolymer polymer; public int seqcode; public short groupID; int[] mainchainIndices; @@ -41,6 +42,10 @@ this.chain = chain; this.seqcode = seqcode; this.groupID = getGroupID(group3); + } + + public void setPolymer(PdbPolymer polymer) { + this.polymer = polymer; } public void setStructure(PdbStructure structure) { Index: PdbModel.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb/PdbModel.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- PdbModel.java 12 Dec 2003 17:52:55 -0000 1.5 +++ PdbModel.java 15 Dec 2003 22:50:34 -0000 1.6 @@ -30,11 +30,13 @@ import javax.vecmath.Point3f; import java.util.Hashtable; import java.util.Vector; +import java.util.BitSet; public class PdbModel { public PdbFile file; public short modelID; + BitSet atomSet; int chainCount = 0; PdbChain[] chains = new PdbChain[8]; @@ -95,4 +97,17 @@ return chains[chainIndex].getMainchain(); } + public BitSet getAtomSet() { + if (atomSet == null) { + BitSet bs = atomSet = new BitSet(); + Frame frame = file.frame; + Atom[] atoms = frame.getAtoms(); + for (int i = frame.getAtomCount(); --i >= 0; ) { + Atom atom = atoms[i]; + if (atom.getPdbModel() == this) + bs.set(i); + } + } + return atomSet; + } } Index: PdbPolymer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/openscience/jmol/viewer/pdb/PdbPolymer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- PdbPolymer.java 12 Dec 2003 17:52:55 -0000 1.7 +++ PdbPolymer.java 15 Dec 2003 22:50:34 -0000 1.8 @@ -26,8 +26,10 @@ import org.openscience.jmol.viewer.*; import org.openscience.jmol.viewer.datamodel.Atom; +import org.openscience.jmol.viewer.datamodel.Frame; import java.util.Hashtable; import javax.vecmath.Point3f; +import java.util.BitSet; public class PdbPolymer { @@ -35,6 +37,7 @@ int count; PdbGroup[] groups; int[] atomIndices; + BitSet atomSet; public PdbPolymer(PdbChain chain) { this.chain = chain; @@ -63,6 +66,8 @@ groups[j++] = group; } } + for (int i = count; --i >= 0; ) + groups[i].setPolymer(this); } public int getCount() { @@ -165,5 +170,19 @@ } for (int i = polymerIndexStart; i <= polymerIndexEnd; ++i) groups[i].setStructure(structure); + } + + public BitSet getAtomSet() { + if (atomSet == null) { + BitSet bs = atomSet = new BitSet(); + Frame frame = chain.model.file.frame; + Atom[] atoms = frame.getAtoms(); + for (int i = frame.getAtomCount(); --i >= 0; ) { + Atom atom = atoms[i]; + if (atom.getPdbPolymer() == this) + bs.set(i); + } + } + return atomSet; } } |