Frequently asked questions
(ok, we asked most of these, but we're waiting for yours)
CHORD provides new SQL functions as an extension to the relational database PostgreSQL. Without PostgreSQL, there is no "place" to run SQL. OEChem is used to provide basic operations on structures, for example conversion to and from SMILES, matching using SMARTS and traversing bond paths to make the gNova fingerprint. The gNova command-line program makefp will create path-based fingerprints and does not require PostgreSQL, but it does require OEChem.
PostgreSQL is a object relational database system (ORDBMS) just like Oracle. There are many opinions (try google) of the differences. Be careful when reading these that the version of PostgreSQL they are using for comparison is a recent one - at least 8.1. You can read what PostgreSQL has to say about itself and its advantages on their website. Perhaps only one thing is crystal clear: PostgreSQL is open-source and free, Oracle is not. We have tested CHORD on databases up to 4 million compounds without problems, although larger database are searched more slowly, as expected.
We chose PostgreSQL because it 1) is highly customizable and extensible enabling our powerful SQL extensions; 2) has all the features necessary for CHORD; and 3) it's free and without license restrictions.
For the purposes of gNova CHORD, either Daylight or OEChem would do. We made the decision to use OEChem for several reasons. 1) there was no database "cartridge" for OEChem users; 2) OEChem produces correct, canonical SMILES in all cases we know of; 3) OEChem SMARTS produces correct matches in all cases we know of; 4) OEChem molecule objects are more flexible and open; and 5) we have plans to integrate other features of OpenEye software (3D structures and searches) into future versions of CHORD.
We have developed CHORD under RedHat Linux, Ubuntu and SUSE and currently can only offer support for those platform. We hope to be able to support other platforms and will take our cue from you. Tell us what you need!
The primary functions of CHORD are written in C and very closely coupled to the database server (postmaster) itself. This is a great advantage. Because C functions could do almost anything with the database or operating system, PostgreSQL wisely refuses to allow non-superusers to create C-language functions. CHORD functions do not directly modify the database into which CHORD is installed. Any modifications made to the database are made by you, for example using SQL Insert or Update commands incorporating CHORD SQL functions. One exception is the gnova.tests() function. It is a SQL function, not a C function. It modifies only the table gnova.tests that is contained within the gnova schema in order to not interfere with any other tables in your database. CHORD does not open, read or write any files, except indirectly. It writes error and informational message to the PostgreSQL logfile. This is a good thing. CHORD, by virtue of its OEChem component, opens and reads the OEChem license file as would any OEChem program. This is a necessary thing.