public override void TestInitiate_IAtomContainerSet_IAtomContainerSet() { IReactionProcess type = new SharingChargeSBReaction(); var setOfReactants = GetExampleReactants(); /* initiate */ var paramList = new List <IParameterReaction>(); var param = new SetReactionCenter(); param.IsSetParameter = false; paramList.Add(param); type.ParameterList = paramList; var setOfReactions = type.Initiate(setOfReactants, null); Assert.AreEqual(3, setOfReactions.Count); Assert.AreEqual(2, setOfReactions[0].Products.Count); IAtomContainer product1 = setOfReactions[1].Products[0]; IAtomContainer molecule1 = GetExpectedProducts()[0]; IQueryAtomContainer queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(product1); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(molecule1, queryAtom)); IAtomContainer product2 = setOfReactions[0].Products[1]; IAtomContainer expected2 = GetExpectedProducts()[0]; queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(expected2); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(product2, queryAtom)); }
public void TestMapping() { IReactionProcess type = new SharingChargeSBReaction(); var setOfReactants = GetExampleReactants(); IAtomContainer molecule = setOfReactants[0]; /* manually put the reactive center */ molecule.Atoms[1].IsReactiveCenter = true; molecule.Atoms[2].IsReactiveCenter = true; molecule.Bonds[1].IsReactiveCenter = true; var paramList = new List <IParameterReaction>(); var param = new SetReactionCenter(); param.IsSetParameter = true; paramList.Add(param); type.ParameterList = paramList; /* initiate */ var setOfReactions = type.Initiate(setOfReactants, null); IAtomContainer product1 = setOfReactions[0].Products[0]; IAtomContainer product2 = setOfReactions[0].Products[1]; Assert.AreEqual(10, setOfReactions[0].Mappings.Count); IAtom mappedProductA1 = (IAtom)ReactionManipulator.GetMappedChemObject(setOfReactions[0], molecule.Atoms[1]); Assert.AreEqual(mappedProductA1, product1.Atoms[1]); mappedProductA1 = (IAtom)ReactionManipulator.GetMappedChemObject(setOfReactions[0], molecule.Atoms[2]); Assert.AreEqual(mappedProductA1, product2.Atoms[0]); }
public void TestCDKConstants_REACTIVE_CENTER() { IReactionProcess type = new SharingChargeSBReaction(); var setOfReactants = GetExampleReactants(); IAtomContainer molecule = setOfReactants[0]; /* manually put the reactive center */ molecule.Atoms[1].IsReactiveCenter = true; molecule.Atoms[2].IsReactiveCenter = true; molecule.Bonds[1].IsReactiveCenter = true; var paramList = new List <IParameterReaction>(); var param = new SetReactionCenter(); param.IsSetParameter = true; paramList.Add(param); type.ParameterList = paramList; /* initiate */ var setOfReactions = type.Initiate(setOfReactants, null); IAtomContainer reactant = setOfReactions[0].Reactants[0]; Assert.IsTrue(molecule.Atoms[1].IsReactiveCenter); Assert.IsTrue(reactant.Atoms[1].IsReactiveCenter); Assert.IsTrue(molecule.Atoms[2].IsReactiveCenter); Assert.IsTrue(reactant.Atoms[2].IsReactiveCenter); Assert.IsTrue(molecule.Bonds[1].IsReactiveCenter); Assert.IsTrue(reactant.Bonds[1].IsReactiveCenter); }
public void TestManuallyCentreActive() { IReactionProcess type = new SharingChargeSBReaction(); var setOfReactants = GetExampleReactants(); IAtomContainer molecule = setOfReactants[0]; /* manually put the center active */ molecule.Atoms[1].IsReactiveCenter = true; molecule.Atoms[2].IsReactiveCenter = true; molecule.Bonds[1].IsReactiveCenter = true; var paramList = new List <IParameterReaction>(); var param = new SetReactionCenter(); param.IsSetParameter = true; paramList.Add(param); type.ParameterList = paramList; /* initiate */ var setOfReactions = type.Initiate(setOfReactants, null); Assert.AreEqual(1, setOfReactions.Count); Assert.AreEqual(2, setOfReactions[0].Products.Count); IAtomContainer product1 = setOfReactions[0].Products[0]; IAtomContainer molecule1 = GetExpectedProducts()[0]; IQueryAtomContainer queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(product1); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(molecule1, queryAtom)); IAtomContainer product2 = setOfReactions[0].Products[1]; IAtomContainer expected2 = GetExpectedProducts()[1]; queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(expected2); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(product2, queryAtom)); }
public void TestFspChargeSingleB() { //CreateFromSmiles("[F+]C") IAtomContainer molecule = builder.NewAtomContainer(); molecule.Atoms.Add(builder.NewAtom("F")); molecule.Atoms[0].FormalCharge = +1; molecule.Atoms.Add(builder.NewAtom("C")); molecule.AddBond(molecule.Atoms[0], molecule.Atoms[1], BondOrder.Single); molecule.Atoms.Add(builder.NewAtom("H")); molecule.Atoms.Add(builder.NewAtom("H")); molecule.Atoms.Add(builder.NewAtom("H")); molecule.Atoms.Add(builder.NewAtom("H")); molecule.AddBond(molecule.Atoms[0], molecule.Atoms[2], BondOrder.Single); molecule.AddBond(molecule.Atoms[1], molecule.Atoms[3], BondOrder.Single); molecule.AddBond(molecule.Atoms[1], molecule.Atoms[4], BondOrder.Single); molecule.AddBond(molecule.Atoms[1], molecule.Atoms[5], BondOrder.Single); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(molecule); CDK.LonePairElectronChecker.Saturate(molecule); molecule.Atoms[0].IsReactiveCenter = true; molecule.Atoms[1].IsReactiveCenter = true; molecule.Bonds[0].IsReactiveCenter = true; var setOfReactants = ChemObjectBuilder.Instance.NewAtomContainerSet(); setOfReactants.Add(molecule); IReactionProcess type = new SharingChargeSBReaction(); var paramList = new List <IParameterReaction>(); var param = new SetReactionCenter(); param.IsSetParameter = true; paramList.Add(param); type.ParameterList = paramList; /* initiate */ var setOfReactions = type.Initiate(setOfReactants, null); Assert.AreEqual(1, setOfReactions.Count); //CreateFromSmiles("FH") IAtomContainer expected1 = builder.NewAtomContainer(); expected1.Atoms.Add(builder.NewAtom("F")); expected1.Atoms.Add(builder.NewAtom("H")); expected1.AddBond(expected1.Atoms[0], expected1.Atoms[1], BondOrder.Single); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(expected1); CDK.LonePairElectronChecker.Saturate(expected1); IAtomContainer product1 = setOfReactions[0].Products[0]; QueryAtomContainer queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(expected1); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(product1, queryAtom)); //CreateFromSmiles("[C+]") IAtomContainer expected2 = builder.NewAtomContainer(); expected2.Atoms.Add(builder.NewAtom("C")); expected2.Atoms[0].FormalCharge = +1; expected2.Atoms.Add(builder.NewAtom("H")); expected2.Atoms.Add(builder.NewAtom("H")); expected2.Atoms.Add(builder.NewAtom("H")); expected2.AddBond(expected2.Atoms[0], expected2.Atoms[1], BondOrder.Single); expected2.AddBond(expected2.Atoms[0], expected2.Atoms[2], BondOrder.Single); expected2.AddBond(expected2.Atoms[0], expected2.Atoms[3], BondOrder.Single); AtomContainerManipulator.PercieveAtomTypesAndConfigureAtoms(expected2); IAtomContainer product2 = setOfReactions[0].Products[1]; queryAtom = QueryAtomContainerCreator.CreateSymbolAndChargeQueryContainer(expected2); Assert.IsTrue(new UniversalIsomorphismTester().IsIsomorph(product2, queryAtom)); }