[octet-devel] Modular AtomQuery, MoleculeQuery support now available in Octet.
Status: Alpha
Brought to you by:
r_apodaca
From: rich a. <che...@ya...> - 2004-12-22 03:57:17
|
I have just committed changes to the Octet CVS that address the issue of modular AtomQuery and MoleculeQuery support (http://octet.sourceforge.net). Most of the changes can be found in the net.sourceforge.octet.query package (http://cvs.sourceforge.net/viewcvs.py/octet/octet/src/net/sourceforge/octet/query/) Examples of AtomQueries now available include: MoleculeFeatureAtomQuery - Atom membership in features perceived by a MoleculeQuery (aromaticity, ring membership, etc.) AtomicNumberAtomQuery - atomic number ImplicitHydrogenAtomQuery - implicit H count NegatingAtomQuery - negates the result of another AtomQuery NeighborCountAtomQuery - neighbor count (excludes implicit hydrogens) TemplateAtomQuery - matches atoms corresponding to an Atom template WildcardAtomQuery - matches all Atoms More are on the way. The construction of composite AtomQueries that can contain nested boolean logic is now supported. These AtomQueries can either be used to directly match individual Atoms in a Molecule, or as part of a larger MoleculeQuery created, for example, with a MoleculeQueryBuilder. Examples of MoleculeQueries now available include: AllCyclesMoleculeQuery - perceives cyclic features AromaticityQuery - perceives aromatic features CycleSystemQuery - perceives cycle systems (i.e. fused ring systems useful in SDG, aromaticity perception, and structure->name schemes). To improve MoleculeQuery performance, a CachedMoleculeQuery is now available that will cache the results of a query and automatically use the cached result when appropriate. Only one cached result is now supported, but this could easily be extended to enable any number of results to be cached by a MoleculeQuery - without the need to rewrite any existing MoleculeQueries (Decorator Pattern). To make it easier to use this new capability, work to create a SmartsQueryFactory is underway. The idea is to allow clients to supply the factory with a SMARTS atom primitive as a String and get a pre-configured AtomQuery in return. Currently "a", "A", and "*" are supported. Extension to other query ontologies is, of course, also possible. Many of these changes are intended to move toward an object-oriented Atom typing system. SMARTS is one apporoach, but I believe that the object-oriented approach is much more flexible because clients can use a language that is infinitely more expressive than SMARTS - Java. Atom typing is used extensively in QSAR/QSPR to calculate Molecular properties (TPSA, etc.) JUnit tests for this functionality are available (net.sourceforge.octet.junit). This code will still need some debugging and refactoring, but I believe the overall design may be a useful starting point. best, rich __________________________________ Do you Yahoo!? Jazz up your holiday email with celebrity designs. Learn more. http://celebrity.mail.yahoo.com |