From: Egon W. <eg...@us...> - 2003-09-30 10:40:48
|
Update of /cvsroot/cdk/cdk/src/org/openscience/cdk/tools In directory sc8-pr-cvs1:/tmp/cvs-serv24826 Modified Files: ChemFileManipulator.java ChemModelManipulator.java ChemSequenceManipulator.java ReactionManipulator.java SetOfMoleculesManipulator.java SetOfReactionsManipulator.java Log Message: Added a getAllAtomContainers() to Manipulators Index: ChemFileManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/ChemFileManipulator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ChemFileManipulator.java 27 Aug 2003 17:42:04 -0000 1.1 +++ ChemFileManipulator.java 30 Sep 2003 10:40:43 -0000 1.2 @@ -24,11 +24,13 @@ * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * */ + */ package org.openscience.cdk.tools; import org.openscience.cdk.*; import org.openscience.cdk.exception.*; +import java.util.Vector; +import java.util.Enumeration; /** * Class with convenience methods that provide methods from @@ -51,6 +53,32 @@ container.add(ChemSequenceManipulator.getAllInOneContainer(sequence)); } return container; + } + + /** + * Returns all the AtomContainer's of a ChemFile. + */ + public static AtomContainer[] getAllAtomContainers(ChemFile file) { + ChemSequence[] sequences = file.getChemSequences(); + int acCount = 0; + Vector acArrays = new Vector(); + for (int i=0; i<sequences.length; i++) { + AtomContainer[] sequenceContainers = ChemSequenceManipulator. + getAllAtomContainers(sequences[i]); + acArrays.addElement(sequenceContainers); + acCount += sequenceContainers.length; + } + AtomContainer[] containers = new AtomContainer[acCount]; + int arrayOffset = 0; + for (Enumeration acArraysElements = acArrays.elements(); + acArraysElements.hasMoreElements(); ) { + AtomContainer[] modelContainers = (AtomContainer[])acArraysElements.nextElement(); + System.arraycopy(modelContainers, 0, + containers, arrayOffset, + modelContainers.length); + arrayOffset += modelContainers.length; + } + return containers; } } Index: ChemModelManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/ChemModelManipulator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ChemModelManipulator.java 2 Jul 2003 12:00:00 -0000 1.4 +++ ChemModelManipulator.java 30 Sep 2003 10:40:43 -0000 1.5 @@ -157,5 +157,23 @@ // This should never happen. return createNewMolecule(chemModel); } + + /** + * Returns all the AtomContainer's of a ChemModel. + */ + public static AtomContainer[] getAllAtomContainers(ChemModel chemModel) { + SetOfMolecules moleculeSet = new SetOfMolecules(); + if (chemModel.getSetOfMolecules() != null) { + moleculeSet.add(chemModel.getSetOfMolecules()); + } + if (chemModel.getSetOfReactions() != null) { + moleculeSet.add( + SetOfReactionsManipulator.getAllMolecules( + chemModel.getSetOfReactions() + ) + ); + } + return SetOfMoleculesManipulator.getAllAtomContainers(moleculeSet); + } } Index: ChemSequenceManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/ChemSequenceManipulator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- ChemSequenceManipulator.java 27 Aug 2003 17:42:04 -0000 1.1 +++ ChemSequenceManipulator.java 30 Sep 2003 10:40:43 -0000 1.2 @@ -29,6 +29,8 @@ import org.openscience.cdk.*; import org.openscience.cdk.exception.*; +import java.util.Vector; +import java.util.Enumeration; /** * Class with convenience methods that provide methods from @@ -51,6 +53,32 @@ container.add(ChemModelManipulator.getAllInOneContainer(model)); } return container; + } + + /** + * Returns all the AtomContainer's of a ChemSequence. + */ + public static AtomContainer[] getAllAtomContainers(ChemSequence sequence) { + ChemModel[] models = sequence.getChemModels(); + int acCount = 0; + Vector acArrays = new Vector(); + for (int i=0; i<models.length; i++) { + AtomContainer[] modelContainers = ChemModelManipulator. + getAllAtomContainers(models[i]); + acArrays.addElement(modelContainers); + acCount += modelContainers.length; + } + AtomContainer[] containers = new AtomContainer[acCount]; + int arrayOffset = 0; + for (Enumeration acArraysElements = acArrays.elements(); + acArraysElements.hasMoreElements(); ) { + AtomContainer[] modelContainers = (AtomContainer[])acArraysElements.nextElement(); + System.arraycopy(modelContainers, 0, + containers, arrayOffset, + modelContainers.length); + arrayOffset += modelContainers.length; + } + return containers; } } Index: ReactionManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/ReactionManipulator.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- ReactionManipulator.java 13 Aug 2003 18:31:58 -0000 1.7 +++ ReactionManipulator.java 30 Sep 2003 10:40:43 -0000 1.8 @@ -125,4 +125,14 @@ } return reversedReaction; } + + /** + * Returns all the AtomContainer's of a Reaction. + */ + public static AtomContainer[] getAllAtomContainers(Reaction reaction) { + return SetOfMoleculesManipulator.getAllAtomContainers( + getAllMolecules(reaction) + ); + } + } Index: SetOfMoleculesManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/SetOfMoleculesManipulator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SetOfMoleculesManipulator.java 11 Mar 2003 11:40:37 -0000 1.3 +++ SetOfMoleculesManipulator.java 30 Sep 2003 10:40:43 -0000 1.4 @@ -72,5 +72,17 @@ } return container; } + + /** + * Returns all the AtomContainer's of a SetOfMolecules. + */ + public static AtomContainer[] getAllAtomContainers(SetOfMolecules set) { + int acCount = set.getMoleculeCount(); + AtomContainer[] container = new AtomContainer[acCount]; + Molecule[] mols = set.getMolecules(); + System.arraycopy(mols, 0, container, 0, acCount); + return container; + } + } Index: SetOfReactionsManipulator.java =================================================================== RCS file: /cvsroot/cdk/cdk/src/org/openscience/cdk/tools/SetOfReactionsManipulator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- SetOfReactionsManipulator.java 13 Aug 2003 18:31:58 -0000 1.4 +++ SetOfReactionsManipulator.java 30 Sep 2003 10:40:43 -0000 1.5 @@ -73,4 +73,12 @@ return moleculeSet; } + /** + * Returns all the AtomContainer's of a Reaction. + */ + public static AtomContainer[] getAllAtomContainers(SetOfReactions set) { + return SetOfMoleculesManipulator.getAllAtomContainers( + getAllMolecules(set) + ); + } } |