コード例 #1
0
        public static void AmbitTest()
        {
            //string smirks = "[*:1][N:2](=[O:3])=[O:4]>>[*:1][N+:2](=[O:3])[O-:4]";
            //string smirks = "[N:1]1[C:2][C:3]=[C:4][C:5]1>>[N:1]1[C:2]=[C:3][C:4]=[C:5]1";
            string smirks = "[#16:1]>>[#16:1](=[O])";
            //string targetSmiles = "O=S(c2nc1ccc(OC)cc1n2)Cc3ncc(c(OC)c3C)C";
            string         targetSmiles  = "CC1=CN=C(C(=C1OC)C)CS(=O)C2=NC3=C(N2)C=C(C=C3)OC";    // Omeprazole
            string         productSmiles = "";
            IAtomContainer target        = new AtomContainer();

            IChemObjectBuilder icob    = org.openscience.cdk.silent.SilentChemObjectBuilder.getInstance();
            SMIRKSManager      smrkMan = new SMIRKSManager(icob);
            //SMIRKSManager smrkMan = SMIRKSManager.getDefaultSMIRKSManager();
            SMIRKSReaction reaction = smrkMan.parse(smirks);

            if (!smrkMan.getErrors().Equals(""))
            {
                throw (new Exception("Smirks Parser errors:\n" + smrkMan.getErrors()));
            }

            target = CdkUtil.SmilesToAtomContainer(targetSmiles);
            if (smrkMan.applyTransformation(target, reaction))
            {
                IAtomContainer product = target;
                productSmiles = CdkUtil.AtomContainerToSmiles(product);
                return;                 // all products inside the same atomcontainer (target), could be disconnected
            }

            else
            {
                return;
            }
            //Generate separate products for every possible reaction(used in Toxtree)


            //SMIRKSManager smrkMan = new SMIRKSManager();
            //SMIRKSReaction smr = smrkMan.parse(reaction.getSMIRKS());
            //IAtomContainer product = reactant; //(IAtomContainer) reactant.clone();
            //IAtomContainerSet rproducts = smrkMan.applyTransformationWithSingleCopyForEachPos(product, null, smr);
            //products returned in a separate atom sontainer set
        }