Intro to OEChem
Intro to OEChem
Intro to OEChem
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Intro</strong> <strong>to</strong> <strong>OEChem</strong><br />
product revue session<br />
Jeremy Yang<br />
CUP VIII, Feb 26-28, 2007
What is <strong>OEChem</strong>?<br />
• Programming <strong>to</strong>olkit for chemoinformatics<br />
• For molecular modelling and general use<br />
• Small and macromolecules<br />
• Well defined, supported and documented API<br />
• Foundation of higher level OE <strong>to</strong>olkits<br />
• Foundation of OE applications<br />
CUP VIII, Feb 26-28, 2007
Languages and platforms<br />
• Native C++ API<br />
• Python API (wrapper)<br />
• Java API (wrapper)<br />
CUP VIII, Feb 26-28, 2007
Documentation and references<br />
• <strong>OEChem</strong> { C++ | Python | Java } Theory<br />
manual<br />
• <strong>OEChem</strong> API manual<br />
• Example code<br />
– $OE_DIR/examples/oechem/<br />
– $OE_DIR/examples/oechem/docs-examples/<br />
– $OE_DIR/utilities/oechem/<br />
– $OE_DIR/wrappers/python/examples/<br />
– $OE_DIR/wrappers/python/doc-examples/<br />
• http://demo.eyesopen.com<br />
CUP VIII, Feb 26-28, 2007
Some key features<br />
• Multiconformer molecules<br />
• File format fluency and rigor<br />
• Smarts searching and beyond<br />
• MCSS<br />
• Smirks reaction processing<br />
• PDB expertise<br />
• Macromolecules<br />
• Professional, supported API<br />
CUP VIII, Feb 26-28, 2007
Example: mol2parts.py<br />
ims = oemolistream("1A00.pdb")<br />
oms = oemolostream("parts.sdf")<br />
partmol = OEGraphMol()<br />
for mol in ims.GetOEGraphMols():<br />
i,partlist = OEDetermineComponents(mol)<br />
pred = OEPartPredA<strong>to</strong>m(partlist)<br />
for j in range(1,i+1):<br />
pred.SelectPart(j)<br />
OESubsetMol(partmol,mol,pred)<br />
OEWriteMolecule(oms,partmol)<br />
CUP VIII, Feb 26-28, 2007
<strong>Intro</strong> <strong>to</strong> <strong>OEChem</strong>, Part 2:<br />
Practical examples, use cases<br />
CUP VIII, Feb 26-28, 2007
Reading and writing molecules<br />
• Formats<br />
• Format variants, OEFlavors<br />
• Multiconformer vs. single conf<br />
• Aromaticity, H-counts, valence models<br />
• Canonicalization<br />
• Interconversion of inconsistent formats<br />
• OEBinary<br />
• Error handling<br />
• See: convert.cpp, babel2.cpp, convert.py,<br />
convert webapp, Babel3 2.0<br />
CUP VIII, Feb 26-28, 2007
Fixing/standardizing molecules<br />
• C(=O)[OH] -> C(=O)[O-] , etc.<br />
• See:<br />
– fixmols.py<br />
– valencemodels.py<br />
– aromodels.cpp<br />
– aromatest.py<br />
– react.cpp, react.py<br />
– Filter 2.0.1<br />
CUP VIII, Feb 26-28, 2007
Analyzing molecules<br />
• rings<br />
• rotatable bonds<br />
• a<strong>to</strong>m types<br />
• stereo centers<br />
• polar hydrogens<br />
• aromaticity<br />
• hybridization<br />
• symmetry<br />
• See:<br />
– rings.py, rings.cpp<br />
– molanalyze.py<br />
– screen.py<br />
– molanalyze web app<br />
CUP VIII, Feb 26-28, 2007
Substructure searching<br />
• smarts matching<br />
• OEQMol matching<br />
• a<strong>to</strong>m and bond expressions<br />
• mol state dependence (arom/kek, H’s, etc.)<br />
• unique-a<strong>to</strong>mset and symmetric matching<br />
• See:<br />
– match.cpp, match.py<br />
– depict web app<br />
CUP VIII, Feb 26-28, 2007
MCSS - max common substructs<br />
• OE algorithm - “space state search”<br />
• OEMCSFuncs<br />
• a<strong>to</strong>m and bond expressions<br />
• mol state dependence (arom/kek, H’s, etc.)<br />
• ring issues<br />
• See:<br />
– mcss.cpp, mcss.py<br />
– molalign.py<br />
– mcss web app<br />
CUP VIII, Feb 26-28, 2007
3D handling and analysis<br />
• Measurement:<br />
length, angles,<br />
<strong>to</strong>rsions<br />
• Rotation and<br />
translation<br />
• Euler and Quaternion<br />
operations<br />
• RMSD<br />
• See:<br />
– rmsd.cpp, rmsd.py<br />
– rmsd_selftest.cpp<br />
– molgeom.cpp,<br />
molgeom.py<br />
– setro<strong>to</strong>r.py<br />
– add3dhyd.cpp<br />
– movemol.cpp<br />
– molalign.py<br />
– rmsd webapp<br />
CUP VIII, Feb 26-28, 2007
Macromolecules<br />
• residue perception<br />
• bond perception<br />
• ligand extraction<br />
• new in 1.4: OEBio<br />
• See:<br />
– pdb2lig.cpp, pdb2lig.py<br />
– resanalyze.py<br />
– bindanalyze.py<br />
– proteinalyze webapp<br />
CUP VIII, Feb 26-28, 2007
Combina<strong>to</strong>rics<br />
• building mols from fragments<br />
• fragmentation<br />
• ampersand notation smiles<br />
• enumerating stereoisomers<br />
• See:<br />
– frankenmol.py<br />
– frag.py<br />
– react.cpp,react.py<br />
– flipper.cpp,flipper.py<br />
CUP VIII, Feb 26-28, 2007
Canonicalization<br />
• canonical smiles<br />
• canonical Kekule smiles<br />
• canonical isomeric smiles<br />
• canonical fragment smiles<br />
• other canonical smiles<br />
• canonical molfiles<br />
• general canonicalization<br />
• See:<br />
– cansmi.py<br />
– canmol.py<br />
– canmol web app<br />
– tau<strong>to</strong>mers<br />
program<br />
CUP VIII, Feb 26-28, 2007
Non-structural data<br />
• SD data<br />
• generic data<br />
• OEBinary<br />
• bit vec<strong>to</strong>rs<br />
• See<br />
– rename.py<br />
– sdf2csv.py<br />
– bitvectest.cpp<br />
CUP VIII, Feb 26-28, 2007