Die Grundlagen der Chemoinformatik SS 2007 Teil 3 ... · SS 2007, Die Grundlagen der...
Transcript of Die Grundlagen der Chemoinformatik SS 2007 Teil 3 ... · SS 2007, Die Grundlagen der...
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Die Grundlagen der Chemoinformatik
SS 2007
Teil 3: Visualisierung
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
John Backus stirbt im Alter von 82 Jahren
● Arbeiten bei IBM am FORmula
TRANslator in den 1950'ern.
– Einflussreichste wissenschaftliche
Programmiersprache bis heute
● Arbeiten zur Spezifikation von
Grammatiken formaler Sprachen:
Backus-Naur-Form (BNF)
● 1977 Turing AwardJohn Warner Backus (1924-2007)
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Vorbemerkungen:
● Probleme mit dem Zugriff aus PDF-Folien gelöst
● Besprechung des 1. Übungsblattes
– Aufgabe 2c (Tricyclo-1.1.3-heptan) so nicht lösbar
– Die Tücke mit den Tautomeren (Bioclipse, Pubchem,
INChIs)
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
• Erweiterbare Molekül-Arbeitsbank für alles und nichts spezielles
• Pug-ins für :
•Moleküle
•Spektren
•Sequenzen
•RSS-Feeds
•Und sehr viel mehr
• Version 1.1 auf http://www.bioclipse.net
• Entstanden in meiner Gruppe in Kooperation mit Uppsala
• Gewinner des JAX audience award
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Viagra
Diels-Alder Reaktion
Bucky Ball
Eletrostatisches Potential
Molekül-orbitale
Dopamin
Homogene Katalyse
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Visualisierung
● Visualisierung von Daten und Sachverhalten
● Struktureditoren in der Chemie
– ChemOffice (CambridgeSoft)
– IsisDraw (MDL)
– MarvinSketch (ChemAxon)
– XDrawChem
– JChemPaint
$
$
$
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Editoren: JChemPaint
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Intermezzo: CDK Installation und Benutzung
● $JAVA_HOME und $ANT_HOME korrekt gesetzt?
● Kommando “ant” in CDK directory geht immer.
● Wenn nicht -> Bug
● Checkout aus dem SVN repository gemäß
http://sourceforge.net/svn/?group_id=20024
● SVN auch über's WWW parsebar:
http://cdk.svn.sourceforge.net/viewvc/cdk/trunk/cdk/
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Intermezzo: CDK Installation und Benutzung
● CDK Hilfe:
– http://wiki.cubic.uni-koeln.de/cdkwiki/doku.php?id=cdkinstallation_windowsxp
– http://almost.cubic.uni-koeln.de/cdk/cdk_top/docu/install/EclipseHowTo
– http://cdk.sourceforge.net
● Mailing listen: cdk-devel und cdk-user
● CDK bug tracker
● CDK issue tracker
– Die „CDK News“: vierteljährliche Publikation mit
interessanten Beispielartikeln
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Editoren: JChemPaint
● Teil des Chemistry Development Kit
(CDK)
● ...cdk.applications.jchempaint
● Model-View-Controler (MVC) Paradigma
● Wiederverwendbare Komponenten:
– ...cdk.renderer.Render2D
– ...cdk.controler.Controler2D
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG)
● viele Anwendungen generieren
koordinatenlose chemische Graphen
(Konstitutionen)
● SDG-Algorithmen erzeugen
Koordinaten nach den chemischen
Gepflogenheiten
● CDK enthält SDG
– ...cdk.layout.StructureDiagramGenerator
● Helson-Review
CN1c2ncn(C)c2C(=O)N(C)C1=O
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
<bondArray> <bond id="b1" atomRefs2="a2 a1" order="S"/> <bond id="b2" atomRefs2="a3 a2" order="A"/> <bond id="b3" atomRefs2="a4 a3" order="A"/> <bond id="b4" atomRefs2="a5 a4" order="A"/> <bond id="b5" atomRefs2="a6 a5" order="A"/> <bond id="b6" atomRefs2="a7 a6" order="A"/> <bond id="b7" atomRefs2="a8 a7" order="A"/> <bond id="b8" atomRefs2="a9 a8" order="A"/> <bond id="b9" atomRefs2="a10 a9" order="A"/> <bond id="b10" atomRefs2="a10 a2" order="A"/> <bond id="b11" atomRefs2="a10 a6" order="A"/> <bond id="b12" atomRefs2="a11 a9" order="S"/> <bond id="b13" atomRefs2="a12 a7" order="S"/> <bond id="b14" atomRefs2="a13 a12" order="S"/> <bond id="b15" atomRefs2="a14 a13" order="S"/> <bond id="b16" atomRefs2="a15 a4" order="S"/> <bond id="b17" atomRefs2="a16 a15" order="A"/> <bond id="b18" atomRefs2="a17 a16" order="A"/> <bond id="b19" atomRefs2="a18 a17" order="A"/> <bond id="b20" atomRefs2="a19 a18" order="A"/> <bond id="b21" atomRefs2="a20 a19" order="A"/> <bond id="b22" atomRefs2="a20 a15" order="A"/> <bond id="b23" atomRefs2="a21 a20" order="S"/> <bond id="b24" atomRefs2="a22 a21" order="S"/> <bond id="b25" atomRefs2="a23 a22" order="S"/> <bond id="b26" atomRefs2="a24 a17" order="S"/> <bond id="b27" atomRefs2="a25 a24" order="D"/> <bond id="b28" atomRefs2="a26 a24" order="D"/> <bond id="b29" atomRefs2="a27 a24" order="S"/> <bond id="b30" atomRefs2="a28 a27" order="S"/> <bond id="b31" atomRefs2="a29 a28" order="S"/> <bond id="b32" atomRefs2="a30 a29" order="S"/> <bond id="b33" atomRefs2="a31 a30" order="S"/> <bond id="b34" atomRefs2="a32 a30" order="S"/> <bond id="b35" atomRefs2="a33 a32" order="S"/> <bond id="b36" atomRefs2="a33 a27" order="S"/> </bondArray></molecule>
<?xml version="1.0" encoding="ISO-8859-1"?><molecule id="m1" xmlns="http://www.xml-cml.org/schema"> <atomArray> <atom id="a1" elementType="O" formalCharge="0" hydrogenCount="1"/> <atom id="a2" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a3" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a4" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a5" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a6" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a7" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a8" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a9" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a10" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a11" elementType="C" formalCharge="0" hydrogenCount="3"/> <atom id="a12" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a13" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a14" elementType="C" formalCharge="0" hydrogenCount="3"/> <atom id="a15" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a16" elementType="C" formalCharge="0" hydrogenCount="1"/> <atom id="a17" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a18" elementType="C" formalCharge="0" hydrogenCount="1"/> <atom id="a19" elementType="C" formalCharge="0" hydrogenCount="1"/> <atom id="a20" elementType="C" formalCharge="0" hydrogenCount="0"/> <atom id="a21" elementType="O" formalCharge="0" hydrogenCount="0"/> <atom id="a22" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a23" elementType="C" formalCharge="0" hydrogenCount="3"/> <atom id="a24" elementType="S" formalCharge="0" hydrogenCount="-4"/> <atom id="a25" elementType="O" formalCharge="0" hydrogenCount="0"/> <atom id="a26" elementType="O" formalCharge="0" hydrogenCount="0"/> <atom id="a27" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a28" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a29" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a30" elementType="N" formalCharge="0" hydrogenCount="0"/> <atom id="a31" elementType="C" formalCharge="0" hydrogenCount="3"/> <atom id="a32" elementType="C" formalCharge="0" hydrogenCount="2"/> <atom id="a33" elementType="C" formalCharge="0" hydrogenCount="2"/> </atomArray>
2D Strukturdiagramm-Layout (SDG): Ablauf
Oc1nc(nc2c(nn(c12)C)CCC)c3cc(ccc3(OCC))S(=O)(=O)N4CCN(C)CC4
...cdk.smiles.SmilesParser
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Ablauf
public void parseSmiles() throws Exception{
String smiles = "Oc1nc(nc2c(nn(c...gekürzt...N4CCN(C)CC4";StringWriter writer = new StringWriter();SmilesParser smilesParser = new SmilesParser(
DefaultChemObjectBuilder.getInstance());IMolecule molecule = smilesParser.parseSmiles(smiles);IChemObjectWriter cw = new CMLWriter();cw.setWriter(writer);cw.write(molecule);writer.flush();System.out.println(writer.toString());
}
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Ablauf
● Partitioniere Struktur in aliphatische und cyclische Teile
– Berechne Frerejacque-Zahl R = E – N + 1 (E=Zahl
der Bindungen, N = Zahl der Atom)
– Wenn R > 0, ermittle Kleinstes Set Kleinster Ringe
– Partitioniere SSSR in konjugierte Ringsysteme.
– Markiere Atome als aliphatisch oder cyclisch
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Ablauf
● Partitioniere Struktur in aliphatische und cyclische Teile
List list = RingPartitioner.partitionRings(ringSet);Was ergibt list.size() in diesem Fall?
IRingSet ringSet = new SSSRFinder(molecule).findSSSR();Was ergibt ringSet.getAtomContainerCount() in diesem Fall?
for (i = 0; i < ringSet.size(); i++){
AtomContainer ac = (AtomContainer)ringSet.get(i);for (j = 0; j = ac.getAtomCount(); j++)
ac.getAtomAt(j).setFlag(CDKConstant.ISINRING, true);}
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Ablauf
● Identifiziere größte RingSet und erzeuge
Koordinaten.
– Suche höchst-substituierten Ring und lege ihn
aus.
– Identifiziere Verknüpfungstyp der restlichen
Ringe im System (spiro, fused, bridged) und
lege sie aus.
● Plaziere alle direkt gebundenen aliphatischen
Ringsubstitutenten
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Ablauf
● Bis alle Atome plaziert sind:
– Lege alle alphatischen unplazierten Atoms in
Ketten aus, die ein bereits plaziertes Atom
enthalten.
– Lege nächstes Ringsystem aus und verknüpfe
es, korrekt rotiert, mit dem bereits ausgelegten
Rest.
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Einige weitere Regeln
● Lege längest aliphatische Kette
zuerst aus
– Plaziere nächstes Kettenatom so,
dass es am weitesten vom
Schwerpunkt des Restmoleküls
entfernt ist
– Verwende 120°-Winkel, außer bei
sp-Atomen und z. B. >SO2-Gruppen
(Liste mit “kosmetischen
Ausnahmen”)
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Einige weitere Regeln
● Bei Ringsubstituenten:
– Identifiziere größten offenen Winkel
– Plaziere Substitutenten, so dass sie
gleiche Winkelanteile einnehmen.
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Probleme
● Manche SDG-Probleme verlangen globale
Optimierung.
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D Strukturdiagramm-Layout (SDG): Probleme
● Andere lassen sich befriedigend nur mit
Templaten lösen:
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: The current state of art
● Clark, Labute and Santavy, “2D Structure Depiction”, J.
Chem. Inf. Model. 2005
● Diverse Probleme souverän gelöst:
– Honigwaben-Einbettung von großen Ringen
– Globale Optimierung bei Überlappungsproblemen
– 3D-Embedding-Algorithmus für notorische Fälle
– Templat-Verwendung bei Konventionen
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Clark et al. 3D embedding
● Clark et al. 3D emLabute and Santavy, “2D Structure
Depiction”, J. Chem. Inf. Model. 2005
● Diverse Probleme souverän gelöst:
– Honigwaben-Einbettung von großen Ringen
– Globale Optimierung bei Überlappungsproblemen
– 3D-Embedding-Algorithmus für notorische Fälle
– Templat-Verwendung bei Konventionen
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Clark et al. Beispiele
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Clark et al. Beispiele
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
2D SDG: Clark et al. Beispiele
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
3D Visualisierer: Jmol
● http://www.jmol.org
● Quasi-Webstandard
● Sehr guter Ersatz für Chime-Plugin
● Volle Unterstützung für Rasmol-Skripte
● Tolles Beispiel für einen Open Source Lebenszyklus:
– Dan Gezelter -> Bradley A. Smith -> Egon Willighagen ->
Micheal „Miguel“ Howard -> Bob Hanson
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
3D Visualisierer: Jmol
● Rendering von Oberflächen
● Kristallographie, etc.
● Skripting-Dokumentation:
– http://www.stolaf.edu/academics/chemapps/jmol/docs/
SS 2007, Die Grundlagen der Chemoinformatik, 5/8/07, 22:39 © 2007 Christoph Steinbeck
Rendering von Oberflächen in Jmol