Počítačová chemie (4. přednáška) Úvod (1. přednáška) Molekula Struktura molekuly (2., 3. a 4. přednáška) Geometrie molekuly (5. přednáška) Vhled do praxe (6. přednáška) Molekulové modelování Molekulová mechanika (7. a 8. přednáška) Kvantová mechanika (9. a 10. přednáška) Molekulová dynamika (11. přednáška) Vhled do praxe (12. přednáška)
Hledání cyklů Komunikační sítě Elektrické obvody Odběr surovin a výrobků v průmyslové výrobě Logistika Chemie ….
Hledání cyklů v chemii Predikce chemických vlastností molekuly Studium reaktivity a chemická syntéza přítomnost cyklu snižuje flexibilitu molekuly cykly omezují počet možností prostorového uspořádání molekuly Vytváření názvů sloučenin cykly = výchozí struktury při tvorbě názvu
Molekulový graf ® obecný graf Informace, nutné pro hledání cyklů: množina atomů vazby mezi nimi (není nutné znát jejich násobnost) => K hledání cyklů zjednodušíme na obecný graf Molekulový graf: MG = (V, E, L, j, b) Obecný graf příslušný MG: G = (V, H), kde H obsahuje všechny hrany z E, ale násobné pouze jedenkrát. Poznámka: Dále budeme značit |V| = N a |H| = M.
Molekulový graf ® obecný graf - příklad ? ®
Molekulový graf ® obecný graf - příklad
Množina cyklů Zápis množiny cyklů grafu G = (V, H): C = {R1, …, Rc}, kde c je počet cyklů Ri je cyklus, Ri Í H a i Î 1 … c Typy množin cyklů: Množina základních cyklů (Fundamental Set of Rings, FSR) Množina všech cyklů (Set of All Rings, SAR) Množina nejmenších základních cyklů (Smallest Set of Smallest Rings, SSSR)
Množina základních cyklů (FSR) Obsahuje minimální počet cyklů, které pokrývají všechny kruhové vrcholy a hrany daného grafu. Prvky FSR (základní cykly) jsou nezávislé žádný cyklus ve FRS nelze vyjádřit jako kombinaci ostatních cyklů této množiny Celkový počet základních (tedy nezávislých) cyklů je roven cyklomatickému číslu c: c = M - N + 1
Konstrukce FSR Sestrojení kořenového stromu grafu: zvolíme libovolný vrchol v Î V potomky kořene jsou vrcholy, spojené s vrcholem v hranou prvky další vrstvy jsou vrcholy, spojené hranou s potomky kořene výše uvedený postup se opakuje až do okamžiku, kdy jsou do stromu zapojeny všechny vrcholy
Konstrukce FSR II Vlastnosti kořenového stromu: strom obsahuje N vrcholů a N-1 hran => M - N + 1 hran není ve stromu zařazeno tyto hrany se nazývají hrany kruhového uzávěru počet základních cyklů grafu = počet hran kruhového uzávěru
Konstrukce FSR III Každá hrana kruhového uzávěru generuje jeden základní cyklus a to následovně: zvolíme libovolnou hranu a postavíme se ve stromu na její dva koncové vrcholy aplikujeme metodu zpětného prohledávání do vyšších úrovní stromu směrem ke kořeni nalezené hrany přidáváme do nově vytvořeného cyklu jakmile se dvě větve spojí ve společném vrcholu, proces končí Opakováním této jednoduché procedury pro všechny hrany kruhového uzávěru vytvoříme množinu základních cyklů.
Konstrukce FSR - příklad Graf:
Konstrukce FSR - příklad Kořenový strom (s kořenem v1): Graf: Hrany kruhového uzávěru: e7, e8, e9 Cykly grafu: R1= {e1, e4, e7, e5, e2}, R2= {e2, e5, e8, e6, e3}, R3= {e1, e4, e9, e6, e3} Poznámka: Pro jinou volbu kořene nalezneme odlišnou množinu cyklů.
Složitost konstrukce FSR Vztah mezi M a N - obecný graf: Maximální počet hran vzhledem k počtu uzlů má úplný graf (každé dva uzly jsou spojeny hranou). Pro úplný graf platí: Graf má N vrcholů Z každého vrcholu vychází N-1 hran Každá hrana má 2 vrcholy* => M = (N-1).N/2 *Ve výše uvedeném vzorci musíme dělit 2, abychom hrany nepočítali dvakrát (jedenkrát za každý její koncový vrchol). => Pro obecný graf platí: 0 £ M £ (N-1).N/2
Složitost konstrukce FSR II Vztah mezi c (počet cyklů) a N - obecný graf: c = M - N +1 0 £ c £ N2/2 - 3/2 N + 1 Pro účely výpočtu časové složitosti algoritmu v nejhorším případě: c » N2
Složitost konstrukce FSR III Vztah mezi M a N - molekulový graf: Počet hran v molekule závisí na vaznosti atomů (~ stupeň vrcholů) v molekule: Vaznost atomů: C: 4 N: 3 O, S: 2 H, F, Cl, Br, I: 1. Průměrná vaznost atomu v molekule (fB) se nachází převážně v intervalu: 1,5 - 3 (čím více cyklů má molekula, tím větší je průměrná vaznost) Pro molekulový graf platí: Graf má N vrcholů Z každého vrcholu vychází fB hran Každá hrana má 2 vrcholy => M = N.fB /2
Složitost konstrukce FSR IV Vztah mezi c (počet cyklů) a N - molekulový graf: c = M - N +1 c = N.fB/2 - N +1 = N (fB/2 - 1) + 1 c se nachází převážně v intervalu 0 až N/2
Složitost konstrukce FSR V Vytvoření stromu: Přidáváme postupně N vrcholů => nutno projít N-1 hran => složitost vytvoření stromu je O(N)
Složitost konstrukce FSR VI Dohledání cyklů: Počet cyklů je c Cyklus může obsahovat nejvýše N vrcholů a tedy N-1 nových hran => složitost dohledání cyklů je O(c.N) Složitost konstrukce FSR je O(c.N).* *Pro obecný graf O(N3).
Nevýhody FSR FSR není určena jednoznačně Na grafu s více než 1 cyklem lze nalézt více cyklů, než udává cyklomatické číslo grafu Dvě cesty k obecnější množině cyklů: množina všech cyklů (SAR) množina nejmenších základních cyklů (SSSR)
Konstrukce SAR - kombinace cyklů Nechť FSR = {R1, R2, ..., Rc} je množina základních cyklů, kde Ri Í E pro i = 1, 2, ..., c. Pak každý libovolný cyklus grafu lze vytvořit kombinací (složením) hran cyklů Ri, Rj Î FSR operací XOR. Poznámka: Operace XOR se označuje symbolem Å.
Konstrukce SAR - kombinace cyklů II Nechť P a R jsou dvě množiny, pak jejich složení definujeme takto: P Å R = {e; e Î P nebo e Î R, ale ne současně} (Mají-li P a R společnou hranu, tato hrana ve výsledné množině nebude.)
Konstrukce SAR - kombinace cyklů III Operací složení nemusí vždy vzniknout cyklus: P a R jsou disjunktní: P a R sdílejí pouze jeden vrchol: P a R jsou „nevhodné“ pro složení:
Konstrukce SAR - kombinace cyklů IV Algoritmus: Vytvořit libovolnou množinu základních cyklů (FSR). FOR každou možnou k-tici cyklů z FSR, kde k = 1, 2, …, {počet cyklů} DO: IF Kombinací cyklů této k-tice vzniknul cyklus. THAN IF Tento cyklus nebyl nalezen dříve. THAN Ulož cyklus.
Konstrukce SAR - kombinace cyklů V Optimalizace algoritmu: Vytvořit libovolnou množinu základních cyklů (FSR). Rozdělit FSR na vzájemně disjunktní shluky cyklů. FOR každou možnou k-tici cyklů z každého shluku, kde k = 1, 2, …, {počet cyklů ve shluku} DO: IF Kombinací cyklů této k-tice vzniknul cyklus. THAN IF Tento cyklus nebyl nalezen dříve. THAN Ulož cyklus.
Konstrukce SAR - kombinace cyklů VI SAR vzniká kombinací k-tic základních cyklů pro k = 1, 2, …, c Pro počet k-tic platí: c c c c 0 + 1 + 2 + … + c = 2c Složitost konstrukce SAR: O(c.2c)
Konstrukce SSSR Vytvoření prořezaného grafu Vytvoření HR grafu Prohledání HR grafu a nalezení externích cyklů Prohledání HR grafu a nalezení interních cyklů
Konstrukce SSSR - prořezaný graf Definice: Prořezaný graf (pruned graph) grafu G je takový podgraf GP grafu G, který neobsahuje vrcholy stupně jedna (tzv. koncové vrcholy). Algoritmus: WHILE $ koncové vrcholy DO: Odstraň koncové vrcholy Odstraň hrany z nich vycházející
Konstrukce SSSR - prořezaný graf - příklad Isoalloxazin (flavin): Obecný graf isoalloxazinu:
Konstrukce SSSR - prořezaný graf - příklad II Isoalloxazin je součástí flavinadenindinukleotidu, enzymu, který zprostředkovává přenos dvou elektronů v rámci metabolických reakcí (např. citrátový cyklus):
Konstrukce SSSR - prořezaný graf - příklad III Obecný graf isoalloxazinu: Prořezaný graf isoalloxazinu:
Konstrukce SSSR - HR graf Definice: Reducibilní vrchol: Vrchol stupně 2. Ireducibilní vrchol: Vrchol stupně 3 a více. Homeomorfně redukovaný graf (homeomorphically reduced graph, HR graf) grafu G: Obsahuje pouze ireducibilní vrcholy grafu G. Hrana HR grafu vyjadřuje takovou cestu v grafu G, která: Spojuje dva ireducibilní vrcholy. Neobsahuje další ireducibilní vrcholy.
Konstrukce SSSR - HR graf II Zápis hrany HR grafu: (u, v, VR), kde: Vrcholy u a v jsou: počáteční (u) a koncový (v) vrchol cesty v grafu G vrcholy hrany v HR grafu, reprezentující tuto cestu Množina VR je seznamem reducibilních vrcholů, nacházejících se v grafu G na cestě z vrcholu u do vrcholu v. Algoritmus pro tvorbu HR grafu: Vstup: Prořezaný graf GP = (V, H) Výstup: HR graf HRG = (V´, H´), kde: V´ Í V H´ = { (u, v, VR) | u, v Î V´; VR = {w | w Î V - V´}}
Konstrukce SSSR - HR graf III Inicializace HRG: V´= Æ, H´ = Æ FOR " v Î V DO: IF v je ireducibilní THAN " incidentní hrany vrcholu v dej do FIFO fronty F. WHILE fronta F je neprázdná DO Vyjmi hranu h z fronty F. Vytvoř cestu, začínající v,h a pokračující dalšími hranami a vrcholy až do nejbližšího ireducibilního vrcholu u. Reducibilní vrcholy mezi v a u umísti do množiny VR. Hrany mezi v a u umísti do množiny HR. Úprava HR grafu: V´ := V´ È {v, u} H´ := H´ È {(v, u, VR)} Úprava grafu G: V := V - VR H := H - HR IF je fronta F prázdná THAN V := V - {v}
Konstrukce SSSR - HR graf - příklad Prořezaný graf: HR graf : ?
Konstrukce SSSR - HR graf - příklad Prořezaný graf: HR graf - popis: HR graf - obrázek: h1: (v3, v12, {v1, v2, v13, v14}) h2: (v3, v5, {v4}) h3: (v3, v12, Æ) h4: (v5, v10, {v6, v7, v8, v9}) h5: (v5, v10, Æ) h6: (v10,v12, {v11})
Konstrukce SSSR - vyhledání externích cyklů Definice: Externí (vnější) cyklus: Obsahuje jeden nebo dva vrcholy. Interní (vnitřní): Obsahuje tři a více vrcholů. Cykly v SSSR jsou nezávislé (žádný z nich nelze vytvořit kombinací ostatních) a pokrývají celý graf (jejich kombinací lze vytvořit SAR). Externí cykly obsahující jeden vrchol nelze vytvořit kombinací ostatních cyklů v grafu => nutně musí být v SSSR. Pro externí cykly obsahující dva vrcholy existuje jednoduchý algoritmus, který z každé množiny externích cyklů, tvořených stejnými vrcholy*, vybere podmnožinu nezávislých cyklů. *Pouze v rámci této skupiny mohou být dané externí cykly závislé.
Konstrukce SSSR - vyhledání externích cyklů II Existuje-li taková hrana HR grafu, která začíná a končí ve stejném vrcholu, tvoří externí cyklus s jedním ireducibilním vrcholem. Existuje-li J hran HR grafu pro J > 1, které začínají ve vrcholu v a končí ve vrcholu u, generují tyto hrany J - 1 externích cyklů se dvěma ireducibilními vrcholy. Algoritmus pro tvorbu množiny externích cyklů HR grafu: Vstup: HRG = (V´, H´) s ohodnocenými vrcholy Výstup: množina externích cyklů SE
Konstrukce SSSR - vyhledání externích cyklů III Inicializace SE: SE := Æ FOR " h Î H´ DO: IF h == (u, u, VR) THAN Ext_ring := {h}; SE := SE È {Ext_ring} Vytvoř frontu hran: Seřaď hrany z množiny H´ podle počátečních vrcholů, skupiny hran se stejnými počátečními vrcholy seřaď dále podle koncových vrcholů. WHILE fronta je neprázdná DO Vyjmi z fronty hranu h (h = (u, v, VR)) a všechny následující hrany s vrcholy u a v zařaď je do množiny Suv. IF |Suv| > 1 THAN Najdi v Suv hranu hmin s nejmenším počtem prvků v VR. FOR " k Î Suv, k != hmin DO Ext_ring := {k, hmin}; SE := SE È {Ext_ring}
Konstrukce SSSR - vyhledání interních cyklů Mějme HR graf s vrcholy ohodnocenými přirozenými čísly. Pak je každý cyklus jednoznačně určen vrcholem s nejmenším ohodnocením. Pokud existují cykly A a B tak, že vrcholy cyklu A Í vrcholů cyklu B, pak říkáme, že cyklus B je obálkou cyklu A. Takovýto cyklus B nemůže patřit do SSSR (do nejmenší množiny nejmenších cyklů).
Konstrukce SSSR - vyhledání interních cyklů II Inicializace SI: SI := Æ FOR " v Î V´ DO: Vytvářej strom (s kořenem v) cest v HR grafu, vzniklých prohledáváním do hloubky Při " přidání uzlu u do procházené cesty se rozhoduje: IF u == v THAN Int_ring := {hrany dané cesty} /*cesta akceptována*/ IF $ R Î SI: Int_Ring Í R THAN /*R == obálka */ SI := (SI - {R}) È {Int_ring}; odstranění závislých cyklů ELSE IF $! R Î SI: R Í Int_Ring THAN /*Int_Ring!= obálka*/ SI := SI È {Int_ring}; odstranění závislých cyklů ELSE IF o(u) < o(v) nebo (u už náleží do cesty) THAN Cesta zamítnuta, procházíme vedlejší cestu. ELSE Přidej do cesty další uzel.
Konstrukce SSSR - dokončení Množiny externích a interních cyklů sjednotíme: SALL = SE È SI HR hrany v cyklech v množině SALL nahradíme klasickými hranami, a to následovně: HR hrana: (u, v, {w1, w2, ..., wn}) se nahradí hranami: {u, w1}, {w1, w2}, ..., {wn, v} Tím jsme z množiny SALL vytvořili množinu SSSR.
Literatura k vyhledávání cyklů Havelková L.: Paralelizace sekvenčních algoritmů v chemii. Masarykova univerzita - diplomová práce (1995) Kučera L.: Kombinatorické algoritmy. SNTL, (1989)
Formáty pro zápis struktury molekuly Úplný výpis atomů a vazeb SMILES Další formáty
Formáty pro zápis struktury molekuly - úplný výpis atomů a vazeb Každý atom je označen číslem. Pro každý atom je uveden typ atomu. Jsou uvedeny informace o všech dvojicích atomů, které jsou vázány chemickou vazbou (včetně nebo bez multiplicity).
Formáty pro zápis struktury molekuly - úplný výpis atomů a vazeb II Kromě informací o atomech a vazbách může soubor obsahovat další chemické informace (např. náboje atomů a další fyzikální konstanty). Informace o vazbách mohou být uvedeny v různých formátech, například: Informace o jednotlivých vazbách: 11 30 1 // atom 11 je vázán s atomem 30 jednoduchou vazbou Informace o vaznosti atomu: 11 30 (1) 31 (1) 32 (1) // atom 11 je vázán s atomy 30, 31 a 32 //jednoduchou vazbou Poznámka: Multiplicita nemusí být uvedena, řádky mohu mít jiný formát případně obsahovat klíčová slova.
Formáty pro zápis struktury molekuly - úplný výpis atomů a vazeb III Tento formát má mnoho (= několik desítek) různých implementací. Tady je několik nejvýznamějších: PDB soubory z Protein DataBank MOL soubory pro software Elsevier MDL SDF soubory z databází organických molekul ALC, TOP, HIN, MDL, M3D, MOL2, MOLEN, atd.
Formáty pro zápis struktury molekuly - úplný výpis atomů a vazeb IV Příklad PDB souboru pro molekulu formaldehydu:
Formáty pro zápis struktury molekuly - úplný výpis atomů a vazeb V Zhodnocení: Výhody: Nejobecnější zápis struktury molekuly Snadno použitelné jako vstup pro algoritmy, pracující se strukturou Nevýhody: Zabírá hodně místa Není vhodné pro některé speciální typy úkolů.
Formáty pro zápis struktury molekuly - SMILES SMILES znamená následující: Simplified Molecular Input Line Entry Specification = zakódování struktury molekuly do řetězce. Dále uvedu stručný popis SMILES. Podrobnější informace najdete např. zde: http://www.daylight.com/dayhtml/smiles/
Formáty pro zápis struktury molekuly - SMILES – kódování atomů - syntaxe Syntaxe v jazyce*, specifikujícím SMILES: atom : '[' <mass> symbol <chiral> <hcount> <sign<charge>> ']' ; Popis: symbol chemická značka atomu * = nespecifikovaný atom <sign<charge>> znaménko a náboj <mass> atomová hmotnost <chiral> chiralita (nebudeme používat) <hcount> počet vázaných vodíků * analogie DTD.
Formáty pro zápis struktury molekuly - SMILES – kódování atomů - příklady Obrázek SMILES string Popis [S] Elementární síra C Methan (C vázaný s tolika H, aby měl plně obsazenou valneční vrstvu) S Sirovodík (S vázaný s tolika H, aby měl plně obsazenou valneční vrstvu) [OH-], [OH-1] Hydroxidový anion [235U] Izotop uranu s at. hmot. 235 [*+2] Nespecif. atom s nábojem 2+
Formáty pro zápis struktury molekuly - SMILES – kódování vazeb - syntaxe Syntaxe v jazyce, specifikujícím SMILES: bond : <empty> | '-' | '=' | '#' | ':' ; Popis: <empty> libovolná vazba (při níž je valenční vrstva plně obsazena) - jednoduchá vazba = dvojná vazba # trojná vazba : aromatická vazba
Formáty pro zápis struktury molekuly - SMILES – kódování vazeb - příklady Obrázek SMILES string Popis CH3-CH3 CC, C-C, [CH3]-[CH3] Ethan C=O, O=C Formaldehyd H-CN C#N, N#C Kyanovodík CH2=CH2 C=C (lze i cc) Ethen CH2=CH-CH=CH2 C=C-C=C (lze i cccc) 1,3-butadien ? ccc Nelze odhadnout typ vazeb
Formáty pro zápis struktury molekuly - SMILES – kódování větvení - syntaxe Syntaxe v jazyce, specifikujícím SMILES: branch : '(' <chain> ')' | '(' <chain> <branch> ')' | '(' <branch> <chain> ')' | '(' <chain> <branch> <chain> ')' ; Popis: <chain> řetězec <branch> větev
Formáty pro zápis struktury molekuly - SMILES – kódování větvení - příklady Obrázek SMILES string Popis CC(C)C(=O)O Isobutanová kyselina FC(F)F, C(F)(F)F Fluoroform O=Cl(=O)(=O)[O-], Cl(=O)(=O)(=O)[O-] Perchlorátový anion CCCC(C(=O)O)CCC 4-heptanová kyselina
Formáty pro zápis struktury molekuly - SMILES – kódování větvení - příklady Obrázek Popis Isobutanová kyselina Fluoroform Perchlorátový anion 4-heptanová kyselina
Formáty pro zápis struktury molekuly - SMILES – kódování cyklů Zvolíme v cyklu libovolnou vazbu a její koncové atomy označíme číslem. Cyklus v místě dané vazby přerušíme a zapíšeme ho jako lineární sekvenci atomů. Příklady:
Formáty pro zápis struktury molekuly - SMILES - zhodnocení Výhody SMILES: Komprimace místa Možnost zápisu molekuly pomocí regulárního výrazu Nevýhody SMILES: Nejednoznačnost (neexistuje „korektní“ pořadí atomů, 1 fakt lze zapsat více způsoby). Nutnost vytvoření úplného výpisu předtím, než lze na molekulu aplikovat nějaký algoritmus (izomorfismus, cykly atd.)
Formáty pro zápis struktury molekuly - SMILES – zhodnocení II Využití SMILES: Názvosloví a automatického generování názvů. Vyhledávání částí molekul pomocí regulárních výrazů. Rozšíření SMILES: Pokročilejší verzí SMILES stringů jsou SMARTS stringy. Jsou definovány stejně jako SMILES + obsahují navíc další pravidla. Podrobněji o SMARTS: http://www.daylight.com/dayhtml/doc/theory/ theory.smarts.html
Formáty pro zápis struktury molekuly - další formáty Fingerprints CHUCKLES, CHORTLES, and CHARTS SMIRKS, SSMARTS atd