From: <mig...@us...> - 2006-05-05 22:26:52
|
Revision: 6186 Author: miguelrojasch Date: 2006-05-05 15:26:27 -0700 (Fri, 05 May 2006) ViewCVS: http://svn.sourceforge.net/cdk/?rev=6186&view=rev Log Message: ----------- new reactions -> charge displaccment from acceptor and donor. Necessary for resonance process. And their respective tests Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/reaction/type/RearrangementAnion2Reaction.java trunk/cdk/src/org/openscience/cdk/test/MreactionTests.java trunk/cdk/src/org/openscience/cdk/test/reaction/type/ReactionTypeTest.java trunk/cdk/src/org/openscience/cdk/test/reaction/type/RearrangementAnion2ReactionTest.java trunk/cdk/src/org/openscience/cdk/test/tools/StructureResonanceGeneratorTest.java Added Paths: ----------- trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromAcceptorReaction.java trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromDonorReaction.java trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeFromDonorReactionTest.java Removed Paths: ------------- trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeReaction.java trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeReactionTest.java Copied: trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromAcceptorReaction.java (from rev 6171, trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeReaction.java) =================================================================== --- trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromAcceptorReaction.java (rev 0) +++ trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromAcceptorReaction.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -0,0 +1,241 @@ +package org.openscience.cdk.reaction.type; + + +import org.openscience.cdk.CDKConstants; +import org.openscience.cdk.DefaultChemObjectBuilder; +import org.openscience.cdk.exception.CDKException; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.ILonePair; +import org.openscience.cdk.interfaces.IMapping; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IReaction; +import org.openscience.cdk.interfaces.ISetOfMolecules; +import org.openscience.cdk.interfaces.ISetOfReactions; +import org.openscience.cdk.reaction.IReactionProcess; +import org.openscience.cdk.reaction.ReactionSpecification; +import org.openscience.cdk.tools.LoggingTool; + +/** + * <p>IReactionProcess which participate in movement resonance. + * This reaction could be represented as two forms</p> + * <pre>X=A => [X-]-[A+]. X represents an acceptor atomType</pre> + * + * <pre> + * ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); + * setOfReactants.addMolecule(new Molecule()); + * IReactionProcess type = new DisplacementChargeFromAcceptorReaction(); + * Object[] params = {Boolean.FALSE}; + type.setParameters(params); + * ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); + * </pre> + * + * <p>We have the possibility to localize the reactive center. Good method if you + * want to localize the reaction in a fixed point</p> + * <pre>atoms[0].setFlag(CDKConstants.REACTIVE_CENTER,true);</pre> + * <p>Moreover you must put the parameter Boolean.TRUE</p> + * <p>If the reactive center is not localized then the reaction process will + * try to find automatically the posible reactive center.</p> + * + * + * @author Miguel Rojas + * + * @cdk.created 2006-05-05 + * @cdk.module reaction + * @cdk.set reaction-types + * + **/ +public class DisplacementChargeFromAcceptorReaction implements IReactionProcess{ + private LoggingTool logger; + private boolean hasActiveCenter; + + /** + * Constructor of the DisplacementChargeReaction object + * + */ + public DisplacementChargeFromAcceptorReaction(){ + logger = new LoggingTool(this); + } + /** + * Gets the specification attribute of the DisplacementChargeReaction object + * + *@return The specification value + */ + public ReactionSpecification getSpecification() { + return new ReactionSpecification( + "http://", + this.getClass().getName(), + "$Id: DisplacementChargeReaction.java,v 1.6 2006/04/01 08:26:47 mrc Exp $", + "The Chemistry Development Kit"); + } + + /** + * Sets the parameters attribute of the DisplacementChargeReaction object + * + *@param params The parameter is if the molecule has already fixed the center active or not. It + * should be set before to inize the reaction with a setFlag: CDKConstants.REACTIVE_CENTER + *@exception CDKException Description of the Exception + */ + public void setParameters(Object[] params) throws CDKException { + if (params.length > 1) { + throw new CDKException("DisplacementChargeReaction only expects one parameter"); + } + if (!(params[0] instanceof Boolean)) { + throw new CDKException("The parameter 1 must be of type boolean"); + } + hasActiveCenter = ((Boolean) params[0]).booleanValue(); + } + + + /** + * Gets the parameters attribute of the DisplacementChargeReaction object + * + *@return The parameters value + */ + public Object[] getParameters() { + Object[] params = new Object[1]; + params[0] = new Boolean (hasActiveCenter); + return params; + } + + /** + * Initiate process. + * + *@param reactants reactants of the reaction. + *@param agents agents of the reaction (Must be in this case null). + * + *@exception CDKException Description of the Exception + */ + public ISetOfReactions initiate(ISetOfMolecules reactants, ISetOfMolecules agents) throws CDKException{ + + logger.debug("initiate reaction: DisplacementChargeReaction"); + + if (reactants.getMoleculeCount() != 1) { + throw new CDKException("DisplacementChargeReaction only expects one reactant"); + } + if (agents != null) { + throw new CDKException("DisplacementChargeReaction don't expects agents"); + } + + ISetOfReactions setOfReactions = DefaultChemObjectBuilder.getInstance().newSetOfReactions(); + IMolecule reactant = reactants.getMolecule(0); + + /* if the parameter hasActiveCenter is not fixed yet, set the active centers*/ + if(!hasActiveCenter){ + setActiveCenters(reactant); + } + + IBond[] bonds = reactants.getMolecule(0).getBonds(); + for(int i = 0 ; i < bonds.length ; i++){ + if(bonds[i].getFlag(CDKConstants.REACTIVE_CENTER) && bonds[i].getOrder() == 2.0){ + IAtom atom1 = bonds[i].getAtoms()[0]; + IAtom atom2 = bonds[i].getAtoms()[1]; + if((((atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0 && reactant.getLonePairCount(atom1) > 0)) + &&(atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0)) + || (((atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0 && reactant.getLonePairCount(atom2) > 0)) + &&(atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0))){ + + /* positions atoms and bonds */ + int atom0P = reactant.getAtomNumber(bonds[i].getAtoms()[0]); + int bond1P = reactant.getBondNumber(bonds[i]); + int atom1P = reactant.getAtomNumber(bonds[i].getAtoms()[1]); + + /* action */ + IAtomContainer acCloned; + try { + acCloned = (IAtomContainer)reactant.clone(); + } catch (CloneNotSupportedException e) { + throw new CDKException("Could not clone reactant", e); + } + + double order = acCloned.getBondAt(bond1P).getOrder(); + acCloned.getBondAt(bond1P).setOrder(order - 1); + + IReaction reaction = DefaultChemObjectBuilder.getInstance().newReaction(); + reaction.addReactant(reactant); + + + if(reactant.getLonePairCount(atom1) > 0){ + acCloned.getAtomAt(atom0P).setFormalCharge(-1); + ILonePair[] lpelectron = acCloned.getLonePairs(acCloned.getAtomAt(atom0P)); + acCloned.addElectronContainer(lpelectron[0]); + + acCloned.getAtomAt(atom1P).setFormalCharge(1); + }else{ + acCloned.getAtomAt(atom0P).setFormalCharge(1); + acCloned.getAtomAt(atom1P).setFormalCharge(-1); + ILonePair[] lpelectron = acCloned.getLonePairs(acCloned.getAtomAt(atom1P)); + acCloned.addElectronContainer(lpelectron[0]); + + } + + /* mapping */ + IMapping mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i], acCloned.getBondAt(bond1P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i].getAtoms()[0], acCloned.getAtomAt(atom0P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i].getAtoms()[1], acCloned.getAtomAt(atom1P)); + reaction.addMapping(mapping); + + + reaction.addProduct((IMolecule) acCloned); + setOfReactions.addReaction(reaction); + } + } + } + + return setOfReactions; + + + } + /** + * set the active center for this molecule. + * The active center will be those which correspond with A=B. + * <pre> + * A: Atom with lone pair electrons + * =: Double bond + * B: Atom + * </pre> + * + * @param reactant The molecule to set the activity + * @throws CDKException + */ + private void setActiveCenters(IMolecule reactant) throws CDKException { + IBond[] bonds = reactant.getBonds(); + for(int i = 0 ; i < bonds.length ; i++) + if(bonds[i].getOrder() == 2.0){ + IAtom atom1 = bonds[i].getAtoms()[0]; + IAtom atom2 = bonds[i].getAtoms()[1]; + if((((atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0 && reactant.getLonePairCount(atom1) > 0)) + &&(atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0)) + || (((atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0 && reactant.getLonePairCount(atom2) > 0)) + &&(atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0))){ + atom1.setFlag(CDKConstants.REACTIVE_CENTER,true); + atom2.setFlag(CDKConstants.REACTIVE_CENTER,true); + bonds[i].setFlag(CDKConstants.REACTIVE_CENTER,true); + } + } + } + /** + * Gets the parameterNames attribute of the DisplacementChargeReaction object + * + *@return The parameterNames value + */ + public String[] getParameterNames() { + String[] params = new String[1]; + params[0] = "hasActiveCenter"; + return params; + } + + + /** + * Gets the parameterType attribute of the DisplacementChargeReaction object + * + *@param name Description of the Parameter + *@return The parameterType value + */ + public Object getParameterType(String name) { + return new Boolean(false); + } +} Added: trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromDonorReaction.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromDonorReaction.java (rev 0) +++ trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeFromDonorReaction.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -0,0 +1,252 @@ +package org.openscience.cdk.reaction.type; + + +import org.openscience.cdk.CDKConstants; +import org.openscience.cdk.DefaultChemObjectBuilder; +import org.openscience.cdk.exception.CDKException; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IAtomContainer; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.ILonePair; +import org.openscience.cdk.interfaces.IMapping; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.IReaction; +import org.openscience.cdk.interfaces.ISetOfMolecules; +import org.openscience.cdk.interfaces.ISetOfReactions; +import org.openscience.cdk.reaction.IReactionProcess; +import org.openscience.cdk.reaction.ReactionSpecification; +import org.openscience.cdk.tools.LoggingTool; + +/** + * <p>IReactionProcess which participate in movement resonance. + * This reaction could be represented as </p> + * <pre>X-A=B => [X+]=A-[B-]. X represents a donor atomType which contains + * lone pair electrons</pre> + * + * <pre> + * ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); + * setOfReactants.addMolecule(new Molecule()); + * IReactionProcess type = new DisplacementChargeFromDonorReaction(); + * Object[] params = {Boolean.FALSE}; + type.setParameters(params); + * ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); + * </pre> + * + * <p>We have the possibility to localize the reactive center. Good method if you + * want to localize the reaction in a fixed point</p> + * <pre>atoms[0].setFlag(CDKConstants.REACTIVE_CENTER,true);</pre> + * <p>Moreover you must put the parameter Boolean.TRUE</p> + * <p>If the reactive center is not localized then the reaction process will + * try to find automatically the posible reactive center.</p> + * + * + * @author Miguel Rojas + * + * @cdk.created 2006-05-05 + * @cdk.module reaction + * @cdk.set reaction-types + * + **/ +public class DisplacementChargeFromDonorReaction implements IReactionProcess{ + private LoggingTool logger; + private boolean hasActiveCenter; + + /** + * Constructor of the DisplacementChargeFromDonorReaction object + * + */ + public DisplacementChargeFromDonorReaction(){ + logger = new LoggingTool(this); + } + /** + * Gets the specification attribute of the DisplacementChargeFromDonorReaction object + * + *@return The specification value + */ + public ReactionSpecification getSpecification() { + return new ReactionSpecification( + "http://", + this.getClass().getName(), + "$Id: DisplacementChargeFromDonorReaction.java,v 1.6 2006/04/01 08:26:47 mrc Exp $", + "The Chemistry Development Kit"); + } + + /** + * Sets the parameters attribute of the DisplacementChargeFromDonorReaction object + * + *@param params The parameter is if the molecule has already fixed the center active or not. It + * should be set before to inize the reaction with a setFlag: CDKConstants.REACTIVE_CENTER + *@exception CDKException Description of the Exception + */ + public void setParameters(Object[] params) throws CDKException { + if (params.length > 1) { + throw new CDKException("DisplacementChargeFromDonorReaction only expects one parameter"); + } + if (!(params[0] instanceof Boolean)) { + throw new CDKException("The parameter 1 must be of type boolean"); + } + hasActiveCenter = ((Boolean) params[0]).booleanValue(); + } + + + /** + * Gets the parameters attribute of the DisplacementChargeFromDonorReaction object + * + *@return The parameters value + */ + public Object[] getParameters() { + Object[] params = new Object[1]; + params[0] = new Boolean (hasActiveCenter); + return params; + } + + /** + * Initiate process. + * + *@param reactants reactants of the reaction. + *@param agents agents of the reaction (Must be in this case null). + * + *@exception CDKException Description of the Exception + */ + public ISetOfReactions initiate(ISetOfMolecules reactants, ISetOfMolecules agents) throws CDKException{ + + logger.debug("initiate reaction: DisplacementChargeFromDonorReaction"); + + if (reactants.getMoleculeCount() != 1) { + throw new CDKException("DisplacementChargeFromDonorReaction only expects one reactant"); + } + if (agents != null) { + throw new CDKException("DisplacementChargeFromDonorReaction don't expects agents"); + } + + ISetOfReactions setOfReactions = DefaultChemObjectBuilder.getInstance().newSetOfReactions(); + IMolecule reactant = reactants.getMolecule(0); + + /* if the parameter hasActiveCenter is not fixed yet, set the active centers*/ + if(!hasActiveCenter){ + setActiveCenters(reactant); + } + + IAtom[] atoms = reactants.getMolecule(0).getAtoms(); + for(int i = 0 ; i < atoms.length ; i++){ + if(atoms[i].getFlag(CDKConstants.REACTIVE_CENTER)&& reactant.getLonePairCount(atoms[i]) > 0){ + IReaction reaction = DefaultChemObjectBuilder.getInstance().newReaction(); + reaction.addReactant(reactant); + + IBond[] bonds = reactant.getConnectedBonds(atoms[i]); + + for(int j = 0 ; j < bonds.length ; j++){ + if(bonds[j].getFlag(CDKConstants.REACTIVE_CENTER)&& bonds[j].getOrder() == 1.0){ + IAtom atom = bonds[j].getConnectedAtom(reactant.getAtomAt(i)); + IBond[] bondsI = reactant.getConnectedBonds(atom); + for(int k = 0 ; k < bondsI.length ; k++){ + if(bondsI[k].getFlag(CDKConstants.REACTIVE_CENTER) && bondsI[k].getOrder() == 2.0){ + /* positions atoms and bonds */ + int atom0P = reactant.getAtomNumber(atoms[i]); + int bond1P = reactant.getBondNumber(bonds[j]); + int bond2P = reactant.getBondNumber(bondsI[k]); + int atom1P = reactant.getAtomNumber(atom); + int atom2P = reactant.getAtomNumber(bondsI[k].getConnectedAtom(atom)); + + /* action */ + IAtomContainer acCloned; + try { + acCloned = (IAtomContainer)reactant.clone(); + } catch (CloneNotSupportedException e) { + throw new CDKException("Could not clone IMolecule!", e); + } + + int charge = acCloned.getAtomAt(atom0P).getFormalCharge(); + acCloned.getAtomAt(atom0P).setFormalCharge(charge+1); + ILonePair[] lpelectron = acCloned.getLonePairs(acCloned.getAtomAt(atom0P)); + acCloned.removeElectronContainer(lpelectron[0]); + + double order = acCloned.getBondAt(bond1P).getOrder(); + acCloned.getBondAt(bond1P).setOrder(order+1); + + order = acCloned.getBondAt(bond2P).getOrder(); + acCloned.getBondAt(bond2P).setOrder(order-1); + + charge = acCloned.getAtomAt(atom2P).getFormalCharge(); + acCloned.getAtomAt(atom2P).setFormalCharge(charge-1); + + /* mapping */ + IMapping mapping = DefaultChemObjectBuilder.getInstance().newMapping(atoms[i], acCloned.getAtomAt(atom0P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(atom, acCloned.getAtomAt(atom1P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(bondsI[k].getConnectedAtom(atom), acCloned.getAtomAt(atom2P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[j], acCloned.getBondAt(bond1P)); + reaction.addMapping(mapping); + mapping = DefaultChemObjectBuilder.getInstance().newMapping(bondsI[k], acCloned.getBondAt(bond2P)); + reaction.addMapping(mapping); + + reaction.addProduct((IMolecule) acCloned); + setOfReactions.addReaction(reaction); + } + } + } + } + } + } + return setOfReactions; + } + /** + * set the active center for this molecule. + * The active center will be those which correspond with X-A=B. + * <pre> + * A: Atom with lone pair electrons + * -: Single bond + * B: Atom + * =: Double bond + * C: Atom + * </pre> + * + * @param reactant The molecule to set the activity + * @throws CDKException + */ + private void setActiveCenters(IMolecule reactant) throws CDKException { + IAtom[] atoms = reactant.getAtoms(); + for(int i = 0 ; i < atoms.length ; i++) + if(reactant.getLonePairCount(atoms[i]) > 0 ){ + IBond[] bonds = reactant.getConnectedBonds(atoms[i]); + for(int j = 0 ; j < bonds.length ; j++){ + if(bonds[j].getOrder() == 1.0){ + IAtom atom = bonds[j].getConnectedAtom(reactant.getAtomAt(i)); + IBond[] bondsI = reactant.getConnectedBonds(atom); + for(int k = 0 ; k < bondsI.length ; k++){ + if(bondsI[k].getOrder() == 2.0){ + atoms[i].setFlag(CDKConstants.REACTIVE_CENTER,true); + atom.setFlag(CDKConstants.REACTIVE_CENTER,true); + bondsI[k].getConnectedAtom(atom).setFlag(CDKConstants.REACTIVE_CENTER,true); + bonds[j].setFlag(CDKConstants.REACTIVE_CENTER,true); + bondsI[k].setFlag(CDKConstants.REACTIVE_CENTER,true); + } + } + } + } + } + } + /** + * Gets the parameterNames attribute of the DisplacementChargeFromDonorReaction object + * + *@return The parameterNames value + */ + public String[] getParameterNames() { + String[] params = new String[1]; + params[0] = "hasActiveCenter"; + return params; + } + + + /** + * Gets the parameterType attribute of the DisplacementChargeFromDonorReaction object + * + *@param name Description of the Parameter + *@return The parameterType value + */ + public Object getParameterType(String name) { + return new Boolean(false); + } +} Deleted: trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeReaction.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeReaction.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/reaction/type/DisplacementChargeReaction.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -1,233 +0,0 @@ -package org.openscience.cdk.reaction.type; - - -import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.DefaultChemObjectBuilder; -import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.IAtom; -import org.openscience.cdk.interfaces.IAtomContainer; -import org.openscience.cdk.interfaces.IBond; -import org.openscience.cdk.interfaces.IMapping; -import org.openscience.cdk.interfaces.IMolecule; -import org.openscience.cdk.interfaces.IReaction; -import org.openscience.cdk.interfaces.ISetOfMolecules; -import org.openscience.cdk.interfaces.ISetOfReactions; -import org.openscience.cdk.reaction.IReactionProcess; -import org.openscience.cdk.reaction.ReactionSpecification; -import org.openscience.cdk.tools.LoggingTool; - -/** - * <p>IReactionProcess which participate in movement resonance. - * This reaction could be represented as A=B => [A+]-[B-] or also [A-]-[B+]. - * </p> - * - * <pre> - * ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); - * setOfReactants.addMolecule(new Molecule()); - * IReactionProcess type = new DisplacementChargeReaction(); - * Object[] params = {Boolean.FALSE}; - type.setParameters(params); - * ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); - * </pre> - * - * <p>We have the possibility to localize the reactive center. Good method if you - * want to localize the reaction in a fixed point</p> - * <pre>atoms[0].setFlag(CDKConstants.REACTIVE_CENTER,true);</pre> - * <p>Moreover you must put the parameter Boolean.TRUE</p> - * <p>If the reactive center is not localized then the reaction process will - * try to find automatically the posible reactive center.</p> - * - * - * @author Miguel Rojas - * - * @cdk.created 2006-05-05 - * @cdk.module reaction - * @cdk.set reaction-types - * - **/ -public class DisplacementChargeReaction implements IReactionProcess{ - private LoggingTool logger; - private boolean hasActiveCenter; - - /** - * Constructor of the DisplacementChargeReaction object - * - */ - public DisplacementChargeReaction(){ - logger = new LoggingTool(this); - } - /** - * Gets the specification attribute of the DisplacementChargeReaction object - * - *@return The specification value - */ - public ReactionSpecification getSpecification() { - return new ReactionSpecification( - "http://", - this.getClass().getName(), - "$Id: DisplacementChargeReaction.java,v 1.6 2006/04/01 08:26:47 mrc Exp $", - "The Chemistry Development Kit"); - } - - /** - * Sets the parameters attribute of the DisplacementChargeReaction object - * - *@param params The parameter is if the molecule has already fixed the center active or not. It - * should be set before to inize the reaction with a setFlag: CDKConstants.REACTIVE_CENTER - *@exception CDKException Description of the Exception - */ - public void setParameters(Object[] params) throws CDKException { - if (params.length > 1) { - throw new CDKException("DisplacementChargeReaction only expects one parameter"); - } - if (!(params[0] instanceof Boolean)) { - throw new CDKException("The parameter 1 must be of type boolean"); - } - hasActiveCenter = ((Boolean) params[0]).booleanValue(); - } - - - /** - * Gets the parameters attribute of the DisplacementChargeReaction object - * - *@return The parameters value - */ - public Object[] getParameters() { - Object[] params = new Object[1]; - params[0] = new Boolean (hasActiveCenter); - return params; - } - - /** - * Initiate process. - * - *@param reactants reactants of the reaction. - *@param agents agents of the reaction (Must be in this case null). - * - *@exception CDKException Description of the Exception - */ - public ISetOfReactions initiate(ISetOfMolecules reactants, ISetOfMolecules agents) throws CDKException{ - - logger.debug("initiate reaction: DisplacementChargeReaction"); - - if (reactants.getMoleculeCount() != 1) { - throw new CDKException("DisplacementChargeReaction only expects one reactant"); - } - if (agents != null) { - throw new CDKException("DisplacementChargeReaction don't expects agents"); - } - - ISetOfReactions setOfReactions = DefaultChemObjectBuilder.getInstance().newSetOfReactions(); - IMolecule reactant = reactants.getMolecule(0); - - /* if the parameter hasActiveCenter is not fixed yet, set the active centers*/ - if(!hasActiveCenter){ - setActiveCenters(reactant); - } - - IBond[] bonds = reactants.getMolecule(0).getBonds(); - for(int i = 0 ; i < bonds.length ; i++){ - if(bonds[i].getFlag(CDKConstants.REACTIVE_CENTER) && bonds[i].getOrder() == 2.0){ - IAtom atom1 = bonds[i].getAtoms()[0]; - IAtom atom2 = bonds[i].getAtoms()[1]; - if(atom1.getFlag(CDKConstants.REACTIVE_CENTER) && atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0) - if(atom2.getFlag(CDKConstants.REACTIVE_CENTER) && atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0){ - - /* positions atoms and bonds */ - int atom0P = reactant.getAtomNumber(bonds[i].getAtoms()[0]); - int bond1P = reactant.getBondNumber(bonds[i]); - int atom1P = reactant.getAtomNumber(bonds[i].getAtoms()[1]); - - /* action */ - for(int j = 0; j < 2 ; j++){ - IReaction reaction = DefaultChemObjectBuilder.getInstance().newReaction(); - reaction.addReactant(reactant); - - IAtomContainer acCloned; - try { - acCloned = (IAtomContainer)reactant.clone(); - } catch (CloneNotSupportedException e) { - throw new CDKException("Could not clone reactant", e); - } - - double order = acCloned.getBondAt(bond1P).getOrder(); - acCloned.getBondAt(bond1P).setOrder(order - 1); - - if (j == 0) - { - acCloned.getAtomAt(atom0P).setFormalCharge(1); - acCloned.getAtomAt(atom1P).setFormalCharge(-1); - } else - { - acCloned.getAtomAt(atom0P).setFormalCharge(-1); - acCloned.getAtomAt(atom1P).setFormalCharge(1); - } - - /* mapping */ - IMapping mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i], acCloned.getBondAt(bond1P)); - reaction.addMapping(mapping); - mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i].getAtoms()[0], acCloned.getAtomAt(atom0P)); - reaction.addMapping(mapping); - mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[i].getAtoms()[1], acCloned.getAtomAt(atom1P)); - reaction.addMapping(mapping); - - - reaction.addProduct((IMolecule) acCloned); - setOfReactions.addReaction(reaction); - } - } - } - } - - return setOfReactions; - - - } - /** - * set the active center for this molecule. - * The active center will be those which correspond with A=B. - * <pre> - * A: Atom - * =: Double bond - * B: Atom - * </pre> - * - * @param reactant The molecule to set the activity - * @throws CDKException - */ - private void setActiveCenters(IMolecule reactant) throws CDKException { - IBond[] bonds = reactant.getBonds(); - for(int i = 0 ; i < bonds.length ; i++) - if(bonds[i].getOrder() == 2.0){ - IAtom atom1 = bonds[i].getAtoms()[0]; - IAtom atom2 = bonds[i].getAtoms()[1]; - if(atom1.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom1) == 0) - if(atom2.getFormalCharge() == 0 && reactant.getSingleElectronSum(atom2) == 0){ - atom1.setFlag(CDKConstants.REACTIVE_CENTER,true); - atom2.setFlag(CDKConstants.REACTIVE_CENTER,true); - bonds[i].setFlag(CDKConstants.REACTIVE_CENTER,true); - } - } - } - /** - * Gets the parameterNames attribute of the DisplacementChargeReaction object - * - *@return The parameterNames value - */ - public String[] getParameterNames() { - String[] params = new String[1]; - params[0] = "hasActiveCenter"; - return params; - } - - - /** - * Gets the parameterType attribute of the DisplacementChargeReaction object - * - *@param name Description of the Parameter - *@return The parameterType value - */ - public Object getParameterType(String name) { - return new Boolean(false); - } -} Modified: trunk/cdk/src/org/openscience/cdk/reaction/type/RearrangementAnion2Reaction.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/reaction/type/RearrangementAnion2Reaction.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/reaction/type/RearrangementAnion2Reaction.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -175,8 +175,6 @@ reaction.addMapping(mapping); mapping = DefaultChemObjectBuilder.getInstance().newMapping(bondsI[k].getConnectedAtom(atom), acCloned.getAtomAt(atom2P)); reaction.addMapping(mapping); - mapping = DefaultChemObjectBuilder.getInstance().newMapping(bondsI[k].getConnectedAtom(atom), acCloned.getAtomAt(atom2P)); - reaction.addMapping(mapping); mapping = DefaultChemObjectBuilder.getInstance().newMapping(bonds[j], acCloned.getBondAt(bond1P)); reaction.addMapping(mapping); mapping = DefaultChemObjectBuilder.getInstance().newMapping(bondsI[k], acCloned.getBondAt(bond2P)); Modified: trunk/cdk/src/org/openscience/cdk/test/MreactionTests.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/MreactionTests.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/test/MreactionTests.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -27,7 +27,8 @@ import junit.framework.Test; import junit.framework.TestSuite; -import org.openscience.cdk.test.reaction.type.DisplacementChargeReactionTest; +import org.openscience.cdk.test.reaction.type.DisplacementChargeFromAcceptorReactionTest; +import org.openscience.cdk.test.reaction.type.DisplacementChargeFromDonorReactionTest; import org.openscience.cdk.test.reaction.type.ElectronImpactNBEReactionTest; import org.openscience.cdk.test.reaction.type.ElectronImpactPDBReactionTest; import org.openscience.cdk.test.reaction.type.ReactionBalancerTest; @@ -57,7 +58,8 @@ // make sure to check it agains src/test-reaction.files // before each release! suite.addTest(ReactionBalancerTest.suite()); - suite.addTest(DisplacementChargeReactionTest.suite()); + suite.addTest(DisplacementChargeFromAcceptorReactionTest.suite()); + suite.addTest(DisplacementChargeFromDonorReactionTest.suite()); suite.addTest(ElectronImpactNBEReactionTest.suite()); suite.addTest(ElectronImpactPDBReactionTest.suite()); suite.addTest(RearrangementAnion1ReactionTest.suite()); Added: trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeFromDonorReactionTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeFromDonorReactionTest.java (rev 0) +++ trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeFromDonorReactionTest.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -0,0 +1,157 @@ + package org.openscience.cdk.test.reaction.type; + + +import junit.framework.Assert; +import junit.framework.Test; +import junit.framework.TestSuite; + +import org.openscience.cdk.CDKConstants; +import org.openscience.cdk.DefaultChemObjectBuilder; +import org.openscience.cdk.Molecule; +import org.openscience.cdk.exception.CDKException; +import org.openscience.cdk.interfaces.IAtom; +import org.openscience.cdk.interfaces.IBond; +import org.openscience.cdk.interfaces.IMolecule; +import org.openscience.cdk.interfaces.ISetOfMolecules; +import org.openscience.cdk.interfaces.ISetOfReactions; +import org.openscience.cdk.isomorphism.UniversalIsomorphismTester; +import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer; +import org.openscience.cdk.isomorphism.matchers.QueryAtomContainerCreator; +import org.openscience.cdk.reaction.IReactionProcess; +import org.openscience.cdk.reaction.type.DisplacementChargeFromDonorReaction; +import org.openscience.cdk.smiles.SmilesParser; +import org.openscience.cdk.test.CDKTestCase; +import org.openscience.cdk.tools.HydrogenAdder; +import org.openscience.cdk.tools.LonePairElectronChecker; +import org.openscience.cdk.tools.manipulator.ReactionManipulator; + + +/** + * TestSuite that runs a test for the DisplacementChargeFromDonorReactionTest. + * Generalized Reaction: X-A=B => [X+]=A-B[-]. + * + * @cdk.module test-reaction + */ +public class DisplacementChargeFromDonorReactionTest extends CDKTestCase { + + private IReactionProcess type; + + /** + * Constructror of the DisplacementChargeFromDonorReactionTest object + * + */ + public DisplacementChargeFromDonorReactionTest() { + type = new DisplacementChargeFromDonorReaction(); + } + + public static Test suite() { + return new TestSuite(DisplacementChargeFromDonorReactionTest.class); + } + /** + * A unit test suite for JUnit. Reaction: O-C=C => [O+]=C-[C-] + * Automatic sarch of the centre active. + * + * @return The test suite + */ + public void testAutomaticSearchCentreActiveEthenol() throws ClassNotFoundException, CDKException, java.lang.Exception { + ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); + + /*O-C=C*/ + Molecule molecule = (new SmilesParser()).parseSmiles("O-C=C"); + HydrogenAdder adder = new HydrogenAdder(); + adder.addImplicitHydrogensToSatisfyValency(molecule); + LonePairElectronChecker lpcheck = new LonePairElectronChecker(); + lpcheck.newSaturate(molecule); + setOfReactants.addMolecule(molecule); + + /*automatic search of the centre active*/ + Object[] params = {Boolean.FALSE}; + type.setParameters(params); + + /* iniciate */ + ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); + + Assert.assertEquals(1, setOfReactions.getReactionCount()); + Assert.assertEquals(1, setOfReactions.getReaction(0).getProductCount()); + + IMolecule product = setOfReactions.getReaction(0).getProducts().getMolecule(0); + + /*[O+]=C-[C+]*/ + Molecule molecule2 = (new SmilesParser()).parseSmiles("[O+]=C-[C-]"); + adder = new HydrogenAdder(); + adder.addImplicitHydrogensToSatisfyValency(molecule2); + lpcheck.newSaturate(molecule2); + setOfReactants.addMolecule(molecule2); + + QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(product); + Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(molecule2,qAC)); + } + /** + * A unit test suite for JUnit. Reaction: O-C=C => [O+]=C-[C-] + * Manually put of the centre active. + * + * @return The test suite + */ + public void testManuallyPutCentreActiveEthenol() throws ClassNotFoundException, CDKException, java.lang.Exception { + ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); + /*O-C=C*/ + Molecule molecule = (new SmilesParser()).parseSmiles("O-C=C"); + HydrogenAdder adder = new HydrogenAdder(); + adder.addImplicitHydrogensToSatisfyValency(molecule); + LonePairElectronChecker lpcheck = new LonePairElectronChecker(); + lpcheck.newSaturate(molecule); + setOfReactants.addMolecule(molecule); + + /*manually put the centre active*/ + molecule.getAtomAt(0).setFlag(CDKConstants.REACTIVE_CENTER,true); + molecule.getAtomAt(1).setFlag(CDKConstants.REACTIVE_CENTER,true); + molecule.getAtomAt(2).setFlag(CDKConstants.REACTIVE_CENTER,true); + molecule.getBondAt(0).setFlag(CDKConstants.REACTIVE_CENTER,true); + molecule.getBondAt(1).setFlag(CDKConstants.REACTIVE_CENTER,true); + + Object[] params = {Boolean.TRUE}; + type.setParameters(params); + + /* iniciate */ + ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); + + Assert.assertEquals(1, setOfReactions.getReactionCount()); + Assert.assertEquals(1, setOfReactions.getReaction(0).getProductCount()); + + + + } + /** + * A unit test suite for JUnit. Reaction: O-C=C => [O+]=C-[C-] + * Test of mapped between the reactant and product. Only is mapped the centre active. + * + * @return The test suite + */ + public void testMappingEthenol() throws ClassNotFoundException, CDKException, java.lang.Exception { + ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); + /*O-C=C*/ + Molecule molecule = (new SmilesParser()).parseSmiles("O-C=C"); + HydrogenAdder adder = new HydrogenAdder(); + adder.addImplicitHydrogensToSatisfyValency(molecule); + LonePairElectronChecker lpcheck = new LonePairElectronChecker(); + lpcheck.newSaturate(molecule); + setOfReactants.addMolecule(molecule); + + /*automatic search of the centre active*/ + Object[] params = {Boolean.FALSE}; + type.setParameters(params); + + /* iniciate */ + ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); + + IMolecule product = setOfReactions.getReaction(0).getProducts().getMolecule(0); + + Assert.assertEquals(5,setOfReactions.getReaction(0).getMappings().length); + IAtom mappedProductA1 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(0)); + assertEquals(mappedProductA1, product.getAtomAt(0)); + IBond mappedProductB1 = (IBond)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getBondAt(0)); + assertEquals(mappedProductB1, product.getBondAt(0)); + IAtom mappedProductA2 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(1)); + assertEquals(mappedProductA2, product.getAtomAt(1)); + } +} Deleted: trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeReactionTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeReactionTest.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/test/reaction/type/DisplacementChargeReactionTest.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -1,155 +0,0 @@ - package org.openscience.cdk.test.reaction.type; - - -import junit.framework.Assert; -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.openscience.cdk.CDKConstants; -import org.openscience.cdk.DefaultChemObjectBuilder; -import org.openscience.cdk.Molecule; -import org.openscience.cdk.exception.CDKException; -import org.openscience.cdk.interfaces.IAtom; -import org.openscience.cdk.interfaces.IBond; -import org.openscience.cdk.interfaces.IMolecule; -import org.openscience.cdk.interfaces.ISetOfMolecules; -import org.openscience.cdk.interfaces.ISetOfReactions; -import org.openscience.cdk.isomorphism.UniversalIsomorphismTester; -import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer; -import org.openscience.cdk.isomorphism.matchers.QueryAtomContainerCreator; -import org.openscience.cdk.reaction.IReactionProcess; -import org.openscience.cdk.reaction.type.DisplacementChargeReaction; -import org.openscience.cdk.smiles.SmilesParser; -import org.openscience.cdk.test.CDKTestCase; -import org.openscience.cdk.tools.HydrogenAdder; -import org.openscience.cdk.tools.manipulator.ReactionManipulator; - -/** - * TestSuite that runs a test for the DisplacementChargeReactionTest. - * Generalized Reaction: A=B => [A-]-B[+] or A=B => [A+]-B[-]. - * - * @cdk.module test-reaction - */ -public class DisplacementChargeReactionTest extends CDKTestCase { - - private IReactionProcess type; - - /** - * Constructror of the DisplacementChargeReactionTest object - * - */ - public DisplacementChargeReactionTest() { - type = new DisplacementChargeReaction(); - } - - public static Test suite() { - return new TestSuite(DisplacementChargeReactionTest.class); - } - /** - * A unit test suite for JUnit. Reaction: C=C => [C+]-[C-] + [C-]-[C+] - * Automatic sarch of the centre active. - * - * @return The test suite - */ - public void testAutomaticSearchCentreActiveExample1() throws ClassNotFoundException, CDKException, java.lang.Exception { - ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); - - /*C=C*/ - Molecule molecule = (new SmilesParser()).parseSmiles("C=C"); - HydrogenAdder adder = new HydrogenAdder(); - adder.addImplicitHydrogensToSatisfyValency(molecule); - setOfReactants.addMolecule(molecule); - - /*automatic search of the centre active*/ - Object[] params = {Boolean.FALSE}; - type.setParameters(params); - - /* iniciate */ - ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); - - Assert.assertEquals(2, setOfReactions.getReactionCount()); - Assert.assertEquals(1, setOfReactions.getReaction(0).getProductCount()); - Assert.assertEquals(1, setOfReactions.getReaction(1).getProductCount()); - - IMolecule product = setOfReactions.getReaction(0).getProducts().getMolecule(0); - - /*[C+]-[C-]*/ - Molecule molecule2 = (new SmilesParser()).parseSmiles("[C+]-[C-]"); - adder = new HydrogenAdder(); - adder.addImplicitHydrogensToSatisfyValency(molecule2); - setOfReactants.addMolecule(molecule2); - - /*[C-]-[C+]*/ - Molecule molecule3 = (new SmilesParser()).parseSmiles("[C-]-[C+]"); - adder = new HydrogenAdder(); - adder.addImplicitHydrogensToSatisfyValency(molecule3); - setOfReactants.addMolecule(molecule3); - - QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(product); - Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(molecule2,qAC)); - } - /** - * A unit test suite for JUnit. Reaction: C=C => [C+]-[C-] + [C-]-[C+] - * Manually put of the centre active. - * - * @return The test suite - */ - public void testManuallyPutCentreActiveExample1() throws ClassNotFoundException, CDKException, java.lang.Exception { - ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); - /*C=C*/ - Molecule molecule = (new SmilesParser()).parseSmiles("C=C"); - HydrogenAdder adder = new HydrogenAdder(); - adder.addImplicitHydrogensToSatisfyValency(molecule); - setOfReactants.addMolecule(molecule); - - /*manually put the centre active*/ - molecule.getAtomAt(0).setFlag(CDKConstants.REACTIVE_CENTER,true); - molecule.getAtomAt(1).setFlag(CDKConstants.REACTIVE_CENTER,true); - molecule.getBondAt(0).setFlag(CDKConstants.REACTIVE_CENTER,true); - - Object[] params = {Boolean.TRUE}; - type.setParameters(params); - - /* iniciate */ - ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); - - Assert.assertEquals(2, setOfReactions.getReactionCount()); - Assert.assertEquals(1, setOfReactions.getReaction(0).getProductCount()); - Assert.assertEquals(1, setOfReactions.getReaction(1).getProductCount()); - - - - } - /** - * A unit test suite for JUnit. Reaction: C=C => [C+]-[C-] + [C-]-[C+] - * Test of mapped between the reactant and product. Only is mapped the centre active. - * - * @return The test suite - */ - public void testMappingExample1() throws ClassNotFoundException, CDKException, java.lang.Exception { - ISetOfMolecules setOfReactants = DefaultChemObjectBuilder.getInstance().newSetOfMolecules(); - /*C=C*/ - Molecule molecule = (new SmilesParser()).parseSmiles("C=C"); - HydrogenAdder adder = new HydrogenAdder(); - adder.addImplicitHydrogensToSatisfyValency(molecule); - setOfReactants.addMolecule(molecule); - - /*automatic search of the centre active*/ - Object[] params = {Boolean.FALSE}; - type.setParameters(params); - - /* iniciate */ - ISetOfReactions setOfReactions = type.initiate(setOfReactants, null); - - IMolecule product = setOfReactions.getReaction(0).getProducts().getMolecule(0); - - Assert.assertEquals(3,setOfReactions.getReaction(0).getMappings().length); - IAtom mappedProductA1 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(0)); - assertEquals(mappedProductA1, product.getAtomAt(0)); - IBond mappedProductB1 = (IBond)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getBondAt(0)); - assertEquals(mappedProductB1, product.getBondAt(0)); - IAtom mappedProductA2 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(1)); - assertEquals(mappedProductA2, product.getAtomAt(1)); - } - -} Modified: trunk/cdk/src/org/openscience/cdk/test/reaction/type/ReactionTypeTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/reaction/type/ReactionTypeTest.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/test/reaction/type/ReactionTypeTest.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -13,7 +13,8 @@ public static Test suite() { TestSuite suite = new TestSuite("All Reaction Type Tests"); - suite.addTest(DisplacementChargeReactionTest.suite()); + suite.addTest(DisplacementChargeFromAcceptorReactionTest.suite()); + suite.addTest(DisplacementChargeFromDonorReactionTest.suite()); suite.addTest(ElectronImpactPDBReactionTest.suite()); suite.addTest(ElectronImpactNBEReactionTest.suite()); suite.addTest(RearrangementAnion1ReactionTest.suite()); Modified: trunk/cdk/src/org/openscience/cdk/test/reaction/type/RearrangementAnion2ReactionTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/reaction/type/RearrangementAnion2ReactionTest.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/test/reaction/type/RearrangementAnion2ReactionTest.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -104,7 +104,7 @@ QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(product); Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(molecule2,qAC)); - Assert.assertEquals(6,setOfReactions.getReaction(0).getMappings().length); + Assert.assertEquals(5,setOfReactions.getReaction(0).getMappings().length); IAtom mappedProduct = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(0)); assertEquals(mappedProduct, product.getAtomAt(0)); @@ -171,7 +171,7 @@ IMolecule product = setOfReactions.getReaction(0).getProducts().getMolecule(0); - Assert.assertEquals(6,setOfReactions.getReaction(0).getMappings().length); + Assert.assertEquals(5,setOfReactions.getReaction(0).getMappings().length); IAtom mappedProductA1 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(0)); assertEquals(mappedProductA1, product.getAtomAt(0)); mappedProductA1 = (IAtom)ReactionManipulator.getMappedChemObject(setOfReactions.getReaction(0), molecule.getAtomAt(1)); Modified: trunk/cdk/src/org/openscience/cdk/test/tools/StructureResonanceGeneratorTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/tools/StructureResonanceGeneratorTest.java 2006-05-05 22:21:46 UTC (rev 6185) +++ trunk/cdk/src/org/openscience/cdk/test/tools/StructureResonanceGeneratorTest.java 2006-05-05 22:26:27 UTC (rev 6186) @@ -280,25 +280,25 @@ ISetOfAtomContainers setOfMolecules = gR.getAllStructures(molecule); - Assert.assertEquals(4,setOfMolecules.getAtomContainerCount()); + Assert.assertEquals(3,setOfMolecules.getAtomContainerCount()); - Molecule molecule1 = (new SmilesParser()).parseSmiles("[C-](-[O+])O"); - adder.addImplicitHydrogensToSatisfyValency(molecule1); - lpcheck.newSaturate(molecule1); - QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(molecule1); - Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(1),qAC)); - - Molecule molecule2 = (new SmilesParser()).parseSmiles("[C+](-[O-])O"); +// Molecule molecule1 = (new SmilesParser()).parseSmiles("[C-](-[O+])O"); +// adder.addImplicitHydrogensToSatisfyValency(molecule1); +// lpcheck.newSaturate(molecule1); +// QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(molecule1); +// Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(1),qAC)); + + Molecule molecule2 = (new SmilesParser()).parseSmiles("[C+](-[O-])O"); adder.addImplicitHydrogensToSatisfyValency(molecule2); lpcheck.newSaturate(molecule2); - qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(molecule2); - Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(2),qAC)); + QueryAtomContainer qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(molecule2); + Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(1),qAC)); Molecule molecule3 = (new SmilesParser()).parseSmiles("C([O-])=[O+]"); adder.addImplicitHydrogensToSatisfyValency(molecule3); lpcheck.newSaturate(molecule3); qAC = QueryAtomContainerCreator.createSymbolAndChargeQueryContainer(molecule3); - Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(3),qAC)); + Assert.assertTrue(UniversalIsomorphismTester.isIsomorph(setOfMolecules.getAtomContainer(2),qAC)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |