toxtree 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Toxtree-v2.6.13/LICENSE.txt +6 -0
- data/Toxtree-v2.6.13/README.txt +813 -0
- data/Toxtree-v2.6.13/Toxtree/Toxtree-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/example.java +41 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-ames-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-biodegradation-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-cramer-2.6.13-tests.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-cramer-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-cramer2-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-dnabinding-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-eye-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-functional_groups-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-kroes-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-mic-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-michaelacceptors-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-mutant-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-proteinbinding-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-sicret-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-skinsensitisation-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-smartcyp-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-verhaar-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/ext/toxtree-verhaar2-2.6.13.jar +0 -0
- data/Toxtree-v2.6.13/Toxtree/input.txt +4 -0
- data/Toxtree-v2.6.13/Toxtree/result.txt +2 -0
- data/Toxtree-v2.6.13/Toxtree/toxtree-plugins.properties +24 -0
- data/Toxtree-v2.6.13/doc/Toxtree_BenigniBossaRulebase_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/Toxtree_CramerExtensions_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/Toxtree_START_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/Toxtree_ToxMic_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/Toxtree_installation_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/Toxtree_user_manual.pdf +0 -0
- data/Toxtree-v2.6.13/doc/src/toxtree-2.6.13-javadoc.jar +0 -0
- data/Toxtree-v2.6.13/lib/javacpl.exe +0 -0
- data/Toxtree-v2.6.13/src/META-INF/MANIFEST.MF +6 -0
- data/Toxtree-v2.6.13/src/bodymol.inchi +398 -0
- data/Toxtree-v2.6.13/src/bodymol.sdf +34220 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/BiodgeradationRules.java +205 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/BiodgeradationRules.properties +7 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/categories/CategoryBiodegradable.java +62 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/categories/CategoryPersistent.java +63 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/categories/CategoryUnknown.java +55 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/positive_examples.sml +32 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAlcohols.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAldehyde.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAliphaticCyclicNoBranches.java +70 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAliphaticEther.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAliphaticFusedRingsNonBranched.java +79 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAlyphaticSulphonicAcids.java +73 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAminoAcids.java +70 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAromaticHalogen.java +76 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAromaticNGroups.java +72 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAromaticSulphonicAcid.java +70 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleAzoGroup.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleCyanoGroupOnMoreThanEightAtomsChain.java +70 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleEpoxide.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleEsters.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleFormaldehyde.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleHalogenSubstitutedBranched.java +71 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleKetone.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleMoreThanTwoHydroxyOnAromaticRing.java +133 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleNNitroso.java +75 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleNitrile.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleOneHalogenOnUnbranched.java +135 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RulePhosphateEsters.java +71 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RulePyridineRing.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTerminalIsopropylNonCyclic.java +132 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTerminalTertButyl.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTertiaryAmine.java +67 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTriazineRing.java +68 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTrifluoromethyl.java +69 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTwoHalogensOnUnbranchedNonCyclic.java +137 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTwoOrMoreRings.java +99 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTwoTerminalDiaminoGroupsOnNonCyclic.java +132 -0
- data/Toxtree-v2.6.13/src/com/molecularnetworks/start/rules/RuleTwoTerminalDoubleBondsOnUnbranched.java +132 -0
- data/Toxtree-v2.6.13/src/cramer2/CramerRulesWithExtensions.java +283 -0
- data/Toxtree-v2.6.13/src/cramer2/CramerRulesWithExtensions.properties +10 -0
- data/Toxtree-v2.6.13/src/cramer2/MANIFEST.plugin +10 -0
- data/Toxtree-v2.6.13/src/cramer2/categories/CramerClass1.java +51 -0
- data/Toxtree-v2.6.13/src/cramer2/categories/CramerClass2.java +55 -0
- data/Toxtree-v2.6.13/src/cramer2/categories/CramerClass3.java +53 -0
- data/Toxtree-v2.6.13/src/cramer2/categories/CramerTreeResult.java +80 -0
- data/Toxtree-v2.6.13/src/cramer2/package.html +17 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleBenzeneAnalogues.java +58 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleDivalentSulphur.java +57 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleFreeABUnsaturatedHetero.java +52 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleHasOnlySaltSulphonateSulphate.java +279 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleNormalBodyConstituent.java +75 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleReadilyHydrolysedPO4.java +106 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleUnchargedOrganophosphates.java +53 -0
- data/Toxtree-v2.6.13/src/cramer2/rules/RuleUnchargedOrganophosphates_wrong.txt +207 -0
- data/Toxtree-v2.6.13/src/eye/EyeIrritationRules.java +356 -0
- data/Toxtree-v2.6.13/src/eye/EyeIrritationRules.properties +7 -0
- data/Toxtree-v2.6.13/src/eye/MANIFEST.plugin +11 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryCorrosiveEye.java +45 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryCorrosiveSkin.java +42 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryModerateIrritation2Eye.java +42 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotCorrosive2Eye.java +46 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotCorrosive2Skin.java +46 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotCorrosive2SkinAndIrritating2Eye.java +42 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotCorrosive2SkinEye.java +45 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotCorrosive2SkinOrIrritating2Eye.java +42 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotIrritating2Eye.java +50 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryNotIrritatingOrCorrosive2Eye.java +49 -0
- data/Toxtree-v2.6.13/src/eye/categories/CategoryUnknown.java +61 -0
- data/Toxtree-v2.6.13/src/eye/categories/package.html +77 -0
- data/Toxtree-v2.6.13/src/eye/package.html +17 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule1.java +41 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule13_AliphaticMonoalcohols.java +158 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule14Aliphatic_glycerol_monoethers.java +52 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule15.java +61 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule16.java +69 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule17.java +55 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule18.java +54 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule19.java +59 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule20.java +53 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule21.java +56 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule22.java +57 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule23.java +61 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule24.java +128 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule25.java +52 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule26.java +57 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule27.java +52 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule28.java +53 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule29.java +52 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule30.java +60 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule31.java +57 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule32.java +56 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule33.java +84 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule34.java +58 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule35.java +61 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule36.java +56 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule37.java +56 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule38.java +156 -0
- data/Toxtree-v2.6.13/src/eye/rules/Rule39.java +60 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility.java +48 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility1.java +47 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_10_2.java +67 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_10_5.java +51 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_11_7.java +49 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_8_3.java +50 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_8_4.java +48 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleAqueousSolubility_9_3.java +51 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleHasOnlyC_H_O.java +36 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleHasOnlyC_H_O_Halogen.java +44 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleHasOnlyC_H_O_N.java +45 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleHasOnlyC_H_O_N_Halogen.java +40 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleHasOnlyC_H_O_N_S.java +51 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLipidSolubility.java +47 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLipidSolubility_10_4.java +50 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLipidSolubility_9_1.java +50 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP.java +52 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP1.java +49 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_10_1.java +48 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_11_4.java +43 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_11_5.java +47 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_11_6.java +45 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_12_4.java +41 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleLogP_9_4.java +47 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMeltingPoint_11_2.java +44 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMeltingPoint_12_3.java +48 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMeltingPoint_8_1.java +49 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMelting_Point_11_3.java +45 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight.java +53 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight_10_3.java +46 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight_11_1.java +45 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight_12_2.java +65 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight_8_2.java +46 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolWeight_9_2.java +54 -0
- data/Toxtree-v2.6.13/src/eye/rules/RuleMolweight_12_1.java +49 -0
- data/Toxtree-v2.6.13/src/eye/rules/package.html +15 -0
- data/Toxtree-v2.6.13/src/foodmol.inchi +104 -0
- data/Toxtree-v2.6.13/src/foodmol.sdf +6200 -0
- data/Toxtree-v2.6.13/src/kroes/KroesFig1Q1.sdf +110 -0
- data/Toxtree-v2.6.13/src/mic/MICRules.java +260 -0
- data/Toxtree-v2.6.13/src/mic/MICRules.properties +5 -0
- data/Toxtree-v2.6.13/src/mic/categories/micronucleusClass1.java +53 -0
- data/Toxtree-v2.6.13/src/mic/categories/micronucleusClass2.java +53 -0
- data/Toxtree-v2.6.13/src/mic/rules/MICTreeResult.java +158 -0
- data/Toxtree-v2.6.13/src/mic/rules/PB29.java +67 -0
- data/Toxtree-v2.6.13/src/mic/rules/PB30.java +68 -0
- data/Toxtree-v2.6.13/src/mic/rules/RuleAlertsForMIC.java +47 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA1.java +59 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA10.java +128 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA11.java +76 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA12.java +71 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA13.java +70 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA14.java +64 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA15.java +59 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA16.java +61 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA18.java +211 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA19.java +87 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA2.java +184 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA21.java +66 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA22.java +70 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA23.java +67 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA24.java +65 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA25.java +110 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA26.java +93 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA27.java +146 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA28.java +204 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA28bis.java +108 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA28ter.java +94 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA29.java +83 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA3.java +65 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA30.java +63 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA32.java +67 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA33.java +67 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA34.java +76 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA35.java +67 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA36.java +68 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA4.java +68 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA5.java +61 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA6.java +64 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA7.java +60 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA8.java +128 -0
- data/Toxtree-v2.6.13/src/mic/rules/SA9.java +60 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/MATreeResult.java +34 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/MichaelAcceptorRules.java +186 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/MichaelAcceptorRules.properties +6 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/categories/CategoryMichaelAcceptor.java +43 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/categories/CategoryUnknown.java +49 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule1.java +42 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule10A.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule10B.java +25 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule11.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule12A.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule12B.java +25 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule13A.java +24 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule13B.java +27 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule14.java +25 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule2.java +37 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule3.java +32 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule4A.java +28 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule4B.java +28 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule5.java +29 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule6.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule7.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule8.java +26 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule9A.java +24 -0
- data/Toxtree-v2.6.13/src/michaelacceptors/rules/Rule9B.java +27 -0
- data/Toxtree-v2.6.13/src/mutant/BB_CarcMutRules.java +375 -0
- data/Toxtree-v2.6.13/src/mutant/BB_CarcMutRules.properties +9 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryCarcinogen.java +47 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryError.java +18 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryMutagenTA100.java +48 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryNoGenotoxicAlert.java +52 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryNoNongenotoxicAlert.java +51 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryNonMutagen.java +45 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryNotCarcinogen.java +47 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryPositiveAlertGenotoxic.java +50 -0
- data/Toxtree-v2.6.13/src/mutant/categories/CategoryPositiveAlertNongenotoxic.java +50 -0
- data/Toxtree-v2.6.13/src/mutant/categories/MutantCategory.java +65 -0
- data/Toxtree-v2.6.13/src/mutant/categories/QSARApplicable.java +51 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/AromaticAmineSubstituentsDescriptor.java +584 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorBridgedBiphenyl.java +45 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorHasNO2Group.java +66 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorIDist.java +152 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorIsAniline.java +122 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorMolarRefractivity.java +73 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/DescriptorStructurePresence.java +149 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/SubstituentExtractor.java +234 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/SubstituentPosition.java +63 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/SubstituentsDescriptor.java +115 -0
- data/Toxtree-v2.6.13/src/mutant/descriptors/whim_weights.txt +39 -0
- data/Toxtree-v2.6.13/src/mutant/rules/MutantTreeResult.java +348 -0
- data/Toxtree-v2.6.13/src/mutant/rules/QSAR6Applicable.java +162 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleABUnsaturatedAldehyde.java +67 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleAlertsForCarcinogenicity.java +47 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleAlertsForGenotoxicCarcinogenicity.java +47 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleAlertsNongenotoxicCarcinogenicity.java +54 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleAromaticAmineNoSulfonicGroup.java +144 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleAromaticDiazo.java +98 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleDACancerogenicityAromaticAmines.java +217 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleDAMutagenicityABUnsaturatedAldehydes.java +189 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleDAMutagenicityAromaticAmines.java +239 -0
- data/Toxtree-v2.6.13/src/mutant/rules/RuleDerivedAromaticAmines.java +166 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA10_gen.java +127 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA11_gen.java +80 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA12_gen.java +68 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA13_gen.java +66 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA14_gen.java +61 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA15_gen.java +55 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA16_gen.java +57 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA17_nogen.java +76 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA18_gen.java +187 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA19_gen.java +71 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA1_gen.java +57 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA20_nogen.java +139 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA21_gen.java +66 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA22_gen.java +69 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA23_gen.java +62 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA24_gen.java +60 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA25_gen.java +104 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA26_gen.java +79 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA27_gen.java +131 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA28_gen.java +169 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA28bis_gen.java +92 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA28ter_gen.java +88 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA29_gen.java +78 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA2_gen.java +156 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA30_gen.java +63 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA31a_nogen.java +202 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA31b_nogen.java +64 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA31c_nogen.java +46 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA37_gen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA38_gen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA39_gen_and_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA3_gen.java +61 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA40_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA41_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA42_nogen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA43_nogen.java +57 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA44_nogen.java +61 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA45_nogen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA46_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA47_nogen.java +60 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA48_nogen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA49_nogen.java +60 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA4_gen.java +63 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA50_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA51_nogen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA52_nogen.java +57 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA53_nogen.java +61 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA54_nogen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA55_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA56_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA5_gen.java +58 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA6_gen.java +61 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA7_gen.java +56 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA8_gen.java +121 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SA9_gen.java +54 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SMARTSGroup.java +60 -0
- data/Toxtree-v2.6.13/src/mutant/rules/SMARTSgroups.java +56 -0
- data/Toxtree-v2.6.13/src/mutant/rules/UserInputABUnsaturatedAldehyde.java +24 -0
- data/Toxtree-v2.6.13/src/mutant/rules/UserInputAromaticAmine.java +47 -0
- data/Toxtree-v2.6.13/src/mutant/rules/VerifyAlertsGenotoxic.java +42 -0
- data/Toxtree-v2.6.13/src/mutant/rules/VerifyAlertsNongenotoxic.java +42 -0
- data/Toxtree-v2.6.13/src/sicret/SicretRules.java +357 -0
- data/Toxtree-v2.6.13/src/sicret/SicretRules.properties +9 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryCorrosive.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryIrritating.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryIrritatingOrCorrosive.java +28 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryNotCorrosive.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryNotIrritating.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryNotIrritatingOrCorrosive.java +49 -0
- data/Toxtree-v2.6.13/src/sicret/categories/CategoryUnknown.java +60 -0
- data/Toxtree-v2.6.13/src/sicret/categories/package.html +16 -0
- data/Toxtree-v2.6.13/src/sicret/package.html +17 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule11.java +42 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule12.java +44 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule13.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule14.java +45 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule15.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule16.java +41 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule17.java +42 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule18.java +45 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule19.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule20.java +44 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule21.java +54 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule22.java +45 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule23.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule24.java +48 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule25.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule26.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule27.java +47 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule28.java +42 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule29.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule30.java +48 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule4.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule8.java +44 -0
- data/Toxtree-v2.6.13/src/sicret/rules/Rule9.java +46 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleA_Lactams.java +55 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAcidAnhydrides.java +71 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAcidImides.java +55 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAcrylicAcids.java +74 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAcrylicAndMethacrylicEsters.java +71 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAldehydes.java +53 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAliphaticSaturatedAcidsAndHalogenatedAcids.java +63 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAlkylAlkanolAmines.java +53 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAlphaAlkynes.java +53 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAlphaHalogenatedAmidesAndThioamides.java +56 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAqueousSolubility.java +48 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleAromaticAmines.java +77 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleBenzylHalides.java +54 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleBetaLactones.java +54 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleC10_C20AliphaticAlcohols.java +108 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleCarbamoylHalide.java +80 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleCatecholsResorcinolsHydroquinones.java +73 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleDi_Tri_Nitrobenzenes.java +76 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleEpoxides.java +51 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleEthyleneGlycolEthers.java +59 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHalogenatedAlkanesAndAlkenes.java +62 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHalonitrobenzene.java +76 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHasOnlyC_H_O.java +77 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHasOnlyC_H_O_Halogen.java +54 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHasOnlyC_H_O_N.java +52 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHasOnlyC_H_O_N_Halogen.java +92 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHasOnlyC_H_O_N_S.java +62 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleHydroPeroxides.java +55 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleKetenes.java +53 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleKetones.java +55 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleLactonesFusedOrUnsaturated.java +84 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleLipidSolubility.java +45 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleLogP.java +100 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleMeltingPoint.java +54 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleMolWeight.java +67 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleOandPQuinones.java +78 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RulePhenols.java +65 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleQuaternaryOrganicAmmoniumAndPhosphoniumSalts.java +85 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleSurfaceTension.java +52 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleTriAndTetraHalogenatedBenzenes.java +70 -0
- data/Toxtree-v2.6.13/src/sicret/rules/RuleVapourPressure.java +53 -0
- data/Toxtree-v2.6.13/src/sicret/rules/package.html +15 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAlcohol.java +24 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAldehyde.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAlkylAldehyde.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAlkylHydrazine.java +27 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAlkylPhosphonate.java +28 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAmine.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAromaticAldehyde.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAromaticAzo.java +27 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAromaticNitro.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleArylMethylHalide.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAziridine.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleAzo.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleBenzene.java +36 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleEpoxide.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleEther.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleFuran.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleHalide.java +31 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleHeterocycle.java +36 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleHydrazine.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleIminomethyl.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleKetone.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNChloramine.java +29 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNHydroxy.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNMethylol.java +29 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNOxide.java +28 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNitro.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNitrogenMustard.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNitrosamine.java +27 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNitroso.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleNucleosides.java +30 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RulePhosphoricGroups.java +29 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RulePropiolactone.java +25 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleUrethaneDerivatives.java +26 -0
- data/Toxtree-v2.6.13/src/structurefeatures/rules/RuleprimaryAlkylHalide.java +29 -0
- data/Toxtree-v2.6.13/src/substituents.sdf +16605 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/AbstractApplication.java +179 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/CompoundMethodApplication.java +139 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/ToxTreeApp.java +246 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/ToxtreeHeadless.java +120 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/ToxtreeOptions.java +185 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestActions.java +51 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestApp.java +208 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestCompoundPanel.java +74 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestData.java +100 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestDataModule.java +229 -0
- data/Toxtree-v2.6.13/src/toxTree/apps/toxForest/ToxForestDataModulePanel.java +306 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/bird.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/titlepage.html +245 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/toxTree.css +136 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/toxTree.hs +36 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/toxTree.html +189 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/toxTree.jhm +12 -0
- data/Toxtree-v2.6.13/src/toxTree/config/help/toxTreeTOC.xml +14 -0
- data/Toxtree-v2.6.13/src/toxTree/config/log4.console +13 -0
- data/Toxtree-v2.6.13/src/toxTree/config/log4.properties +12 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-C(dO)O.cml +61 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-C(dO)S.cml +61 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-C(dS)O.cml +61 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-C(dS)S.cml +61 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-P(dO)(O)(O)O.cml +72 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-P(dO)(O)(O)OX.cml +82 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-hydrolize-S(dO)(dO)O.cml +64 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-metabolize-CdC.cml +61 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-metabolize-NdN.cml +56 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-metabolize-Npd.cml +64 -0
- data/Toxtree-v2.6.13/src/toxTree/config/reactions/reaction-metabolize-R-N.cml +52 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ConnectionMatrix.java +58 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionCategories.java +47 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionCategory.java +56 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionCategoryEditor.java +31 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionInteractive.java +117 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionMethod.java +95 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionMethodEditor.java +44 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionMethodPrority.java +29 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionMethodsList.java +41 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionResult.java +94 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionRule.java +152 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionRuleEditor.java +43 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionRuleList.java +42 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDecisionTransition.java +36 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IDescriptorBased.java +37 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IFilteredMolecules.java +48 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IImplementationDetails.java +5 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IMetaboliteGenerator.java +11 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IMoleculesIterator.java +73 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IProcessRule.java +35 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IProgressStatus.java +36 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IRuleRange.java +36 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IRuleSubstructures.java +76 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IRuleValue.java +35 -0
- data/Toxtree-v2.6.13/src/toxTree/core/IToxTreeEditor.java +41 -0
- data/Toxtree-v2.6.13/src/toxTree/core/Introspection.java +608 -0
- data/Toxtree-v2.6.13/src/toxTree/core/SmartElementsList.java +124 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ToxTreeClassLoader.java +65 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ToxTreeDescriptor.java +125 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ToxTreeObjectInputStream.java +73 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ToxTreePackageEntries.java +54 -0
- data/Toxtree-v2.6.13/src/toxTree/core/ToxTreePackageEntry.java +75 -0
- data/Toxtree-v2.6.13/src/toxTree/core/XMLSerializable.java +53 -0
- data/Toxtree-v2.6.13/src/toxTree/core/package.html +46 -0
- data/Toxtree-v2.6.13/src/toxTree/data/AbstractFilter.java +135 -0
- data/Toxtree-v2.6.13/src/toxTree/data/CategoryFilter.java +41 -0
- data/Toxtree-v2.6.13/src/toxTree/data/IMoleculeLookup.java +36 -0
- data/Toxtree-v2.6.13/src/toxTree/data/IObjectFilter.java +38 -0
- data/Toxtree-v2.6.13/src/toxTree/data/IPropertyFilter.java +34 -0
- data/Toxtree-v2.6.13/src/toxTree/data/ListOfAtomContainers.java +248 -0
- data/Toxtree-v2.6.13/src/toxTree/data/MoleculesFile.java +487 -0
- data/Toxtree-v2.6.13/src/toxTree/data/MoleculesIterator.java +439 -0
- data/Toxtree-v2.6.13/src/toxTree/data/ObjectPropertyFilter.java +210 -0
- data/Toxtree-v2.6.13/src/toxTree/data/SortedPropertyList.java +177 -0
- data/Toxtree-v2.6.13/src/toxTree/data/package.html +13 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DCategoryUnknown.java +84 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DMethodNotAssigned.java +85 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DRuleException.java +82 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DRuleNotImplemented.java +83 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DRulePropertyNotAvailable.java +76 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DecisionMethodException.java +77 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DecisionMethodIOException.java +73 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DecisionResultException.java +85 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DecisionResultIOException.java +78 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DecisionResultUIDException.java +76 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/DesisionMethodUIDException.java +75 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/FilterException.java +58 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/IntrospectionException.java +75 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/MolAnalyseException.java +97 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/ReactionException.java +72 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/ToxTreeIOException.java +67 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/XMLDecisionMethodException.java +63 -0
- data/Toxtree-v2.6.13/src/toxTree/exceptions/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxTree/io/MolFileFilter.java +111 -0
- data/Toxtree-v2.6.13/src/toxTree/io/PDFWriter.java +274 -0
- data/Toxtree-v2.6.13/src/toxTree/io/Tools.java +98 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/BatchFactory.java +81 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/BatchProcessing.java +497 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/BatchProcessingException.java +83 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/ChemObjectBatchProcessing.java +281 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/FileState.java +232 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/IBatchProcessing.java +83 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/ToxTreeBatchProcessing.java +227 -0
- data/Toxtree-v2.6.13/src/toxTree/io/batch/package.html +26 -0
- data/Toxtree-v2.6.13/src/toxTree/io/package.html +22 -0
- data/Toxtree-v2.6.13/src/toxTree/logging/package.html +20 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/AbstractQSARModel.java +177 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/IDescriptorPreprocessor.java +37 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/LinearDiscriminantRule.java +134 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/LinearPreprocessor.java +100 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/LinearQSARModel.java +331 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/MatrixPreprocessor.java +73 -0
- data/Toxtree-v2.6.13/src/toxTree/qsar/QSARDescriptor.java +111 -0
- data/Toxtree-v2.6.13/src/toxTree/query/AliphaticCHQueryAtom.java +64 -0
- data/Toxtree-v2.6.13/src/toxTree/query/AssociationQueryBond.java +60 -0
- data/Toxtree-v2.6.13/src/toxTree/query/CHQueryAtom.java +85 -0
- data/Toxtree-v2.6.13/src/toxTree/query/FunctionalGroups.java +4045 -0
- data/Toxtree-v2.6.13/src/toxTree/query/MolAnalyser.java +300 -0
- data/Toxtree-v2.6.13/src/toxTree/query/MolFlags.java +188 -0
- data/Toxtree-v2.6.13/src/toxTree/query/MyAssociationBond.java +58 -0
- data/Toxtree-v2.6.13/src/toxTree/query/QueryAtomContainers.java +81 -0
- data/Toxtree-v2.6.13/src/toxTree/query/ReallyAnyAtom.java +34 -0
- data/Toxtree-v2.6.13/src/toxTree/query/SimpleReactions.java +789 -0
- data/Toxtree-v2.6.13/src/toxTree/query/SingleOrDoubleQueryBond.java +67 -0
- data/Toxtree-v2.6.13/src/toxTree/query/TopologyAnyAtom.java +56 -0
- data/Toxtree-v2.6.13/src/toxTree/query/TopologyAnyBond.java +88 -0
- data/Toxtree-v2.6.13/src/toxTree/query/TopologyOrderQueryBond.java +88 -0
- data/Toxtree-v2.6.13/src/toxTree/query/TopologySymbolQueryAtom.java +68 -0
- data/Toxtree-v2.6.13/src/toxTree/query/metabolite/MetabolyteRecycler.java +216 -0
- data/Toxtree-v2.6.13/src/toxTree/query/package.html +14 -0
- data/Toxtree-v2.6.13/src/toxTree/query/remote/RemoteCompoundLookup.java +36 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/AbstractRule.java +404 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/AbstractRuleHilightHits.java +74 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/AbstractTree.java +837 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/AbstractTreePrinter.java +48 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/AbstractTreeWriter.java +63 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/BatchDecisionResultsList.java +478 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/CategoriesList.java +334 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DecisionMethodsList.java +373 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DecisionNode.java +407 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DecisionNodesFactory.java +64 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DecisionNodesList.java +356 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DecisionResultsList.java +89 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/DefaultCategory.java +196 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/IDecisionNodesFactory.java +37 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/MultiLabelDecisionNode.java +78 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/MultiLabelDecisionNodesList.java +52 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/NonToxicCategory.java +57 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/PDFTreePrinter.java +180 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/ProgressStatus.java +123 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/ReportTreePrinter.java +271 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/RuleResult.java +240 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/RulesList.java +263 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/SimpleTreePrinter.java +123 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/ToxicCategory.java +56 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/Tree2PrefuseGraph.java +153 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/TreeResult.java +633 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/UserDefinedTree.java +647 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/UserDefinedTree.properties +6 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/categories/DefaultClass1.java +44 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/categories/DefaultClass2.java +50 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/categories/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerClass1.java +52 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerClass2.java +56 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerClass3.java +53 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerRules.java +266 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerRules.properties +11 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/CramerTreeResult.java +80 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/Rule32.java +136 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/Rule3FuncGroups.java +95 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/Rule3MemberedHeterocycle.java +84 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleAcyclicAcetalEsterOfQ30.java +102 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleAliphaticWithSomeFuncGroups.java +181 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleCommonComponentOfFood.java +70 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleCyclopropaneEtc.java +104 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleHasOnlySaltSulphonateSulphate.java +263 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleHasOtherThanC_H_O_N_S2.java +172 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleHeteroaromatic.java +89 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleHeterocyclicComplexSubstituents.java +126 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleIsAromatic.java +67 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleIsCommonTerpene.java +60 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleIsHeterocyclic.java +62 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleIsOpenChain.java +55 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleKetoneAlcoholEtc.java +232 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleLactoneOrCyclicDiester.java +137 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleLactonesFusedOrUnsaturated.java +183 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleManyAromaticRings14.java +62 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleManyAromaticRings28.java +54 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleMonocarbocyclic.java +139 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleMonocycloalkanoneEtc.java +125 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleNormalBodyConstituent.java +76 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleOnlyFuncGroupsQ30.java +179 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleReadilyHydrolysed29.java +64 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleReadilyHydrolysedMononuclear.java +97 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleReadilyHydrolysedToCommonterpene.java +91 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleRingComplexSubstituents30.java +215 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleRingWithSubstituents.java +63 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleRingsWithSubstituents.java +66 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleSimplyBranchedAliphaticHydrocarbon.java +108 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleSomeBenzeneDerivatives.java +304 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleSufficientSulphonateGroups.java +184 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/RuleToxicFunctionalGroups.java +140 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/cramer/package.html +17 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/demo/SMARTSTree.java +76 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/demo/SubstructureTree.java +106 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/demo/package.html +14 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/package.html +17 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/DefaultAlertCounter.java +59 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/IAlertCounter.java +35 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/ILookupFile.java +16 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/InChILookupFile.java +134 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/LookupFile.java +210 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleAllAllowedElements.java +45 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleAllSubstructures.java +63 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleAnySubstituents.java +83 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleAnySubstructure.java +74 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleAromatic.java +78 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleCarbohydrate.java +222 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleCommonTerpene.java +115 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleDescriptor.java +156 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleDescriptorRange.java +122 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleElements.java +278 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleHeterocyclic.java +84 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleInitAlertCounter.java +77 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleLipinski5.java +75 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleManyAromaticRings.java +122 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleMolecularMassRange.java +68 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleOnlyAllowedSubstructures.java +69 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleOpenChain.java +83 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleReadilyHydrolised.java +114 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleRingAllowedSubstituents.java +129 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleRingOtherThanAllowedSubstituents.java +170 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleRingSubstituents.java +156 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleRings.java +46 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleStructuresList.java +211 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleSubstructures.java +191 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleVerifyAlertsCounter.java +78 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/RuleVerifyProperty.java +320 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/StructureAlert.java +66 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/StructureAlertAmbit.java +64 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/StructureAlertCDK.java +39 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/UserInputRule.java +96 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/package.html +14 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/AbstractRuleSmartSubstructure.java +393 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/Convertor.java +358 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/IRuleSMARTSubstructures.java +51 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/RuleSMARTSSubstructureAmbit.java +61 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/RuleSMARTSubstructure.java +15 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/RuleSMARTSubstructureCDK.java +77 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/SmartsPattern.java +107 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/rules/smarts/package.html +26 -0
- data/Toxtree-v2.6.13/src/toxTree/tree/stats/ConfusionMatrix.java +155 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/EditorFactory.java +66 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/IEditorFactory.java +26 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/categories/CategoriesRenderer.java +91 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/application_cascade.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/arrow_divide.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/bird.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/bird1.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/bird2.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/bird3.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/bird4.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/chart_organisation.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/cog.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/control_fastforward_blue.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/control_play_blue.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/cross.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/disk_multiple.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/door_out.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/find.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/folder.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/help.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/information.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/molecule.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/open.gif +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/page_go.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/page_white.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/picture.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/picture_save.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/plugin.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/plugin_edit.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/report_magnify.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/save.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tag_blue.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tag_blue_add.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tag_blue_delete.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tag_blue_edit.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tick.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tree.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tree_add.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/images/tree_delete.png +0 -0
- data/Toxtree-v2.6.13/src/toxTree/ui/tree/rules/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree-2.6.13-sources.jar +0 -0
- data/Toxtree-v2.6.13/src/toxtree/data/ActionList.java +209 -0
- data/Toxtree-v2.6.13/src/toxtree/data/DataContainer.java +304 -0
- data/Toxtree-v2.6.13/src/toxtree/data/DataModule.java +240 -0
- data/Toxtree-v2.6.13/src/toxtree/data/DecisionMethodData.java +210 -0
- data/Toxtree-v2.6.13/src/toxtree/data/DecisionMethodsDataModule.java +212 -0
- data/Toxtree-v2.6.13/src/toxtree/data/FilteredMoleculesIterator.java +296 -0
- data/Toxtree-v2.6.13/src/toxtree/data/ToxTreeActions.java +211 -0
- data/Toxtree-v2.6.13/src/toxtree/data/ToxTreeModule.java +265 -0
- data/Toxtree-v2.6.13/src/toxtree/lookup/RemoteLookup.java +108 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/AmesMutagenicityRules.java +432 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/AmesMutagenicityRules.properties +7 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/AmesMutagenicityCategory.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/CategoryError.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/CategoryMutagenTA100.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/CategoryNoAlertAmes.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/CategoryNonMutagen.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/CategoryPositiveAlertAmes.java +51 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/categories/QSARApplicable.java +56 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/AromaticAmineSubstituentsDescriptor.java +719 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorBridgedBiphenyl.java +69 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorHasNO2Group.java +66 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorIDist.java +153 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorIsAniline.java +120 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorMolarRefractivity.java +97 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/DescriptorStructurePresence.java +148 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/SubstituentExtractor.java +279 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/SubstituentPosition.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/SubstituentsDescriptor.java +139 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/descriptors/whim_weights.txt +39 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/AmesMutagenicityTreeResult.java +362 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/QSAR6Applicable.java +158 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleABUnsaturatedAldehyde.java +67 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAlertsAmes.java +54 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAlertsForAmesMutagenicity.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAlertsForGenotoxicCarcinogenicity.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAlertsForNewAmesMutagenicity.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAromaticAmineNoSulfonicGroup.java +145 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleAromaticDiazo.java +98 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleDAMutagenicityABUnsaturatedAldehydes.java +188 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleDAMutagenicityAromaticAmines.java +257 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/RuleDerivedAromaticAmines.java +166 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA10_gen.java +124 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA11_gen.java +80 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA12_gen.java +68 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA13_gen.java +66 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA14_gen.java +61 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA15_gen.java +54 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA16_gen.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA18_gen.java +190 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA19_gen.java +71 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA1_gen.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA21_gen.java +65 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA22_gen.java +69 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA23_gen.java +62 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA24_gen.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA25_gen.java +104 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA26_gen.java +79 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA27_gen.java +131 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA28_gen.java +169 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA28bis_gen.java +115 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA28ter_gen.java +112 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA29_gen.java +78 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA2_gen.java +156 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA30_gen.java +63 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA37_gen.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA38_gen.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA39_gen_and_nogen.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA3_gen.java +61 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA4_gen.java +63 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA57_Ames.java +63 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA58_Ames.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA59_Ames.java +64 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA5_gen.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA60_Ames.java +61 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA61_Ames.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA62_Ames.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA63_Ames.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA64_Ames.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA65_Ames.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA66_Ames.java +62 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA67_Ames.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA68_Ames.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA69_Ames.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA6_gen.java +61 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA7_gen.java +56 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA8_gen.java +120 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SA9_gen.java +54 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SMARTSGroup.java +55 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/SMARTSgroups.java +50 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/UserInputABUnsaturatedAldehyde.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/UserInputAromaticAmine.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/VerifyAlertsAmes.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/VerifyAlertsGenotoxic.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/VerifyAlertsNewAmes.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/ames/rules/VerifyAlertsNongenotoxic.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/DNABindingPlugin.java +205 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/DNABindingPlugin.properties +7 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/AcylTransferAlerts.java +43 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/DNABindingAlerts.java +554 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/DNABindingCategory.java +46 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/MichaelAcceptors.java +43 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/NoAlerts.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/SN1Alerts.java +44 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/SN2Alerts.java +44 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/categories/ShiffBaseAlerts.java +43 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/AcylTransferRule.java +22 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/DNABindingRule.java +43 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/DNABindingTreeResult.java +225 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/MichaelAcceptorRule.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/RuleDNABindingAlerts.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/SN1Rule.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/SN2Rule.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/ShiffBaseRule.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/dnabinding/rules/VerifyAlertsDNABinding.java +29 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/FuncRules.java +649 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/FuncRules.properties +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/categories/FuncCat1.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/categories/FuncCat2.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG.java +56 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG1.java +54 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG10.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG11.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG12.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG13.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG14.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG15.java +51 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG16.java +55 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG17.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG18.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG19.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG2.java +53 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG20.java +51 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG21.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG22.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_4.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_5.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_6.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_7.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_8.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG23_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG24_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG24_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG24_3.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG24_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG25.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG26.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG27.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG28.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG29.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG30.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_4.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_5.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_6.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_7.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_8.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_9.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG31_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG32.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_4.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_5.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_6.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_7.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_8.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG33_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG34_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG34_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG34_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_10.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_11.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_12.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_13.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_5.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_6.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_7.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_8.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_9.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG35_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG36.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG37_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG37_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG37_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG37_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG37_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG38.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG39.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG3_1.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG3_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG3_LS.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG4.java +60 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG40.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_5.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG41_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG42.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG43.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG44.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG45.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG46_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG46_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG46_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG47.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG48_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG48_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG48_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG49.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG4_1.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG4_2.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG4_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG5.java +58 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG50_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG50_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG50_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG50_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG51_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG51_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG51_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG51_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG52_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG52_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG52_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG52_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG53_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG53_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG53_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG53_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG54.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG55.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG56.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG57.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG58.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG59.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG6.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG60.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG61.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG62.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG63.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG64.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG65.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG66.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG67.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG68.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG69.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG7.java +51 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG70.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG71.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG72.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG73.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_5.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_6.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_7.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG74_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG75_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG75_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG75_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG75_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG75_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG76.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG77.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG78_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG78_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG78_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG78_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG78_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG79_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG79_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG79_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG79_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG79_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG8.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG80_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG80_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG80_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG81_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG81_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG81_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG81_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG81_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG82_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG82_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG82_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG82_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG82_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG83_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG83_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG83_3.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG83_4.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG83_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG84_1.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG84_2.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG84_LS.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG85.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG86.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG87.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG88.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG89.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG9.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FG90.java +59 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/FuncTreeResult.java +154 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/func/rules/RuleAlertsForFunc.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/Kroes1Tree.java +151 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/Kroes1Tree.properties +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/categories/NegligibleRisk.java +18 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/categories/NotASafetyConcern.java +27 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/categories/RequireCompoundSpecificToxicityData.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule10.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule11.java +24 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule12.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule2.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule3.java +33 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule4.java +24 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule5.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule6.java +22 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule7.java +23 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule8.java +65 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/KroesRule9.java +24 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/MyOrderQueryBond.java +28 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/RuleKroesFig1Q1.java +305 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/kroes/rules/RuleVerifyIntake.java +27 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/LewisTree.java +86 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/LewisTree.properties +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP1A2.java +46 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP2A.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP2B.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP2C.java +48 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP2D.java +46 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP2E.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/categories/CYP3A4.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_areadepthratio.java +26 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_highLogP.java +37 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_highVolume.java +32 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_high_AreaDepthRatio.java +33 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_high_pKa.java +34 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_lowVolume.java +32 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/lewis/rules/Rule_volume.java +30 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/MOARules.java +181 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/MOARules.properties +7 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryAcetylcholinesteraseInhibitors.java +16 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryCentralNervousSystemSeizureAgents.java +17 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryElectrophileProelectrophileReactivity.java +17 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryNarcosis1.java +45 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryNarcosis2.java +17 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryNarcosis3.java +17 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryOxidativePhosphorylationUncouplers.java +17 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/categories/CategoryUnknown.java +46 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsAche.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsCNS.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_1.java +70 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_1_1.java +45 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_2_1.java +41 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_2_3.java +12 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_3_1.java +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_4_1.java +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis1_1_4_2.java +5 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis2_2_1.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsNarcosis3.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsReactive.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/RuleAlertsUncouplers.java +47 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsAche.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsCNS.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsNarcosis1.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsNarcosis2.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsNarcosis3.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsReactive.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/moa/rules/VerifyAlertsUncouplers.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/ProteinBindingPlugin.java +205 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/ProteinBindingPlugin.properties +7 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/AcylTransferAlerts.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/MichaelAcceptors.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/NoAlerts.java +26 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/ProteinBindingAlerts.java +685 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/ProteinBindingCategory.java +50 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/SN2Alerts.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/SNArAlerts.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/categories/ShiffBaseAlerts.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/AcylTransferRule.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/MichaelAcceptorRule.java +22 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/ProteinBindingRule.java +43 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/ProteinBindingTreeResult.java +225 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/RuleProteinBindingAlerts.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/SN2Rule.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/SNARRule.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/ShiffBaseRule.java +22 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/proteinbinding/rules/VerifyAlertsProteinBinding.java +29 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/search/CompoundLookup.java +38 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/search/CompoundLookup.properties +4 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/search/categories/Found.java +49 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/search/categories/NotFound.java +51 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/search/rules/Find.java +160 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/SkinSensitisationPlugin.java +192 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/SkinSensitisationPlugin.properties +7 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/AcylTransferAlerts.java +18 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/MichaelAcceptors.java +18 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/NoAlerts.java +26 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/SN2Alerts.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/SNArAlerts.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/ShiffBaseAlerts.java +18 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/SkinSensitisationAlerts.java +267 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/categories/SkinSensitisationCategory.java +50 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/AcylTransferRule.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/MichaelAcceptorRule.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/RuleSkinSensitisationAlerts.java +25 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/SN2Rule.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/SNARRule.java +19 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/ShiffBaseRule.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/SkinSensitisationRule.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/SkinSensitisationTreeResult.java +226 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/skinsensitisation/rules/VerifyAlertsSkinSensitisation.java +29 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/SMARTCYPPlugin.java +275 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/SMARTCYPPlugin.properties +10 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/SMARTCypTreeResult.java +397 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/categories/NoSites.java +21 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/categories/SitesHigherRank.java +45 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/categories/SitesRank1.java +45 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/categories/SitesRank2.java +24 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/categories/SitesRank3.java +46 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/MetaboliteGenerator.java +183 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleHigherRank.java +20 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleHigherRank.properties +2 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank1.java +244 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank1.properties +2 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank2.java +12 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank2.properties +2 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank3.java +12 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/smartcyp/rules/SMARTCYPRuleRank3.properties +2 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/VerhaarScheme2.java +80 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/VerhaarScheme2.properties +8 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/categories/package.html +16 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/package.html +26 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/rules/Verhaar2TreeResult.java +57 -0
- data/Toxtree-v2.6.13/src/toxtree/plugins/verhaar2/rules/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree/tree/rules/ApplyRuleOptions.java +122 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/DataModulePanel.java +82 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/HashtableModel.java +164 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/HazardPanel.java +367 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/OptionsPanel.java +101 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/PropertyEditor.java +81 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/PropertyInput.java +42 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/SpringUtilities.java +217 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/StatusBar.java +172 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/AboutAction.java +168 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/BatchAction.java +134 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/ClearResultAction.java +87 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/DataContainerAction.java +54 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/DataModuleAction.java +133 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/EditCompoundAction.java +88 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/EstimateAction.java +82 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/EstimateAllAction.java +88 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/ExplainAction.java +74 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/HelpAction.java +122 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/InfoAction.java +153 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/NewMoleculeAction.java +94 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/OpenFileAction.java +94 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/QuitAction.java +94 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/SaveFileAction.java +111 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/actions/package.html +16 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/batch/AbstractJobProcessingDialog.java +308 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/batch/BatchProcessingDialog.java +725 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/batch/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/editors/SwingEditorFactory.java +145 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/metabolites/MetabolitesFrame.java +64 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/metabolites/MetabolitesPanel.java +102 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/AbstractMoleculeAction.java +69 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/AtomContainerPropertyTableModel.java +129 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/ClearFilteredSubsetsAction.java +67 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/GoToRecordAction.java +49 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/LookupCompoundAction.java +100 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/MoleculeEditAction.java +305 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/NavigationPanel.java +192 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/PropertyPanel.java +115 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/ShowFilteredFileAction.java +67 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/SmilesEntryPanel.java +387 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/SmilesEntryPanel.properties +16 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/StructureEntryPanel.java +84 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/TopPanel.java +123 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/molecule/package.html +17 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/DecisionMethodsTableModel.java +86 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/DecisionNodePanel.java +355 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/DecisionTreeModel.java +262 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/EditTreeActions.java +238 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/ITreeView.java +44 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/JCustomTreeComponent.java +145 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/ListPanel.java +244 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/ListTableModel.java +113 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/QueryAtomContainersModel.java +77 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/SelectListDialog.java +350 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/ToxTreeEditorPanel.java +154 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/ToxTreePackageEntryModel.java +70 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreeDrawing.java +196 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreeEditorPanel.java +345 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreeFrame.java +134 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreeLayout.java +502 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreeOptions.java +253 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreePanel.java +194 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/TreePrefuse.java +393 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/AbstractRuleAction.java +87 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/AbstractTreeAction.java +98 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/AddCategoryAction.java +96 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/ClearMethodsList.java +63 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/EditCategoryAction.java +80 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/EditDecisionMethodAction.java +97 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/EditRuleAction.java +90 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/EditTreeExplanation.java +149 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/ICategoryAction.java +31 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/INodeAction.java +36 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/IRuleAction.java +31 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/ITreeAction.java +32 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/LiadMethodsListAction.java +101 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/LoadAndEditTreeAction.java +121 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/LoadTreeAction.java +154 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/NewRuleAction.java +184 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/NewTreeAction.java +89 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SaveMethodsListAction.java +118 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SaveTreeAction.java +168 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SelectAndEditTreeAction.java +116 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SelectCategoryFromListAction.java +88 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SelectNewTreeAction.java +80 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SelectTreeAction.java +88 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SetBranchAction.java +175 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SubstructureFromListAction.java +99 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/SubstructuresFromFileAction.java +113 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/TreeOptionsAction.java +74 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/VerifyUnreachableRulesAction.java +101 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/VerifyUnusedCategories.java +78 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/ViewTreeAction.java +86 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/actions/package.html +16 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/categories/CategoriesPanel.java +154 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/categories/CategoriesTableModel.java +132 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/categories/CategoryPanel.java +130 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/categories/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/molecule/CompoundPanel.java +215 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/package.html +15 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/qsar/DescriptorOptions.java +106 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/qsar/OptionsPanel.java +181 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/qsar/QSARModelEditor.java +140 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/qsar/RuleQSARModelEditor.java +49 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/DecisionNodesListTableModel.java +80 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleDeleteSubstructureAction.java +67 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleEditor.java +114 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleExampleEditAction.java +124 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleMoleculeEditAction.java +84 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RulePanel.java +284 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RulePropertyEditor.java +127 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleRangeEditor.java +138 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleStructuresPanel.java +122 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/RuleSubstructuresEditAction.java +131 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/SMARTSRuleEditor.java +272 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/SmartsPanelEditor.java +367 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/tree/rules/SubstructureRulePanel.java +206 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/DecisionNodeWizard.java +531 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/DecisionTreeWizard.java +49 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/EditorPanel.java +65 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/ListPanelDescriptor.java +39 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/RadioBoxPanel.java +131 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/ToxTreeWizardPanelDescriptor.java +113 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/WizardWrapper.java +63 -0
- data/Toxtree-v2.6.13/src/toxtree/ui/wizard/package.html +19 -0
- data/Toxtree-v2.6.13/src/verhaar/VerhaarScheme.java +260 -0
- data/Toxtree-v2.6.13/src/verhaar/VerhaarScheme.properties +7 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/Class1BaselineToxicity.java +42 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/Class2LessInertCompounds.java +42 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/Class3UnspecificReactivity.java +55 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/Class4SpecificMechanism.java +67 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/Class5Unknown.java +66 -0
- data/Toxtree-v2.6.13/src/verhaar/categories/package.html +16 -0
- data/Toxtree-v2.6.13/src/verhaar/package.html +20 -0
- data/Toxtree-v2.6.13/src/verhaar/query/AromaticQueryBond.java +63 -0
- data/Toxtree-v2.6.13/src/verhaar/query/FunctionalGroups.java +429 -0
- data/Toxtree-v2.6.13/src/verhaar/query/OrderQueryBondAromatic.java +53 -0
- data/Toxtree-v2.6.13/src/verhaar/query/QueryAssociationBond.java +88 -0
- data/Toxtree-v2.6.13/src/verhaar/query/QueryUnsaturatedBond.java +100 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule01.java +58 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule03.java +80 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule11.java +66 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule13.java +52 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule14.java +56 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule141.java +85 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule142.java +96 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule143.java +123 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule144.java +80 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule15.java +53 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule151.java +66 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule152.java +109 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule153.java +74 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule154.java +66 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule16.java +53 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule161.java +75 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule17.java +57 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule171.java +77 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule21.java +211 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule22.java +56 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule23.java +78 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule24.java +95 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule25.java +63 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule31.java +82 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule32.java +77 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule33.java +71 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule34.java +69 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule35.java +69 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule36.java +73 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule37.java +72 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule38.java +121 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/Rule4.java +97 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleAlertsClass1.java +47 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleAlertsClass2.java +47 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleAlertsClass3.java +47 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleIonicGroups.java +84 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleLogPRange.java +96 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleRingMainStrucSubstituents.java +38 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleVerifyClass1Alerts.java +16 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleVerifyClass2Alerts.java +16 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/RuleVerifyClass3Alerts.java +17 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/VerhaarTreeResult.java +57 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/helper/RuleAnySubstructureCounter.java +45 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/helper/RuleElementsCounter.java +44 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/helper/RuleOnlyAllowedSubstructuresCounter.java +44 -0
- data/Toxtree-v2.6.13/src/verhaar/rules/package.html +15 -0
- data/ext/toxtree/extconf.rb +21 -0
- data/lib/toxtree.rb +91 -0
- data/test/toxtree.rb +26 -0
- metadata +1427 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (C) 2005-2008
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU Lesser General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2.1
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU Lesser General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
package toxTree.qsar;
|
|
26
|
+
|
|
27
|
+
public class MatrixPreprocessor implements IDescriptorPreprocessor {
|
|
28
|
+
protected double[][] matrix = null;
|
|
29
|
+
protected String explanation;
|
|
30
|
+
protected int dimension;
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
private static final long serialVersionUID = 3014828295822399358L;
|
|
35
|
+
|
|
36
|
+
public MatrixPreprocessor(double[][] matrix) throws Exception {
|
|
37
|
+
setDimension(matrix.length);
|
|
38
|
+
setMatrix(matrix);
|
|
39
|
+
}
|
|
40
|
+
public double[] process(double[] values) throws Exception {
|
|
41
|
+
double[] sum = new double[matrix.length];
|
|
42
|
+
for (int i=0; i < matrix.length;i++) {
|
|
43
|
+
sum[i] = 0;
|
|
44
|
+
int n = matrix[i].length;
|
|
45
|
+
for (int j=0; j < (n-1);j++)
|
|
46
|
+
sum[i] += values[i]*matrix[i][j];
|
|
47
|
+
sum[i] += matrix[i][n-1];
|
|
48
|
+
}
|
|
49
|
+
return sum;
|
|
50
|
+
}
|
|
51
|
+
public double[][] getMatrix() {
|
|
52
|
+
return matrix;
|
|
53
|
+
}
|
|
54
|
+
public void setMatrix(double[][] matrix) throws Exception {
|
|
55
|
+
this.matrix = matrix;
|
|
56
|
+
if (getDimension() != matrix.length) throw new Exception("Incompatible lengths");
|
|
57
|
+
}
|
|
58
|
+
public String getExplanation() {
|
|
59
|
+
return explanation;
|
|
60
|
+
}
|
|
61
|
+
public void setExplanation(String explanation) {
|
|
62
|
+
this.explanation = explanation;
|
|
63
|
+
}
|
|
64
|
+
public int getDimension() {
|
|
65
|
+
return dimension;
|
|
66
|
+
}
|
|
67
|
+
public void setDimension(int dimension) {
|
|
68
|
+
this.dimension = dimension;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright (C) 2005-2008
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU Lesser General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2.1
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU Lesser General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU Lesser General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
package toxTree.qsar;
|
|
26
|
+
|
|
27
|
+
import java.io.IOException;
|
|
28
|
+
import java.io.ObjectInputStream;
|
|
29
|
+
import java.io.Serializable;
|
|
30
|
+
|
|
31
|
+
import org.openscience.cdk.qsar.IMolecularDescriptor;
|
|
32
|
+
|
|
33
|
+
import toxTree.core.Introspection;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Encapsulating descriptor name (in a model) and descriptor calculation
|
|
37
|
+
* @author nina
|
|
38
|
+
*
|
|
39
|
+
*/
|
|
40
|
+
public class QSARDescriptor implements Serializable, Comparable<String> {
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
private static final long serialVersionUID = -3702178459249696653L;
|
|
45
|
+
protected String descriptorName;
|
|
46
|
+
protected transient IMolecularDescriptor descriptor;
|
|
47
|
+
//protected IDescriptorPreprocessor preprocessor;
|
|
48
|
+
protected boolean calculated;
|
|
49
|
+
protected String descriptorClass;
|
|
50
|
+
|
|
51
|
+
public QSARDescriptor(String name, IMolecularDescriptor descriptor) {
|
|
52
|
+
setDescriptorName(name);
|
|
53
|
+
setDescriptor(descriptor);
|
|
54
|
+
//setPreprocessor(preprocessor);
|
|
55
|
+
setCalculated(false);
|
|
56
|
+
}
|
|
57
|
+
public IMolecularDescriptor getDescriptor() {
|
|
58
|
+
return descriptor;
|
|
59
|
+
}
|
|
60
|
+
public void setDescriptor(IMolecularDescriptor descriptor) {
|
|
61
|
+
this.descriptor = descriptor;
|
|
62
|
+
this.descriptorClass = descriptor.getClass().getName();
|
|
63
|
+
}
|
|
64
|
+
public String getDescriptorName() {
|
|
65
|
+
return descriptorName;
|
|
66
|
+
}
|
|
67
|
+
public void setDescriptorName(String descriptorName) {
|
|
68
|
+
this.descriptorName = descriptorName;
|
|
69
|
+
}
|
|
70
|
+
/*
|
|
71
|
+
public IDescriptorPreprocessor getPreprocessor() {
|
|
72
|
+
return preprocessor;
|
|
73
|
+
}
|
|
74
|
+
public void setPreprocessor(IDescriptorPreprocessor preprocessor) {
|
|
75
|
+
this.preprocessor = preprocessor;
|
|
76
|
+
}
|
|
77
|
+
*/
|
|
78
|
+
public boolean isCalculated() {
|
|
79
|
+
return calculated;
|
|
80
|
+
}
|
|
81
|
+
public void setCalculated(boolean calculated) {
|
|
82
|
+
this.calculated = calculated;
|
|
83
|
+
}
|
|
84
|
+
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
|
|
85
|
+
Thread.currentThread().setContextClassLoader(Introspection.getLoader());
|
|
86
|
+
in.defaultReadObject();
|
|
87
|
+
|
|
88
|
+
if (!descriptorClass.equals(""))
|
|
89
|
+
try {
|
|
90
|
+
descriptor = (IMolecularDescriptor)Introspection.loadCreateObject(descriptorClass);
|
|
91
|
+
} catch (Exception x) {
|
|
92
|
+
x.printStackTrace();
|
|
93
|
+
descriptor = null;
|
|
94
|
+
}
|
|
95
|
+
setCalculated(false);
|
|
96
|
+
|
|
97
|
+
}
|
|
98
|
+
public int compareTo(String arg0) {
|
|
99
|
+
return descriptorName.compareTo(arg0);
|
|
100
|
+
}
|
|
101
|
+
@Override
|
|
102
|
+
public boolean equals(Object arg0) {
|
|
103
|
+
if (arg0 instanceof QSARDescriptor) {
|
|
104
|
+
QSARDescriptor qd = (QSARDescriptor) arg0;
|
|
105
|
+
return (qd.getDescriptor() == getDescriptor())
|
|
106
|
+
&& (qd.getDescriptorName().equals(getDescriptorName()));
|
|
107
|
+
} else return descriptorName.equals(arg0.toString());
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright Ideaconsult Ltd. (C) 2005-2007
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
+
|
|
24
|
+
*/
|
|
25
|
+
package toxTree.query;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
import org.openscience.cdk.CDKConstants;
|
|
29
|
+
import org.openscience.cdk.interfaces.IAtom;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Matches if not aromatic and of type set
|
|
33
|
+
* @author Nina Jeliazkova
|
|
34
|
+
* <b>Modified</b> 2005-8-20
|
|
35
|
+
*/
|
|
36
|
+
public class AliphaticCHQueryAtom extends CHQueryAtom {
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Comment for <code>serialVersionUID</code>
|
|
40
|
+
*/
|
|
41
|
+
private static final long serialVersionUID = 416309648893347645L;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
public AliphaticCHQueryAtom() {
|
|
47
|
+
super();
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* @param atom
|
|
53
|
+
*/
|
|
54
|
+
public AliphaticCHQueryAtom(IAtom atom) {
|
|
55
|
+
super(atom);
|
|
56
|
+
}
|
|
57
|
+
/* (non-Javadoc)
|
|
58
|
+
* @see toxTree.tree.rules.CHQueryAtom#matches(org.openscience.cdk.Atom)
|
|
59
|
+
*/
|
|
60
|
+
@Override
|
|
61
|
+
public boolean matches(IAtom atom) {
|
|
62
|
+
return (!atom.getFlag(CDKConstants.ISAROMATIC)) && super.matches(atom) ;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright Ideaconsult Ltd. (C) 2005-2007
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
+
|
|
24
|
+
*/
|
|
25
|
+
package toxTree.query;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
import org.openscience.cdk.interfaces.IAtom;
|
|
29
|
+
import org.openscience.cdk.interfaces.IBond;
|
|
30
|
+
import org.openscience.cdk.isomorphism.matchers.IQueryBond;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* TODO add description
|
|
36
|
+
* @author ThinClient
|
|
37
|
+
* <b>Modified</b> 2005-9-23
|
|
38
|
+
*/
|
|
39
|
+
public class AssociationQueryBond extends MyAssociationBond implements IQueryBond {
|
|
40
|
+
|
|
41
|
+
private static final long serialVersionUID = 2683414374611772988L;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @param atom1
|
|
45
|
+
* @param atom2
|
|
46
|
+
*/
|
|
47
|
+
public AssociationQueryBond(IAtom atom1, IAtom atom2) {
|
|
48
|
+
super(atom1, atom2);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
public AssociationQueryBond() {
|
|
55
|
+
super();
|
|
56
|
+
}
|
|
57
|
+
public boolean matches(IBond bond) {
|
|
58
|
+
return bond instanceof MyAssociationBond;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright Ideaconsult Ltd. (C) 2005-2007
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
+
|
|
24
|
+
*/
|
|
25
|
+
package toxTree.query;
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
import org.openscience.cdk.interfaces.IAtom;
|
|
29
|
+
import org.openscience.cdk.isomorphism.matchers.SymbolQueryAtom;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* This is to match a hydrocarbon atom in subgraph query
|
|
33
|
+
* Molecule should be preprocessed with FunctionalGroups.markCHn(), otherwise results will not be correct
|
|
34
|
+
* @author Nina Jeliazkova
|
|
35
|
+
* <b>Modified</b> 2005-8-20
|
|
36
|
+
*/
|
|
37
|
+
public class CHQueryAtom extends SymbolQueryAtom {
|
|
38
|
+
//protected static TTLogger logger = new TTLogger(CHQueryAtom.class);
|
|
39
|
+
protected static String[] marks = {
|
|
40
|
+
FunctionalGroups.C,
|
|
41
|
+
FunctionalGroups.CH,
|
|
42
|
+
FunctionalGroups.CH2,
|
|
43
|
+
FunctionalGroups.CH3
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Comment for <code>serialVersionUID</code>
|
|
47
|
+
*/
|
|
48
|
+
private static final long serialVersionUID = -7209347862505140304L;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
*/
|
|
53
|
+
public CHQueryAtom() {
|
|
54
|
+
super();
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @param atom
|
|
60
|
+
*/
|
|
61
|
+
public CHQueryAtom(IAtom atom) {
|
|
62
|
+
super(atom);
|
|
63
|
+
|
|
64
|
+
}
|
|
65
|
+
/* (non-Javadoc)
|
|
66
|
+
* @see org.openscience.cdk.isomorphism.matchers.SymbolQueryAtom#matches(org.openscience.cdk.Atom)
|
|
67
|
+
*/
|
|
68
|
+
@Override
|
|
69
|
+
public boolean matches(IAtom atom) {
|
|
70
|
+
if (!atom.getSymbol().equals("C")) return false;
|
|
71
|
+
if (super.matches(atom)) {
|
|
72
|
+
for (int i=0; i<marks.length; i++) {
|
|
73
|
+
Object o = atom.getProperty(marks[i]);
|
|
74
|
+
if (o != null) {
|
|
75
|
+
//logger.debug("Mark found\t",marks[i]);
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// logger.debug("NO CHn mark found! Was the molecule preprocessed by FunctionalGroups.markCHn(Molecule mol) ?\t");
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
}
|
|
@@ -0,0 +1,4045 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Copyright Ideaconsult Ltd. (C) 2005-2007
|
|
3
|
+
|
|
4
|
+
Contact: nina@acad.bg
|
|
5
|
+
|
|
6
|
+
This program is free software; you can redistribute it and/or
|
|
7
|
+
modify it under the terms of the GNU General Public License
|
|
8
|
+
as published by the Free Software Foundation; either version 2
|
|
9
|
+
of the License, or (at your option) any later version.
|
|
10
|
+
All we ask is that proper credit is given for our work, which includes
|
|
11
|
+
- but is not limited to - adding the above copyright notice to the beginning
|
|
12
|
+
of your source code files, and to any copyright notice that you may distribute
|
|
13
|
+
with programs based on this work.
|
|
14
|
+
|
|
15
|
+
This program is distributed in the hope that it will be useful,
|
|
16
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
+
GNU General Public License for more details.
|
|
19
|
+
|
|
20
|
+
You should have received a copy of the GNU General Public License
|
|
21
|
+
along with this program; if not, write to the Free Software
|
|
22
|
+
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
+
|
|
24
|
+
*//**
|
|
25
|
+
* <b>Filename</b> FunctionalGroups.java
|
|
26
|
+
* @author Nina Jeliazkova nina@acad.bg
|
|
27
|
+
* <b>Created</b> 2005-8-8
|
|
28
|
+
* <b>Project</b> toxTree
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
package toxTree.query;
|
|
32
|
+
|
|
33
|
+
import java.util.ArrayList;
|
|
34
|
+
import java.util.Collection;
|
|
35
|
+
import java.util.Hashtable;
|
|
36
|
+
import java.util.Iterator;
|
|
37
|
+
import java.util.List;
|
|
38
|
+
import java.util.Map;
|
|
39
|
+
import java.util.TreeMap;
|
|
40
|
+
import java.util.logging.Level;
|
|
41
|
+
import java.util.logging.Logger;
|
|
42
|
+
|
|
43
|
+
import org.openscience.cdk.CDKConstants;
|
|
44
|
+
import org.openscience.cdk.config.Elements;
|
|
45
|
+
import org.openscience.cdk.exception.CDKException;
|
|
46
|
+
import org.openscience.cdk.exception.InvalidSmilesException;
|
|
47
|
+
import org.openscience.cdk.graph.ConnectivityChecker;
|
|
48
|
+
import org.openscience.cdk.graph.PathTools;
|
|
49
|
+
import org.openscience.cdk.interfaces.IAtom;
|
|
50
|
+
import org.openscience.cdk.interfaces.IAtomContainer;
|
|
51
|
+
import org.openscience.cdk.interfaces.IBond;
|
|
52
|
+
import org.openscience.cdk.interfaces.IChemObjectBuilder;
|
|
53
|
+
import org.openscience.cdk.interfaces.IElement;
|
|
54
|
+
import org.openscience.cdk.interfaces.IMolecularFormula;
|
|
55
|
+
import org.openscience.cdk.interfaces.IMolecule;
|
|
56
|
+
import org.openscience.cdk.interfaces.IMoleculeSet;
|
|
57
|
+
import org.openscience.cdk.interfaces.IRing;
|
|
58
|
+
import org.openscience.cdk.interfaces.IRingSet;
|
|
59
|
+
import org.openscience.cdk.isomorphism.UniversalIsomorphismTester;
|
|
60
|
+
import org.openscience.cdk.isomorphism.matchers.IQueryAtom;
|
|
61
|
+
import org.openscience.cdk.isomorphism.matchers.InverseSymbolSetQueryAtom;
|
|
62
|
+
import org.openscience.cdk.isomorphism.matchers.OrderQueryBond;
|
|
63
|
+
import org.openscience.cdk.isomorphism.matchers.QueryAtomContainer;
|
|
64
|
+
import org.openscience.cdk.isomorphism.matchers.QueryAtomContainerCreator;
|
|
65
|
+
import org.openscience.cdk.isomorphism.matchers.SymbolAndChargeQueryAtom;
|
|
66
|
+
import org.openscience.cdk.isomorphism.matchers.SymbolQueryAtom;
|
|
67
|
+
import org.openscience.cdk.isomorphism.matchers.SymbolSetQueryAtom;
|
|
68
|
+
import org.openscience.cdk.isomorphism.matchers.smarts.AliphaticSymbolAtom;
|
|
69
|
+
import org.openscience.cdk.isomorphism.matchers.smarts.AnyOrderQueryBond;
|
|
70
|
+
import org.openscience.cdk.isomorphism.matchers.smarts.AromaticSymbolAtom;
|
|
71
|
+
import org.openscience.cdk.isomorphism.mcss.RMap;
|
|
72
|
+
import org.openscience.cdk.ringsearch.SSSRFinder;
|
|
73
|
+
import org.openscience.cdk.silent.AtomContainer;
|
|
74
|
+
import org.openscience.cdk.silent.SilentChemObjectBuilder;
|
|
75
|
+
import org.openscience.cdk.tools.CDKHydrogenAdder;
|
|
76
|
+
import org.openscience.cdk.tools.manipulator.AtomContainerManipulator;
|
|
77
|
+
import org.openscience.cdk.tools.manipulator.MolecularFormulaManipulator;
|
|
78
|
+
|
|
79
|
+
import toxTree.core.ConnectionMatrix;
|
|
80
|
+
import toxTree.tree.AbstractRule;
|
|
81
|
+
import ambit2.core.data.MoleculeTools;
|
|
82
|
+
import ambit2.core.processors.structure.HydrogenAdderProcessor;
|
|
83
|
+
import ambit2.core.smiles.SmilesParserWrapper;
|
|
84
|
+
import ambit2.core.smiles.SmilesParserWrapper.SMILES_PARSER;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* This class provides static methods for various functional groups
|
|
88
|
+
* In addition there are several static methods to manipulate searching
|
|
89
|
+
* @author Nina Jeliazkova <br>
|
|
90
|
+
* <b>Modified</b> 2005-8-8
|
|
91
|
+
*/
|
|
92
|
+
public class FunctionalGroups {
|
|
93
|
+
public static Logger logger = Logger.getLogger(FunctionalGroups.class.getName());
|
|
94
|
+
/**
|
|
95
|
+
* Messages
|
|
96
|
+
*/
|
|
97
|
+
public static final String MSG_HASGROUP = "\thas group \t";
|
|
98
|
+
public static final String MSG_MOLECULEIS = "Molecule is\t";
|
|
99
|
+
/**
|
|
100
|
+
* These constants are used in Atom.setProperty(CH3,true) fashion
|
|
101
|
+
* in order to mark which atoms/bonds belong to the corresponding group
|
|
102
|
+
* Used by {@link #markMaps(IAtomContainer, IAtomContainer, List)} method
|
|
103
|
+
*/
|
|
104
|
+
public static final String CH3 = "CH3";
|
|
105
|
+
public static final String CH2 = "CH2";
|
|
106
|
+
public static final String CH = "CH";
|
|
107
|
+
public static final String C = "C";
|
|
108
|
+
public static final String HYDROCARBON = "hydrocarbon";
|
|
109
|
+
public static final String PRIMARY_AMINE = "Primary amine";
|
|
110
|
+
public static final String SECONDARY_AMINE = "Secondary amine";
|
|
111
|
+
public static final String TERTIARY_AMINE = "tertiary amine";
|
|
112
|
+
public static final String AROMATIC_AMINE = "aromatic amine";
|
|
113
|
+
|
|
114
|
+
public static final String SECONDARY_AMINE_ALIPHATIC = "Aliphatic Secondary amine";
|
|
115
|
+
public static final String CYANO = "cyano";
|
|
116
|
+
public static final String NITRO = "nitro";
|
|
117
|
+
public static final String NNITROSO = "N-nitroso";
|
|
118
|
+
public static final String DIAZO = "diazo";
|
|
119
|
+
public static final String TRIAZENO = "triazeno";
|
|
120
|
+
public static final String CARBOXYLIC_ACID_SALT = "carboxylic acid salt";
|
|
121
|
+
public static final String CARBOXYLIC_ACID = "carboxylic acid";
|
|
122
|
+
public static final String ACETAL = "acetal";
|
|
123
|
+
public static final String ETHER = "ether";
|
|
124
|
+
public static final String METHYLETHER = "methylether";
|
|
125
|
+
public static final String SULPHIDE = "sulphide";
|
|
126
|
+
public static final String MERCAPTAN = "mercaptan";
|
|
127
|
+
public static final String ESTER = "ester";
|
|
128
|
+
public static final String THIOESTER = "thioester";
|
|
129
|
+
public static final String KETONE = "ketone";
|
|
130
|
+
public static final String KETONE_SIDECHAIN = "ketone_sidechain";
|
|
131
|
+
public static final String ALDEHYDE = "aldehyde";
|
|
132
|
+
public static final String CARBONYL = "carbonyl";
|
|
133
|
+
public static final String CARBONYL_ABUNSATURATED="CARBONYL_ABUNSATURATED";
|
|
134
|
+
public static final String ALCOHOL = "alcohol";
|
|
135
|
+
public static final String SULPHONATE = "sulphonate";
|
|
136
|
+
public static final String SULPHAMATE = "sulphamate";
|
|
137
|
+
public static final String SULPHATE = "sulphate";
|
|
138
|
+
public static final String PHOSPHATE = "phosphate";
|
|
139
|
+
public static final String POLYOXYETHYLENE = "polyoxyethylene";
|
|
140
|
+
public static final String HYDROCHLORIDE_OF_AMINE = "hydrochloride of amine";
|
|
141
|
+
public static final String SULPHATE_OF_AMINE = "sulphate of amine";
|
|
142
|
+
public static final String ACETYLENIC = "acetylenic";
|
|
143
|
+
public static final String LACTONE = "lactone";
|
|
144
|
+
public static final String CYCLIC_DIESTER = "cyclic diester";
|
|
145
|
+
public static final String ISOPRENE = "isoprene unit";
|
|
146
|
+
public static final String HYDROXY = "hydroxy";
|
|
147
|
+
public static final String METHOXY = "methoxy";
|
|
148
|
+
public static final String HYDROXY1 = "1'hydroxy";
|
|
149
|
+
public static final String HYDROXYESTERSUBSTITED = "hydroxy ester substituted";
|
|
150
|
+
public static final String QUATERNARY_NITROGEN= "quaternary nitrogen";
|
|
151
|
+
public static final String QUATERNARY_NITROGEN_EXCEPTION= "quaternary nitrogen exception";
|
|
152
|
+
public static final String ANHYDRIDE="ANHYDRIDE";
|
|
153
|
+
public static final String CARBONATE="CARBONATE";
|
|
154
|
+
public static final String AROMATIC_N_OXIDE="Aromatic ring N oxide";
|
|
155
|
+
|
|
156
|
+
public static final String RING_NUMBERING="RingNumbering";
|
|
157
|
+
/**
|
|
158
|
+
* Use DONTMARK constant when building a query
|
|
159
|
+
* QueryAtom atom;
|
|
160
|
+
* atom.setProperty(DONTMARK,query.getID());
|
|
161
|
+
* This is used as a flag that the atom belongs not to the group but to the neighboring radicals
|
|
162
|
+
* It is also essential for the {@link #detachGroup(IAtomContainer, QueryAtomContainer)} procedure to work,
|
|
163
|
+
* as the bond to break is the one with one atom having the property set, while the other has the property unset
|
|
164
|
+
*/
|
|
165
|
+
public static final String DONTMARK = "DONTMARK";
|
|
166
|
+
//TODO replace current marking with ALLOCATED
|
|
167
|
+
/**
|
|
168
|
+
* The intention is to use this property to mark if an atom/bond was already associated with a functional group.
|
|
169
|
+
* It will help to avoid wrong overlapping allocation of different group to the same atom
|
|
170
|
+
* Finally, marking by setProperty(query.getID(),new Boolean(true)) may be replaced with setProperty(ALLOCATED,query.getID())
|
|
171
|
+
* perhaps in v0.04 release :)
|
|
172
|
+
*/
|
|
173
|
+
public static final String ALLOCATED = "ALLOCATED";
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
protected static CDKHydrogenAdder h = CDKHydrogenAdder.getInstance(SilentChemObjectBuilder.getInstance());
|
|
177
|
+
/**
|
|
178
|
+
*
|
|
179
|
+
*/
|
|
180
|
+
protected FunctionalGroups() {
|
|
181
|
+
super();
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Query for Methyl group.
|
|
185
|
+
* @return
|
|
186
|
+
*/
|
|
187
|
+
public static QueryAtomContainer methyl() {
|
|
188
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
189
|
+
query.setID(CH3);
|
|
190
|
+
|
|
191
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
192
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
193
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
194
|
+
SymbolQueryAtom h3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
195
|
+
query.addAtom(c);
|
|
196
|
+
query.addAtom(h1);
|
|
197
|
+
query.addAtom(h2);
|
|
198
|
+
query.addAtom(h3);
|
|
199
|
+
query.addBond(new OrderQueryBond(c, h1, CDKConstants.BONDORDER_SINGLE));
|
|
200
|
+
query.addBond(new OrderQueryBond(c, h2, CDKConstants.BONDORDER_SINGLE));
|
|
201
|
+
query.addBond(new OrderQueryBond(c, h3, CDKConstants.BONDORDER_SINGLE));
|
|
202
|
+
return query;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Query for methoxy group.
|
|
206
|
+
* @return
|
|
207
|
+
*/
|
|
208
|
+
public static QueryAtomContainer methoxy() {
|
|
209
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
210
|
+
query.setID(METHOXY);
|
|
211
|
+
ReallyAnyAtom r = new ReallyAnyAtom(); r.setSymbol("R");
|
|
212
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
213
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
214
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
215
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
216
|
+
SymbolQueryAtom h3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
217
|
+
query.addAtom(r);
|
|
218
|
+
query.addAtom(o);
|
|
219
|
+
query.addAtom(c);
|
|
220
|
+
query.addAtom(h1);
|
|
221
|
+
query.addAtom(h2);
|
|
222
|
+
query.addAtom(h3);
|
|
223
|
+
query.addBond(new OrderQueryBond(r, o, CDKConstants.BONDORDER_SINGLE));
|
|
224
|
+
query.addBond(new OrderQueryBond(o, c, CDKConstants.BONDORDER_SINGLE));
|
|
225
|
+
query.addBond(new OrderQueryBond(c, h1, CDKConstants.BONDORDER_SINGLE));
|
|
226
|
+
query.addBond(new OrderQueryBond(c, h2, CDKConstants.BONDORDER_SINGLE));
|
|
227
|
+
query.addBond(new OrderQueryBond(c, h3, CDKConstants.BONDORDER_SINGLE));
|
|
228
|
+
return query;
|
|
229
|
+
}
|
|
230
|
+
public static QueryAtomContainer methoxy_ring() {
|
|
231
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
232
|
+
query.setID(METHOXY);
|
|
233
|
+
TopologyAnyAtom r = new TopologyAnyAtom(true); r.setSymbol("R");
|
|
234
|
+
r.setProperty(DONTMARK,query.getID());
|
|
235
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
236
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
237
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
238
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
239
|
+
SymbolQueryAtom h3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
240
|
+
query.addAtom(r);
|
|
241
|
+
query.addAtom(o);
|
|
242
|
+
query.addAtom(c);
|
|
243
|
+
query.addAtom(h1);
|
|
244
|
+
query.addAtom(h2);
|
|
245
|
+
query.addAtom(h3);
|
|
246
|
+
query.addBond(new OrderQueryBond(r, o, CDKConstants.BONDORDER_SINGLE));
|
|
247
|
+
query.addBond(new OrderQueryBond(o, c, CDKConstants.BONDORDER_SINGLE));
|
|
248
|
+
query.addBond(new OrderQueryBond(c, h1, CDKConstants.BONDORDER_SINGLE));
|
|
249
|
+
query.addBond(new OrderQueryBond(c, h2, CDKConstants.BONDORDER_SINGLE));
|
|
250
|
+
query.addBond(new OrderQueryBond(c, h3, CDKConstants.BONDORDER_SINGLE));
|
|
251
|
+
return query;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
public static QueryAtomContainer noxide_aromatic() {
|
|
255
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
256
|
+
query.setID(AROMATIC_N_OXIDE);
|
|
257
|
+
AromaticSymbolAtom n = new AromaticSymbolAtom("N");
|
|
258
|
+
n.setCharge(1.0);
|
|
259
|
+
TopologySymbolQueryAtom o = new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN),false);
|
|
260
|
+
o.setCharge(-1.0);
|
|
261
|
+
query.addAtom(o);
|
|
262
|
+
query.addAtom(n);
|
|
263
|
+
query.addBond(new OrderQueryBond(o, n, CDKConstants.BONDORDER_SINGLE));
|
|
264
|
+
|
|
265
|
+
return query;
|
|
266
|
+
}
|
|
267
|
+
public static QueryAtomContainer hydroxy_ring() {
|
|
268
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
269
|
+
query.setID(HYDROXY);
|
|
270
|
+
TopologySymbolQueryAtom c = new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),true);
|
|
271
|
+
c.setProperty(DONTMARK,query.getID());
|
|
272
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
273
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
274
|
+
query.addAtom(h);
|
|
275
|
+
query.addAtom(o);
|
|
276
|
+
query.addAtom(c);
|
|
277
|
+
query.addBond(new OrderQueryBond(o, c, CDKConstants.BONDORDER_SINGLE));
|
|
278
|
+
query.addBond(new OrderQueryBond(o, h, CDKConstants.BONDORDER_SINGLE));
|
|
279
|
+
return query;
|
|
280
|
+
}
|
|
281
|
+
public static QueryAtomContainer hydroxy1() {
|
|
282
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
283
|
+
query.setID(HYDROXY1);
|
|
284
|
+
//aliphatic c
|
|
285
|
+
IQueryAtom c = new AliphaticSymbolAtom("C");
|
|
286
|
+
//old - fails to match safrole TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),false);
|
|
287
|
+
c.setProperty(DONTMARK,query.getID());
|
|
288
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
289
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
290
|
+
query.addAtom(h);
|
|
291
|
+
query.addAtom(o);
|
|
292
|
+
query.addAtom(c);
|
|
293
|
+
query.addBond(new OrderQueryBond(o, c, CDKConstants.BONDORDER_SINGLE));
|
|
294
|
+
query.addBond(new OrderQueryBond(o, h, CDKConstants.BONDORDER_SINGLE));
|
|
295
|
+
return query;
|
|
296
|
+
}
|
|
297
|
+
// CCCC...COC(=O)R
|
|
298
|
+
public static QueryAtomContainer hydroxyEsterSubstituted() {
|
|
299
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
300
|
+
query.setID(HYDROXYESTERSUBSTITED);
|
|
301
|
+
SymbolQueryAtom c1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
302
|
+
SymbolQueryAtom c2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
303
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
304
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
305
|
+
SymbolQueryAtom r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
306
|
+
query.addAtom(r);
|
|
307
|
+
query.addAtom(o);query.addAtom(o2);
|
|
308
|
+
query.addAtom(c1);query.addAtom(c2);
|
|
309
|
+
query.addBond(new OrderQueryBond(c1, o, CDKConstants.BONDORDER_SINGLE));
|
|
310
|
+
query.addBond(new OrderQueryBond(o, c2, CDKConstants.BONDORDER_SINGLE));
|
|
311
|
+
query.addBond(new OrderQueryBond(o2, c2, CDKConstants.BONDORDER_DOUBLE));
|
|
312
|
+
query.addBond(new OrderQueryBond(r, c2, CDKConstants.BONDORDER_SINGLE));
|
|
313
|
+
return query;
|
|
314
|
+
}
|
|
315
|
+
//R-CH2-R
|
|
316
|
+
public static QueryAtomContainer ethyl() {
|
|
317
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
318
|
+
query.setID(CH2);
|
|
319
|
+
|
|
320
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
321
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
322
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
323
|
+
InverseSymbolSetQueryAtom h3 = new InverseSymbolSetQueryAtom();
|
|
324
|
+
h3.addSymbol("H");
|
|
325
|
+
h3.setProperty(DONTMARK,query.getID());
|
|
326
|
+
InverseSymbolSetQueryAtom h4 = new InverseSymbolSetQueryAtom();
|
|
327
|
+
h4.addSymbol("H");
|
|
328
|
+
h4.setProperty(DONTMARK,query.getID());
|
|
329
|
+
|
|
330
|
+
query.addAtom(c);
|
|
331
|
+
query.addAtom(h1);
|
|
332
|
+
query.addAtom(h2);
|
|
333
|
+
query.addAtom(h3);
|
|
334
|
+
query.addBond(new OrderQueryBond(c, h1, CDKConstants.BONDORDER_SINGLE));
|
|
335
|
+
query.addBond(new OrderQueryBond(c, h2, CDKConstants.BONDORDER_SINGLE));
|
|
336
|
+
query.addBond(new AnyOrderQueryBond(c, h3,CDKConstants.BONDORDER_SINGLE));
|
|
337
|
+
query.addBond(new AnyOrderQueryBond(c, h3,CDKConstants.BONDORDER_SINGLE));
|
|
338
|
+
return query;
|
|
339
|
+
}
|
|
340
|
+
public static QueryAtomContainer hydrocarbon() {
|
|
341
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
342
|
+
query.setID(CH);
|
|
343
|
+
|
|
344
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
345
|
+
query.addAtom(c);
|
|
346
|
+
SymbolSetQueryAtom[] neighbors = new SymbolSetQueryAtom[4];
|
|
347
|
+
for (int i =0; i < 4; i++) {
|
|
348
|
+
neighbors[i] = new SymbolSetQueryAtom();
|
|
349
|
+
neighbors[i].addSymbol("C");
|
|
350
|
+
neighbors[i].addSymbol("H");
|
|
351
|
+
query.addAtom(neighbors[i]);
|
|
352
|
+
query.addBond(new OrderQueryBond(c, neighbors[i], CDKConstants.BONDORDER_SINGLE));
|
|
353
|
+
}
|
|
354
|
+
return query;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
public static QueryAtomContainer primaryAmine(boolean aliphatic) {
|
|
359
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
360
|
+
query.setID(PRIMARY_AMINE);
|
|
361
|
+
IQueryAtom r;
|
|
362
|
+
if (aliphatic) r= new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),false);
|
|
363
|
+
else r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
364
|
+
((IAtom)r).setProperty(DONTMARK,query.getID());
|
|
365
|
+
SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
366
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
367
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
368
|
+
query.addAtom((IAtom)r);
|
|
369
|
+
query.addAtom(n);
|
|
370
|
+
query.addAtom(h1);
|
|
371
|
+
query.addAtom(h2);
|
|
372
|
+
query.addBond(new OrderQueryBond(r, n, CDKConstants.BONDORDER_SINGLE));
|
|
373
|
+
query.addBond(new OrderQueryBond(n, h1, CDKConstants.BONDORDER_SINGLE));
|
|
374
|
+
query.addBond(new OrderQueryBond(n, h2, CDKConstants.BONDORDER_SINGLE));
|
|
375
|
+
return query;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* SMARTS: [C;R0]-;!@[N;R0;H1]-;!@[C;R0]
|
|
379
|
+
* @param aliphatic
|
|
380
|
+
* @return
|
|
381
|
+
*/
|
|
382
|
+
public static QueryAtomContainer secondaryAmine(boolean aliphatic) {
|
|
383
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
384
|
+
if (aliphatic) query.setID(SECONDARY_AMINE_ALIPHATIC);
|
|
385
|
+
else query.setID(SECONDARY_AMINE);
|
|
386
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[2];
|
|
387
|
+
|
|
388
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
389
|
+
a.setFormalCharge(0);
|
|
390
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
391
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
392
|
+
|
|
393
|
+
for (int i=0; i<2; i++) {
|
|
394
|
+
//if (aliphatic) c[i]= new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),false);
|
|
395
|
+
//else
|
|
396
|
+
if (aliphatic)
|
|
397
|
+
c[i] = new CHQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
398
|
+
else c[i]= new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
399
|
+
query.addAtom(c[i]);
|
|
400
|
+
if (aliphatic)
|
|
401
|
+
query.addBond(new TopologyOrderQueryBond(c[i], n, CDKConstants.BONDORDER_SINGLE,false));
|
|
402
|
+
else
|
|
403
|
+
query.addBond(new OrderQueryBond(c[i], n, CDKConstants.BONDORDER_SINGLE));
|
|
404
|
+
}
|
|
405
|
+
query.addAtom(n);
|
|
406
|
+
query.addAtom(h);
|
|
407
|
+
query.addBond(new OrderQueryBond(n, h, CDKConstants.BONDORDER_SINGLE));
|
|
408
|
+
return query;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
public static QueryAtomContainer tertiaryAmine() {
|
|
412
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
413
|
+
query.setID(TERTIARY_AMINE);
|
|
414
|
+
InverseSymbolSetQueryAtom[] r = new InverseSymbolSetQueryAtom[3];
|
|
415
|
+
SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
416
|
+
for (int i =0; i < 3; i++) {
|
|
417
|
+
r[i] = new InverseSymbolSetQueryAtom();
|
|
418
|
+
r[i].setSymbol("*");
|
|
419
|
+
r[i].addSymbol("H");
|
|
420
|
+
|
|
421
|
+
query.addAtom(r[i]);
|
|
422
|
+
query.addBond(new OrderQueryBond(r[i], n, CDKConstants.BONDORDER_SINGLE));
|
|
423
|
+
}
|
|
424
|
+
return query;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
/*
|
|
428
|
+
public static QueryAtomContainer amine(int order, boolean aliphatic) {
|
|
429
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
430
|
+
switch (order) {
|
|
431
|
+
//primary
|
|
432
|
+
case 1:{query.setID(PRIMARY_AMINE); break;}
|
|
433
|
+
//secondary
|
|
434
|
+
case 2:{query.setID(SECONDARY_AMINE); break;}
|
|
435
|
+
//tertiary
|
|
436
|
+
case 3: {query.setID(TERTIARY_AMINE); break;}
|
|
437
|
+
//any
|
|
438
|
+
default : {order= 0;query.setID(AMINE); break;}
|
|
439
|
+
}
|
|
440
|
+
InverseSymbolSetQueryAtom[] r = new InverseSymbolSetQueryAtom[3];
|
|
441
|
+
SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
442
|
+
for (int i =0; i < order; i++) {
|
|
443
|
+
r[i] = new InverseSymbolSetQueryAtom();
|
|
444
|
+
r[i].addSymbol("H");
|
|
445
|
+
query.addAtom(r[i]);
|
|
446
|
+
query.addBond(new OrderQueryBond(r[i], n, CDKConstants.BONDORDER_SINGLE));
|
|
447
|
+
}
|
|
448
|
+
return query;
|
|
449
|
+
}
|
|
450
|
+
*/
|
|
451
|
+
// [N+].[Cl-]
|
|
452
|
+
public static QueryAtomContainer hydrochlorideOfAmine(int amine) {
|
|
453
|
+
//TODO verify the correct way of representation hydrochlorideOfAmine
|
|
454
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
455
|
+
query.setID(HYDROCHLORIDE_OF_AMINE);
|
|
456
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
457
|
+
a.setFormalCharge(1);
|
|
458
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
459
|
+
//SymbolQueryAtom n = new SymbolQueryAtom(a);
|
|
460
|
+
query.addAtom(n);
|
|
461
|
+
|
|
462
|
+
IAtom chlor = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CHLORINE);
|
|
463
|
+
chlor.setFormalCharge(-1);
|
|
464
|
+
SymbolAndChargeQueryAtom cl = new SymbolAndChargeQueryAtom(chlor);
|
|
465
|
+
query.addAtom(cl);
|
|
466
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[4];
|
|
467
|
+
for (int i=0; i < 4; i++) {
|
|
468
|
+
|
|
469
|
+
if ((i+1) > amine) r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
470
|
+
else r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
471
|
+
query.addAtom(r[i]);
|
|
472
|
+
query.addBond(new OrderQueryBond(n, r[i], CDKConstants.BONDORDER_SINGLE));
|
|
473
|
+
}
|
|
474
|
+
//TODO should verify somehow for ionic bond, not any ...
|
|
475
|
+
query.addBond(new AnyOrderQueryBond(n,cl, CDKConstants.BONDORDER_SINGLE));
|
|
476
|
+
return query;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
public static QueryAtomContainer hydrochlorideOfAmine3() {
|
|
480
|
+
//TODO verify the correct way of representation hydrochlorideOfAmine
|
|
481
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
482
|
+
query.setID(HYDROCHLORIDE_OF_AMINE);
|
|
483
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
484
|
+
a.setFormalCharge(1);
|
|
485
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
486
|
+
//SymbolQueryAtom n = new SymbolQueryAtom(a);
|
|
487
|
+
query.addAtom(n);
|
|
488
|
+
|
|
489
|
+
IAtom chlor = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CHLORINE);
|
|
490
|
+
chlor.setFormalCharge(-1);
|
|
491
|
+
SymbolAndChargeQueryAtom cl = new SymbolAndChargeQueryAtom(chlor);
|
|
492
|
+
query.addAtom(cl);
|
|
493
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[3];
|
|
494
|
+
for (int i=0; i < 3; i++) {
|
|
495
|
+
|
|
496
|
+
r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
497
|
+
query.addAtom(r[i]);
|
|
498
|
+
if (i==0)
|
|
499
|
+
query.addBond(new OrderQueryBond(n, r[i], CDKConstants.BONDORDER_DOUBLE));
|
|
500
|
+
else
|
|
501
|
+
query.addBond(new OrderQueryBond(n, r[i], CDKConstants.BONDORDER_SINGLE));
|
|
502
|
+
}
|
|
503
|
+
//TODO should verify somehow for ionic bond, not any ...
|
|
504
|
+
query.addBond(new AnyOrderQueryBond(n,cl, CDKConstants.BONDORDER_SINGLE));
|
|
505
|
+
return query;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
// [N+].[Cl-]
|
|
509
|
+
|
|
510
|
+
public static QueryAtomContainer hydrochlorideOfAmineBreakable() {
|
|
511
|
+
//TODO verify the correct way of representation hydrochlorideOfAmine
|
|
512
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
513
|
+
query.setID(HYDROCHLORIDE_OF_AMINE);
|
|
514
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
515
|
+
a.setFormalCharge(1);
|
|
516
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
517
|
+
query.addAtom(n);
|
|
518
|
+
|
|
519
|
+
IAtom chlor = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CHLORINE);
|
|
520
|
+
chlor.setFormalCharge(-1);
|
|
521
|
+
|
|
522
|
+
SymbolAndChargeQueryAtom cl = new SymbolAndChargeQueryAtom(chlor);
|
|
523
|
+
cl.setProperty(DONTMARK,query.getID());
|
|
524
|
+
query.addAtom(cl);
|
|
525
|
+
|
|
526
|
+
//TODO moze li da ima drugi elementi zakaceni za N
|
|
527
|
+
SymbolSetQueryAtom[] r = new SymbolSetQueryAtom[2];
|
|
528
|
+
for (int i=0; i < r.length; i++) {
|
|
529
|
+
r[i] = new SymbolSetQueryAtom();
|
|
530
|
+
r[i].addSymbol("C");
|
|
531
|
+
r[i].addSymbol("H");
|
|
532
|
+
query.addAtom(r[i]);
|
|
533
|
+
query.addBond(new SingleOrDoubleQueryBond(n, r[i]));
|
|
534
|
+
}
|
|
535
|
+
//TODO should verify somehow for ionic bond, not any ...
|
|
536
|
+
query.addBond(new OrderQueryBond(n,cl, CDKConstants.BONDORDER_SINGLE));
|
|
537
|
+
return query;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
//S(=O)(=O)(OH)[O-][N+]
|
|
541
|
+
public static QueryAtomContainer sulphateOfAmine(int amine) {
|
|
542
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
543
|
+
query.setID(SULPHATE_OF_AMINE);
|
|
544
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
545
|
+
query.addAtom(s);
|
|
546
|
+
IQueryAtom[] o = new IQueryAtom[4];
|
|
547
|
+
for (int i=0; i < 4; i++) {
|
|
548
|
+
if (i==0) {
|
|
549
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
550
|
+
a.setFormalCharge(-1);
|
|
551
|
+
o[i] = new SymbolAndChargeQueryAtom(a);
|
|
552
|
+
} else o[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
553
|
+
query.addAtom((IAtom)o[i]);
|
|
554
|
+
if (i<2)
|
|
555
|
+
query.addBond(new OrderQueryBond(s, o[i], CDKConstants.BONDORDER_SINGLE));
|
|
556
|
+
else
|
|
557
|
+
query.addBond(new OrderQueryBond(s, o[i], CDKConstants.BONDORDER_DOUBLE));
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
/*
|
|
562
|
+
* S-[O-].[N+]
|
|
563
|
+
* S-O
|
|
564
|
+
* S=O
|
|
565
|
+
* S=O
|
|
566
|
+
*
|
|
567
|
+
*/
|
|
568
|
+
/*TODO verify if this is necessary
|
|
569
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
570
|
+
query.addAtom(h);
|
|
571
|
+
query.addBond(new OrderQueryBond(h, o[1], CDKConstants.BONDORDER_SINGLE));
|
|
572
|
+
*/
|
|
573
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
574
|
+
a.setFormalCharge(1);
|
|
575
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
576
|
+
//SymbolQueryAtom n = new SymbolQueryAtom(a);
|
|
577
|
+
query.addAtom(n);
|
|
578
|
+
|
|
579
|
+
if (amine > 0) { //primary, sec, etc
|
|
580
|
+
SymbolSetQueryAtom[] r = new SymbolSetQueryAtom[4];
|
|
581
|
+
for (int i=0; i < 4; i++) {
|
|
582
|
+
r[i] = new SymbolSetQueryAtom();
|
|
583
|
+
if ((i+1) > amine) r[i].addSymbol("H");
|
|
584
|
+
else r[i].addSymbol("C");
|
|
585
|
+
query.addAtom(r[i]);
|
|
586
|
+
query.addBond(new OrderQueryBond(n, r[i], CDKConstants.BONDORDER_SINGLE)); //[N+]-R or [N+]-H
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
//TODO should verify somehow for ionic bond, not any ...
|
|
590
|
+
query.addBond(new AnyOrderQueryBond(n,o[0], CDKConstants.BONDORDER_SINGLE)); //[N+]-[O-]
|
|
591
|
+
return query;
|
|
592
|
+
}
|
|
593
|
+
/**
|
|
594
|
+
* This is {@link #sulphateOfAmine(int)} with the ionic bonnd between [N+] and [O-]
|
|
595
|
+
* marked with {@link #DONTMARK} so it can be broken by {@link #detachGroup(IAtomContainer, QueryAtomContainer)} method
|
|
596
|
+
* @return QueryAtomContainer the query
|
|
597
|
+
*/
|
|
598
|
+
public static QueryAtomContainer sulphateOfAmineBreakable() {
|
|
599
|
+
QueryAtomContainer aminoSulphate = FunctionalGroups.sulphateOfAmine(0);
|
|
600
|
+
//find [N+].[O-] bond and mark it as DONTMARK
|
|
601
|
+
for (int i=0; i <aminoSulphate.getBondCount();i++) {
|
|
602
|
+
Iterator ai = aminoSulphate.getBond(i).atoms().iterator();
|
|
603
|
+
IAtom n = null;
|
|
604
|
+
IAtom o = null;
|
|
605
|
+
while (ai.hasNext()) {
|
|
606
|
+
IAtom a = (IAtom)ai.next();
|
|
607
|
+
if (a.getSymbol().equals("N")) n = a;
|
|
608
|
+
else if (a.getSymbol().equals("O")) o = a;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
if ((n !=null) && (o !=null)) { //this is the bond
|
|
613
|
+
n.setProperty(FunctionalGroups.DONTMARK,aminoSulphate.getID());
|
|
614
|
+
logger.fine("Ma");
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
return aminoSulphate;
|
|
619
|
+
}
|
|
620
|
+
/**
|
|
621
|
+
* SMARTS: C(#N)([C,#1])
|
|
622
|
+
* @return
|
|
623
|
+
*/
|
|
624
|
+
public static QueryAtomContainer cyano() {
|
|
625
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
626
|
+
query.setID(CYANO);
|
|
627
|
+
|
|
628
|
+
SymbolSetQueryAtom a = new SymbolSetQueryAtom();
|
|
629
|
+
a.addSymbol("N");
|
|
630
|
+
a.addSymbol("C");
|
|
631
|
+
a.addSymbol("H");
|
|
632
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
633
|
+
SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
634
|
+
|
|
635
|
+
query.addAtom(a);
|
|
636
|
+
query.addAtom(c);
|
|
637
|
+
query.addAtom(n);
|
|
638
|
+
query.addBond(new OrderQueryBond(a, c, CDKConstants.BONDORDER_SINGLE));
|
|
639
|
+
query.addBond(new OrderQueryBond(c, n, CDKConstants.BONDORDER_TRIPLE));
|
|
640
|
+
return query;
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* SMARTS: N(=O)(=O)([!#1])
|
|
644
|
+
* @return
|
|
645
|
+
*/
|
|
646
|
+
public static QueryAtomContainer nitro2double() {
|
|
647
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
648
|
+
query.setID(NITRO);
|
|
649
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
650
|
+
r.addSymbol("H");
|
|
651
|
+
SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
652
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
653
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
654
|
+
|
|
655
|
+
query.addAtom(r);query.addAtom(n);
|
|
656
|
+
query.addAtom(o1);query.addAtom(o2);
|
|
657
|
+
query.addBond(new OrderQueryBond(r, n, CDKConstants.BONDORDER_SINGLE));
|
|
658
|
+
query.addBond(new OrderQueryBond(n, o1, CDKConstants.BONDORDER_DOUBLE));
|
|
659
|
+
query.addBond(new OrderQueryBond(n, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
660
|
+
return query;
|
|
661
|
+
}
|
|
662
|
+
/**
|
|
663
|
+
* SMARTS: [N+](=O)([O-])([!#1])
|
|
664
|
+
* @return
|
|
665
|
+
*/
|
|
666
|
+
public static QueryAtomContainer nitro1double() {
|
|
667
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
668
|
+
query.setID(NITRO);
|
|
669
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
670
|
+
|
|
671
|
+
r.addSymbol("H");
|
|
672
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN); a.setFormalCharge(+1);
|
|
673
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
674
|
+
|
|
675
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
676
|
+
|
|
677
|
+
IAtom o = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN); o.setFormalCharge(-1);
|
|
678
|
+
SymbolAndChargeQueryAtom o2 = new SymbolAndChargeQueryAtom(o);
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
query.addAtom(r);query.addAtom(n);
|
|
682
|
+
query.addAtom(o1);query.addAtom(o2);
|
|
683
|
+
query.addBond(new OrderQueryBond(r, n, CDKConstants.BONDORDER_SINGLE));
|
|
684
|
+
query.addBond(new OrderQueryBond(n, o1, CDKConstants.BONDORDER_DOUBLE));
|
|
685
|
+
query.addBond(new OrderQueryBond(n, o2, CDKConstants.BONDORDER_SINGLE));
|
|
686
|
+
return query;
|
|
687
|
+
}
|
|
688
|
+
/**
|
|
689
|
+
* SMARTS: O=NN([!#1])([!#1])
|
|
690
|
+
* @return
|
|
691
|
+
*/
|
|
692
|
+
public static QueryAtomContainer Nnitroso() {
|
|
693
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
694
|
+
query.setID(NNITROSO);
|
|
695
|
+
InverseSymbolSetQueryAtom r1 = new InverseSymbolSetQueryAtom();
|
|
696
|
+
r1.addSymbol("H");
|
|
697
|
+
InverseSymbolSetQueryAtom r2 = new InverseSymbolSetQueryAtom();
|
|
698
|
+
r2.addSymbol("H");
|
|
699
|
+
SymbolQueryAtom n1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
700
|
+
SymbolQueryAtom n2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
701
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
702
|
+
|
|
703
|
+
query.addAtom(r1);query.addAtom(r2);
|
|
704
|
+
query.addAtom(n1);query.addAtom(n2);
|
|
705
|
+
query.addAtom(o);
|
|
706
|
+
query.addBond(new OrderQueryBond(r1, n1, CDKConstants.BONDORDER_SINGLE));
|
|
707
|
+
query.addBond(new OrderQueryBond(r2, n1, CDKConstants.BONDORDER_SINGLE));
|
|
708
|
+
query.addBond(new OrderQueryBond(n1, n2, CDKConstants.BONDORDER_SINGLE));
|
|
709
|
+
query.addBond(new OrderQueryBond(n2, o, CDKConstants.BONDORDER_DOUBLE));
|
|
710
|
+
return query;
|
|
711
|
+
}
|
|
712
|
+
/*
|
|
713
|
+
* SMARTS: N#N
|
|
714
|
+
*/
|
|
715
|
+
public static QueryAtomContainer diAzo() {
|
|
716
|
+
SymbolQueryAtom n1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
717
|
+
SymbolQueryAtom n2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
718
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
719
|
+
query.setID(DIAZO);
|
|
720
|
+
query.addAtom(n1);query.addAtom(n2);
|
|
721
|
+
query.addBond(new OrderQueryBond(n1, n2, CDKConstants.BONDORDER_TRIPLE));
|
|
722
|
+
return query;
|
|
723
|
+
}
|
|
724
|
+
/**
|
|
725
|
+
* SMARTS: [#6][#7]=[#7][#7;H2]
|
|
726
|
+
* @return
|
|
727
|
+
*/
|
|
728
|
+
public static QueryAtomContainer triAzeno() {
|
|
729
|
+
|
|
730
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
731
|
+
query.setID(TRIAZENO);
|
|
732
|
+
|
|
733
|
+
SymbolQueryAtom r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
734
|
+
r.setProperty(DONTMARK,query.getID());
|
|
735
|
+
SymbolQueryAtom n1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
736
|
+
SymbolQueryAtom n2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
737
|
+
SymbolQueryAtom n3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
738
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
739
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
740
|
+
|
|
741
|
+
query.addAtom(r);query.addAtom(n1);
|
|
742
|
+
query.addAtom(n2);query.addAtom(n3);
|
|
743
|
+
query.addAtom(h1);query.addAtom(h2);
|
|
744
|
+
query.addBond(new OrderQueryBond(r, n1, CDKConstants.BONDORDER_SINGLE));
|
|
745
|
+
query.addBond(new OrderQueryBond(n1, n2, CDKConstants.BONDORDER_DOUBLE));
|
|
746
|
+
query.addBond(new OrderQueryBond(n2, n3, CDKConstants.BONDORDER_SINGLE));
|
|
747
|
+
query.addBond(new OrderQueryBond(n3, h1, CDKConstants.BONDORDER_SINGLE));
|
|
748
|
+
query.addBond(new OrderQueryBond(n3, h2, CDKConstants.BONDORDER_SINGLE));
|
|
749
|
+
return query;
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
public static QueryAtomContainer quaternaryNitrogen1(boolean charged) {
|
|
754
|
+
|
|
755
|
+
ReallyAnyAtom r1 = new ReallyAnyAtom();
|
|
756
|
+
ReallyAnyAtom r2 = new ReallyAnyAtom();
|
|
757
|
+
ReallyAnyAtom r3 = new ReallyAnyAtom();
|
|
758
|
+
ReallyAnyAtom r4 = new ReallyAnyAtom();
|
|
759
|
+
|
|
760
|
+
//SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
761
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
762
|
+
IQueryAtom n;
|
|
763
|
+
if (charged) {
|
|
764
|
+
a.setFormalCharge(1);
|
|
765
|
+
n = new SymbolAndChargeQueryAtom(a);
|
|
766
|
+
} else n = new SymbolQueryAtom(a);
|
|
767
|
+
|
|
768
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
769
|
+
query.setID(QUATERNARY_NITROGEN);
|
|
770
|
+
query.addAtom(r1);query.addAtom(r2);
|
|
771
|
+
query.addAtom(r3);query.addAtom(r4);
|
|
772
|
+
query.addAtom((IAtom)n);
|
|
773
|
+
query.addBond(new OrderQueryBond(r1, n, CDKConstants.BONDORDER_SINGLE));
|
|
774
|
+
query.addBond(new OrderQueryBond(r2, n, CDKConstants.BONDORDER_SINGLE));
|
|
775
|
+
query.addBond(new OrderQueryBond(r3, n, CDKConstants.BONDORDER_SINGLE));
|
|
776
|
+
query.addBond(new OrderQueryBond(r4, n, CDKConstants.BONDORDER_SINGLE));
|
|
777
|
+
|
|
778
|
+
return query;
|
|
779
|
+
}
|
|
780
|
+
|
|
781
|
+
public static QueryAtomContainer quaternaryNitrogen2(boolean charged) {
|
|
782
|
+
|
|
783
|
+
ReallyAnyAtom r1 = new ReallyAnyAtom();
|
|
784
|
+
ReallyAnyAtom r2 = new ReallyAnyAtom();
|
|
785
|
+
ReallyAnyAtom r3 = new ReallyAnyAtom();
|
|
786
|
+
|
|
787
|
+
//SymbolQueryAtom n = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN));
|
|
788
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
789
|
+
IQueryAtom n;
|
|
790
|
+
if (charged) {
|
|
791
|
+
a.setFormalCharge(1);
|
|
792
|
+
n = new SymbolAndChargeQueryAtom(a);
|
|
793
|
+
} else n = new SymbolQueryAtom(a); //else to cope with wrong record
|
|
794
|
+
|
|
795
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
796
|
+
query.setID(QUATERNARY_NITROGEN);
|
|
797
|
+
query.addAtom(r1);query.addAtom(r2);
|
|
798
|
+
query.addAtom(r3);
|
|
799
|
+
query.addAtom((IAtom)n);
|
|
800
|
+
query.addBond(new OrderQueryBond(r1, n, CDKConstants.BONDORDER_SINGLE));
|
|
801
|
+
query.addBond(new OrderQueryBond(r2, n, CDKConstants.BONDORDER_SINGLE));
|
|
802
|
+
query.addBond(new OrderQueryBond(r3, n, CDKConstants.BONDORDER_DOUBLE));
|
|
803
|
+
|
|
804
|
+
return query;
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
public static QueryAtomContainer quarternaryNitrogenException() {
|
|
809
|
+
ReallyAnyAtom nr1 = new ReallyAnyAtom();
|
|
810
|
+
ReallyAnyAtom nr2 = new ReallyAnyAtom();
|
|
811
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
812
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
813
|
+
a.setFormalCharge(1);
|
|
814
|
+
SymbolAndChargeQueryAtom n = new SymbolAndChargeQueryAtom(a);
|
|
815
|
+
InverseSymbolSetQueryAtom cr1 = new InverseSymbolSetQueryAtom();
|
|
816
|
+
cr1.addSymbol("H");
|
|
817
|
+
InverseSymbolSetQueryAtom cr2 = new InverseSymbolSetQueryAtom();
|
|
818
|
+
cr2.addSymbol("H");
|
|
819
|
+
|
|
820
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
821
|
+
query.setID(QUATERNARY_NITROGEN_EXCEPTION);
|
|
822
|
+
query.addAtom(nr1);query.addAtom(nr2);
|
|
823
|
+
query.addAtom(cr1);query.addAtom(cr2);
|
|
824
|
+
query.addAtom(n);query.addAtom(c);
|
|
825
|
+
query.addAtom(n);
|
|
826
|
+
query.addBond(new OrderQueryBond(nr1, n, CDKConstants.BONDORDER_SINGLE));
|
|
827
|
+
query.addBond(new OrderQueryBond(nr2, n, CDKConstants.BONDORDER_SINGLE));
|
|
828
|
+
query.addBond(new OrderQueryBond(c, n, CDKConstants.BONDORDER_DOUBLE));
|
|
829
|
+
query.addBond(new OrderQueryBond(cr1, c, CDKConstants.BONDORDER_SINGLE));
|
|
830
|
+
query.addBond(new OrderQueryBond(cr2, c, CDKConstants.BONDORDER_SINGLE));
|
|
831
|
+
|
|
832
|
+
return query;
|
|
833
|
+
}
|
|
834
|
+
// R-C(=O)-OH
|
|
835
|
+
public static QueryAtomContainer carboxylicAcid() {
|
|
836
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
837
|
+
query.setID(CARBOXYLIC_ACID);
|
|
838
|
+
ReallyAnyAtom r = new ReallyAnyAtom();
|
|
839
|
+
r.setProperty(DONTMARK,query.getID());
|
|
840
|
+
|
|
841
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
842
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
843
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
844
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
845
|
+
query.addAtom(r); query.addAtom(c);
|
|
846
|
+
query.addAtom(o1); query.addAtom(o2);query.addAtom(h);
|
|
847
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));
|
|
848
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));
|
|
849
|
+
query.addBond(new OrderQueryBond(h, o1, CDKConstants.BONDORDER_SINGLE));
|
|
850
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
851
|
+
return query;
|
|
852
|
+
}
|
|
853
|
+
public static QueryAtomContainer acyclic_acetal() {
|
|
854
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
855
|
+
query.setID(ACETAL);
|
|
856
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[3];
|
|
857
|
+
for (int i =0; i < 3; i++) {
|
|
858
|
+
c[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
859
|
+
query.addAtom(c[i]);
|
|
860
|
+
}
|
|
861
|
+
SymbolQueryAtom[] o = new SymbolQueryAtom[2];
|
|
862
|
+
for (int i =0; i < 2; i++) {
|
|
863
|
+
o[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
864
|
+
query.addAtom(o[i]);
|
|
865
|
+
}
|
|
866
|
+
query.addBond(new TopologyOrderQueryBond(c[0], o[0], CDKConstants.BONDORDER_SINGLE,false));
|
|
867
|
+
query.addBond(new TopologyOrderQueryBond(c[1], o[0], CDKConstants.BONDORDER_SINGLE,false));
|
|
868
|
+
query.addBond(new TopologyOrderQueryBond(c[1], o[1], CDKConstants.BONDORDER_SINGLE,false));
|
|
869
|
+
query.addBond(new TopologyOrderQueryBond(c[2], o[1], CDKConstants.BONDORDER_SINGLE,false));
|
|
870
|
+
return query;
|
|
871
|
+
|
|
872
|
+
}
|
|
873
|
+
// -C-O-C-O-C-
|
|
874
|
+
public static QueryAtomContainer acetal() {
|
|
875
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
876
|
+
query.setID(ACETAL);
|
|
877
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[3];
|
|
878
|
+
for (int i =0; i < 3; i++) {
|
|
879
|
+
c[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
880
|
+
query.addAtom(c[i]);
|
|
881
|
+
}
|
|
882
|
+
SymbolQueryAtom[] o = new SymbolQueryAtom[2];
|
|
883
|
+
for (int i =0; i < 2; i++) {
|
|
884
|
+
o[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
885
|
+
query.addAtom(o[i]);
|
|
886
|
+
}
|
|
887
|
+
query.addBond(new OrderQueryBond(c[0], o[0], CDKConstants.BONDORDER_SINGLE));
|
|
888
|
+
query.addBond(new OrderQueryBond(c[1], o[0], CDKConstants.BONDORDER_SINGLE));
|
|
889
|
+
query.addBond(new OrderQueryBond(c[1], o[1], CDKConstants.BONDORDER_SINGLE));
|
|
890
|
+
query.addBond(new OrderQueryBond(c[2], o[1], CDKConstants.BONDORDER_SINGLE));
|
|
891
|
+
return query;
|
|
892
|
+
}
|
|
893
|
+
|
|
894
|
+
// C-O-C have to check if substituted
|
|
895
|
+
public static QueryAtomContainer ether() {
|
|
896
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
897
|
+
query.setID(ETHER);
|
|
898
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[2];
|
|
899
|
+
for (int i =0; i < 2; i++) {
|
|
900
|
+
r[i] = new CHQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
901
|
+
// r[i].setProperty(DONTMARK,query.getID());
|
|
902
|
+
query.addAtom(r[i]);
|
|
903
|
+
}
|
|
904
|
+
//TotalValencyAtom s = new TotalValencyAtom(2);
|
|
905
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
906
|
+
query.addAtom(s);
|
|
907
|
+
query.addBond(new OrderQueryBond(r[0], s, CDKConstants.BONDORDER_SINGLE));
|
|
908
|
+
query.addBond(new OrderQueryBond(r[1], s, CDKConstants.BONDORDER_SINGLE));
|
|
909
|
+
return query;
|
|
910
|
+
}
|
|
911
|
+
// C-O-C have to check if substituted
|
|
912
|
+
public static QueryAtomContainer alkoxy() {
|
|
913
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
914
|
+
query.setID(ETHER);
|
|
915
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[2];
|
|
916
|
+
for (int i =0; i < 2; i++) {
|
|
917
|
+
r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
918
|
+
query.addAtom(r[i]);
|
|
919
|
+
}
|
|
920
|
+
//TotalValencyAtom s = new TotalValencyAtom(2);
|
|
921
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
922
|
+
query.addAtom(s);
|
|
923
|
+
query.addBond(new OrderQueryBond(r[0], s, CDKConstants.BONDORDER_SINGLE));
|
|
924
|
+
query.addBond(new OrderQueryBond(r[1], s, CDKConstants.BONDORDER_SINGLE));
|
|
925
|
+
return query;
|
|
926
|
+
}
|
|
927
|
+
// C-O-C have to check if substituted
|
|
928
|
+
public static QueryAtomContainer methylether() {
|
|
929
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
930
|
+
query.setID(METHYLETHER);
|
|
931
|
+
|
|
932
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
933
|
+
query.addAtom(o);
|
|
934
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[2];
|
|
935
|
+
for (int i =0; i < 2; i++) {
|
|
936
|
+
r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
937
|
+
query.addAtom(r[i]);
|
|
938
|
+
query.addBond(new OrderQueryBond(r[i], o, CDKConstants.BONDORDER_SINGLE));
|
|
939
|
+
}
|
|
940
|
+
SymbolQueryAtom[] h = new SymbolQueryAtom[3];
|
|
941
|
+
for (int i =0; i < 3; i++) {
|
|
942
|
+
h[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
943
|
+
query.addAtom(h[i]);
|
|
944
|
+
query.addBond(new OrderQueryBond(h[i], r[0], CDKConstants.BONDORDER_SINGLE));
|
|
945
|
+
}
|
|
946
|
+
return query;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
// C-S-C
|
|
950
|
+
public static QueryAtomContainer sulphide() {
|
|
951
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
952
|
+
query.setID(SULPHIDE);
|
|
953
|
+
SymbolQueryAtom[] r = new SymbolQueryAtom[2];
|
|
954
|
+
for (int i =0; i < 2; i++) {
|
|
955
|
+
r[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
956
|
+
query.addAtom(r[i]);
|
|
957
|
+
}
|
|
958
|
+
//TotalValencyAtom s = new TotalValencyAtom(2);
|
|
959
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
960
|
+
query.addAtom(s);
|
|
961
|
+
query.addBond(new OrderQueryBond(r[0], s, CDKConstants.BONDORDER_SINGLE));
|
|
962
|
+
query.addBond(new OrderQueryBond(r[1], s, CDKConstants.BONDORDER_SINGLE));
|
|
963
|
+
return query;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
// R-SH
|
|
967
|
+
public static QueryAtomContainer mercaptan() {
|
|
968
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
969
|
+
query.setID(MERCAPTAN);
|
|
970
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
971
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
972
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
973
|
+
|
|
974
|
+
query.addAtom(s);query.addAtom(c);query.addAtom(h);
|
|
975
|
+
query.addBond(new OrderQueryBond(c, s, CDKConstants.BONDORDER_SINGLE));
|
|
976
|
+
query.addBond(new OrderQueryBond(s, h, CDKConstants.BONDORDER_SINGLE));
|
|
977
|
+
return query;
|
|
978
|
+
}
|
|
979
|
+
//R-S-C(=O)-R'
|
|
980
|
+
//R-S-C(=S)-R'
|
|
981
|
+
public static QueryAtomContainer thioester() {
|
|
982
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
983
|
+
query.setID(THIOESTER);
|
|
984
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
985
|
+
r.addSymbol("H");
|
|
986
|
+
r.addSymbol("S");
|
|
987
|
+
r.addSymbol("O");
|
|
988
|
+
r.setProperty(DONTMARK,query.getID());
|
|
989
|
+
|
|
990
|
+
InverseSymbolSetQueryAtom e = new InverseSymbolSetQueryAtom();
|
|
991
|
+
e.addSymbol("H");
|
|
992
|
+
e.setProperty(DONTMARK,query.getID());
|
|
993
|
+
|
|
994
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
995
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
996
|
+
SymbolSetQueryAtom o2 = new SymbolSetQueryAtom();
|
|
997
|
+
o2.addSymbol("O");
|
|
998
|
+
o2.addSymbol("S");
|
|
999
|
+
|
|
1000
|
+
query.addAtom(r); query.addAtom(e); query.addAtom(c);
|
|
1001
|
+
query.addAtom(s); query.addAtom(o2);
|
|
1002
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));
|
|
1003
|
+
query.addBond(new OrderQueryBond(c, s, CDKConstants.BONDORDER_SINGLE));
|
|
1004
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
1005
|
+
query.addBond(new OrderQueryBond(s, e, CDKConstants.BONDORDER_SINGLE));
|
|
1006
|
+
return query;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
// RC(=O)OR
|
|
1010
|
+
public static QueryAtomContainer ester() {
|
|
1011
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1012
|
+
query.setID(ESTER);
|
|
1013
|
+
ReallyAnyAtom r = new ReallyAnyAtom();
|
|
1014
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1015
|
+
InverseSymbolSetQueryAtom e = new InverseSymbolSetQueryAtom();
|
|
1016
|
+
e.addSymbol("H");
|
|
1017
|
+
e.setProperty(DONTMARK,query.getID());
|
|
1018
|
+
|
|
1019
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1020
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1021
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1022
|
+
query.addAtom(r);
|
|
1023
|
+
query.addAtom(e);
|
|
1024
|
+
query.addAtom(c);
|
|
1025
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1026
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));
|
|
1027
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));
|
|
1028
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
1029
|
+
query.addBond(new OrderQueryBond(o1, e, CDKConstants.BONDORDER_SINGLE));
|
|
1030
|
+
return query;
|
|
1031
|
+
}
|
|
1032
|
+
// ROC(=O)OR
|
|
1033
|
+
public static QueryAtomContainer carbonate() {
|
|
1034
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1035
|
+
query.setID(CARBONATE);
|
|
1036
|
+
ReallyAnyAtom r = new ReallyAnyAtom();
|
|
1037
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1038
|
+
InverseSymbolSetQueryAtom e = new InverseSymbolSetQueryAtom();
|
|
1039
|
+
e.addSymbol("H");
|
|
1040
|
+
e.setProperty(DONTMARK,query.getID());
|
|
1041
|
+
|
|
1042
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1043
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1044
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1045
|
+
SymbolQueryAtom o3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1046
|
+
query.addAtom(r); query.addAtom(e); query.addAtom(c);
|
|
1047
|
+
query.addAtom(o1); query.addAtom(o2); query.addAtom(o3);
|
|
1048
|
+
query.addBond(new OrderQueryBond(o3, r, CDKConstants.BONDORDER_SINGLE));
|
|
1049
|
+
query.addBond(new OrderQueryBond(o3, c, CDKConstants.BONDORDER_SINGLE));
|
|
1050
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));
|
|
1051
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
1052
|
+
query.addBond(new OrderQueryBond(o1, e, CDKConstants.BONDORDER_SINGLE));
|
|
1053
|
+
return query;
|
|
1054
|
+
}
|
|
1055
|
+
public static QueryAtomContainer anhydride() {
|
|
1056
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1057
|
+
query.setID(ANHYDRIDE);
|
|
1058
|
+
|
|
1059
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1060
|
+
|
|
1061
|
+
SymbolQueryAtom r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1062
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1063
|
+
|
|
1064
|
+
SymbolQueryAtom e = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1065
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1066
|
+
|
|
1067
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1068
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1069
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1070
|
+
query.addAtom(r); query.addAtom(e); query.addAtom(c);
|
|
1071
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1072
|
+
query.addBond(new TopologyAnyBond(r, c, true));
|
|
1073
|
+
query.addBond(new TopologyOrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE,true));
|
|
1074
|
+
query.addBond(new TopologyOrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE,false));
|
|
1075
|
+
query.addBond(new TopologyAnyBond(o1, e, true));
|
|
1076
|
+
|
|
1077
|
+
query.addBond(new TopologyOrderQueryBond(e, o, CDKConstants.BONDORDER_DOUBLE,false));
|
|
1078
|
+
return query;
|
|
1079
|
+
}
|
|
1080
|
+
/**
|
|
1081
|
+
*
|
|
1082
|
+
* @param abUnsaturated if true, this will be alpha -beta unsaturated lactone
|
|
1083
|
+
* @return
|
|
1084
|
+
*/
|
|
1085
|
+
public static QueryAtomContainer lactone(boolean abUnsaturated) {
|
|
1086
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1087
|
+
query.setID(LACTONE);
|
|
1088
|
+
|
|
1089
|
+
SymbolQueryAtom r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1090
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
SymbolQueryAtom e = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1094
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1095
|
+
|
|
1096
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1097
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1098
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1099
|
+
query.addAtom(r); query.addAtom(e); query.addAtom(c);
|
|
1100
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1101
|
+
query.addBond(new TopologyAnyBond(r, c, true));
|
|
1102
|
+
query.addBond(new TopologyOrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE,true));
|
|
1103
|
+
query.addBond(new TopologyOrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE,false));
|
|
1104
|
+
query.addBond(new TopologyAnyBond(o1, e, true));
|
|
1105
|
+
|
|
1106
|
+
if (abUnsaturated) {
|
|
1107
|
+
SymbolQueryAtom ab = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1108
|
+
ab.setProperty(DONTMARK,query.getID());
|
|
1109
|
+
query.addAtom(ab);
|
|
1110
|
+
query.addBond(new TopologyOrderQueryBond(r, ab,CDKConstants.BONDORDER_DOUBLE, true));
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
return query;
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
public static QueryAtomContainer lactoneBreakable() {
|
|
1118
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1119
|
+
query.setID(LACTONE);
|
|
1120
|
+
SymbolQueryAtom r = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1121
|
+
//AnyAtom r = new AnyAtom();
|
|
1122
|
+
SymbolQueryAtom e = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1123
|
+
e.setProperty(DONTMARK,query.getID());
|
|
1124
|
+
|
|
1125
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1126
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1127
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1128
|
+
query.addAtom(r); query.addAtom(e); query.addAtom(c);
|
|
1129
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1130
|
+
query.addBond(new TopologyOrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE,true));
|
|
1131
|
+
query.addBond(new TopologyOrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE,true));
|
|
1132
|
+
query.addBond(new TopologyOrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE,false));
|
|
1133
|
+
TopologyOrderQueryBond b = new TopologyOrderQueryBond(o1, e, CDKConstants.BONDORDER_SINGLE,true);
|
|
1134
|
+
b.setProperty(DONTMARK,query.getID());
|
|
1135
|
+
query.addBond(b);
|
|
1136
|
+
return query;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
public static boolean isCyclicDiester(IAtomContainer mol, IRingSet rings) {
|
|
1140
|
+
QueryAtomContainer query = lactone(false);
|
|
1141
|
+
query.setID(CYCLIC_DIESTER);
|
|
1142
|
+
List list = getUniqueBondMap(mol,query,false);
|
|
1143
|
+
|
|
1144
|
+
ArrayList esterGroups = new ArrayList();
|
|
1145
|
+
/*Count ester groups per ring, should be exactly 2
|
|
1146
|
+
* Use the fact that bond map marks each ester group with unique identifier
|
|
1147
|
+
*/
|
|
1148
|
+
if ((list !=null) && (list.size()>=2)) { //can be
|
|
1149
|
+
markMaps(mol,query,list);
|
|
1150
|
+
for (int i=0; i < rings.getAtomContainerCount(); i++) {
|
|
1151
|
+
IRing ring = (IRing) rings.getAtomContainer(i);
|
|
1152
|
+
esterGroups.clear();
|
|
1153
|
+
for (int b=0;b<ring.getBondCount();b++) {
|
|
1154
|
+
Object o = ring.getBond(b).getProperty(query.getID());
|
|
1155
|
+
if (o==null) continue;
|
|
1156
|
+
else if (!esterGroups.contains(o)) esterGroups.add(o);
|
|
1157
|
+
}
|
|
1158
|
+
if (esterGroups.size() == 2) {
|
|
1159
|
+
logger.fine("Ring with two ester groups\tNO");
|
|
1160
|
+
for (int a=0;a<ring.getAtomCount();a++)
|
|
1161
|
+
if (ring.getAtom(a).getSymbol().equals("C")) continue;
|
|
1162
|
+
else if (ring.getAtom(a).getSymbol().equals("O")) {
|
|
1163
|
+
if (ring.getAtom(a).getProperty(query.getID()) == null) {
|
|
1164
|
+
// O atom only allowed if from ester group
|
|
1165
|
+
logger.fine("Heteroring\tYES");
|
|
1166
|
+
return false;
|
|
1167
|
+
}
|
|
1168
|
+
} else {
|
|
1169
|
+
logger.fine("Heteroring\tYES");
|
|
1170
|
+
return false;
|
|
1171
|
+
}
|
|
1172
|
+
logger.fine("Cyclic diester\tYES");
|
|
1173
|
+
return true;
|
|
1174
|
+
}
|
|
1175
|
+
}
|
|
1176
|
+
logger.fine("Ring with two ester groups\tNO");
|
|
1177
|
+
return false;
|
|
1178
|
+
} else {
|
|
1179
|
+
logger.fine("Less than 2 ester groups ");
|
|
1180
|
+
return false;
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
public static QueryAtomContainer isopreneUnit() {
|
|
1184
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1185
|
+
query.setID(ISOPRENE);
|
|
1186
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[5];
|
|
1187
|
+
for (int i =0; i < c.length; i++) {
|
|
1188
|
+
c[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1189
|
+
query.addAtom(c[i]);
|
|
1190
|
+
|
|
1191
|
+
}
|
|
1192
|
+
for (int i =1; i < c.length-1; i++)
|
|
1193
|
+
query.addBond(new SingleOrDoubleQueryBond(c[i-1], c[i]));
|
|
1194
|
+
query.addBond(new OrderQueryBond(c[1], c[4],CDKConstants.BONDORDER_SINGLE));
|
|
1195
|
+
|
|
1196
|
+
return query;
|
|
1197
|
+
}
|
|
1198
|
+
//CC(=O)C
|
|
1199
|
+
public static QueryAtomContainer ketone() {
|
|
1200
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1201
|
+
query.setID(KETONE);
|
|
1202
|
+
|
|
1203
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1204
|
+
InverseSymbolSetQueryAtom[] r = new InverseSymbolSetQueryAtom[2];
|
|
1205
|
+
for (int i =0; i < 2; i++) {
|
|
1206
|
+
r[i] = new InverseSymbolSetQueryAtom();
|
|
1207
|
+
r[i].addSymbol("H");
|
|
1208
|
+
r[i].addSymbol("O");
|
|
1209
|
+
r[i].addSymbol("S");
|
|
1210
|
+
r[i].addSymbol("N");
|
|
1211
|
+
r[i].setProperty(DONTMARK,query.getID());
|
|
1212
|
+
query.addAtom(r[i]);
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1216
|
+
query.addAtom(o);
|
|
1217
|
+
query.addBond(new OrderQueryBond(r[0], c, CDKConstants.BONDORDER_SINGLE));
|
|
1218
|
+
query.addBond(new OrderQueryBond(c, o, CDKConstants.BONDORDER_DOUBLE));
|
|
1219
|
+
query.addBond(new OrderQueryBond(r[1], c, CDKConstants.BONDORDER_SINGLE));
|
|
1220
|
+
return query;
|
|
1221
|
+
}
|
|
1222
|
+
public static QueryAtomContainer ketone_ring() {
|
|
1223
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1224
|
+
query.setID(KETONE);
|
|
1225
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[3];
|
|
1226
|
+
for (int i =0; i < 3; i++) {
|
|
1227
|
+
c[i] = new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),true);
|
|
1228
|
+
query.addAtom(c[i]);
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1231
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1232
|
+
query.addAtom(o);
|
|
1233
|
+
query.addBond(new OrderQueryBond(c[0], c[1], CDKConstants.BONDORDER_SINGLE));
|
|
1234
|
+
query.addBond(new OrderQueryBond(c[1], o, CDKConstants.BONDORDER_DOUBLE));
|
|
1235
|
+
query.addBond(new OrderQueryBond(c[1], c[2], CDKConstants.BONDORDER_SINGLE));
|
|
1236
|
+
return query;
|
|
1237
|
+
}
|
|
1238
|
+
|
|
1239
|
+
public static QueryAtomContainer sidechain_ketone() {
|
|
1240
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1241
|
+
query.setID(KETONE_SIDECHAIN);
|
|
1242
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[3];
|
|
1243
|
+
for (int i =0; i < 3; i++) {
|
|
1244
|
+
if (i==1)
|
|
1245
|
+
c[i] = new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON),false);
|
|
1246
|
+
else
|
|
1247
|
+
c[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1248
|
+
query.addAtom(c[i]);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
SymbolQueryAtom o = new TopologySymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN),false);
|
|
1252
|
+
query.addAtom(o);
|
|
1253
|
+
query.addBond(new OrderQueryBond(c[0], c[1], CDKConstants.BONDORDER_SINGLE));
|
|
1254
|
+
query.addBond(new TopologyOrderQueryBond(c[1], o, CDKConstants.BONDORDER_DOUBLE,false));
|
|
1255
|
+
query.addBond(new OrderQueryBond(c[1], c[2], CDKConstants.BONDORDER_SINGLE));
|
|
1256
|
+
return query;
|
|
1257
|
+
}
|
|
1258
|
+
|
|
1259
|
+
/**
|
|
1260
|
+
* RC(=O)H
|
|
1261
|
+
* An aldehyde is either a functional group consisting of a terminal carbonyl group,
|
|
1262
|
+
* or a compound containing a terminal carbonyl group.
|
|
1263
|
+
* (Where -R represents the carbon chain.)
|
|
1264
|
+
*/
|
|
1265
|
+
public static QueryAtomContainer aldehyde() {
|
|
1266
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1267
|
+
query.setID(ALDEHYDE);
|
|
1268
|
+
/*
|
|
1269
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
1270
|
+
//r.addSymbol("H"); ne moze da poznae formaldehyde
|
|
1271
|
+
r.addSymbol("O"); //shte bude ester ako e O
|
|
1272
|
+
*/
|
|
1273
|
+
SymbolSetQueryAtom r = new SymbolSetQueryAtom();
|
|
1274
|
+
r.addSymbol("C");
|
|
1275
|
+
r.addSymbol("H");
|
|
1276
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1277
|
+
|
|
1278
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1279
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1280
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
1281
|
+
query.addAtom(r);query.addAtom(c);query.addAtom(o);query.addAtom(h);
|
|
1282
|
+
query.addBond(new OrderQueryBond(c, h, CDKConstants.BONDORDER_SINGLE));
|
|
1283
|
+
query.addBond(new OrderQueryBond(c, o, CDKConstants.BONDORDER_DOUBLE));
|
|
1284
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));
|
|
1285
|
+
return query;
|
|
1286
|
+
}
|
|
1287
|
+
//C=O
|
|
1288
|
+
public static QueryAtomContainer carbonyl() {
|
|
1289
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1290
|
+
query.setID(CARBONYL);
|
|
1291
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1292
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1293
|
+
query.addAtom(c);query.addAtom(o);
|
|
1294
|
+
query.addBond(new OrderQueryBond(c, o, CDKConstants.BONDORDER_DOUBLE));
|
|
1295
|
+
return query;
|
|
1296
|
+
}
|
|
1297
|
+
public static QueryAtomContainer ab_unsaturated_carbonyl() {
|
|
1298
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1299
|
+
query.setID(CARBONYL_ABUNSATURATED);
|
|
1300
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1301
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1302
|
+
query.addAtom(c);query.addAtom(o);
|
|
1303
|
+
query.addBond(new OrderQueryBond(c, o, CDKConstants.BONDORDER_DOUBLE));
|
|
1304
|
+
SymbolQueryAtom c1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1305
|
+
query.addBond(new OrderQueryBond(c, c1, CDKConstants.BONDORDER_SINGLE));
|
|
1306
|
+
SymbolQueryAtom c2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1307
|
+
query.addBond(new OrderQueryBond(c2, c1, CDKConstants.BONDORDER_DOUBLE));
|
|
1308
|
+
ReallyAnyAtom a = new ReallyAnyAtom();
|
|
1309
|
+
query.addBond(new AnyOrderQueryBond(c2, a, CDKConstants.BONDORDER_DOUBLE));
|
|
1310
|
+
a.setProperty(DONTMARK,query.getID());
|
|
1311
|
+
return query;
|
|
1312
|
+
}
|
|
1313
|
+
/**
|
|
1314
|
+
*
|
|
1315
|
+
* @param aliphatic - if true looks for aliphatic alcohols, if not for any alcohols
|
|
1316
|
+
* @return
|
|
1317
|
+
*/
|
|
1318
|
+
public static QueryAtomContainer alcohol(boolean aliphatic) {
|
|
1319
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1320
|
+
query.setID(ALCOHOL);
|
|
1321
|
+
CHQueryAtom r;
|
|
1322
|
+
if (aliphatic) {
|
|
1323
|
+
r= new AliphaticCHQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1324
|
+
query.addAtom(r);
|
|
1325
|
+
} else {
|
|
1326
|
+
r = new CHQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1327
|
+
query.addAtom((SymbolQueryAtom)r);
|
|
1328
|
+
}
|
|
1329
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1330
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1331
|
+
query.addAtom(o);
|
|
1332
|
+
SymbolQueryAtom h = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
1333
|
+
query.addAtom(h);
|
|
1334
|
+
query.addBond(new OrderQueryBond(r, o, CDKConstants.BONDORDER_SINGLE));
|
|
1335
|
+
query.addBond(new OrderQueryBond(o, h, CDKConstants.BONDORDER_SINGLE));
|
|
1336
|
+
return query;
|
|
1337
|
+
}
|
|
1338
|
+
//HNS(=O)(=O)(O-Me)N
|
|
1339
|
+
|
|
1340
|
+
public static QueryAtomContainer sulphamate(String[] metals) {
|
|
1341
|
+
SymbolSetQueryAtom me = null;
|
|
1342
|
+
if (metals != null) {
|
|
1343
|
+
me = new SymbolSetQueryAtom();
|
|
1344
|
+
for (int i=0; i < metals.length; i++) me.addSymbol(metals[i]);
|
|
1345
|
+
}
|
|
1346
|
+
QueryAtomContainer q = new QueryAtomContainer();
|
|
1347
|
+
q.setID(SULPHAMATE);
|
|
1348
|
+
IElement atoms[] = {Elements.SULFUR,Elements.NITROGEN,Elements.OXYGEN,Elements.OXYGEN,Elements.OXYGEN,Elements.HYDROGEN};
|
|
1349
|
+
SymbolQueryAtom[] a = new SymbolQueryAtom[6];
|
|
1350
|
+
for (int i= 0; i<(atoms.length-1);i++) {
|
|
1351
|
+
a[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),atoms[i]));
|
|
1352
|
+
q.addAtom(a[i]);
|
|
1353
|
+
}
|
|
1354
|
+
q.addBond(new OrderQueryBond(a[0], a[1], CDKConstants.BONDORDER_SINGLE));//S-N
|
|
1355
|
+
q.addBond(new OrderQueryBond(a[0], a[2], CDKConstants.BONDORDER_DOUBLE));//S=O
|
|
1356
|
+
q.addBond(new OrderQueryBond(a[0], a[3], CDKConstants.BONDORDER_DOUBLE));//S=O
|
|
1357
|
+
q.addBond(new OrderQueryBond(a[0], a[4], CDKConstants.BONDORDER_SINGLE));//S-O
|
|
1358
|
+
//q.addBond(new OrderQueryBond(a[1], a[5], CDKConstants.BONDORDER_SINGLE));//N-H
|
|
1359
|
+
if (me != null)
|
|
1360
|
+
q.addBond(new OrderQueryBond(a[4], me, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1361
|
+
return q;
|
|
1362
|
+
|
|
1363
|
+
}
|
|
1364
|
+
//R-C(=O)O-Me
|
|
1365
|
+
public static QueryAtomContainer saltOfCarboxylicAcid(String[] metals) {
|
|
1366
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1367
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1368
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1369
|
+
for (int i=0; i < metals.length; i++)
|
|
1370
|
+
m.addSymbol(metals[i]);
|
|
1371
|
+
|
|
1372
|
+
SymbolSetQueryAtom r = new SymbolSetQueryAtom();
|
|
1373
|
+
r.setSymbol("*"); r.addSymbol("C"); r.addSymbol("H");
|
|
1374
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1375
|
+
|
|
1376
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1377
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1378
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1379
|
+
query.addAtom(r); query.addAtom(c);
|
|
1380
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1381
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));//R-C
|
|
1382
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1383
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));//C=O
|
|
1384
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1385
|
+
return query;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
//C[O-] Me+
|
|
1389
|
+
public static QueryAtomContainer saltOfCarboxylicAcid1(String[] metals) {
|
|
1390
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1391
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1392
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1393
|
+
for (int i=0; i < metals.length; i++)
|
|
1394
|
+
m.addSymbol(metals[i]);
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1398
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
1399
|
+
a.setFormalCharge(-1);
|
|
1400
|
+
SymbolAndChargeQueryAtom o1 = new SymbolAndChargeQueryAtom(a);
|
|
1401
|
+
query.addAtom(c);
|
|
1402
|
+
query.addAtom(o1);
|
|
1403
|
+
|
|
1404
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1405
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1406
|
+
return query;
|
|
1407
|
+
}
|
|
1408
|
+
//C[O-] Me+
|
|
1409
|
+
public static QueryAtomContainer saltOfCarboxylicAcid2(String[] metals) {
|
|
1410
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1411
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1412
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1413
|
+
for (int i=0; i < metals.length; i++)
|
|
1414
|
+
m.addSymbol(metals[i]);
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1418
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
1419
|
+
a.setFormalCharge(-1);
|
|
1420
|
+
SymbolAndChargeQueryAtom o1 = new SymbolAndChargeQueryAtom(a);
|
|
1421
|
+
query.addAtom(c);
|
|
1422
|
+
query.addAtom(o1);
|
|
1423
|
+
|
|
1424
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1425
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1426
|
+
return query;
|
|
1427
|
+
}
|
|
1428
|
+
|
|
1429
|
+
public static QueryAtomContainer saltOfCarboxylicAcidBreakable(String[] metals) {
|
|
1430
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1431
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1432
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1433
|
+
for (int i=0; i < metals.length; i++)
|
|
1434
|
+
m.addSymbol(metals[i]);
|
|
1435
|
+
m.setProperty(DONTMARK,query.getID());
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
SymbolSetQueryAtom r = new SymbolSetQueryAtom();
|
|
1439
|
+
r.setSymbol("*"); r.addSymbol("C"); r.addSymbol("H");
|
|
1440
|
+
|
|
1441
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1442
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1443
|
+
|
|
1444
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1445
|
+
query.addAtom(r); query.addAtom(c);
|
|
1446
|
+
query.addAtom(o1); query.addAtom(o2);
|
|
1447
|
+
query.addBond(new OrderQueryBond(r, c, CDKConstants.BONDORDER_SINGLE));//R-C
|
|
1448
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1449
|
+
query.addBond(new OrderQueryBond(c, o2, CDKConstants.BONDORDER_DOUBLE));//C=O
|
|
1450
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1451
|
+
return query;
|
|
1452
|
+
}
|
|
1453
|
+
|
|
1454
|
+
//C-[O-] Me+
|
|
1455
|
+
public static QueryAtomContainer saltOfCarboxylicAcidBreakable1(String[] metals) {
|
|
1456
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1457
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1458
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1459
|
+
for (int i=0; i < metals.length; i++)
|
|
1460
|
+
m.addSymbol(metals[i]);
|
|
1461
|
+
m.setProperty(DONTMARK,query.getID());
|
|
1462
|
+
|
|
1463
|
+
|
|
1464
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1465
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
1466
|
+
a.setFormalCharge(-1);
|
|
1467
|
+
SymbolAndChargeQueryAtom o1 = new SymbolAndChargeQueryAtom(a);
|
|
1468
|
+
|
|
1469
|
+
query.addAtom(c);
|
|
1470
|
+
query.addAtom(o1);
|
|
1471
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1472
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1473
|
+
return query;
|
|
1474
|
+
}
|
|
1475
|
+
public static QueryAtomContainer saltOfCarboxylicAcidBreakable2(String[] metals) {
|
|
1476
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1477
|
+
query.setID(CARBOXYLIC_ACID_SALT);
|
|
1478
|
+
SymbolSetQueryAtom m = new SymbolSetQueryAtom();
|
|
1479
|
+
for (int i=0; i < metals.length; i++)
|
|
1480
|
+
m.addSymbol(metals[i]);
|
|
1481
|
+
m.setProperty(DONTMARK,query.getID());
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
SymbolQueryAtom c = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
1485
|
+
IAtom a = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
1486
|
+
a.setFormalCharge(-1);
|
|
1487
|
+
SymbolAndChargeQueryAtom o1 = new SymbolAndChargeQueryAtom(a);
|
|
1488
|
+
|
|
1489
|
+
query.addAtom(c);
|
|
1490
|
+
query.addAtom(o1);
|
|
1491
|
+
query.addBond(new OrderQueryBond(c, o1, CDKConstants.BONDORDER_SINGLE));//C-O
|
|
1492
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));//O-Me
|
|
1493
|
+
return query;
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
//RS(=O)(=O)O
|
|
1497
|
+
public static QueryAtomContainer sulphonate(String[] metals) {
|
|
1498
|
+
return sulphonate(metals,true);
|
|
1499
|
+
}
|
|
1500
|
+
public static QueryAtomContainer sulphonate(String[] metals,boolean bonded) {
|
|
1501
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1502
|
+
query.setID(SULPHONATE);
|
|
1503
|
+
SymbolSetQueryAtom m = null;
|
|
1504
|
+
if (metals != null) {
|
|
1505
|
+
m = new SymbolSetQueryAtom();
|
|
1506
|
+
for (int i=0; i < metals.length; i++)
|
|
1507
|
+
m.addSymbol(metals[i]);
|
|
1508
|
+
query.addAtom(m);
|
|
1509
|
+
}
|
|
1510
|
+
//TODO moze li da ima izob sto atom razlicen ot C na towa miasto
|
|
1511
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
1512
|
+
r.addSymbol("O");
|
|
1513
|
+
r.addSymbol("H");
|
|
1514
|
+
r.addSymbol("N");
|
|
1515
|
+
|
|
1516
|
+
|
|
1517
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1518
|
+
|
|
1519
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
1520
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1521
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1522
|
+
SymbolQueryAtom o3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1523
|
+
query.addAtom(r); query.addAtom(s);
|
|
1524
|
+
query.addAtom(o1); query.addAtom(o2); query.addAtom(o3);
|
|
1525
|
+
query.addBond(new OrderQueryBond(r, s, CDKConstants.BONDORDER_SINGLE));
|
|
1526
|
+
query.addBond(new OrderQueryBond(s, o1, CDKConstants.BONDORDER_SINGLE));
|
|
1527
|
+
query.addBond(new OrderQueryBond(s, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
1528
|
+
query.addBond(new OrderQueryBond(s, o3, CDKConstants.BONDORDER_DOUBLE));
|
|
1529
|
+
if ((m != null) && bonded)
|
|
1530
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));
|
|
1531
|
+
return query;
|
|
1532
|
+
}
|
|
1533
|
+
//[setOfAtoms]-OS(O-subst)(=O)(=O)O
|
|
1534
|
+
public static QueryAtomContainer sulphate(String[] setOfAtoms) {
|
|
1535
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1536
|
+
query.setID(SULPHATE);
|
|
1537
|
+
SymbolSetQueryAtom m = null;
|
|
1538
|
+
if (setOfAtoms != null) {
|
|
1539
|
+
m = new SymbolSetQueryAtom();
|
|
1540
|
+
for (int i=0; i < setOfAtoms.length; i++)
|
|
1541
|
+
m.addSymbol(setOfAtoms[i]);
|
|
1542
|
+
}
|
|
1543
|
+
ReallyAnyAtom r = new ReallyAnyAtom();
|
|
1544
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1545
|
+
|
|
1546
|
+
SymbolQueryAtom s = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR));
|
|
1547
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1548
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1549
|
+
SymbolQueryAtom o3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1550
|
+
SymbolQueryAtom o4 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1551
|
+
|
|
1552
|
+
query.addAtom(s);query.addAtom(r);
|
|
1553
|
+
query.addAtom(o1); query.addAtom(o2); query.addAtom(o3);
|
|
1554
|
+
|
|
1555
|
+
query.addBond(new OrderQueryBond(s, o1, CDKConstants.BONDORDER_SINGLE));
|
|
1556
|
+
query.addBond(new OrderQueryBond(s, o2, CDKConstants.BONDORDER_DOUBLE));
|
|
1557
|
+
query.addBond(new OrderQueryBond(s, o3, CDKConstants.BONDORDER_DOUBLE));
|
|
1558
|
+
query.addBond(new OrderQueryBond(s, o4, CDKConstants.BONDORDER_SINGLE));
|
|
1559
|
+
if (m != null)
|
|
1560
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));
|
|
1561
|
+
query.addBond(new OrderQueryBond(o4, r, CDKConstants.BONDORDER_SINGLE));
|
|
1562
|
+
return query;
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
public static QueryAtomContainer phosphate(String[] setOfAtoms) {
|
|
1566
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1567
|
+
query.setID(PHOSPHATE);
|
|
1568
|
+
SymbolSetQueryAtom m = null;
|
|
1569
|
+
if (setOfAtoms != null) {
|
|
1570
|
+
m = new SymbolSetQueryAtom();
|
|
1571
|
+
for (int i=0; i < setOfAtoms.length; i++)
|
|
1572
|
+
m.addSymbol(setOfAtoms[i]);
|
|
1573
|
+
}
|
|
1574
|
+
ReallyAnyAtom r = new ReallyAnyAtom();
|
|
1575
|
+
r.setProperty(DONTMARK,query.getID());
|
|
1576
|
+
|
|
1577
|
+
SymbolQueryAtom p = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.PHOSPHORUS));
|
|
1578
|
+
SymbolQueryAtom o1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1579
|
+
//o1.setCharge(-1.0);
|
|
1580
|
+
SymbolQueryAtom o2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1581
|
+
SymbolQueryAtom o3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
1582
|
+
|
|
1583
|
+
|
|
1584
|
+
query.addAtom(p);query.addAtom(r);
|
|
1585
|
+
query.addAtom(o1); query.addAtom(o2); query.addAtom(o3);
|
|
1586
|
+
|
|
1587
|
+
query.addBond(new OrderQueryBond(p, o1, CDKConstants.BONDORDER_SINGLE));
|
|
1588
|
+
query.addBond(new OrderQueryBond(p, o2, CDKConstants.BONDORDER_SINGLE));
|
|
1589
|
+
query.addBond(new OrderQueryBond(p, o3, CDKConstants.BONDORDER_DOUBLE));
|
|
1590
|
+
|
|
1591
|
+
if (m != null)
|
|
1592
|
+
query.addBond(new OrderQueryBond(o1, m, CDKConstants.BONDORDER_SINGLE));
|
|
1593
|
+
query.addBond(new OrderQueryBond(o2, r, CDKConstants.BONDORDER_SINGLE));
|
|
1594
|
+
return query;
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
//polyoxyethylene
|
|
1598
|
+
public static QueryAtomContainer polyoxyethylene(int n) {
|
|
1599
|
+
QueryAtomContainer query = new QueryAtomContainer();
|
|
1600
|
+
query.setID(POLYOXYETHYLENE);
|
|
1601
|
+
ReallyAnyAtom a1 = new ReallyAnyAtom();
|
|
1602
|
+
a1.setProperty(DONTMARK,query.getID());
|
|
1603
|
+
ReallyAnyAtom a2 = new ReallyAnyAtom();
|
|
1604
|
+
a2.setProperty(DONTMARK,query.getID());
|
|
1605
|
+
|
|
1606
|
+
SymbolQueryAtom o;
|
|
1607
|
+
SymbolQueryAtom[] c = new SymbolQueryAtom[2];
|
|
1608
|
+
SymbolQueryAtom[] h = new SymbolQueryAtom[4];
|
|
1609
|
+
for (int i = 0; i < n; i++) {
|
|
1610
|
+
o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN)); query.addAtom(o);
|
|
1611
|
+
if (i>0)
|
|
1612
|
+
query.addBond(new OrderQueryBond(o, c[1], CDKConstants.BONDORDER_SINGLE));
|
|
1613
|
+
else
|
|
1614
|
+
query.addBond(new OrderQueryBond(o, a1, CDKConstants.BONDORDER_SINGLE));
|
|
1615
|
+
for (int j=0; j < 2; j++) {
|
|
1616
|
+
c[j] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON)); query.addAtom(c[j]);
|
|
1617
|
+
for (int j1=0; j1 < 2; j1++) {
|
|
1618
|
+
h[j*2+j1] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
1619
|
+
query.addAtom(h[j*2+j1]);
|
|
1620
|
+
query.addBond(new OrderQueryBond(c[j], h[j*2+j1], CDKConstants.BONDORDER_SINGLE));
|
|
1621
|
+
}
|
|
1622
|
+
}
|
|
1623
|
+
query.addBond(new OrderQueryBond(o, c[0], CDKConstants.BONDORDER_SINGLE));
|
|
1624
|
+
query.addBond(new OrderQueryBond(c[0], c[1], CDKConstants.BONDORDER_SINGLE));
|
|
1625
|
+
if (i==(n-1))
|
|
1626
|
+
query.addBond(new OrderQueryBond(a2, c[1], CDKConstants.BONDORDER_SINGLE));
|
|
1627
|
+
}
|
|
1628
|
+
return query;
|
|
1629
|
+
|
|
1630
|
+
}
|
|
1631
|
+
public static IAtomContainer cloneDiscardRingAtomAndBonds(
|
|
1632
|
+
IAtomContainer ac, IRing ring ) {
|
|
1633
|
+
IAtomContainer result = new org.openscience.cdk.AtomContainer();
|
|
1634
|
+
Hashtable table = new Hashtable();
|
|
1635
|
+
for (int i =0; i < ac.getAtomCount(); i++) {
|
|
1636
|
+
IAtom a = ac.getAtom(i);
|
|
1637
|
+
if (ring.contains(a)) {
|
|
1638
|
+
//if (!a.getSymbol().equals("C")) continue;
|
|
1639
|
+
continue;
|
|
1640
|
+
}
|
|
1641
|
+
//Atom newAtom = (Atom) a.clone();
|
|
1642
|
+
table.put(a,a);
|
|
1643
|
+
result.addAtom(a);
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
for (int i =0; i < ac.getBondCount(); i++) {
|
|
1647
|
+
IBond b = ac.getBond(i);
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
IAtom a1 = (IAtom) table.get(b.getAtom(0));
|
|
1651
|
+
if (a1 == null) continue;
|
|
1652
|
+
IAtom a2 = (IAtom) table.get(b.getAtom(1));
|
|
1653
|
+
if (a2 == null) continue;
|
|
1654
|
+
//Bond newBond = MoleculeTools.newBond(builder,a1, a2, b.getOrder());
|
|
1655
|
+
//newBond.setFlag(CDKConstants.ISAROMATIC,b.getFlag(CDKConstants.ISAROMATIC));
|
|
1656
|
+
//if (ring.contains(a1) && ring.contains(a2)) continue;
|
|
1657
|
+
result.addBond(b);
|
|
1658
|
+
}
|
|
1659
|
+
return result;
|
|
1660
|
+
}
|
|
1661
|
+
|
|
1662
|
+
|
|
1663
|
+
/**
|
|
1664
|
+
*
|
|
1665
|
+
* @param mol - The molecule to be searched {@link AtomContainer}
|
|
1666
|
+
* @param q - The query {@link AtomContainer}
|
|
1667
|
+
* @param isPreprocessed - whether the molecule was preprocessed by {@link #preProcess(IAtomContainer)}
|
|
1668
|
+
* @return List {@link List}
|
|
1669
|
+
*/
|
|
1670
|
+
public static List getBondMap(IAtomContainer mol, IAtomContainer q,boolean isPreprocessed) {
|
|
1671
|
+
logger.fine("getBondMap\t"+q.getID());
|
|
1672
|
+
List list = null;
|
|
1673
|
+
if (!isPreprocessed && needsPreprocessing(q)) {
|
|
1674
|
+
preProcess(mol);
|
|
1675
|
+
isPreprocessed = true;
|
|
1676
|
+
}
|
|
1677
|
+
try {
|
|
1678
|
+
list = UniversalIsomorphismTester.getSubgraphMaps(mol,q);
|
|
1679
|
+
markMaps(mol,q,list);
|
|
1680
|
+
|
|
1681
|
+
} catch (Exception x) {
|
|
1682
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
1683
|
+
list = null;
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
|
|
1687
|
+
return list;
|
|
1688
|
+
}
|
|
1689
|
+
protected static String getKeyFromMap(RMap rmap) {
|
|
1690
|
+
return rmap.getId1() + "-" + rmap.getId2();
|
|
1691
|
+
}
|
|
1692
|
+
protected static boolean isOverlapped(
|
|
1693
|
+
IAtomContainer mol,
|
|
1694
|
+
IAtomContainer q, List first) {
|
|
1695
|
+
String id = q.getID();
|
|
1696
|
+
boolean overlaped = false;
|
|
1697
|
+
for (int i = 0; i < first.size(); i++) {
|
|
1698
|
+
RMap rmap = (RMap)first.get(i);
|
|
1699
|
+
IBond b1 = ((IBond) mol.getBond(rmap.getId1()));
|
|
1700
|
+
IBond b2 = ((IBond) q.getBond(rmap.getId2()));
|
|
1701
|
+
|
|
1702
|
+
Object o = b2.getProperty(DONTMARK);
|
|
1703
|
+
if ((o != null) && (o.equals(id))) continue;
|
|
1704
|
+
|
|
1705
|
+
o = b1.getProperty(ALLOCATED);
|
|
1706
|
+
if ((o != null) && (!o.equals(id))) {
|
|
1707
|
+
logger.fine("Possible overlap of group\t"+id+"\tand\t"+o.toString()+"\t");
|
|
1708
|
+
overlaped = true;
|
|
1709
|
+
break;
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
return overlaped;
|
|
1713
|
+
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
public static List getUniqueBondMap(IAtomContainer mol, IAtomContainer q, boolean isPreprocessed) {
|
|
1717
|
+
if (q.getAtomCount() > mol.getAtomCount()) {
|
|
1718
|
+
logger.fine("A query with more atoms than a molecule!");
|
|
1719
|
+
return null;
|
|
1720
|
+
}
|
|
1721
|
+
List list = null;
|
|
1722
|
+
//try {
|
|
1723
|
+
//this is bonds map
|
|
1724
|
+
if (!isPreprocessed && needsPreprocessing(q)) {
|
|
1725
|
+
preProcess(mol);
|
|
1726
|
+
isPreprocessed = true;
|
|
1727
|
+
}
|
|
1728
|
+
try {
|
|
1729
|
+
list = UniversalIsomorphismTester.getSubgraphMaps(mol,q);
|
|
1730
|
+
} catch (CDKException x) {
|
|
1731
|
+
list = null;
|
|
1732
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
1733
|
+
}
|
|
1734
|
+
if ((list == null) || (list.size()==0))
|
|
1735
|
+
logger.fine("getUniqueBondMap\t"+q.getID()+"\t"+AbstractRule.MSG_NO);
|
|
1736
|
+
else
|
|
1737
|
+
logger.fine("getUniqueBondMap\t"+q.getID()+"\t"+AbstractRule.MSG_YES);
|
|
1738
|
+
if (list.size() < 2) return list;
|
|
1739
|
+
//else delete redundant solutions
|
|
1740
|
+
TreeMap all = new TreeMap(); //to contain all redundant solutions
|
|
1741
|
+
TreeMap aMap = new TreeMap(); //current analyzed list of Rmap in string form
|
|
1742
|
+
|
|
1743
|
+
//this is to get rid of symmetric and overlaping solutions (if any)
|
|
1744
|
+
boolean[] keep = new boolean[list.size()];
|
|
1745
|
+
int[] mappedBonds = new int[mol.getBondCount()];
|
|
1746
|
+
for (int j=0; j < mappedBonds.length; j++) mappedBonds[j] = -1;
|
|
1747
|
+
|
|
1748
|
+
//TODO have to take care if ArrayList of RMap is returned instead of ArrayList of ArrayList of RMap
|
|
1749
|
+
//logger.fine(FunctionalGroups.mapToString(mol));
|
|
1750
|
+
|
|
1751
|
+
for (int j = list.size()-1; j >=0 ; j--)
|
|
1752
|
+
if (isOverlapped(mol, q,(List)list.get(j))) {
|
|
1753
|
+
logger.fine("Remove overlaped group "+q.getID());
|
|
1754
|
+
list.remove(j);
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
for (int j = 0; j < list.size(); j++) {
|
|
1758
|
+
List thisMap = (List)list.get(j);
|
|
1759
|
+
aMap.clear();
|
|
1760
|
+
for (int i = 0; i < thisMap.size(); i++) {
|
|
1761
|
+
RMap rmap = (RMap)thisMap.get(i);
|
|
1762
|
+
|
|
1763
|
+
//IAtom[] a2 = ((IBond) q.getBond(rmap.getId2())).getAtoms();
|
|
1764
|
+
IBond b2 = (IBond) q.getBond(rmap.getId2());
|
|
1765
|
+
|
|
1766
|
+
if (mappedBonds[rmap.getId1()] > 0) {
|
|
1767
|
+
//this bond is already mapped (i.e. overlapped patterns)
|
|
1768
|
+
//clear mark for bonds only in the current map
|
|
1769
|
+
for (int k=0; k < mappedBonds.length; k++)
|
|
1770
|
+
if (mappedBonds[k]==0) mappedBonds[k] =-1;
|
|
1771
|
+
aMap.clear();
|
|
1772
|
+
break;
|
|
1773
|
+
} else {
|
|
1774
|
+
//mark bonds in the current map
|
|
1775
|
+
|
|
1776
|
+
if (b2.getAtom(0).getSymbol().equals("R")) continue;
|
|
1777
|
+
if (b2.getAtom(1).getSymbol().equals("R")) continue;
|
|
1778
|
+
|
|
1779
|
+
/*
|
|
1780
|
+
Object o = a2[0].getProperty(DONTMARK);
|
|
1781
|
+
if (o != null) continue;
|
|
1782
|
+
o = a2[1].getProperty(DONTMARK);
|
|
1783
|
+
if (o != null) continue;
|
|
1784
|
+
*/
|
|
1785
|
+
|
|
1786
|
+
mappedBonds[rmap.getId1()] = 0;
|
|
1787
|
+
//if (a2[0].getSymbol().equals("H")) continue;
|
|
1788
|
+
//if (a2[1].getSymbol().equals("H")) continue;
|
|
1789
|
+
|
|
1790
|
+
aMap.put(getKeyFromMap(rmap),rmap);
|
|
1791
|
+
}
|
|
1792
|
+
}
|
|
1793
|
+
for (int k=0; k < mappedBonds.length; k++)
|
|
1794
|
+
if (mappedBonds[k]==0) mappedBonds[k] =1;
|
|
1795
|
+
if (aMap.size() == 0) {
|
|
1796
|
+
keep[j] = false; continue;
|
|
1797
|
+
} else {
|
|
1798
|
+
String bondMap = aMap.keySet().toString();
|
|
1799
|
+
|
|
1800
|
+
//logger.fine(bondMap);
|
|
1801
|
+
if (all.containsKey(bondMap))
|
|
1802
|
+
keep[j] = false;
|
|
1803
|
+
else {
|
|
1804
|
+
keep[j] = true;
|
|
1805
|
+
all.put(bondMap,thisMap);
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
}
|
|
1809
|
+
for (int j = (list.size()-1); j >=0 ; j--)
|
|
1810
|
+
if (!keep[j]) list.remove(j);
|
|
1811
|
+
|
|
1812
|
+
return list;
|
|
1813
|
+
|
|
1814
|
+
}
|
|
1815
|
+
public static int mark(IAtomContainer mol,ArrayList elements) {
|
|
1816
|
+
int hydroCarbonCount = 0;
|
|
1817
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
1818
|
+
IAtom a = mol.getAtom(i);
|
|
1819
|
+
if (elements.contains(a.getSymbol()))
|
|
1820
|
+
a.setProperty(a.getSymbol(),new Integer(i));
|
|
1821
|
+
}
|
|
1822
|
+
return hydroCarbonCount;
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
public static int markCHn(IAtomContainer mol) {
|
|
1826
|
+
List neighbors = null;
|
|
1827
|
+
int hydroCarbonCount = 0;
|
|
1828
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
1829
|
+
IAtom a = mol.getAtom(i);
|
|
1830
|
+
if (!a.getSymbol().equals("C")) continue;
|
|
1831
|
+
neighbors = mol.getConnectedAtomsList(a);
|
|
1832
|
+
|
|
1833
|
+
int hydrogens = 0;
|
|
1834
|
+
int carbons = 0;
|
|
1835
|
+
for (int j=0; j < neighbors.size(); j++) {
|
|
1836
|
+
IAtom n = (IAtom) neighbors.get(j);
|
|
1837
|
+
if (n.getSymbol().equals("H")) hydrogens++;
|
|
1838
|
+
else if (n.getSymbol().equals("C")) carbons++;
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1841
|
+
String key = "";
|
|
1842
|
+
switch (hydrogens) {
|
|
1843
|
+
case 0: {
|
|
1844
|
+
if (carbons==neighbors.size())
|
|
1845
|
+
key = C; break;
|
|
1846
|
+
}
|
|
1847
|
+
case 1: {
|
|
1848
|
+
key = CH; break;
|
|
1849
|
+
}
|
|
1850
|
+
case 2: {
|
|
1851
|
+
key = CH2;break;
|
|
1852
|
+
}
|
|
1853
|
+
case 3: {
|
|
1854
|
+
key = CH3;break;
|
|
1855
|
+
|
|
1856
|
+
}
|
|
1857
|
+
default : {
|
|
1858
|
+
}
|
|
1859
|
+
}
|
|
1860
|
+
hydroCarbonCount++;
|
|
1861
|
+
a.setProperty(key,new Integer(hydroCarbonCount));
|
|
1862
|
+
}
|
|
1863
|
+
return hydroCarbonCount;
|
|
1864
|
+
}
|
|
1865
|
+
public static void markOneMap(
|
|
1866
|
+
IAtomContainer mol,
|
|
1867
|
+
IAtomContainer q, List first, int j) {
|
|
1868
|
+
String id = q.getID();
|
|
1869
|
+
for (int i = 0; i < first.size(); i++) {
|
|
1870
|
+
RMap rmap = (RMap)first.get(i);
|
|
1871
|
+
IBond b2 = q.getBond(rmap.getId2());
|
|
1872
|
+
//IAtom[] a2 = b2.getAtoms();
|
|
1873
|
+
|
|
1874
|
+
//will not mark bonds that does not belong to the group but to the connected fragments
|
|
1875
|
+
boolean markIt = true;
|
|
1876
|
+
for (int k=0; k<b2.getAtomCount();k++) {
|
|
1877
|
+
IAtom a2 = b2.getAtom(k);
|
|
1878
|
+
if (a2 instanceof ReallyAnyAtom) {
|
|
1879
|
+
markIt = false; break;
|
|
1880
|
+
}
|
|
1881
|
+
Object o =a2.getProperty(DONTMARK);
|
|
1882
|
+
if (o != null) {
|
|
1883
|
+
markIt = false;break;
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
if (!markIt) continue; //will not mark this bond
|
|
1887
|
+
|
|
1888
|
+
Integer m = new Integer(j+1);
|
|
1889
|
+
IBond b1 = mol.getBond(rmap.getId1());
|
|
1890
|
+
b1.setProperty(id,m);
|
|
1891
|
+
b1.setProperty(ALLOCATED,id);
|
|
1892
|
+
|
|
1893
|
+
|
|
1894
|
+
for (int k=0; k < b1.getAtomCount(); k++) {
|
|
1895
|
+
b1.getAtom(k).setProperty(id,m);
|
|
1896
|
+
b1.getAtom(k).setProperty(ALLOCATED,id);
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
}
|
|
1901
|
+
|
|
1902
|
+
public static void markMaps(
|
|
1903
|
+
IAtomContainer mol,
|
|
1904
|
+
IAtomContainer q, List list) {
|
|
1905
|
+
if (list == null) return;
|
|
1906
|
+
|
|
1907
|
+
if ((list.size()>0) && (list.get(0) instanceof RMap)) {
|
|
1908
|
+
markOneMap(mol,q,list,1);
|
|
1909
|
+
} else
|
|
1910
|
+
for (int j = 0; j < list.size(); j++) {
|
|
1911
|
+
List first = (List)list.get(j);
|
|
1912
|
+
markOneMap(mol,q,first,j);
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
|
|
1916
|
+
public static void mapHydrocarbon(IMolecule mol) {
|
|
1917
|
+
for (int i=0; i < mol.getAtomCount(); i++) {
|
|
1918
|
+
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1921
|
+
public static StringBuffer mapToString(IAtomContainer mol,String id) {
|
|
1922
|
+
StringBuffer b = new StringBuffer();
|
|
1923
|
+
|
|
1924
|
+
b.append("Atoms\t");
|
|
1925
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
1926
|
+
Object o = mol.getAtom(i).getProperty(id);
|
|
1927
|
+
b.append((i+1));
|
|
1928
|
+
b.append('\t');
|
|
1929
|
+
b.append(mol.getAtom(i).getSymbol());
|
|
1930
|
+
b.append('\t');
|
|
1931
|
+
b.append(id);
|
|
1932
|
+
b.append('\t');
|
|
1933
|
+
b.append(o);
|
|
1934
|
+
b.append('\t');
|
|
1935
|
+
}
|
|
1936
|
+
b.append("Bonds\t");
|
|
1937
|
+
for (int i =0; i < mol.getBondCount(); i++) {
|
|
1938
|
+
Object o = mol.getBond(i).getProperty(id);
|
|
1939
|
+
b.append((i+1));
|
|
1940
|
+
b.append('\t');
|
|
1941
|
+
b.append(mol.getBond(i).getAtom(0).getSymbol());
|
|
1942
|
+
b.append('-');
|
|
1943
|
+
b.append(mol.getBond(i).getAtom(1).getSymbol());
|
|
1944
|
+
b.append('\t');
|
|
1945
|
+
b.append(id);
|
|
1946
|
+
b.append('\t');
|
|
1947
|
+
b.append(o);
|
|
1948
|
+
b.append('\t');
|
|
1949
|
+
}
|
|
1950
|
+
return b;
|
|
1951
|
+
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1954
|
+
public static StringBuffer mapToString(IAtomContainer mol,
|
|
1955
|
+
Collection id) {
|
|
1956
|
+
StringBuffer b = new StringBuffer();
|
|
1957
|
+
boolean[] f = null;
|
|
1958
|
+
IAtom a = null;
|
|
1959
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
1960
|
+
a = mol.getAtom(i);
|
|
1961
|
+
b.append((i+1));
|
|
1962
|
+
b.append('\t');
|
|
1963
|
+
b.append(a.getSymbol());
|
|
1964
|
+
f = a.getFlags();
|
|
1965
|
+
for (int j=0; j < f.length; j++) if (f[j])
|
|
1966
|
+
switch (j) {
|
|
1967
|
+
case (CDKConstants.ISALIPHATIC): { b.append("\taliphatic\t"); break;}
|
|
1968
|
+
case (CDKConstants.ISAROMATIC): { b.append("\taromatic\t"); break;}
|
|
1969
|
+
case (CDKConstants.ISINRING): { b.append("\tin ring\t"); break;}
|
|
1970
|
+
}
|
|
1971
|
+
|
|
1972
|
+
Iterator iterator = id.iterator();
|
|
1973
|
+
while(iterator.hasNext()) {
|
|
1974
|
+
Object anID = iterator.next();
|
|
1975
|
+
Object o = a.getProperty(anID);
|
|
1976
|
+
if (o!=null) {
|
|
1977
|
+
b.append('\t');
|
|
1978
|
+
b.append(anID);
|
|
1979
|
+
b.append('\t');
|
|
1980
|
+
b.append(o);
|
|
1981
|
+
}
|
|
1982
|
+
}
|
|
1983
|
+
b.append('\t');
|
|
1984
|
+
}
|
|
1985
|
+
return b;
|
|
1986
|
+
}
|
|
1987
|
+
|
|
1988
|
+
public static StringBuilder mapToString(IAtomContainer mol) {
|
|
1989
|
+
StringBuilder b = new StringBuilder();
|
|
1990
|
+
boolean[] f = null;
|
|
1991
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
1992
|
+
|
|
1993
|
+
IAtom a = mol.getAtom(i);
|
|
1994
|
+
b.append((i+1));
|
|
1995
|
+
b.append(')');
|
|
1996
|
+
b.append(a.getSymbol());
|
|
1997
|
+
|
|
1998
|
+
if ((a.getFormalCharge() != null) && (a.getFormalCharge() != 0))
|
|
1999
|
+
b.append(a.getFormalCharge());
|
|
2000
|
+
b.append(' ');
|
|
2001
|
+
|
|
2002
|
+
f = a.getFlags();
|
|
2003
|
+
for (int j=0; j < f.length; j++) if (f[j])
|
|
2004
|
+
switch (j) {
|
|
2005
|
+
case (CDKConstants.ISALIPHATIC): { b.append("[aliphatic] "); break;}
|
|
2006
|
+
case (CDKConstants.ISAROMATIC): { b.append("[aromatic] "); break;}
|
|
2007
|
+
case (CDKConstants.ISINRING): { b.append("[in ring] "); break;}
|
|
2008
|
+
}
|
|
2009
|
+
|
|
2010
|
+
Map h = a.getProperties();
|
|
2011
|
+
for (Iterator e = h.keySet().iterator();e.hasNext();) {
|
|
2012
|
+
Object key = e.next();
|
|
2013
|
+
Object o = a.getProperty(key);
|
|
2014
|
+
if (o!=null) {
|
|
2015
|
+
b.append('[');
|
|
2016
|
+
b.append(key);
|
|
2017
|
+
b.append("] ");
|
|
2018
|
+
b.append(o);
|
|
2019
|
+
}
|
|
2020
|
+
}
|
|
2021
|
+
|
|
2022
|
+
b.append(' ');
|
|
2023
|
+
|
|
2024
|
+
}
|
|
2025
|
+
b.append("\nBonds\t");
|
|
2026
|
+
for (int i =0; i < mol.getBondCount(); i++) {
|
|
2027
|
+
b.append((i+1));
|
|
2028
|
+
b.append('\t');
|
|
2029
|
+
b.append(mol.getBond(i).getAtom(0).getSymbol());
|
|
2030
|
+
b.append('-');
|
|
2031
|
+
b.append(mol.getBond(i).getAtom(1).getSymbol());
|
|
2032
|
+
b.append('\t');
|
|
2033
|
+
Map h = mol.getBond(i).getProperties();
|
|
2034
|
+
for (Iterator e = h.keySet().iterator();e.hasNext();) {
|
|
2035
|
+
Object key = e.next();
|
|
2036
|
+
Object o = mol.getBond(i).getProperty(key);
|
|
2037
|
+
if (o!=null) {
|
|
2038
|
+
b.append('[');
|
|
2039
|
+
b.append(key);
|
|
2040
|
+
b.append("] ");
|
|
2041
|
+
b.append(o);
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
b.append('\t');
|
|
2045
|
+
}
|
|
2046
|
+
|
|
2047
|
+
return b;
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
/*
|
|
2051
|
+
public static boolean isSubstructure(AtomContainer mol, AtomContainer query ) throws CDKException {
|
|
2052
|
+
logger.fine("Checking if has substructure \t",query.getID());
|
|
2053
|
+
if (UniversalIsomorphismTester.isSubgraph(mol,query)) {
|
|
2054
|
+
logger.fine("Substructure FOUND \t",query.getID());
|
|
2055
|
+
return true;
|
|
2056
|
+
} else {
|
|
2057
|
+
logger.fine("Substructure NOT found \t",query.getID());
|
|
2058
|
+
return false;
|
|
2059
|
+
}
|
|
2060
|
+
}
|
|
2061
|
+
*/
|
|
2062
|
+
/**
|
|
2063
|
+
* @param mol
|
|
2064
|
+
* @param query ArrayList of AtomContainer - - the list of substructures to be searched for
|
|
2065
|
+
* @return true if any of the fragments are a substructure of mol
|
|
2066
|
+
* @throws CDKException
|
|
2067
|
+
*/
|
|
2068
|
+
public static boolean hasAnySubstructure(IAtomContainer mol, ArrayList query ) throws CDKException {
|
|
2069
|
+
return hasAnySubstructure(mol, query,null);
|
|
2070
|
+
}
|
|
2071
|
+
public static boolean hasAnySubstructure(IAtomContainer mol, ArrayList query ,IAtomContainer selected) throws CDKException {
|
|
2072
|
+
if ((query == null) || (query.size() == 0)) return false;
|
|
2073
|
+
else
|
|
2074
|
+
for (int i=0; i < query.size(); i++)
|
|
2075
|
+
if (FunctionalGroups.hasGroup(mol, (IAtomContainer) query.get(i),selected)) return true;
|
|
2076
|
+
return false;
|
|
2077
|
+
}
|
|
2078
|
+
/**
|
|
2079
|
+
* @param mol
|
|
2080
|
+
* @param query ArrayList of AtomContainer - - the list of substructures to be searched for
|
|
2081
|
+
* @return true if all of the fragments are a substructure of mol
|
|
2082
|
+
* @throws CDKException
|
|
2083
|
+
*/
|
|
2084
|
+
public static boolean hasAllSubstructure(IAtomContainer mol, ArrayList query, boolean isPreprocessed) throws CDKException {
|
|
2085
|
+
if ((query == null) || (query.size() == 0)) return false;
|
|
2086
|
+
else
|
|
2087
|
+
for (int i=0; i < query.size(); i++) {
|
|
2088
|
+
IAtomContainer q = (IAtomContainer) query.get(i);
|
|
2089
|
+
if (!isPreprocessed && needsPreprocessing(q)) {
|
|
2090
|
+
preProcess(mol);
|
|
2091
|
+
isPreprocessed = true;
|
|
2092
|
+
}
|
|
2093
|
+
if (!FunctionalGroups.hasGroup(mol, q,false)) return false;
|
|
2094
|
+
}
|
|
2095
|
+
return true;
|
|
2096
|
+
}
|
|
2097
|
+
protected static boolean needsPreprocessing(IAtomContainer query) {
|
|
2098
|
+
String id = query.getID();
|
|
2099
|
+
return (id != null) &&
|
|
2100
|
+
(
|
|
2101
|
+
(id.equals(ALCOHOL)) ||
|
|
2102
|
+
(id.equals(ETHER)) ||
|
|
2103
|
+
(id.equals(SECONDARY_AMINE_ALIPHATIC)) ||
|
|
2104
|
+
(id.equals(SECONDARY_AMINE)) ||
|
|
2105
|
+
(id.equals(LACTONE))
|
|
2106
|
+
)
|
|
2107
|
+
;
|
|
2108
|
+
}
|
|
2109
|
+
public static void preProcess(IAtomContainer mol) {
|
|
2110
|
+
markCHn(mol);
|
|
2111
|
+
}
|
|
2112
|
+
public static boolean markUniqueBondMap(IMolecule mol, ArrayList query, boolean isPreprocessed) {
|
|
2113
|
+
if ((query == null) || (query.size() == 0)) return false;
|
|
2114
|
+
else
|
|
2115
|
+
for (int i=0; i < query.size(); i++) {
|
|
2116
|
+
QueryAtomContainer q = (QueryAtomContainer) query.get(i);
|
|
2117
|
+
if (!isPreprocessed && needsPreprocessing(q)) {
|
|
2118
|
+
preProcess(mol);
|
|
2119
|
+
isPreprocessed = true;
|
|
2120
|
+
}
|
|
2121
|
+
List list = FunctionalGroups.getUniqueBondMap(mol, q,isPreprocessed);
|
|
2122
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
2123
|
+
}
|
|
2124
|
+
return true;
|
|
2125
|
+
}
|
|
2126
|
+
public static boolean hasOnlyTheseGroups(IAtomContainer mol,
|
|
2127
|
+
QueryAtomContainers query,Collection ids,boolean isPreprocessed) {
|
|
2128
|
+
return hasOnlyTheseGroups(mol,query,ids,isPreprocessed,null);
|
|
2129
|
+
}
|
|
2130
|
+
public static boolean hasOnlyTheseGroups(IAtomContainer mol,
|
|
2131
|
+
QueryAtomContainers query,Collection ids,boolean isPreprocessed,IAtomContainer selected) {
|
|
2132
|
+
final String MSG = "Has only these groups\t";
|
|
2133
|
+
if ((query == null) || (query.size() == 0)) return false;
|
|
2134
|
+
else {
|
|
2135
|
+
logger.fine("Checking if it has only these groups\t"+ids);
|
|
2136
|
+
List list = null;
|
|
2137
|
+
int found = 0;
|
|
2138
|
+
for (int i=0; i < query.size(); i++) {
|
|
2139
|
+
IAtomContainer q = (IAtomContainer) query.get(i);
|
|
2140
|
+
list = FunctionalGroups.getUniqueBondMap(mol, q,isPreprocessed);
|
|
2141
|
+
if ((list == null) || (list.size() == 0)) continue;
|
|
2142
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
2143
|
+
logger.fine(mapToString(mol).toString());
|
|
2144
|
+
if (hasMarkedOnlyTheseGroups(mol,ids,selected,null)) {
|
|
2145
|
+
logger.fine(MSG+ids+"\tYES");
|
|
2146
|
+
return true;
|
|
2147
|
+
}
|
|
2148
|
+
else found ++;
|
|
2149
|
+
}
|
|
2150
|
+
if (logger.isLoggable(Level.FINE)) {
|
|
2151
|
+
logger.fine(mapToString(mol,ids).toString());
|
|
2152
|
+
}
|
|
2153
|
+
if (hasMarkedOnlyTheseGroups(mol,ids,selected,null)) {
|
|
2154
|
+
logger.fine(MSG+ids+"\tYES");
|
|
2155
|
+
return true;
|
|
2156
|
+
} else {
|
|
2157
|
+
logger.fine("Has only these groups\t"+ids+"\tNO");
|
|
2158
|
+
return false;
|
|
2159
|
+
}
|
|
2160
|
+
}
|
|
2161
|
+
}
|
|
2162
|
+
/**
|
|
2163
|
+
* Has to be preprocessed with getBondMap or getUniqueBondMap and markMaps
|
|
2164
|
+
*
|
|
2165
|
+
* @param mol
|
|
2166
|
+
* @param id Collection of functional group identifiers as used by the procedures listed above
|
|
2167
|
+
* @return true if mol contains only specified groups (i.e. there are no unmarked atoms)
|
|
2168
|
+
*/
|
|
2169
|
+
|
|
2170
|
+
public static boolean hasMarkedOnlyTheseGroups(IAtomContainer mol,Collection id) {
|
|
2171
|
+
return hasMarkedOnlyTheseGroups(mol,id,null,null);
|
|
2172
|
+
}
|
|
2173
|
+
public static boolean hasMarkedOnlyTheseGroups(IAtomContainer mol,Collection id,IAtomContainer selection,IAtomContainer selectionOther) {
|
|
2174
|
+
IAtom a = null;
|
|
2175
|
+
|
|
2176
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
2177
|
+
a = mol.getAtom(i);
|
|
2178
|
+
if (a.getSymbol().equals("H")) continue;
|
|
2179
|
+
if (a.getSymbol().equals("C")) continue;
|
|
2180
|
+
Iterator iterator = id.iterator();
|
|
2181
|
+
boolean ok = false;
|
|
2182
|
+
while(iterator.hasNext()) {
|
|
2183
|
+
Object anID = iterator.next();
|
|
2184
|
+
Object o = a.getProperty(anID);
|
|
2185
|
+
|
|
2186
|
+
if (o!=null) {
|
|
2187
|
+
//this atom has at least one mark, no need to check for more
|
|
2188
|
+
ok = true;
|
|
2189
|
+
break;
|
|
2190
|
+
}
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
}
|
|
2194
|
+
if (!ok) {
|
|
2195
|
+
if (selectionOther != null) selectionOther.addAtom(a);
|
|
2196
|
+
logger.fine("Atom "+ a.getSymbol() + " belongs to a forbidden group");
|
|
2197
|
+
logger.fine(mapToString(mol,id).toString());
|
|
2198
|
+
return false; //at least one atom is unmarked
|
|
2199
|
+
} else if (selection!=null) selection.addAtom(a);
|
|
2200
|
+
}
|
|
2201
|
+
logger.fine("No forbidden groups found");
|
|
2202
|
+
return true;
|
|
2203
|
+
}
|
|
2204
|
+
/*
|
|
2205
|
+
public static boolean hasOtherThanMarkedGroups(IAtomContainer mol,Collection id,IAtomContainer selection) {
|
|
2206
|
+
IAtom a = null;
|
|
2207
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
2208
|
+
a = mol.getAtom(i);
|
|
2209
|
+
if (a.getSymbol().equals("H")) continue;
|
|
2210
|
+
Iterator iterator = id.iterator();
|
|
2211
|
+
boolean otherAtom = false;
|
|
2212
|
+
while(iterator.hasNext()) {
|
|
2213
|
+
Object anID = iterator.next();
|
|
2214
|
+
Object o = a.getProperty(anID);
|
|
2215
|
+
if (o==null) {
|
|
2216
|
+
//this atom has at least one mark, no need to check for more
|
|
2217
|
+
otherAtom = true; break;
|
|
2218
|
+
}
|
|
2219
|
+
}
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
if (otherAtom) {
|
|
2223
|
+
logger.fine("Atom "+ a.getSymbol() + " belongs to a forbidden group");
|
|
2224
|
+
logger.fine(mapToString(mol,id));
|
|
2225
|
+
if (selection != null) selection.addAtom(a);
|
|
2226
|
+
else return true; //at least one atom is unmarked
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
logger.fine("No forbidden groups found");
|
|
2230
|
+
return selection==null?false:selection.getAtomCount()>0;
|
|
2231
|
+
}
|
|
2232
|
+
*/
|
|
2233
|
+
public static boolean hasGroupMarked(IAtomContainer mol,String id) {
|
|
2234
|
+
for (int i =0; i < mol.getAtomCount(); i++)
|
|
2235
|
+
if (mol.getAtom(i).getProperty(id) != null) return true;
|
|
2236
|
+
return false;
|
|
2237
|
+
}
|
|
2238
|
+
public static boolean hasGroupMarked(IAtomContainer mol,String id,IAtomContainer selection) {
|
|
2239
|
+
if (selection==null) return hasGroupMarked(mol, id);
|
|
2240
|
+
boolean ok = false;
|
|
2241
|
+
for (int i =0; i < mol.getAtomCount(); i++)
|
|
2242
|
+
if (mol.getAtom(i).getProperty(id) != null) {
|
|
2243
|
+
ok = true;
|
|
2244
|
+
if (selection!=null) selection.addAtom(mol.getAtom(i));
|
|
2245
|
+
}
|
|
2246
|
+
return ok;
|
|
2247
|
+
}
|
|
2248
|
+
public static boolean hasMarkedOnlyTheseGroups(IAtomContainer mol,QueryAtomContainers query) {
|
|
2249
|
+
IAtom a = null;
|
|
2250
|
+
|
|
2251
|
+
for (int i =0; i < mol.getAtomCount(); i++) {
|
|
2252
|
+
a = mol.getAtom(i);
|
|
2253
|
+
if (a.getSymbol().equals("H")) continue;
|
|
2254
|
+
Iterator iterator = query.iterator();
|
|
2255
|
+
boolean ok = false;
|
|
2256
|
+
while(iterator.hasNext()) {
|
|
2257
|
+
QueryAtomContainer q = (QueryAtomContainer) iterator.next();
|
|
2258
|
+
Object o = a.getProperty(q.getID());
|
|
2259
|
+
if (o!=null) {
|
|
2260
|
+
//this atom has at least one mark, no need to check for more
|
|
2261
|
+
ok = true; break;
|
|
2262
|
+
}
|
|
2263
|
+
}
|
|
2264
|
+
|
|
2265
|
+
if (!ok) {
|
|
2266
|
+
|
|
2267
|
+
logger.fine("Atom "+ a.toString() + " belongs to a forbidden group");
|
|
2268
|
+
|
|
2269
|
+
return false; //at least one atom is unmarked
|
|
2270
|
+
}
|
|
2271
|
+
}
|
|
2272
|
+
logger.fine("No forbidden groups found");
|
|
2273
|
+
return true;
|
|
2274
|
+
}
|
|
2275
|
+
public static IAtomContainer createAtomContainer(String smiles, String id) {
|
|
2276
|
+
return createAtomContainer(smiles,false,id,null);
|
|
2277
|
+
}
|
|
2278
|
+
public static IAtomContainer createAtomContainer(String smiles, String id,SMILES_PARSER mode) {
|
|
2279
|
+
return createAtomContainer(smiles,false,id,mode);
|
|
2280
|
+
}
|
|
2281
|
+
public static IAtomContainer createAtomContainer(String smiles) {
|
|
2282
|
+
return createAtomContainer(smiles,(SMILES_PARSER)null);
|
|
2283
|
+
}
|
|
2284
|
+
public static IAtomContainer createAtomContainer(String smiles,SMILES_PARSER mode) {
|
|
2285
|
+
return createAtomContainer(smiles,false,smiles,mode);
|
|
2286
|
+
}
|
|
2287
|
+
public static IAtomContainer createAtomContainer(String smiles,boolean addHydrogens) {
|
|
2288
|
+
return createAtomContainer(smiles,addHydrogens,smiles);
|
|
2289
|
+
}
|
|
2290
|
+
public static IAtomContainer createAtomContainer(String smiles,boolean addHydrogens,String id) {
|
|
2291
|
+
return createAtomContainer(smiles, addHydrogens, id,null);
|
|
2292
|
+
}
|
|
2293
|
+
public static IAtomContainer createAtomContainer(String smiles,boolean addHydrogens,String id,SMILES_PARSER mode) {
|
|
2294
|
+
try {
|
|
2295
|
+
//logger.fine("Creating molecule from SMILES\t",smiles);
|
|
2296
|
+
SmilesParserWrapper sp = mode==null?SmilesParserWrapper.getInstance(SMILES_PARSER.CDK):SmilesParserWrapper.getInstance(mode);
|
|
2297
|
+
|
|
2298
|
+
IAtomContainer mol = sp.parseSmiles(smiles);
|
|
2299
|
+
if ((mol != null) && (mol.getAtomCount()==0)) return null;
|
|
2300
|
+
|
|
2301
|
+
if (addHydrogens)
|
|
2302
|
+
try {
|
|
2303
|
+
//logger.fine("Adding explicit hydrogens");
|
|
2304
|
+
AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(mol);
|
|
2305
|
+
h.addImplicitHydrogens(mol);
|
|
2306
|
+
HydrogenAdderProcessor.convertImplicitToExplicitHydrogens(mol);
|
|
2307
|
+
|
|
2308
|
+
//h.addExplicitHydrogensToSatisfyValency((IMolecule)mol);
|
|
2309
|
+
} catch (InvalidSmilesException x ) {
|
|
2310
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
2311
|
+
return null;
|
|
2312
|
+
} catch (CDKException x) {
|
|
2313
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
2314
|
+
return null;
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
mol.setID(id);
|
|
2318
|
+
sp = null;
|
|
2319
|
+
return mol;
|
|
2320
|
+
} catch (InvalidSmilesException x ) {
|
|
2321
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
2322
|
+
return null;
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
public static QueryAtomContainer createQuery(String smiles) {
|
|
2326
|
+
return createQuery(smiles,smiles);
|
|
2327
|
+
}
|
|
2328
|
+
public static QueryAtomContainer createQuery(String smiles,String id) {
|
|
2329
|
+
IAtomContainer mol = createAtomContainer(smiles,id,SMILES_PARSER.CDK);
|
|
2330
|
+
if (mol !=null) {
|
|
2331
|
+
QueryAtomContainer q = QueryAtomContainerCreator.createBasicQueryContainer(mol);
|
|
2332
|
+
q.setID(id);
|
|
2333
|
+
return q;
|
|
2334
|
+
}
|
|
2335
|
+
else return null;
|
|
2336
|
+
}
|
|
2337
|
+
public static QueryAtomContainer vicinalDiKetone() {
|
|
2338
|
+
//TODO "[*]C(=O)C(=O)[*]"
|
|
2339
|
+
|
|
2340
|
+
QueryAtomContainer q = new QueryAtomContainer();
|
|
2341
|
+
q.setID("vicinal diketone");
|
|
2342
|
+
SymbolQueryAtom a1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
2343
|
+
q.addAtom(a1);
|
|
2344
|
+
SymbolQueryAtom a2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2345
|
+
q.addAtom(a2);
|
|
2346
|
+
InverseSymbolSetQueryAtom a3 = new InverseSymbolSetQueryAtom();
|
|
2347
|
+
a3.addSymbol("O"); a3.addSymbol("S"); q.addAtom(a3);
|
|
2348
|
+
SymbolQueryAtom a4 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2349
|
+
q.addAtom(a4);
|
|
2350
|
+
SymbolQueryAtom a5 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
2351
|
+
q.addAtom(a5);
|
|
2352
|
+
InverseSymbolSetQueryAtom a6 = new InverseSymbolSetQueryAtom();
|
|
2353
|
+
a6.addSymbol("O"); a6.addSymbol("S"); q.addAtom(a6);
|
|
2354
|
+
OrderQueryBond b1 = new OrderQueryBond(a2, a1, IBond.Order.DOUBLE);
|
|
2355
|
+
q.addBond(b1);
|
|
2356
|
+
OrderQueryBond b2 = new OrderQueryBond(a3, a2, IBond.Order.SINGLE);
|
|
2357
|
+
q.addBond(b2);
|
|
2358
|
+
OrderQueryBond b3 = new OrderQueryBond(a4, a2, IBond.Order.SINGLE);
|
|
2359
|
+
q.addBond(b3);
|
|
2360
|
+
OrderQueryBond b4 = new OrderQueryBond(a5, a4, IBond.Order.DOUBLE);
|
|
2361
|
+
q.addBond(b4);
|
|
2362
|
+
OrderQueryBond b5 = new OrderQueryBond(a6, a4, IBond.Order.SINGLE);
|
|
2363
|
+
q.addBond(b5);
|
|
2364
|
+
return q;
|
|
2365
|
+
}
|
|
2366
|
+
public static QueryAtomContainer ketoneAttachedToTerminalVinyl() {
|
|
2367
|
+
QueryAtomContainer mol = new QueryAtomContainer();
|
|
2368
|
+
mol.setID("Ketone attached to terminal vinyl");
|
|
2369
|
+
SymbolQueryAtom c1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2370
|
+
mol.addAtom(c1);
|
|
2371
|
+
InverseSymbolSetQueryAtom r = new InverseSymbolSetQueryAtom();
|
|
2372
|
+
r.addSymbol("O"); r.addSymbol("S"); r.addSymbol("N"); mol.addAtom(r);
|
|
2373
|
+
SymbolQueryAtom c2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2374
|
+
mol.addAtom(c2);
|
|
2375
|
+
SymbolQueryAtom o = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
2376
|
+
mol.addAtom(o);
|
|
2377
|
+
SymbolQueryAtom c3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2378
|
+
mol.addAtom(c3);
|
|
2379
|
+
SymbolQueryAtom h1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
2380
|
+
mol.addAtom(h1);
|
|
2381
|
+
SymbolQueryAtom h2 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
2382
|
+
mol.addAtom(h2);
|
|
2383
|
+
SymbolQueryAtom h3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
2384
|
+
mol.addAtom(h3);
|
|
2385
|
+
OrderQueryBond b1 = new OrderQueryBond(r, c1, IBond.Order.SINGLE);
|
|
2386
|
+
mol.addBond(b1);
|
|
2387
|
+
OrderQueryBond b2 = new OrderQueryBond(c1, c2, IBond.Order.SINGLE);
|
|
2388
|
+
mol.addBond(b2);
|
|
2389
|
+
OrderQueryBond b3 = new OrderQueryBond(c1,o, IBond.Order.DOUBLE);
|
|
2390
|
+
mol.addBond(b3);
|
|
2391
|
+
OrderQueryBond b4 = new OrderQueryBond(c2, c3, IBond.Order.DOUBLE);
|
|
2392
|
+
mol.addBond(b4);
|
|
2393
|
+
OrderQueryBond b5 = new OrderQueryBond(c3, h1, IBond.Order.SINGLE);
|
|
2394
|
+
mol.addBond(b5);
|
|
2395
|
+
OrderQueryBond b6 = new OrderQueryBond(c3, h2, IBond.Order.SINGLE);
|
|
2396
|
+
mol.addBond(b6);
|
|
2397
|
+
OrderQueryBond b7 = new OrderQueryBond(c2,h3, IBond.Order.SINGLE);
|
|
2398
|
+
mol.addBond(b7);
|
|
2399
|
+
return mol;
|
|
2400
|
+
}
|
|
2401
|
+
public static QueryAtomContainer ketalAttachedToTerminalVinyl() {
|
|
2402
|
+
//TODO "[*]C(O)(O)C=C"
|
|
2403
|
+
QueryAtomContainer mol = new QueryAtomContainer();
|
|
2404
|
+
mol.setID("ketal attached to terminal vinyl");
|
|
2405
|
+
InverseSymbolSetQueryAtom r1 = new InverseSymbolSetQueryAtom();
|
|
2406
|
+
r1.addSymbol("O"); r1.addSymbol("H"); mol.addAtom(r1);
|
|
2407
|
+
InverseSymbolSetQueryAtom r2 = new InverseSymbolSetQueryAtom();
|
|
2408
|
+
r2.addSymbol("O"); r2.addSymbol("H"); mol.addAtom(r2);
|
|
2409
|
+
InverseSymbolSetQueryAtom r3 = new InverseSymbolSetQueryAtom();
|
|
2410
|
+
r3.addSymbol("O"); r3.addSymbol("H"); mol.addAtom(r3);
|
|
2411
|
+
|
|
2412
|
+
SymbolQueryAtom a1 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2413
|
+
mol.addAtom(a1);
|
|
2414
|
+
SymbolQueryAtom a3 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2415
|
+
mol.addAtom(a3);
|
|
2416
|
+
SymbolQueryAtom a4 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
2417
|
+
mol.addAtom(a4);
|
|
2418
|
+
SymbolQueryAtom a5 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN));
|
|
2419
|
+
mol.addAtom(a5);
|
|
2420
|
+
SymbolQueryAtom a6 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
2421
|
+
mol.addAtom(a6);
|
|
2422
|
+
SymbolQueryAtom a9 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
2423
|
+
mol.addAtom(a9);
|
|
2424
|
+
SymbolQueryAtom a10 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN));
|
|
2425
|
+
mol.addAtom(a10);
|
|
2426
|
+
OrderQueryBond b1 = new OrderQueryBond(r1, a1, IBond.Order.SINGLE);
|
|
2427
|
+
mol.addBond(b1);
|
|
2428
|
+
OrderQueryBond b2 = new OrderQueryBond(a1, a3, IBond.Order.SINGLE);
|
|
2429
|
+
mol.addBond(b2);
|
|
2430
|
+
OrderQueryBond b3 = new OrderQueryBond(a1, a4, IBond.Order.SINGLE);
|
|
2431
|
+
mol.addBond(b3);
|
|
2432
|
+
OrderQueryBond b4 = new OrderQueryBond(a1, a5, IBond.Order.SINGLE);
|
|
2433
|
+
mol.addBond(b4);
|
|
2434
|
+
OrderQueryBond b5 = new OrderQueryBond(a3, a6, IBond.Order.DOUBLE);
|
|
2435
|
+
mol.addBond(b5);
|
|
2436
|
+
OrderQueryBond b6 = new OrderQueryBond(a4, r2, IBond.Order.SINGLE);
|
|
2437
|
+
mol.addBond(b6);
|
|
2438
|
+
OrderQueryBond b7 = new OrderQueryBond(a5, r3, IBond.Order.SINGLE);
|
|
2439
|
+
mol.addBond(b7);
|
|
2440
|
+
OrderQueryBond b8 = new OrderQueryBond(a6, a9, IBond.Order.SINGLE);
|
|
2441
|
+
mol.addBond(b8);
|
|
2442
|
+
OrderQueryBond b9 = new OrderQueryBond(a6, a10, IBond.Order.SINGLE);
|
|
2443
|
+
mol.addBond(b9);
|
|
2444
|
+
return mol;
|
|
2445
|
+
}
|
|
2446
|
+
public static QueryAtomContainer alcoholSecondaryAttachedToTerminalVinyl() {
|
|
2447
|
+
//TODO "[*]C(O)C=C"
|
|
2448
|
+
//return createQuery("CC(O)C=C",);
|
|
2449
|
+
//return createQuery("[H]OC([H])(C)C([H])=C([H])[H]","secondary alcohol attached to terminal vinyl group");
|
|
2450
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2451
|
+
IMolecule mol = new org.openscience.cdk.Molecule();
|
|
2452
|
+
IAtom a1 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2453
|
+
mol.addAtom(a1);
|
|
2454
|
+
IAtom a2 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2455
|
+
mol.addAtom(a2);
|
|
2456
|
+
IAtom a3 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2457
|
+
mol.addAtom(a3);
|
|
2458
|
+
IAtom a4 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2459
|
+
mol.addAtom(a4);
|
|
2460
|
+
IAtom a5 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2461
|
+
mol.addAtom(a5);
|
|
2462
|
+
IAtom a6 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2463
|
+
mol.addAtom(a6);
|
|
2464
|
+
IAtom a7 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2465
|
+
mol.addAtom(a7);
|
|
2466
|
+
IAtom a8 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2467
|
+
mol.addAtom(a8);
|
|
2468
|
+
IAtom a9 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2469
|
+
mol.addAtom(a9);
|
|
2470
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2471
|
+
mol.addAtom(a10);
|
|
2472
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.SINGLE);
|
|
2473
|
+
mol.addBond(b1);
|
|
2474
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2475
|
+
mol.addBond(b2);
|
|
2476
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2477
|
+
mol.addBond(b3);
|
|
2478
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a3, IBond.Order.SINGLE);
|
|
2479
|
+
mol.addBond(b4);
|
|
2480
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a3, IBond.Order.SINGLE);
|
|
2481
|
+
mol.addBond(b5);
|
|
2482
|
+
IBond b6 = MoleculeTools.newBond(builder,a7, a6, IBond.Order.SINGLE);
|
|
2483
|
+
mol.addBond(b6);
|
|
2484
|
+
IBond b7 = MoleculeTools.newBond(builder,a8, a6, IBond.Order.SINGLE);
|
|
2485
|
+
mol.addBond(b7);
|
|
2486
|
+
IBond b8 = MoleculeTools.newBond(builder,a9, a8, IBond.Order.SINGLE);
|
|
2487
|
+
mol.addBond(b8);
|
|
2488
|
+
IBond b9 = MoleculeTools.newBond(builder,a10, a8, IBond.Order.SINGLE);
|
|
2489
|
+
mol.addBond(b9);
|
|
2490
|
+
QueryAtomContainer q = QueryAtomContainerCreator.createBasicQueryContainer(mol);
|
|
2491
|
+
q.setID("secondary alcohol attached to terminal vinyl group");
|
|
2492
|
+
return q;
|
|
2493
|
+
|
|
2494
|
+
|
|
2495
|
+
}
|
|
2496
|
+
public static QueryAtomContainer esterOfalcoholSecondaryAttachedToTerminalVinyl() {
|
|
2497
|
+
//TODO ""CC(C(=O)O[*])C=C""
|
|
2498
|
+
//return createQuery("CC(C(=O)OC)C=C","ester of secondary alcohol attached to terminal vinyl group");
|
|
2499
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2500
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2501
|
+
IAtom a1 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2502
|
+
mol.addAtom(a1);
|
|
2503
|
+
IAtom a2 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2504
|
+
mol.addAtom(a2);
|
|
2505
|
+
IAtom a3 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2506
|
+
mol.addAtom(a3);
|
|
2507
|
+
IAtom a4 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2508
|
+
mol.addAtom(a4);
|
|
2509
|
+
IAtom a5 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2510
|
+
mol.addAtom(a5);
|
|
2511
|
+
IAtom a6 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2512
|
+
mol.addAtom(a6);
|
|
2513
|
+
IAtom a7 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2514
|
+
mol.addAtom(a7);
|
|
2515
|
+
IAtom a8 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2516
|
+
mol.addAtom(a8);
|
|
2517
|
+
IAtom a9 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2518
|
+
mol.addAtom(a9);
|
|
2519
|
+
IAtom a10 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2520
|
+
mol.addAtom(a10);
|
|
2521
|
+
IAtom a11 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2522
|
+
mol.addAtom(a11);
|
|
2523
|
+
IAtom a12 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2524
|
+
mol.addAtom(a12);
|
|
2525
|
+
IBond b1 = MoleculeTools.newBond(builder,a1, a2, IBond.Order.DOUBLE);
|
|
2526
|
+
mol.addBond(b1);
|
|
2527
|
+
IBond b2 = MoleculeTools.newBond(builder,a1, a3, IBond.Order.SINGLE);
|
|
2528
|
+
mol.addBond(b2);
|
|
2529
|
+
IBond b3 = MoleculeTools.newBond(builder,a1, a4, IBond.Order.SINGLE);
|
|
2530
|
+
mol.addBond(b3);
|
|
2531
|
+
IBond b4 = MoleculeTools.newBond(builder,a2, a5, IBond.Order.SINGLE);
|
|
2532
|
+
mol.addBond(b4);
|
|
2533
|
+
IBond b5 = MoleculeTools.newBond(builder,a2, a6, IBond.Order.SINGLE);
|
|
2534
|
+
mol.addBond(b5);
|
|
2535
|
+
IBond b6 = MoleculeTools.newBond(builder,a6, a7, IBond.Order.SINGLE);
|
|
2536
|
+
mol.addBond(b6);
|
|
2537
|
+
IBond b7 = MoleculeTools.newBond(builder,a6, a8, IBond.Order.SINGLE);
|
|
2538
|
+
mol.addBond(b7);
|
|
2539
|
+
IBond b8 = MoleculeTools.newBond(builder,a8, a9, IBond.Order.DOUBLE);
|
|
2540
|
+
mol.addBond(b8);
|
|
2541
|
+
IBond b9 = MoleculeTools.newBond(builder,a8, a10, IBond.Order.SINGLE);
|
|
2542
|
+
mol.addBond(b9);
|
|
2543
|
+
IBond b10 = MoleculeTools.newBond(builder,a10, a11, IBond.Order.SINGLE);
|
|
2544
|
+
mol.addBond(b10);
|
|
2545
|
+
IBond b11 = MoleculeTools.newBond(builder,a6, a12, IBond.Order.SINGLE);
|
|
2546
|
+
mol.addBond(b11);
|
|
2547
|
+
QueryAtomContainer q = QueryAtomContainerCreator.createBasicQueryContainer(mol);
|
|
2548
|
+
q.setID("ester of secondary alcohol attached to terminal vinyl group");
|
|
2549
|
+
return q;
|
|
2550
|
+
}
|
|
2551
|
+
public static IAtomContainer allylAlcohol() {
|
|
2552
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2553
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2554
|
+
IAtom a1 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2555
|
+
mol.addAtom(a1);
|
|
2556
|
+
IAtom a2 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2557
|
+
mol.addAtom(a2);
|
|
2558
|
+
IAtom a3 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2559
|
+
mol.addAtom(a3);
|
|
2560
|
+
IAtom a4 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2561
|
+
mol.addAtom(a4);
|
|
2562
|
+
IAtom a5 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2563
|
+
mol.addAtom(a5);
|
|
2564
|
+
IAtom a6 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2565
|
+
mol.addAtom(a6);
|
|
2566
|
+
IAtom a7 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2567
|
+
mol.addAtom(a7);
|
|
2568
|
+
IAtom a8 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2569
|
+
mol.addAtom(a8);
|
|
2570
|
+
IAtom a9 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2571
|
+
mol.addAtom(a9);
|
|
2572
|
+
IAtom a10 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2573
|
+
mol.addAtom(a10);
|
|
2574
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2575
|
+
mol.addBond(b1);
|
|
2576
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2577
|
+
mol.addBond(b2);
|
|
2578
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2579
|
+
mol.addBond(b3);
|
|
2580
|
+
IBond b4 = MoleculeTools.newBond(builder,a1, a5, IBond.Order.SINGLE);
|
|
2581
|
+
mol.addBond(b4);
|
|
2582
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
2583
|
+
mol.addBond(b5);
|
|
2584
|
+
IBond b6 = MoleculeTools.newBond(builder,a2, a7, IBond.Order.SINGLE);
|
|
2585
|
+
mol.addBond(b6);
|
|
2586
|
+
IBond b7 = MoleculeTools.newBond(builder,a3, a8, IBond.Order.SINGLE);
|
|
2587
|
+
mol.addBond(b7);
|
|
2588
|
+
IBond b8 = MoleculeTools.newBond(builder,a3, a9, IBond.Order.SINGLE);
|
|
2589
|
+
mol.addBond(b8);
|
|
2590
|
+
IBond b9 = MoleculeTools.newBond(builder,a4, a10, IBond.Order.SINGLE);
|
|
2591
|
+
mol.addBond(b9);
|
|
2592
|
+
mol.setID("allyl alcohol");
|
|
2593
|
+
return mol;
|
|
2594
|
+
//return createAtomContainer("C=CCO",);
|
|
2595
|
+
}
|
|
2596
|
+
public static QueryAtomContainer allylAlcoholAcetal() {
|
|
2597
|
+
//TODO "[*]C(OCC=C)(OCC=C)[H]"
|
|
2598
|
+
//return createQuery("C(OCC=C)(OCC=C)[H]","allyl alcohol acetal");
|
|
2599
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2600
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2601
|
+
IAtom a1 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2602
|
+
mol.addAtom(a1);
|
|
2603
|
+
IAtom a2 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2604
|
+
mol.addAtom(a2);
|
|
2605
|
+
IAtom a3 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2606
|
+
mol.addAtom(a3);
|
|
2607
|
+
IAtom a4 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2608
|
+
mol.addAtom(a4);
|
|
2609
|
+
IAtom a5 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2610
|
+
mol.addAtom(a5);
|
|
2611
|
+
IAtom a6 = MoleculeTools.newAtom(builder,Elements.OXYGEN);
|
|
2612
|
+
mol.addAtom(a6);
|
|
2613
|
+
IAtom a7 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2614
|
+
mol.addAtom(a7);
|
|
2615
|
+
IAtom a8 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2616
|
+
mol.addAtom(a8);
|
|
2617
|
+
IAtom a9 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2618
|
+
mol.addAtom(a9);
|
|
2619
|
+
IAtom a10 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2620
|
+
mol.addAtom(a10);
|
|
2621
|
+
IAtom a11 = MoleculeTools.newAtom(builder,Elements.CARBON);
|
|
2622
|
+
mol.addAtom(a11);
|
|
2623
|
+
IAtom a12 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2624
|
+
mol.addAtom(a12);
|
|
2625
|
+
IAtom a13 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2626
|
+
mol.addAtom(a13);
|
|
2627
|
+
IAtom a14 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2628
|
+
mol.addAtom(a14);
|
|
2629
|
+
IAtom a15 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2630
|
+
mol.addAtom(a15);
|
|
2631
|
+
IAtom a16 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2632
|
+
mol.addAtom(a16);
|
|
2633
|
+
IAtom a17 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2634
|
+
mol.addAtom(a17);
|
|
2635
|
+
IAtom a18 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2636
|
+
mol.addAtom(a18);
|
|
2637
|
+
IAtom a19 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2638
|
+
mol.addAtom(a19);
|
|
2639
|
+
IAtom a20 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2640
|
+
mol.addAtom(a20);
|
|
2641
|
+
IAtom a21 = MoleculeTools.newAtom(builder,Elements.HYDROGEN);
|
|
2642
|
+
mol.addAtom(a21);
|
|
2643
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.SINGLE);
|
|
2644
|
+
mol.addBond(b1);
|
|
2645
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2646
|
+
mol.addBond(b2);
|
|
2647
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2648
|
+
mol.addBond(b3);
|
|
2649
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.DOUBLE);
|
|
2650
|
+
mol.addBond(b4);
|
|
2651
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a1, IBond.Order.SINGLE);
|
|
2652
|
+
mol.addBond(b5);
|
|
2653
|
+
IBond b6 = MoleculeTools.newBond(builder,a7, a6, IBond.Order.SINGLE);
|
|
2654
|
+
mol.addBond(b6);
|
|
2655
|
+
IBond b7 = MoleculeTools.newBond(builder,a8, a7, IBond.Order.SINGLE);
|
|
2656
|
+
mol.addBond(b7);
|
|
2657
|
+
IBond b8 = MoleculeTools.newBond(builder,a9, a8, IBond.Order.DOUBLE);
|
|
2658
|
+
mol.addBond(b8);
|
|
2659
|
+
IBond b9 = MoleculeTools.newBond(builder,a10, a1, IBond.Order.SINGLE);
|
|
2660
|
+
mol.addBond(b9);
|
|
2661
|
+
IBond b10 = MoleculeTools.newBond(builder,a1, a11, IBond.Order.SINGLE);
|
|
2662
|
+
mol.addBond(b10);
|
|
2663
|
+
IBond b11 = MoleculeTools.newBond(builder,a3, a12, IBond.Order.SINGLE);
|
|
2664
|
+
mol.addBond(b11);
|
|
2665
|
+
IBond b12 = MoleculeTools.newBond(builder,a3, a13, IBond.Order.SINGLE);
|
|
2666
|
+
mol.addBond(b12);
|
|
2667
|
+
IBond b13 = MoleculeTools.newBond(builder,a7, a14, IBond.Order.SINGLE);
|
|
2668
|
+
mol.addBond(b13);
|
|
2669
|
+
IBond b14 = MoleculeTools.newBond(builder,a7, a15, IBond.Order.SINGLE);
|
|
2670
|
+
mol.addBond(b14);
|
|
2671
|
+
IBond b15 = MoleculeTools.newBond(builder,a4, a16, IBond.Order.SINGLE);
|
|
2672
|
+
mol.addBond(b15);
|
|
2673
|
+
IBond b16 = MoleculeTools.newBond(builder,a8, a17, IBond.Order.SINGLE);
|
|
2674
|
+
mol.addBond(b16);
|
|
2675
|
+
IBond b17 = MoleculeTools.newBond(builder,a5, a18, IBond.Order.SINGLE);
|
|
2676
|
+
mol.addBond(b17);
|
|
2677
|
+
IBond b18 = MoleculeTools.newBond(builder,a5, a19, IBond.Order.SINGLE);
|
|
2678
|
+
mol.addBond(b18);
|
|
2679
|
+
IBond b19 = MoleculeTools.newBond(builder,a9, a20, IBond.Order.SINGLE);
|
|
2680
|
+
mol.addBond(b19);
|
|
2681
|
+
IBond b20 = MoleculeTools.newBond(builder,a9, a21, IBond.Order.SINGLE);
|
|
2682
|
+
mol.addBond(b20);
|
|
2683
|
+
QueryAtomContainer q = QueryAtomContainerCreator.createBasicQueryContainer(mol);
|
|
2684
|
+
q.setID("allyl alcohol acetal");
|
|
2685
|
+
return q;
|
|
2686
|
+
|
|
2687
|
+
}
|
|
2688
|
+
public static QueryAtomContainer allylAlcoholEsterDerivative() {
|
|
2689
|
+
//TODO "CC=CCOC(=O)C[*]"
|
|
2690
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2691
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2692
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
2693
|
+
mol.addAtom(a1);
|
|
2694
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2695
|
+
mol.addAtom(a2);
|
|
2696
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2697
|
+
mol.addAtom(a3);
|
|
2698
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
2699
|
+
mol.addAtom(a4);
|
|
2700
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2701
|
+
mol.addAtom(a5);
|
|
2702
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2703
|
+
mol.addAtom(a6);
|
|
2704
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2705
|
+
mol.addAtom(a7);
|
|
2706
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2707
|
+
mol.addAtom(a8);
|
|
2708
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2709
|
+
mol.addAtom(a9);
|
|
2710
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2711
|
+
mol.addAtom(a10);
|
|
2712
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2713
|
+
mol.addAtom(a11);
|
|
2714
|
+
IAtom a12 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2715
|
+
mol.addAtom(a12);
|
|
2716
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2717
|
+
mol.addBond(b1);
|
|
2718
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2719
|
+
mol.addBond(b2);
|
|
2720
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a2, IBond.Order.SINGLE);
|
|
2721
|
+
mol.addBond(b3);
|
|
2722
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.SINGLE);
|
|
2723
|
+
mol.addBond(b4);
|
|
2724
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a5, IBond.Order.SINGLE);
|
|
2725
|
+
mol.addBond(b5);
|
|
2726
|
+
IBond b6 = MoleculeTools.newBond(builder,a7, a5, IBond.Order.SINGLE);
|
|
2727
|
+
mol.addBond(b6);
|
|
2728
|
+
IBond b7 = MoleculeTools.newBond(builder,a8, a5, IBond.Order.SINGLE);
|
|
2729
|
+
mol.addBond(b7);
|
|
2730
|
+
IBond b8 = MoleculeTools.newBond(builder,a9, a8, IBond.Order.SINGLE);
|
|
2731
|
+
mol.addBond(b8);
|
|
2732
|
+
IBond b9 = MoleculeTools.newBond(builder,a10, a8, IBond.Order.DOUBLE);
|
|
2733
|
+
mol.addBond(b9);
|
|
2734
|
+
IBond b10 = MoleculeTools.newBond(builder,a11, a10, IBond.Order.SINGLE);
|
|
2735
|
+
mol.addBond(b10);
|
|
2736
|
+
IBond b11 = MoleculeTools.newBond(builder,a12, a10, IBond.Order.SINGLE);
|
|
2737
|
+
mol.addBond(b11);
|
|
2738
|
+
QueryAtomContainer q = QueryAtomContainerCreator.createBasicQueryContainer(mol);
|
|
2739
|
+
q.setID("allyl alcohol ester derivative");
|
|
2740
|
+
return q;
|
|
2741
|
+
|
|
2742
|
+
//return createQuery("O=C(C)OC([H])([H])C([H])=C([H])[H]","allyl alcohol ester derivative");
|
|
2743
|
+
}
|
|
2744
|
+
public static IAtomContainer allylMercaptan() {
|
|
2745
|
+
//return createAtomContainer("[H]SC([H])([H])C([H])=C([H])[H]","allyl mercaptan");
|
|
2746
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2747
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2748
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2749
|
+
mol.addAtom(a1);
|
|
2750
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2751
|
+
mol.addAtom(a2);
|
|
2752
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2753
|
+
mol.addAtom(a3);
|
|
2754
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR);
|
|
2755
|
+
mol.addAtom(a4);
|
|
2756
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2757
|
+
mol.addAtom(a5);
|
|
2758
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2759
|
+
mol.addAtom(a6);
|
|
2760
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2761
|
+
mol.addAtom(a7);
|
|
2762
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2763
|
+
mol.addAtom(a8);
|
|
2764
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2765
|
+
mol.addAtom(a9);
|
|
2766
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2767
|
+
mol.addAtom(a10);
|
|
2768
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2769
|
+
mol.addBond(b1);
|
|
2770
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2771
|
+
mol.addBond(b2);
|
|
2772
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2773
|
+
mol.addBond(b3);
|
|
2774
|
+
IBond b4 = MoleculeTools.newBond(builder,a1, a5, IBond.Order.SINGLE);
|
|
2775
|
+
mol.addBond(b4);
|
|
2776
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
2777
|
+
mol.addBond(b5);
|
|
2778
|
+
IBond b6 = MoleculeTools.newBond(builder,a2, a7, IBond.Order.SINGLE);
|
|
2779
|
+
mol.addBond(b6);
|
|
2780
|
+
IBond b7 = MoleculeTools.newBond(builder,a3, a8, IBond.Order.SINGLE);
|
|
2781
|
+
mol.addBond(b7);
|
|
2782
|
+
IBond b8 = MoleculeTools.newBond(builder,a3, a9, IBond.Order.SINGLE);
|
|
2783
|
+
mol.addBond(b8);
|
|
2784
|
+
IBond b9 = MoleculeTools.newBond(builder,a4, a10, IBond.Order.SINGLE);
|
|
2785
|
+
mol.addBond(b9);
|
|
2786
|
+
mol.setID("allyl mercaptan");
|
|
2787
|
+
return mol;
|
|
2788
|
+
}
|
|
2789
|
+
public static IAtomContainer allylAmine() {
|
|
2790
|
+
// return createAtomContainer("C=CCN","allyl amine");
|
|
2791
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2792
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2793
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2794
|
+
mol.addAtom(a1);
|
|
2795
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2796
|
+
mol.addAtom(a2);
|
|
2797
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2798
|
+
mol.addAtom(a3);
|
|
2799
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.NITROGEN);
|
|
2800
|
+
mol.addAtom(a4);
|
|
2801
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2802
|
+
mol.addAtom(a5);
|
|
2803
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2804
|
+
mol.addAtom(a6);
|
|
2805
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2806
|
+
mol.addAtom(a7);
|
|
2807
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2808
|
+
mol.addAtom(a8);
|
|
2809
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2810
|
+
mol.addAtom(a9);
|
|
2811
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2812
|
+
mol.addAtom(a10);
|
|
2813
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2814
|
+
mol.addAtom(a11);
|
|
2815
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2816
|
+
mol.addBond(b1);
|
|
2817
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2818
|
+
mol.addBond(b2);
|
|
2819
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2820
|
+
mol.addBond(b3);
|
|
2821
|
+
IBond b4 = MoleculeTools.newBond(builder,a1, a5, IBond.Order.SINGLE);
|
|
2822
|
+
mol.addBond(b4);
|
|
2823
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
2824
|
+
mol.addBond(b5);
|
|
2825
|
+
IBond b6 = MoleculeTools.newBond(builder,a2, a7, IBond.Order.SINGLE);
|
|
2826
|
+
mol.addBond(b6);
|
|
2827
|
+
IBond b7 = MoleculeTools.newBond(builder,a3, a8, IBond.Order.SINGLE);
|
|
2828
|
+
mol.addBond(b7);
|
|
2829
|
+
IBond b8 = MoleculeTools.newBond(builder,a3, a9, IBond.Order.SINGLE);
|
|
2830
|
+
mol.addBond(b8);
|
|
2831
|
+
IBond b9 = MoleculeTools.newBond(builder,a4, a10, IBond.Order.SINGLE);
|
|
2832
|
+
mol.addBond(b9);
|
|
2833
|
+
IBond b10 = MoleculeTools.newBond(builder,a4, a11, IBond.Order.SINGLE);
|
|
2834
|
+
mol.addBond(b10);
|
|
2835
|
+
mol.setID("allyl amine");
|
|
2836
|
+
return mol;
|
|
2837
|
+
}
|
|
2838
|
+
public static IAtomContainer allylSulphide() {
|
|
2839
|
+
//return createAtomContainer("C=CCSCC=C","allyl sulphide");
|
|
2840
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2841
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2842
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2843
|
+
mol.addAtom(a1);
|
|
2844
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2845
|
+
mol.addAtom(a2);
|
|
2846
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2847
|
+
mol.addAtom(a3);
|
|
2848
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR);
|
|
2849
|
+
mol.addAtom(a4);
|
|
2850
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2851
|
+
mol.addAtom(a5);
|
|
2852
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2853
|
+
mol.addAtom(a6);
|
|
2854
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2855
|
+
mol.addAtom(a7);
|
|
2856
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2857
|
+
mol.addAtom(a8);
|
|
2858
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2859
|
+
mol.addAtom(a9);
|
|
2860
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2861
|
+
mol.addAtom(a10);
|
|
2862
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2863
|
+
mol.addAtom(a11);
|
|
2864
|
+
IAtom a12 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2865
|
+
mol.addAtom(a12);
|
|
2866
|
+
IAtom a13 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2867
|
+
mol.addAtom(a13);
|
|
2868
|
+
IAtom a14 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2869
|
+
mol.addAtom(a14);
|
|
2870
|
+
IAtom a15 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2871
|
+
mol.addAtom(a15);
|
|
2872
|
+
IAtom a16 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2873
|
+
mol.addAtom(a16);
|
|
2874
|
+
IAtom a17 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2875
|
+
mol.addAtom(a17);
|
|
2876
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2877
|
+
mol.addBond(b1);
|
|
2878
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2879
|
+
mol.addBond(b2);
|
|
2880
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2881
|
+
mol.addBond(b3);
|
|
2882
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.SINGLE);
|
|
2883
|
+
mol.addBond(b4);
|
|
2884
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a5, IBond.Order.SINGLE);
|
|
2885
|
+
mol.addBond(b5);
|
|
2886
|
+
IBond b6 = MoleculeTools.newBond(builder,a7, a6, IBond.Order.DOUBLE);
|
|
2887
|
+
mol.addBond(b6);
|
|
2888
|
+
IBond b7 = MoleculeTools.newBond(builder,a1, a8, IBond.Order.SINGLE);
|
|
2889
|
+
mol.addBond(b7);
|
|
2890
|
+
IBond b8 = MoleculeTools.newBond(builder,a1, a9, IBond.Order.SINGLE);
|
|
2891
|
+
mol.addBond(b8);
|
|
2892
|
+
IBond b9 = MoleculeTools.newBond(builder,a2, a10, IBond.Order.SINGLE);
|
|
2893
|
+
mol.addBond(b9);
|
|
2894
|
+
IBond b10 = MoleculeTools.newBond(builder,a3, a11, IBond.Order.SINGLE);
|
|
2895
|
+
mol.addBond(b10);
|
|
2896
|
+
IBond b11 = MoleculeTools.newBond(builder,a3, a12, IBond.Order.SINGLE);
|
|
2897
|
+
mol.addBond(b11);
|
|
2898
|
+
IBond b12 = MoleculeTools.newBond(builder,a5, a13, IBond.Order.SINGLE);
|
|
2899
|
+
mol.addBond(b12);
|
|
2900
|
+
IBond b13 = MoleculeTools.newBond(builder,a5, a14, IBond.Order.SINGLE);
|
|
2901
|
+
mol.addBond(b13);
|
|
2902
|
+
IBond b14 = MoleculeTools.newBond(builder,a6, a15, IBond.Order.SINGLE);
|
|
2903
|
+
mol.addBond(b14);
|
|
2904
|
+
IBond b15 = MoleculeTools.newBond(builder,a7, a16, IBond.Order.SINGLE);
|
|
2905
|
+
mol.addBond(b15);
|
|
2906
|
+
IBond b16 = MoleculeTools.newBond(builder,a7, a17, IBond.Order.SINGLE);
|
|
2907
|
+
mol.addBond(b16);
|
|
2908
|
+
mol.setID("allyl sulphide");
|
|
2909
|
+
return mol;
|
|
2910
|
+
}
|
|
2911
|
+
public static IAtomContainer allylThioester() {
|
|
2912
|
+
// return createQuery("C(=O)SCC=C","allyl thioester");
|
|
2913
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2914
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2915
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2916
|
+
mol.addAtom(a1);
|
|
2917
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
2918
|
+
mol.addAtom(a2);
|
|
2919
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.SULFUR);
|
|
2920
|
+
mol.addAtom(a3);
|
|
2921
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2922
|
+
mol.addAtom(a4);
|
|
2923
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2924
|
+
mol.addAtom(a5);
|
|
2925
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2926
|
+
mol.addAtom(a6);
|
|
2927
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2928
|
+
mol.addAtom(a7);
|
|
2929
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2930
|
+
mol.addAtom(a8);
|
|
2931
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2932
|
+
mol.addAtom(a9);
|
|
2933
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2934
|
+
mol.addAtom(a10);
|
|
2935
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2936
|
+
mol.addAtom(a11);
|
|
2937
|
+
IAtom a12 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2938
|
+
mol.addAtom(a12);
|
|
2939
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2940
|
+
mol.addBond(b1);
|
|
2941
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a1, IBond.Order.SINGLE);
|
|
2942
|
+
mol.addBond(b2);
|
|
2943
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
2944
|
+
mol.addBond(b3);
|
|
2945
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.SINGLE);
|
|
2946
|
+
mol.addBond(b4);
|
|
2947
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a5, IBond.Order.DOUBLE);
|
|
2948
|
+
mol.addBond(b5);
|
|
2949
|
+
IBond b6 = MoleculeTools.newBond(builder,a1, a7, IBond.Order.SINGLE);
|
|
2950
|
+
mol.addBond(b6);
|
|
2951
|
+
IBond b7 = MoleculeTools.newBond(builder,a4, a8, IBond.Order.SINGLE);
|
|
2952
|
+
mol.addBond(b7);
|
|
2953
|
+
IBond b8 = MoleculeTools.newBond(builder,a4, a9, IBond.Order.SINGLE);
|
|
2954
|
+
mol.addBond(b8);
|
|
2955
|
+
IBond b9 = MoleculeTools.newBond(builder,a5, a10, IBond.Order.SINGLE);
|
|
2956
|
+
mol.addBond(b9);
|
|
2957
|
+
IBond b10 = MoleculeTools.newBond(builder,a6, a11, IBond.Order.SINGLE);
|
|
2958
|
+
mol.addBond(b10);
|
|
2959
|
+
IBond b11 = MoleculeTools.newBond(builder,a6, a12, IBond.Order.SINGLE);
|
|
2960
|
+
mol.addBond(b11);
|
|
2961
|
+
mol.setID("allyl thioester");
|
|
2962
|
+
return mol;
|
|
2963
|
+
}
|
|
2964
|
+
public static IAtomContainer acrolein() {
|
|
2965
|
+
//return createAtomContainer("C=CC=O","acrolein");
|
|
2966
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
2967
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
2968
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2969
|
+
mol.addAtom(a1);
|
|
2970
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2971
|
+
mol.addAtom(a2);
|
|
2972
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
2973
|
+
mol.addAtom(a3);
|
|
2974
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
2975
|
+
mol.addAtom(a4);
|
|
2976
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2977
|
+
mol.addAtom(a5);
|
|
2978
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2979
|
+
mol.addAtom(a6);
|
|
2980
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2981
|
+
mol.addAtom(a7);
|
|
2982
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
2983
|
+
mol.addAtom(a8);
|
|
2984
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
2985
|
+
mol.addBond(b1);
|
|
2986
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
2987
|
+
mol.addBond(b2);
|
|
2988
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.DOUBLE);
|
|
2989
|
+
mol.addBond(b3);
|
|
2990
|
+
IBond b4 = MoleculeTools.newBond(builder,a1, a5, IBond.Order.SINGLE);
|
|
2991
|
+
mol.addBond(b4);
|
|
2992
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
2993
|
+
mol.addBond(b5);
|
|
2994
|
+
IBond b6 = MoleculeTools.newBond(builder,a2, a7, IBond.Order.SINGLE);
|
|
2995
|
+
mol.addBond(b6);
|
|
2996
|
+
IBond b7 = MoleculeTools.newBond(builder,a3, a8, IBond.Order.SINGLE);
|
|
2997
|
+
mol.addBond(b7);
|
|
2998
|
+
mol.setID("acrolein");
|
|
2999
|
+
return mol;
|
|
3000
|
+
}
|
|
3001
|
+
public static IAtomContainer methacrolein() {
|
|
3002
|
+
//return createAtomContainer("C=C(C)C=O","methacrolein");
|
|
3003
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
3004
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
3005
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3006
|
+
mol.addAtom(a1);
|
|
3007
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3008
|
+
mol.addAtom(a2);
|
|
3009
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3010
|
+
mol.addAtom(a3);
|
|
3011
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3012
|
+
mol.addAtom(a4);
|
|
3013
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3014
|
+
mol.addAtom(a5);
|
|
3015
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3016
|
+
mol.addAtom(a6);
|
|
3017
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3018
|
+
mol.addAtom(a7);
|
|
3019
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3020
|
+
mol.addAtom(a8);
|
|
3021
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3022
|
+
mol.addAtom(a9);
|
|
3023
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3024
|
+
mol.addAtom(a10);
|
|
3025
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3026
|
+
mol.addAtom(a11);
|
|
3027
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
3028
|
+
mol.addBond(b1);
|
|
3029
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
3030
|
+
mol.addBond(b2);
|
|
3031
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a2, IBond.Order.SINGLE);
|
|
3032
|
+
mol.addBond(b3);
|
|
3033
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.DOUBLE);
|
|
3034
|
+
mol.addBond(b4);
|
|
3035
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
3036
|
+
mol.addBond(b5);
|
|
3037
|
+
IBond b6 = MoleculeTools.newBond(builder,a1, a7, IBond.Order.SINGLE);
|
|
3038
|
+
mol.addBond(b6);
|
|
3039
|
+
IBond b7 = MoleculeTools.newBond(builder,a3, a8, IBond.Order.SINGLE);
|
|
3040
|
+
mol.addBond(b7);
|
|
3041
|
+
IBond b8 = MoleculeTools.newBond(builder,a3, a9, IBond.Order.SINGLE);
|
|
3042
|
+
mol.addBond(b8);
|
|
3043
|
+
IBond b9 = MoleculeTools.newBond(builder,a3, a10, IBond.Order.SINGLE);
|
|
3044
|
+
mol.addBond(b9);
|
|
3045
|
+
IBond b10 = MoleculeTools.newBond(builder,a4, a11, IBond.Order.SINGLE);
|
|
3046
|
+
mol.addBond(b10);
|
|
3047
|
+
mol.setID("Methacrolein");
|
|
3048
|
+
return mol;
|
|
3049
|
+
}
|
|
3050
|
+
public static IAtomContainer methacroleinAcetal() {
|
|
3051
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
3052
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
3053
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3054
|
+
mol.addAtom(a1);
|
|
3055
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3056
|
+
mol.addAtom(a2);
|
|
3057
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3058
|
+
mol.addAtom(a3);
|
|
3059
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3060
|
+
mol.addAtom(a4);
|
|
3061
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3062
|
+
mol.addAtom(a5);
|
|
3063
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3064
|
+
mol.addAtom(a6);
|
|
3065
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3066
|
+
mol.addAtom(a7);
|
|
3067
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3068
|
+
mol.addAtom(a8);
|
|
3069
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3070
|
+
mol.addAtom(a9);
|
|
3071
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3072
|
+
mol.addAtom(a10);
|
|
3073
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3074
|
+
mol.addAtom(a11);
|
|
3075
|
+
IAtom a12 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3076
|
+
mol.addAtom(a12);
|
|
3077
|
+
IAtom a13 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3078
|
+
mol.addAtom(a13);
|
|
3079
|
+
IAtom a14 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3080
|
+
mol.addAtom(a14);
|
|
3081
|
+
IAtom a15 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3082
|
+
mol.addAtom(a15);
|
|
3083
|
+
IAtom a16 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3084
|
+
mol.addAtom(a16);
|
|
3085
|
+
IAtom a17 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3086
|
+
mol.addAtom(a17);
|
|
3087
|
+
IAtom a18 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3088
|
+
mol.addAtom(a18);
|
|
3089
|
+
IAtom a19 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3090
|
+
mol.addAtom(a19);
|
|
3091
|
+
IAtom a20 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3092
|
+
mol.addAtom(a20);
|
|
3093
|
+
IBond b1 = MoleculeTools.newBond(builder,a1, a2, IBond.Order.SINGLE);
|
|
3094
|
+
mol.addBond(b1);
|
|
3095
|
+
IBond b2 = MoleculeTools.newBond(builder,a2, a3, IBond.Order.SINGLE);
|
|
3096
|
+
mol.addBond(b2);
|
|
3097
|
+
IBond b3 = MoleculeTools.newBond(builder,a3, a4, IBond.Order.DOUBLE);
|
|
3098
|
+
mol.addBond(b3);
|
|
3099
|
+
IBond b4 = MoleculeTools.newBond(builder,a2, a5, IBond.Order.SINGLE);
|
|
3100
|
+
mol.addBond(b4);
|
|
3101
|
+
IBond b5 = MoleculeTools.newBond(builder,a2, a6, IBond.Order.SINGLE);
|
|
3102
|
+
mol.addBond(b5);
|
|
3103
|
+
IBond b6 = MoleculeTools.newBond(builder,a1, a7, IBond.Order.SINGLE);
|
|
3104
|
+
mol.addBond(b6);
|
|
3105
|
+
IBond b7 = MoleculeTools.newBond(builder,a1, a8, IBond.Order.SINGLE);
|
|
3106
|
+
mol.addBond(b7);
|
|
3107
|
+
IBond b8 = MoleculeTools.newBond(builder,a1, a9, IBond.Order.SINGLE);
|
|
3108
|
+
mol.addBond(b8);
|
|
3109
|
+
IBond b9 = MoleculeTools.newBond(builder,a3, a10, IBond.Order.SINGLE);
|
|
3110
|
+
mol.addBond(b9);
|
|
3111
|
+
IBond b10 = MoleculeTools.newBond(builder,a5, a11, IBond.Order.SINGLE);
|
|
3112
|
+
mol.addBond(b10);
|
|
3113
|
+
IBond b11 = MoleculeTools.newBond(builder,a6, a12, IBond.Order.SINGLE);
|
|
3114
|
+
mol.addBond(b11);
|
|
3115
|
+
IBond b12 = MoleculeTools.newBond(builder,a4, a13, IBond.Order.SINGLE);
|
|
3116
|
+
mol.addBond(b12);
|
|
3117
|
+
IBond b13 = MoleculeTools.newBond(builder,a4, a14, IBond.Order.SINGLE);
|
|
3118
|
+
mol.addBond(b13);
|
|
3119
|
+
IBond b14 = MoleculeTools.newBond(builder,a12, a15, IBond.Order.SINGLE);
|
|
3120
|
+
mol.addBond(b14);
|
|
3121
|
+
IBond b15 = MoleculeTools.newBond(builder,a12, a16, IBond.Order.SINGLE);
|
|
3122
|
+
mol.addBond(b15);
|
|
3123
|
+
IBond b16 = MoleculeTools.newBond(builder,a12, a17, IBond.Order.SINGLE);
|
|
3124
|
+
mol.addBond(b16);
|
|
3125
|
+
IBond b17 = MoleculeTools.newBond(builder,a11, a18, IBond.Order.SINGLE);
|
|
3126
|
+
mol.addBond(b17);
|
|
3127
|
+
IBond b18 = MoleculeTools.newBond(builder,a11, a19, IBond.Order.SINGLE);
|
|
3128
|
+
mol.addBond(b18);
|
|
3129
|
+
IBond b19 = MoleculeTools.newBond(builder,a11, a20, IBond.Order.SINGLE);
|
|
3130
|
+
mol.addBond(b19);
|
|
3131
|
+
mol.setID("Methacrolein acetal");
|
|
3132
|
+
return mol;
|
|
3133
|
+
|
|
3134
|
+
}
|
|
3135
|
+
public static IAtomContainer acrylicAcid() {
|
|
3136
|
+
//return createAtomContainer("C=CC(O)=O","acrylic acid");
|
|
3137
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
3138
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
3139
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3140
|
+
mol.addAtom(a1);
|
|
3141
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3142
|
+
mol.addAtom(a2);
|
|
3143
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3144
|
+
mol.addAtom(a3);
|
|
3145
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3146
|
+
mol.addAtom(a4);
|
|
3147
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3148
|
+
mol.addAtom(a5);
|
|
3149
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3150
|
+
mol.addAtom(a6);
|
|
3151
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3152
|
+
mol.addAtom(a7);
|
|
3153
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3154
|
+
mol.addAtom(a8);
|
|
3155
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3156
|
+
mol.addAtom(a9);
|
|
3157
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
3158
|
+
mol.addBond(b1);
|
|
3159
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
3160
|
+
mol.addBond(b2);
|
|
3161
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a3, IBond.Order.SINGLE);
|
|
3162
|
+
mol.addBond(b3);
|
|
3163
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a3, IBond.Order.DOUBLE);
|
|
3164
|
+
mol.addBond(b4);
|
|
3165
|
+
IBond b5 = MoleculeTools.newBond(builder,a1, a6, IBond.Order.SINGLE);
|
|
3166
|
+
mol.addBond(b5);
|
|
3167
|
+
IBond b6 = MoleculeTools.newBond(builder,a1, a7, IBond.Order.SINGLE);
|
|
3168
|
+
mol.addBond(b6);
|
|
3169
|
+
IBond b7 = MoleculeTools.newBond(builder,a2, a8, IBond.Order.SINGLE);
|
|
3170
|
+
mol.addBond(b7);
|
|
3171
|
+
IBond b8 = MoleculeTools.newBond(builder,a4, a9, IBond.Order.SINGLE);
|
|
3172
|
+
mol.addBond(b8);
|
|
3173
|
+
mol.setID("acrylic acid");
|
|
3174
|
+
return mol;
|
|
3175
|
+
}
|
|
3176
|
+
public static IAtomContainer methacrylicAcid() {
|
|
3177
|
+
//return createAtomContainer("C=C(C)C(O)=O","methacrylic acid");
|
|
3178
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
3179
|
+
IMolecule mol = MoleculeTools.newMolecule(builder);
|
|
3180
|
+
IAtom a1 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3181
|
+
mol.addAtom(a1);
|
|
3182
|
+
IAtom a2 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3183
|
+
mol.addAtom(a2);
|
|
3184
|
+
IAtom a3 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3185
|
+
mol.addAtom(a3);
|
|
3186
|
+
IAtom a4 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON);
|
|
3187
|
+
mol.addAtom(a4);
|
|
3188
|
+
IAtom a5 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3189
|
+
mol.addAtom(a5);
|
|
3190
|
+
IAtom a6 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3191
|
+
mol.addAtom(a6);
|
|
3192
|
+
IAtom a7 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3193
|
+
mol.addAtom(a7);
|
|
3194
|
+
IAtom a8 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3195
|
+
mol.addAtom(a8);
|
|
3196
|
+
IAtom a9 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3197
|
+
mol.addAtom(a9);
|
|
3198
|
+
IAtom a10 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3199
|
+
mol.addAtom(a10);
|
|
3200
|
+
IAtom a11 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3201
|
+
mol.addAtom(a11);
|
|
3202
|
+
IAtom a12 = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3203
|
+
mol.addAtom(a12);
|
|
3204
|
+
IBond b1 = MoleculeTools.newBond(builder,a2, a1, IBond.Order.DOUBLE);
|
|
3205
|
+
mol.addBond(b1);
|
|
3206
|
+
IBond b2 = MoleculeTools.newBond(builder,a3, a2, IBond.Order.SINGLE);
|
|
3207
|
+
mol.addBond(b2);
|
|
3208
|
+
IBond b3 = MoleculeTools.newBond(builder,a4, a2, IBond.Order.SINGLE);
|
|
3209
|
+
mol.addBond(b3);
|
|
3210
|
+
IBond b4 = MoleculeTools.newBond(builder,a5, a4, IBond.Order.SINGLE);
|
|
3211
|
+
mol.addBond(b4);
|
|
3212
|
+
IBond b5 = MoleculeTools.newBond(builder,a6, a4, IBond.Order.DOUBLE);
|
|
3213
|
+
mol.addBond(b5);
|
|
3214
|
+
IBond b6 = MoleculeTools.newBond(builder,a1, a7, IBond.Order.SINGLE);
|
|
3215
|
+
mol.addBond(b6);
|
|
3216
|
+
IBond b7 = MoleculeTools.newBond(builder,a1, a8, IBond.Order.SINGLE);
|
|
3217
|
+
mol.addBond(b7);
|
|
3218
|
+
IBond b8 = MoleculeTools.newBond(builder,a3, a9, IBond.Order.SINGLE);
|
|
3219
|
+
mol.addBond(b8);
|
|
3220
|
+
IBond b9 = MoleculeTools.newBond(builder,a3, a10, IBond.Order.SINGLE);
|
|
3221
|
+
mol.addBond(b9);
|
|
3222
|
+
IBond b10 = MoleculeTools.newBond(builder,a3, a11, IBond.Order.SINGLE);
|
|
3223
|
+
mol.addBond(b10);
|
|
3224
|
+
IBond b11 = MoleculeTools.newBond(builder,a5, a12, IBond.Order.SINGLE);
|
|
3225
|
+
mol.addBond(b11);
|
|
3226
|
+
mol.setID("methacrylic acid");
|
|
3227
|
+
return mol;
|
|
3228
|
+
}
|
|
3229
|
+
public static boolean isAcetylenic(IAtomContainer mol) {
|
|
3230
|
+
for (int i = 0; i < mol.getBondCount(); i++) {
|
|
3231
|
+
IBond b = mol.getBond(i);
|
|
3232
|
+
if ((b.getOrder() == CDKConstants.BONDORDER_TRIPLE) &&
|
|
3233
|
+
(b.getAtom(0).getSymbol().equals("C")) &&
|
|
3234
|
+
(b.getAtom(1).getSymbol().equals("C"))
|
|
3235
|
+
) {
|
|
3236
|
+
logger.fine("Acetylenic group found");
|
|
3237
|
+
return true;
|
|
3238
|
+
}
|
|
3239
|
+
}
|
|
3240
|
+
return false;
|
|
3241
|
+
}
|
|
3242
|
+
|
|
3243
|
+
public static QueryAtomContainer stericallyHindered() {
|
|
3244
|
+
|
|
3245
|
+
QueryAtomContainer mol = new QueryAtomContainer();
|
|
3246
|
+
SymbolQueryAtom a[] = new SymbolQueryAtom[6];
|
|
3247
|
+
|
|
3248
|
+
InverseSymbolSetQueryAtom[] r = new InverseSymbolSetQueryAtom[6];
|
|
3249
|
+
for (int i=0; i < 6; i++) {
|
|
3250
|
+
r[i] = new InverseSymbolSetQueryAtom();
|
|
3251
|
+
a[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
3252
|
+
mol.addAtom(a[i]);
|
|
3253
|
+
r[i].addSymbol("H");
|
|
3254
|
+
mol.addAtom(r[i]);
|
|
3255
|
+
if (i>0) {
|
|
3256
|
+
AnyOrderQueryBond b = new AnyOrderQueryBond(a[i], a[i-1],IBond.Order.SINGLE);
|
|
3257
|
+
mol.addBond(b);
|
|
3258
|
+
}
|
|
3259
|
+
}
|
|
3260
|
+
SymbolQueryAtom a7 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
3261
|
+
mol.addAtom(a7);
|
|
3262
|
+
SymbolQueryAtom a11 = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
3263
|
+
mol.addAtom(a11);
|
|
3264
|
+
|
|
3265
|
+
InverseSymbolSetQueryAtom hindered = new InverseSymbolSetQueryAtom();
|
|
3266
|
+
hindered.addSymbol("H"); //anything but H
|
|
3267
|
+
//hindered.addSymbol("C");
|
|
3268
|
+
mol.addAtom(hindered);
|
|
3269
|
+
AnyOrderQueryBond b = new AnyOrderQueryBond(a[3], hindered,IBond.Order.SINGLE);
|
|
3270
|
+
mol.addBond(b);
|
|
3271
|
+
|
|
3272
|
+
OrderQueryBond b7 = new OrderQueryBond(a[2], a7, IBond.Order.SINGLE);
|
|
3273
|
+
mol.addBond(b7);
|
|
3274
|
+
OrderQueryBond b8 = new OrderQueryBond(a7, r[0], IBond.Order.SINGLE);
|
|
3275
|
+
mol.addBond(b8);
|
|
3276
|
+
OrderQueryBond b9 = new OrderQueryBond(a7, r[1], IBond.Order.SINGLE);
|
|
3277
|
+
mol.addBond(b9);
|
|
3278
|
+
OrderQueryBond b10 = new OrderQueryBond(a7, r[2], IBond.Order.SINGLE);
|
|
3279
|
+
mol.addBond(b10);
|
|
3280
|
+
OrderQueryBond b11 = new OrderQueryBond(a[4], a11, IBond.Order.SINGLE);
|
|
3281
|
+
mol.addBond(b11);
|
|
3282
|
+
OrderQueryBond b12 = new OrderQueryBond(a11, r[3], IBond.Order.SINGLE);
|
|
3283
|
+
mol.addBond(b12);
|
|
3284
|
+
OrderQueryBond b13 = new OrderQueryBond(a11, r[4], IBond.Order.SINGLE);
|
|
3285
|
+
mol.addBond(b13);
|
|
3286
|
+
OrderQueryBond b14 = new OrderQueryBond(a11, r[5], IBond.Order.SINGLE);
|
|
3287
|
+
mol.addBond(b14);
|
|
3288
|
+
|
|
3289
|
+
mol.setID("Sterically hindered\t");
|
|
3290
|
+
return mol;
|
|
3291
|
+
}
|
|
3292
|
+
public static boolean hasSubstituents(IAtomContainer mol, IRingSet rings) {
|
|
3293
|
+
|
|
3294
|
+
if ((rings == null) || (rings.getAtomContainerCount()==0)) return false;
|
|
3295
|
+
int size = rings.getAtomContainerCount();
|
|
3296
|
+
IRing r = null;
|
|
3297
|
+
//Atom[] neighbors = null;
|
|
3298
|
+
List neighbors = null;
|
|
3299
|
+
for (int i=0; i < size; i++) {
|
|
3300
|
+
r = (IRing) rings.getAtomContainer(i);
|
|
3301
|
+
for (int j=0; j< r.getAtomCount(); j++) {
|
|
3302
|
+
//
|
|
3303
|
+
neighbors = mol.getConnectedBondsList(r.getAtom(j));
|
|
3304
|
+
for (int n=0; n< neighbors.size(); n++) {
|
|
3305
|
+
IBond nb = (IBond) neighbors.get(n);
|
|
3306
|
+
if (nb.getAtom(0).getSymbol().equals("H")) continue;
|
|
3307
|
+
if (nb.getAtom(1).getSymbol().equals("H")) continue;
|
|
3308
|
+
//if there is acyclic bond then it is substituent
|
|
3309
|
+
if (!nb.getFlag(CDKConstants.ISINRING)) return true;
|
|
3310
|
+
/*
|
|
3311
|
+
if (!r.contains(neighbors[n])) {
|
|
3312
|
+
logger.fine("Ring has substituent(s)\t","YES\t",neighbors[n].getSymbol());
|
|
3313
|
+
return true;
|
|
3314
|
+
}
|
|
3315
|
+
*/
|
|
3316
|
+
}
|
|
3317
|
+
}
|
|
3318
|
+
}
|
|
3319
|
+
logger.fine("Ring with substituent(s)\tNO");
|
|
3320
|
+
return false;
|
|
3321
|
+
}
|
|
3322
|
+
public static boolean isCommonTerpene(IAtomContainer mol) {
|
|
3323
|
+
SSSRFinder ssrf = new SSSRFinder(mol);
|
|
3324
|
+
return isCommonTerpene(mol,ssrf.findSSSR());
|
|
3325
|
+
}
|
|
3326
|
+
public static boolean isCommonTerpene(IAtomContainer mol, IRingSet rings) {
|
|
3327
|
+
|
|
3328
|
+
IMolecularFormula formula = MolecularFormulaManipulator.getMolecularFormula(mol);
|
|
3329
|
+
int c = MolecularFormulaManipulator.getElementCount(formula,MoleculeTools.newElement(formula.getBuilder(),"C"));
|
|
3330
|
+
|
|
3331
|
+
if ((c % 5) != 0) return false;
|
|
3332
|
+
int n = c / 5;
|
|
3333
|
+
if (n < 2) return false;
|
|
3334
|
+
int h = MolecularFormulaManipulator.getElementCount(formula,MoleculeTools.newElement(formula.getBuilder(),"H"));
|
|
3335
|
+
|
|
3336
|
+
|
|
3337
|
+
if (h/8 != n) {
|
|
3338
|
+
logger.fine(MolecularFormulaManipulator.getHillString(formula));
|
|
3339
|
+
return false;
|
|
3340
|
+
}
|
|
3341
|
+
int o = MolecularFormulaManipulator.getElementCount(formula,MoleculeTools.newElement(formula.getBuilder(),"O"));
|
|
3342
|
+
if ((c + h + o) < mol.getAtomCount()) return false; //athoms different than C,H,O
|
|
3343
|
+
|
|
3344
|
+
QueryAtomContainer q = isopreneUnit();
|
|
3345
|
+
List list = FunctionalGroups.getBondMap(mol, q,false);
|
|
3346
|
+
if ((list == null) || (list.size() == 0)) {
|
|
3347
|
+
logger.fine("NO isoprene unit found");
|
|
3348
|
+
return false;
|
|
3349
|
+
}
|
|
3350
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
3351
|
+
|
|
3352
|
+
ArrayList ids = new ArrayList();
|
|
3353
|
+
ids.add(q.getID());
|
|
3354
|
+
|
|
3355
|
+
int size = 0;
|
|
3356
|
+
if (rings != null) size = rings.getAtomContainerCount();
|
|
3357
|
+
if ((rings!=null) && (size > 0) && ((c + h) == mol.getAtomCount())) {
|
|
3358
|
+
// w monociklicnite ima 2 double bond, w biciklicnite ima 1 double
|
|
3359
|
+
int db = 0;
|
|
3360
|
+
for (int i=0; i< mol.getBondCount(); i++)
|
|
3361
|
+
if (mol.getBond(i).getOrder() == CDKConstants.BONDORDER_DOUBLE) db++;
|
|
3362
|
+
if ((size == 1) && (db != 2)) {
|
|
3363
|
+
logger.fine("Single ring , double bonds "+db);
|
|
3364
|
+
return false;
|
|
3365
|
+
}
|
|
3366
|
+
if ((size == 2) && (db != 1)) {
|
|
3367
|
+
logger.fine("Two rings , double bonds "+db);
|
|
3368
|
+
return false;
|
|
3369
|
+
}
|
|
3370
|
+
logger.fine("May be terpene");
|
|
3371
|
+
//za ostanalite neznam
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3374
|
+
if (o>0) { //check for alcohol, aldehyde, carboxylic acid
|
|
3375
|
+
preProcess(mol);
|
|
3376
|
+
q= alcohol(false); ids.add(q.getID());
|
|
3377
|
+
list = FunctionalGroups.getBondMap(mol, q,true);
|
|
3378
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
3379
|
+
q= aldehyde(); ids.add(q.getID());
|
|
3380
|
+
list = FunctionalGroups.getBondMap(mol, q,true);
|
|
3381
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
3382
|
+
q= carboxylicAcid(); ids.add(q.getID());
|
|
3383
|
+
list = FunctionalGroups.getBondMap(mol, q,true);
|
|
3384
|
+
FunctionalGroups.markMaps(mol, q, list);
|
|
3385
|
+
}
|
|
3386
|
+
|
|
3387
|
+
boolean b = hasMarkedOnlyTheseGroups(mol,ids);
|
|
3388
|
+
if (logger.isLoggable(Level.FINE)) {
|
|
3389
|
+
logger.fine(mapToString(mol).toString());
|
|
3390
|
+
if (b) logger.fine("This compound is a terpene (terpenoid)");
|
|
3391
|
+
else logger.fine("This compound is NOT a terpene");
|
|
3392
|
+
}
|
|
3393
|
+
return b;
|
|
3394
|
+
|
|
3395
|
+
}
|
|
3396
|
+
public static boolean singleFusedRing(IAtomContainer mol, IRingSet rings) {
|
|
3397
|
+
|
|
3398
|
+
if ((rings == null) || (rings.getAtomContainerCount() ==0) ) return false;
|
|
3399
|
+
int size = rings.getAtomContainerCount();
|
|
3400
|
+
if (size==1) return true;
|
|
3401
|
+
IRingSet allRings = rings.getConnectedRings((IRing)rings.getAtomContainer(0));
|
|
3402
|
+
boolean b = (allRings.getAtomContainerCount() == size);
|
|
3403
|
+
if (b) logger.fine("Single fused ring found");
|
|
3404
|
+
allRings = null;
|
|
3405
|
+
return b;
|
|
3406
|
+
}
|
|
3407
|
+
public static boolean hasGroup(IAtomContainer mol, IAtomContainer q) {
|
|
3408
|
+
return hasGroup(mol, q, null);
|
|
3409
|
+
}
|
|
3410
|
+
public static boolean hasGroup(IAtomContainer mol, IAtomContainer q, IAtomContainer selected) {
|
|
3411
|
+
//search for these groups relies on CHn marks set by markCHn
|
|
3412
|
+
return hasGroup(mol,q,needsPreprocessing(q),selected);
|
|
3413
|
+
}
|
|
3414
|
+
public static boolean hasGroup(IAtomContainer mol, IAtomContainer q, boolean preprocess) {
|
|
3415
|
+
return hasGroup(mol, q,preprocess, null);
|
|
3416
|
+
}
|
|
3417
|
+
public static boolean hasGroup(IAtomContainer mol, IAtomContainer q, boolean preprocess, IAtomContainer selected) {
|
|
3418
|
+
if (q==null || mol==null) return false;
|
|
3419
|
+
if (q.getAtomCount() > mol.getAtomCount()) {
|
|
3420
|
+
logger.fine("A query with more atoms than a molecule!");
|
|
3421
|
+
return false;
|
|
3422
|
+
}
|
|
3423
|
+
if (preprocess) {
|
|
3424
|
+
logger.fine("Marking CHn groups");
|
|
3425
|
+
preProcess(mol);
|
|
3426
|
+
}
|
|
3427
|
+
if (selected==null)
|
|
3428
|
+
try {
|
|
3429
|
+
|
|
3430
|
+
if (UniversalIsomorphismTester.isSubgraph(mol,q)) {
|
|
3431
|
+
//logger.fine(mapToString(mol));
|
|
3432
|
+
logger.fine("Molecule \t"+mol.getID()+MSG_HASGROUP+q.getID()+"\tYES");
|
|
3433
|
+
return true;
|
|
3434
|
+
} else {
|
|
3435
|
+
//logger.fine(mapToString(mol));
|
|
3436
|
+
logger.fine("Molecule \t"+mol.getID()+MSG_HASGROUP+q.getID()+"\tNO");
|
|
3437
|
+
return false;
|
|
3438
|
+
}
|
|
3439
|
+
} catch (Exception x) {
|
|
3440
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
3441
|
+
return false;
|
|
3442
|
+
}
|
|
3443
|
+
else
|
|
3444
|
+
try {
|
|
3445
|
+
List<RMap> list = UniversalIsomorphismTester.getSubgraphAtomsMap(mol,q);
|
|
3446
|
+
if (list != null)
|
|
3447
|
+
for (int i=0; i < list.size();i++) {
|
|
3448
|
+
RMap map = list.get(i);
|
|
3449
|
+
selected.addAtom(mol.getAtom(map.getId1()));
|
|
3450
|
+
}
|
|
3451
|
+
return (list != null) && (list.size()>0);
|
|
3452
|
+
|
|
3453
|
+
} catch (CDKException x) {
|
|
3454
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
3455
|
+
return false;
|
|
3456
|
+
}
|
|
3457
|
+
}
|
|
3458
|
+
public static boolean isSubstance(IAtomContainer mol, IAtomContainer q) {
|
|
3459
|
+
try {
|
|
3460
|
+
if (mol.getAtomCount() != q.getAtomCount()) return false; // no need to spend time on isomorphism ...
|
|
3461
|
+
if (mol.getBondCount() != q.getBondCount()) return false; // no need to spend time on isomorphism ...
|
|
3462
|
+
boolean b= (UniversalIsomorphismTester.isIsomorph(mol,q));
|
|
3463
|
+
|
|
3464
|
+
if (logger.isLoggable(Level.FINE))
|
|
3465
|
+
if (b) logger.fine(MSG_MOLECULEIS+q.getID()+"\tYES");
|
|
3466
|
+
else logger.fine(MSG_MOLECULEIS+q.getID()+"\tNO");
|
|
3467
|
+
return b;
|
|
3468
|
+
} catch (CDKException x) {
|
|
3469
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
3470
|
+
return false;
|
|
3471
|
+
}
|
|
3472
|
+
|
|
3473
|
+
}
|
|
3474
|
+
private static int countGroups(IAtomContainer mol, QueryAtomContainer q) {
|
|
3475
|
+
List list = getUniqueBondMap(mol,q,false);
|
|
3476
|
+
if (list == null) return 0;
|
|
3477
|
+
else if (list.size() == 0) return 0;
|
|
3478
|
+
else {
|
|
3479
|
+
markMaps(mol,q,list);
|
|
3480
|
+
return 1;
|
|
3481
|
+
}
|
|
3482
|
+
}
|
|
3483
|
+
public static boolean hasManyDifferentFunctionalGroups(IAtomContainer mol,int threshold) {
|
|
3484
|
+
int groups = 0;
|
|
3485
|
+
boolean group = false;
|
|
3486
|
+
String metals[] = {"Na","K","Ca","Mg","Al"};
|
|
3487
|
+
IMolecularFormula formula = MolecularFormulaManipulator.getMolecularFormula(mol);
|
|
3488
|
+
markCHn(mol);
|
|
3489
|
+
List<IElement> elements = MolecularFormulaManipulator.elements(formula);
|
|
3490
|
+
logger.fine("Checking for more than " + threshold +" groups");
|
|
3491
|
+
for (int i=0; i< elements.size(); i++) {
|
|
3492
|
+
String element = elements.get(i).getSymbol();
|
|
3493
|
+
if (element.equals("H")) continue;
|
|
3494
|
+
if (element.equals("C")) {
|
|
3495
|
+
if (isAcetylenic(mol)) groups++;
|
|
3496
|
+
continue;
|
|
3497
|
+
}
|
|
3498
|
+
if (element.equals("N")) {
|
|
3499
|
+
group = FunctionalGroups.hasGroup(mol,secondaryAmine(false)) ||
|
|
3500
|
+
FunctionalGroups.hasGroup(mol,tertiaryAmine()) ||
|
|
3501
|
+
FunctionalGroups.hasGroup(mol,primaryAmine(false));
|
|
3502
|
+
if (group) {
|
|
3503
|
+
groups++;
|
|
3504
|
+
logger.fine("amino group found");
|
|
3505
|
+
}
|
|
3506
|
+
groups += countGroups(mol,cyano());
|
|
3507
|
+
groups += countGroups(mol,nitro1double());
|
|
3508
|
+
groups += countGroups(mol,nitro2double());
|
|
3509
|
+
groups += countGroups(mol,Nnitroso());
|
|
3510
|
+
groups += countGroups(mol,diAzo());
|
|
3511
|
+
groups += countGroups(mol,triAzeno());
|
|
3512
|
+
if (groups >= threshold) break;
|
|
3513
|
+
} else
|
|
3514
|
+
|
|
3515
|
+
if (element.equals("O")) {
|
|
3516
|
+
int g = countGroups(mol,carboxylicAcid()) + countGroups(mol,FunctionalGroups.ester());
|
|
3517
|
+
if (g > 0 ) {
|
|
3518
|
+
groups ++; //count once
|
|
3519
|
+
logger.fine("acid or ester group found");
|
|
3520
|
+
}
|
|
3521
|
+
groups += countGroups(mol,saltOfCarboxylicAcid(metals));
|
|
3522
|
+
groups += countGroups(mol,acetal());
|
|
3523
|
+
groups += countGroups(mol,ether());
|
|
3524
|
+
groups += countGroups(mol,aldehyde());
|
|
3525
|
+
groups += countGroups(mol,ketone());
|
|
3526
|
+
int alcohols = countGroups(mol,alcohol(false));
|
|
3527
|
+
groups += alcohols;
|
|
3528
|
+
if (groups >= threshold) break;
|
|
3529
|
+
} else
|
|
3530
|
+
|
|
3531
|
+
if (element.equals("S")) {
|
|
3532
|
+
groups += countGroups(mol,sulphide());
|
|
3533
|
+
groups += countGroups(mol,mercaptan());
|
|
3534
|
+
groups += countGroups(mol,thioester());
|
|
3535
|
+
if (groups >= threshold) break;
|
|
3536
|
+
groups += countGroups(mol,sulphate(metals));
|
|
3537
|
+
groups += countGroups(mol,sulphamate(metals));
|
|
3538
|
+
groups += countGroups(mol,sulphonate(metals));
|
|
3539
|
+
if (groups >= threshold) break;
|
|
3540
|
+
} else {
|
|
3541
|
+
//count each unlisted atom as group ... quite rude ;)
|
|
3542
|
+
if (groups >= threshold) break;
|
|
3543
|
+
groups++;
|
|
3544
|
+
}
|
|
3545
|
+
|
|
3546
|
+
}
|
|
3547
|
+
logger.fine("Different groups found\t"+groups);
|
|
3548
|
+
return (groups >= threshold);
|
|
3549
|
+
}
|
|
3550
|
+
/*
|
|
3551
|
+
public static boolean hasManyDifferentFunctionalGroups(org.openscience.cdk.interfaces.AtomContainer mol,int threshold) {
|
|
3552
|
+
int groups = 0;
|
|
3553
|
+
boolean group = false;
|
|
3554
|
+
String metals[] = {"Na","K","Ca","Mg","Al"};
|
|
3555
|
+
MFAnalyser mf= new MFAnalyser(mol);
|
|
3556
|
+
markCHn(mol);
|
|
3557
|
+
Vector elements = mf.getElements();
|
|
3558
|
+
logger.fine("Checking for more than " + threshold ," groups");
|
|
3559
|
+
for (int i=0; i< elements.size(); i++) {
|
|
3560
|
+
String element = (String) elements.get(i);
|
|
3561
|
+
if (element.equals("H")) continue;
|
|
3562
|
+
if (element.equals("C")) {
|
|
3563
|
+
if (isAcetylenic(mol)) groups++;
|
|
3564
|
+
continue;
|
|
3565
|
+
}
|
|
3566
|
+
if (element.equals("N")) {
|
|
3567
|
+
group = FunctionalGroups.hasGroup(mol,secondaryAmine(false)) ||
|
|
3568
|
+
FunctionalGroups.hasGroup(mol,tertiaryAmine()) ||
|
|
3569
|
+
FunctionalGroups.hasGroup(mol,primaryAmine(false));
|
|
3570
|
+
if (group) {
|
|
3571
|
+
groups++;
|
|
3572
|
+
logger.fine("amino group found");
|
|
3573
|
+
}
|
|
3574
|
+
groups += countGroups(mol,cyano());
|
|
3575
|
+
groups += countGroups(mol,nitro1double());
|
|
3576
|
+
groups += countGroups(mol,nitro2double());
|
|
3577
|
+
groups += countGroups(mol,Nnitroso());
|
|
3578
|
+
groups += countGroups(mol,diAzo());
|
|
3579
|
+
groups += countGroups(mol,triAzeno());
|
|
3580
|
+
if (groups >= threshold) break;
|
|
3581
|
+
} else
|
|
3582
|
+
|
|
3583
|
+
if (element.equals("O")) {
|
|
3584
|
+
group = FunctionalGroups.hasGroup(mol,carboxylicAcid()) ||
|
|
3585
|
+
|
|
3586
|
+
FunctionalGroups.hasGroup(mol,ester());
|
|
3587
|
+
if (group) {
|
|
3588
|
+
groups++;
|
|
3589
|
+
logger.fine("acid or ester group found");
|
|
3590
|
+
}
|
|
3591
|
+
groups += countGroups(mol,saltOfCarboxylicAcid(metals));
|
|
3592
|
+
groups += countGroups(mol,acetal());
|
|
3593
|
+
groups += countGroups(mol,ether());
|
|
3594
|
+
groups += countGroups(mol,aldehyde());
|
|
3595
|
+
groups += countGroups(mol,ketone());
|
|
3596
|
+
groups += countGroups(mol,alcohol(false));
|
|
3597
|
+
if (groups >= threshold) break;
|
|
3598
|
+
} else
|
|
3599
|
+
|
|
3600
|
+
if (element.equals("S")) {
|
|
3601
|
+
groups += countGroups(mol,sulphide());
|
|
3602
|
+
groups += countGroups(mol,mercaptan());
|
|
3603
|
+
groups += countGroups(mol,thioester());
|
|
3604
|
+
if (groups >= threshold) break;
|
|
3605
|
+
groups += countGroups(mol,sulphate(metals));
|
|
3606
|
+
groups += countGroups(mol,sulphamate(metals));
|
|
3607
|
+
groups += countGroups(mol,sulphonate(metals));
|
|
3608
|
+
if (groups >= threshold) break;
|
|
3609
|
+
} else {
|
|
3610
|
+
//count each unlisted atom as group ... quite rude ;)
|
|
3611
|
+
if (groups >= threshold) break;
|
|
3612
|
+
groups++;
|
|
3613
|
+
}
|
|
3614
|
+
|
|
3615
|
+
}
|
|
3616
|
+
logger.fine("Different groups found\t",groups);
|
|
3617
|
+
return (groups >= threshold);
|
|
3618
|
+
}
|
|
3619
|
+
*/
|
|
3620
|
+
public static int associateIonic(IAtomContainer a) throws CDKException {
|
|
3621
|
+
|
|
3622
|
+
IMoleculeSet c = ConnectivityChecker.partitionIntoMolecules(a);
|
|
3623
|
+
//clear VISITED flag
|
|
3624
|
+
for (int i=0; i<a.getAtomCount();i++) a.getAtom(i).setFlag(CDKConstants.VISITED,false);
|
|
3625
|
+
|
|
3626
|
+
int n = c.getAtomContainerCount();
|
|
3627
|
+
if (n == 1) return 0;
|
|
3628
|
+
logger.fine("Trying to find ionic bonds (if any)");
|
|
3629
|
+
IAtomContainer ac = null;
|
|
3630
|
+
ArrayList match = new ArrayList();
|
|
3631
|
+
StringBuffer notMatched = new StringBuffer();
|
|
3632
|
+
int ionicBonds = 0;
|
|
3633
|
+
for (int i=0; i<n; i++) {
|
|
3634
|
+
ac = c.getAtomContainer(i);
|
|
3635
|
+
logger.fine("AtomContainer \t"+Integer.toString(i+1)+" atom\t"+Integer.toString(ac.getAtomCount()));
|
|
3636
|
+
//if there are atoms with formal charge != 0
|
|
3637
|
+
for (int k=0; k<ac.getAtomCount(); k++) {
|
|
3638
|
+
IAtom atom = ac.getAtom(k);
|
|
3639
|
+
if ((atom.getFormalCharge() != null) && (atom.getFormalCharge() != 0))
|
|
3640
|
+
match.add(atom);
|
|
3641
|
+
}
|
|
3642
|
+
if (match.size() == 0) continue; //nothing to match
|
|
3643
|
+
|
|
3644
|
+
for (int j=i+1; j<n; j++) {
|
|
3645
|
+
ac = c.getAtomContainer(j);
|
|
3646
|
+
for (int k=0; k<ac.getAtomCount(); k++) {
|
|
3647
|
+
IAtom atom = ac.getAtom(k);
|
|
3648
|
+
|
|
3649
|
+
if ((atom.getFormalCharge() != null) && (atom.getFormalCharge() != 0)) {//lookup in match
|
|
3650
|
+
Object aCharge = atom.getProperty(ChargeConsumed.CHARGECONSUMED);
|
|
3651
|
+
if (aCharge == null) {
|
|
3652
|
+
aCharge = new ChargeConsumed(atom);
|
|
3653
|
+
atom.setProperty(ChargeConsumed.CHARGECONSUMED,aCharge);
|
|
3654
|
+
} else if (((ChargeConsumed)aCharge).getCharge()==0) continue;
|
|
3655
|
+
|
|
3656
|
+
for (int m=0; m<match.size(); m++) {
|
|
3657
|
+
IAtom mAtom = (IAtom) match.get(m);
|
|
3658
|
+
if ((mAtom.getFormalCharge() != null) && (mAtom.getFormalCharge() == 0)) continue;
|
|
3659
|
+
|
|
3660
|
+
Object o = mAtom.getProperty(ChargeConsumed.CHARGECONSUMED);
|
|
3661
|
+
if (o == null) mAtom.setProperty(ChargeConsumed.CHARGECONSUMED,new ChargeConsumed(mAtom));
|
|
3662
|
+
else if (((ChargeConsumed)o).getCharge()==0) continue; //already associated
|
|
3663
|
+
|
|
3664
|
+
ChargeConsumed mCharge = (ChargeConsumed)mAtom.getProperty(ChargeConsumed.CHARGECONSUMED);
|
|
3665
|
+
|
|
3666
|
+
if (mCharge.compatible((ChargeConsumed) aCharge)) {
|
|
3667
|
+
mCharge.consume((ChargeConsumed) aCharge);
|
|
3668
|
+
if (a.getBond(atom,mAtom) == null) {
|
|
3669
|
+
/*TODO replace MyAssociationBond with Association
|
|
3670
|
+
* once QueryBond matches method accepts ElectronContainer instead of Bond
|
|
3671
|
+
*/
|
|
3672
|
+
//Association ionicBond = new Association(atom,mAtom);
|
|
3673
|
+
MyAssociationBond ionicBond = new MyAssociationBond(atom,mAtom);
|
|
3674
|
+
logger.fine("Association between atom\t"+atom.getSymbol()+"\tand\t"+mAtom.getSymbol());
|
|
3675
|
+
|
|
3676
|
+
a.addElectronContainer(ionicBond);
|
|
3677
|
+
ionicBonds ++;
|
|
3678
|
+
} else logger.fine("Bond already exists : atom\t"+atom.getSymbol()+"\tand\t"+mAtom.getSymbol());
|
|
3679
|
+
break;
|
|
3680
|
+
}
|
|
3681
|
+
}
|
|
3682
|
+
}
|
|
3683
|
+
}
|
|
3684
|
+
}
|
|
3685
|
+
//verify if all atoms are matched
|
|
3686
|
+
for (int j=0;j<match.size();j++) {
|
|
3687
|
+
Object o = ((IAtom) match.get(j)).getProperty(ChargeConsumed.CHARGECONSUMED);
|
|
3688
|
+
if (o==null) {
|
|
3689
|
+
notMatched.append('\t');
|
|
3690
|
+
notMatched.append(((IAtom)match.get(j)).getSymbol());
|
|
3691
|
+
} else if (( (ChargeConsumed) o).getCharge() != 0) {
|
|
3692
|
+
notMatched.append('\t');
|
|
3693
|
+
notMatched.append(((IAtom)match.get(j)).getSymbol());
|
|
3694
|
+
}
|
|
3695
|
+
}
|
|
3696
|
+
|
|
3697
|
+
}
|
|
3698
|
+
if (notMatched.toString().length()>0)
|
|
3699
|
+
throw new CDKException("Can't find an ionic bond for atom(s)\t"+notMatched.toString());
|
|
3700
|
+
|
|
3701
|
+
logger.fine("Ionic bonds found\t"+ionicBonds);
|
|
3702
|
+
return ionicBonds;
|
|
3703
|
+
}
|
|
3704
|
+
/**
|
|
3705
|
+
* Identifies the fragment to be detached and breaks the relevant bonds
|
|
3706
|
+
* In order to function properly, the group has to be defined with at least one atom
|
|
3707
|
+
* marked with setProperty(DONTMARK,dontMark). This defined the bond to break.
|
|
3708
|
+
* See {@link #DONTMARK}
|
|
3709
|
+
* @param a AtomContainer to be processed
|
|
3710
|
+
* @param q {@link QueryAtomContainer} defines the group to be detached
|
|
3711
|
+
* @return {@link SetOfAtomContainers} set of {@link AtomContainer} resulted
|
|
3712
|
+
* by breaking bonds as above. Hydrogens are added on the broken end of each bond
|
|
3713
|
+
*TODO care for bond orders!
|
|
3714
|
+
*/
|
|
3715
|
+
public static IMoleculeSet detachGroup(IAtomContainer a, QueryAtomContainer q) {
|
|
3716
|
+
IChemObjectBuilder builder = SilentChemObjectBuilder.getInstance();
|
|
3717
|
+
|
|
3718
|
+
List list = FunctionalGroups.getUniqueBondMap(a, q,needsPreprocessing(q));
|
|
3719
|
+
if ((list == null) || (list.size() == 0)) return null;
|
|
3720
|
+
markMaps(a,q,list);
|
|
3721
|
+
ArrayList<IBond> bondsToBreak = new ArrayList<IBond>();
|
|
3722
|
+
for (int j = 0; j < list.size(); j++) {
|
|
3723
|
+
List first = (List)list.get(j);
|
|
3724
|
+
for (int i = 0; i < first.size(); i++) {
|
|
3725
|
+
RMap rmap = (RMap)first.get(i);
|
|
3726
|
+
IBond b2 = q.getBond(rmap.getId2());
|
|
3727
|
+
//IAtom[] a2 = b2.getAtoms();
|
|
3728
|
+
|
|
3729
|
+
//will break bonds that does not belong to the group but to the connected fragments
|
|
3730
|
+
//org.openscience.cdk.interfaces.Atom deleteAtom = null;
|
|
3731
|
+
IAtom stayAtom = null;
|
|
3732
|
+
//if the bond belongs to the group, the stayAtom will remain null
|
|
3733
|
+
for (int k=0; k<b2.getAtomCount();k++)
|
|
3734
|
+
if (b2.getAtom(k) instanceof ReallyAnyAtom) stayAtom = b2.getAtom(k);
|
|
3735
|
+
else {
|
|
3736
|
+
Object o = b2.getAtom(k).getProperty(DONTMARK);
|
|
3737
|
+
if ((o != null) && (o.equals(q.getID()))) stayAtom = b2.getAtom(k);
|
|
3738
|
+
//else deleteAtom = a2[k];
|
|
3739
|
+
}
|
|
3740
|
+
|
|
3741
|
+
if (stayAtom != null) {
|
|
3742
|
+
//gather all bonds to be broken in a list
|
|
3743
|
+
IBond b1 = a.getBond(rmap.getId1());
|
|
3744
|
+
if (bondsToBreak.indexOf(b1) == -1)
|
|
3745
|
+
bondsToBreak.add(b1);
|
|
3746
|
+
break;
|
|
3747
|
+
}
|
|
3748
|
+
}
|
|
3749
|
+
|
|
3750
|
+
}
|
|
3751
|
+
if (logger.isLoggable(Level.FINE))
|
|
3752
|
+
for (int i=0; i< bondsToBreak.size();i++) {
|
|
3753
|
+
IBond b = (IBond)bondsToBreak.get(i);
|
|
3754
|
+
logger.fine("Break bond between\t"+b.getAtom(0).getSymbol()+"\t"+b.getAtom(1).getSymbol());
|
|
3755
|
+
}
|
|
3756
|
+
for (int i=0; i< bondsToBreak.size();i++) {
|
|
3757
|
+
IBond b = bondsToBreak.get(i);
|
|
3758
|
+
//IAtom[] a1 = b.getAtoms();
|
|
3759
|
+
a.removeElectronContainer(b);
|
|
3760
|
+
IAtom h = null;
|
|
3761
|
+
for (int k=0; k<b.getAtomCount();k++) {
|
|
3762
|
+
IAtom a1 = b.getAtom(k);
|
|
3763
|
+
if (q.getID().equals(CARBOXYLIC_ACID_SALT))
|
|
3764
|
+
if (a1.getSymbol().equals("O") && (a1.getFormalCharge() != null) && (a1.getFormalCharge()==-1)) {
|
|
3765
|
+
a1.setFormalCharge(0);
|
|
3766
|
+
h = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3767
|
+
a.addAtom(h);
|
|
3768
|
+
a.addBond(MoleculeTools.newBond(builder,a1,h));
|
|
3769
|
+
a1.removeProperty(q.getID());
|
|
3770
|
+
} else {
|
|
3771
|
+
a1.setFormalCharge(0);
|
|
3772
|
+
//a1[k].removeProperty(DONTMARK);
|
|
3773
|
+
//a1[k].setProperty(q.getID(),new Boolean(true));
|
|
3774
|
+
}
|
|
3775
|
+
else if (q.getID().equals(HYDROCHLORIDE_OF_AMINE)) {
|
|
3776
|
+
if (a1.getSymbol().equals("N") && (a1.getFormalCharge() != null) && (a1.getFormalCharge()==1)) {
|
|
3777
|
+
a1.setFormalCharge(0);
|
|
3778
|
+
//remove h
|
|
3779
|
+
List neighbors = a.getConnectedAtomsList(a1);
|
|
3780
|
+
IAtom cl = null;
|
|
3781
|
+
for (int ih=0;ih<neighbors.size();ih++) {
|
|
3782
|
+
IAtom nh = (IAtom)neighbors.get(ih);
|
|
3783
|
+
if (nh.getSymbol().equals("H")) {
|
|
3784
|
+
logger.fine("a H atom connected to N will be moved to Cl");
|
|
3785
|
+
a.removeBond(a1,nh);
|
|
3786
|
+
cl = b.getAtom((k+1)%2);
|
|
3787
|
+
//cl = a1[(k+1)%2]; //TODO this assumes two atoms in the bond
|
|
3788
|
+
if (cl.getSymbol().equals("Cl")) {
|
|
3789
|
+
cl.setFormalCharge(0);
|
|
3790
|
+
a.addBond(MoleculeTools.newBond(builder,cl,nh));
|
|
3791
|
+
nh.removeProperty(q.getID());
|
|
3792
|
+
} else logger.fine("Expected Cl atom but found\t"+cl);
|
|
3793
|
+
break;
|
|
3794
|
+
}
|
|
3795
|
+
}
|
|
3796
|
+
|
|
3797
|
+
} else;
|
|
3798
|
+
/*{
|
|
3799
|
+
a1[k].setFormalCharge(0);
|
|
3800
|
+
h = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3801
|
+
a.addAtom(h);
|
|
3802
|
+
a.addBond(MoleculeTools.newBond(builder,a1[k],h));
|
|
3803
|
+
}*/
|
|
3804
|
+
}else if (q.getID().equals(LACTONE)) {
|
|
3805
|
+
if (a1.getSymbol().equals("O")) {
|
|
3806
|
+
h = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3807
|
+
a.addAtom(h);
|
|
3808
|
+
a.addBond(MoleculeTools.newBond(builder,a1,h));
|
|
3809
|
+
a1.removeProperty(q.getID());
|
|
3810
|
+
} else { // atatch OH
|
|
3811
|
+
h = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3812
|
+
a.addAtom(h);
|
|
3813
|
+
IAtom o = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.OXYGEN);
|
|
3814
|
+
a.addAtom(o);
|
|
3815
|
+
a.addBond(MoleculeTools.newBond(builder,o,h));
|
|
3816
|
+
a.addBond(MoleculeTools.newBond(builder,a1,o));
|
|
3817
|
+
|
|
3818
|
+
}
|
|
3819
|
+
} else {
|
|
3820
|
+
int hydrogens = a1.getValency() - a.getConnectedAtomsCount(a1);
|
|
3821
|
+
for (int nh=0; nh < hydrogens; nh++) {
|
|
3822
|
+
h = MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.HYDROGEN);
|
|
3823
|
+
a.addAtom(h);
|
|
3824
|
+
a.addBond(MoleculeTools.newBond(builder,a1,h));
|
|
3825
|
+
}
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
if ( bondsToBreak.size() > 0)
|
|
3830
|
+
return ConnectivityChecker.partitionIntoMolecules(a);
|
|
3831
|
+
else return null;
|
|
3832
|
+
}
|
|
3833
|
+
public static void clearMark(IAtomContainer a, QueryAtomContainer q) {
|
|
3834
|
+
clearMark(a,q.getID());
|
|
3835
|
+
}
|
|
3836
|
+
public static void clearMark(IAtomContainer a, Object id) {
|
|
3837
|
+
|
|
3838
|
+
|
|
3839
|
+
for (int i=0; i < a.getBondCount();i++) {
|
|
3840
|
+
IBond b = a.getBond(i);
|
|
3841
|
+
b.removeProperty(id);
|
|
3842
|
+
b.removeProperty(ALLOCATED);
|
|
3843
|
+
b.removeProperty(DONTMARK);
|
|
3844
|
+
|
|
3845
|
+
for (int k=0; k < b.getAtomCount();k++) {
|
|
3846
|
+
IAtom atom = b.getAtom(k);
|
|
3847
|
+
atom.removeProperty(id);
|
|
3848
|
+
atom.removeProperty(DONTMARK);
|
|
3849
|
+
atom.removeProperty(ALLOCATED);
|
|
3850
|
+
}
|
|
3851
|
+
}
|
|
3852
|
+
|
|
3853
|
+
}
|
|
3854
|
+
public static void clearMarks(IAtomContainer a) {
|
|
3855
|
+
for (int i=0; i < a.getBondCount();i++)
|
|
3856
|
+
a.getBond(i).getProperties().clear();
|
|
3857
|
+
for (int k=0; k < a.getAtomCount();k++)
|
|
3858
|
+
a.getAtom(k).getProperties().clear();
|
|
3859
|
+
|
|
3860
|
+
}
|
|
3861
|
+
/**
|
|
3862
|
+
*
|
|
3863
|
+
* @param size
|
|
3864
|
+
* @return ring
|
|
3865
|
+
*/
|
|
3866
|
+
public static QueryAtomContainer ring(int size) {
|
|
3867
|
+
QueryAtomContainer q = new QueryAtomContainer();
|
|
3868
|
+
q.setID("RING "+Integer.toString(size));
|
|
3869
|
+
SymbolQueryAtom[] c= new SymbolQueryAtom[size];
|
|
3870
|
+
ReallyAnyAtom[] h= new ReallyAnyAtom[size];
|
|
3871
|
+
for (int i=0;i < size; i++) {
|
|
3872
|
+
c[i] = new SymbolQueryAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
3873
|
+
c[i].setProperty(RING_NUMBERING,new Integer(i));
|
|
3874
|
+
q.addAtom(c[i]);
|
|
3875
|
+
if (i>0) q.addBond(new AnyOrderQueryBond(c[i],c[i-1],IBond.Order.SINGLE));
|
|
3876
|
+
h[i] = new ReallyAnyAtom();
|
|
3877
|
+
h[i].setProperty(RING_NUMBERING,new Integer(i));
|
|
3878
|
+
q.addAtom(h[i]);
|
|
3879
|
+
q.addBond(new AnyOrderQueryBond(c[i],h[i],IBond.Order.SINGLE));
|
|
3880
|
+
}
|
|
3881
|
+
q.addBond(new AnyOrderQueryBond(c[0],c[size-1],IBond.Order.SINGLE));
|
|
3882
|
+
return q;
|
|
3883
|
+
}
|
|
3884
|
+
/**
|
|
3885
|
+
*
|
|
3886
|
+
* @param mol
|
|
3887
|
+
* @param q
|
|
3888
|
+
*/
|
|
3889
|
+
public static void markAtomsInRing(IAtomContainer mol, QueryAtomContainer q) {
|
|
3890
|
+
try {
|
|
3891
|
+
List list = UniversalIsomorphismTester.getSubgraphAtomsMap(mol,q);
|
|
3892
|
+
if (list != null)
|
|
3893
|
+
for (int i=0; i < list.size();i++) {
|
|
3894
|
+
RMap map = (RMap)list.get(i);
|
|
3895
|
+
Object p = q.getAtom(map.getId2()).getProperty(RING_NUMBERING);
|
|
3896
|
+
if (p != null)
|
|
3897
|
+
mol.getAtom(map.getId1()).setProperty(RING_NUMBERING,p);
|
|
3898
|
+
}
|
|
3899
|
+
|
|
3900
|
+
} catch (CDKException x) {
|
|
3901
|
+
logger.log(Level.SEVERE,x.getMessage(),x);
|
|
3902
|
+
}
|
|
3903
|
+
|
|
3904
|
+
}
|
|
3905
|
+
|
|
3906
|
+
/**
|
|
3907
|
+
*
|
|
3908
|
+
* @param mol {@link AtomContainer}
|
|
3909
|
+
* @return the length of the longest carbon chain
|
|
3910
|
+
*/
|
|
3911
|
+
public static int getLongestCarbonChainLength(IAtomContainer mol) {
|
|
3912
|
+
double[][] conMat = ConnectionMatrix.getMatrix(mol);
|
|
3913
|
+
int[][] apsp = PathTools.computeFloydAPSP(conMat);
|
|
3914
|
+
int maxPathLength = 0;
|
|
3915
|
+
int bestStartAtom = -1;
|
|
3916
|
+
int bestEndAtom = -1;
|
|
3917
|
+
IAtom atom = null;
|
|
3918
|
+
IAtomContainer path = new org.openscience.cdk.AtomContainer();
|
|
3919
|
+
|
|
3920
|
+
for (int f = 0; f < apsp.length; f++) {
|
|
3921
|
+
atom = mol.getAtom(f);
|
|
3922
|
+
if (mol.getConnectedBondsCount(atom) == 1) {
|
|
3923
|
+
for (int g = 0; g < apsp.length; g++) {
|
|
3924
|
+
if (apsp[f][g] > maxPathLength) {
|
|
3925
|
+
try {
|
|
3926
|
+
path.removeAllElements();
|
|
3927
|
+
for (int i=0;i< mol.getAtomCount();i++)
|
|
3928
|
+
mol.getAtom(i).setFlag(CDKConstants.VISITED,false);
|
|
3929
|
+
if (PathTools.depthFirstTargetSearch(
|
|
3930
|
+
mol,
|
|
3931
|
+
mol.getAtom(f),
|
|
3932
|
+
mol.getAtom(g),path)) {
|
|
3933
|
+
|
|
3934
|
+
int c =0;
|
|
3935
|
+
for (int i=0;i< path.getAtomCount();i++)
|
|
3936
|
+
if (path.getAtom(i).getSymbol().equals("C")) c++;
|
|
3937
|
+
|
|
3938
|
+
if (c > maxPathLength) {
|
|
3939
|
+
maxPathLength = c;
|
|
3940
|
+
bestStartAtom = f;
|
|
3941
|
+
bestEndAtom = g;
|
|
3942
|
+
}
|
|
3943
|
+
}
|
|
3944
|
+
} catch (Exception x) {
|
|
3945
|
+
x.printStackTrace();
|
|
3946
|
+
}
|
|
3947
|
+
}
|
|
3948
|
+
}
|
|
3949
|
+
}
|
|
3950
|
+
}
|
|
3951
|
+
for (int i=0;i< mol.getAtomCount();i++)
|
|
3952
|
+
mol.getAtom(i).setFlag(CDKConstants.VISITED,false);
|
|
3953
|
+
logger.fine("Longest chaing in molecule is of length " + maxPathLength + " between atoms " + (bestStartAtom+1) + " and " + (bestEndAtom+1) );
|
|
3954
|
+
|
|
3955
|
+
return maxPathLength;
|
|
3956
|
+
}
|
|
3957
|
+
|
|
3958
|
+
public static QueryAtomContainers getAllGroups() {
|
|
3959
|
+
String[] metals = {"Na","K","Ca"};
|
|
3960
|
+
QueryAtomContainers list = new QueryAtomContainers();
|
|
3961
|
+
IAtomContainer m = new org.openscience.cdk.AtomContainer();
|
|
3962
|
+
m.addAtom(MoleculeTools.newAtom(SilentChemObjectBuilder.getInstance(),Elements.CARBON));
|
|
3963
|
+
m.setID("Empty fragment");
|
|
3964
|
+
list.add(m);
|
|
3965
|
+
list.add(methyl());
|
|
3966
|
+
list.add(methoxy());
|
|
3967
|
+
list.add(ethyl());
|
|
3968
|
+
list.add(primaryAmine(false));
|
|
3969
|
+
list.add(secondaryAmine(false));
|
|
3970
|
+
list.add(tertiaryAmine());
|
|
3971
|
+
list.add(hydrochlorideOfAmine(1));
|
|
3972
|
+
list.add(sulphateOfAmine(1));
|
|
3973
|
+
list.add(cyano());
|
|
3974
|
+
list.add(nitro2double());
|
|
3975
|
+
list.add(nitro1double());
|
|
3976
|
+
list.add(Nnitroso());
|
|
3977
|
+
list.add(diAzo());
|
|
3978
|
+
list.add(triAzeno());
|
|
3979
|
+
list.add(quaternaryNitrogen1(false));
|
|
3980
|
+
list.add(carboxylicAcid());
|
|
3981
|
+
list.add(acyclic_acetal());
|
|
3982
|
+
list.add(acetal());
|
|
3983
|
+
list.add(ether());
|
|
3984
|
+
list.add(sulphide());
|
|
3985
|
+
list.add(mercaptan());
|
|
3986
|
+
list.add(thioester());
|
|
3987
|
+
list.add(ester());
|
|
3988
|
+
list.add(carbonate());
|
|
3989
|
+
list.add(anhydride());
|
|
3990
|
+
list.add(lactone(false));
|
|
3991
|
+
list.add(ketone());
|
|
3992
|
+
list.add(aldehyde());
|
|
3993
|
+
list.add(alcohol(false));
|
|
3994
|
+
list.add(sulphamate(metals));
|
|
3995
|
+
list.add(saltOfCarboxylicAcid(metals));
|
|
3996
|
+
list.add(sulphonate(metals));
|
|
3997
|
+
list.add(sulphate(metals));
|
|
3998
|
+
return list;
|
|
3999
|
+
}
|
|
4000
|
+
|
|
4001
|
+
}
|
|
4002
|
+
/**
|
|
4003
|
+
*
|
|
4004
|
+
* Used when recognising ionic bonds
|
|
4005
|
+
* @author Nina Jeliazkova
|
|
4006
|
+
* <b>Modified</b> 2005-10-22
|
|
4007
|
+
*/
|
|
4008
|
+
class ChargeConsumed {
|
|
4009
|
+
protected IAtom atom;
|
|
4010
|
+
public static String CHARGECONSUMED = "ChargeConsumed";
|
|
4011
|
+
protected int charge=0;
|
|
4012
|
+
public ChargeConsumed(IAtom atom) {
|
|
4013
|
+
this.atom = atom;
|
|
4014
|
+
this.charge = atom.getFormalCharge();
|
|
4015
|
+
}
|
|
4016
|
+
public void consume(int amount) {
|
|
4017
|
+
charge = charge + amount;
|
|
4018
|
+
}
|
|
4019
|
+
public void consume(ChargeConsumed amount) {
|
|
4020
|
+
if (charge == - amount.getCharge()) {
|
|
4021
|
+
int newCharge = charge + amount.getCharge();
|
|
4022
|
+
amount.consume(charge);
|
|
4023
|
+
charge = newCharge;
|
|
4024
|
+
} else {
|
|
4025
|
+
int minCharge = charge;
|
|
4026
|
+
if (Math.abs(amount.getCharge()) < Math.abs(charge))
|
|
4027
|
+
minCharge = -amount.getCharge();
|
|
4028
|
+
|
|
4029
|
+
amount.consume(minCharge);
|
|
4030
|
+
consume(-minCharge);
|
|
4031
|
+
}
|
|
4032
|
+
}
|
|
4033
|
+
public int getCharge() {
|
|
4034
|
+
return charge;
|
|
4035
|
+
}
|
|
4036
|
+
public boolean compatible(ChargeConsumed c) {
|
|
4037
|
+
return (this.charge * c.getCharge()) < 0;
|
|
4038
|
+
}
|
|
4039
|
+
public String toString() {
|
|
4040
|
+
return atom.getSymbol() + "\tFormalCharge=" + atom.getFormalCharge() + "\tCharge Left=" + charge;
|
|
4041
|
+
}
|
|
4042
|
+
|
|
4043
|
+
}
|
|
4044
|
+
|
|
4045
|
+
|