Chemické databáze Bedřich Košata
Porovnávání molekul Hledání stejných struktur Hledání struktur obsahující fragment Hledání podobných molekul
Hledání stejných struktur Vyžaduje použití algoritmů pro isomorfii grafů Vyžaduje načtení grafu do paměti z úložného formátu Pro prosté grafy existuje polynomiální řešení Přesto porovnávání není rychlé Vyžaduje testování všech možných mapování mezi atomy Cesta ven je přes kanonický zápis Stačí porovnat InChI a máme výsledek Porovnávání stringů je rychlé a indexovatelné
Substrukturní vyhledávání Kanonický zápis nám nepomůže Porovnávání struktur je jediný způsob, který může dát definitivní odpověď Porovnávání struktur je pomalé při 1000 struktur / s => 1000000 struktur => 1000 s => 17 min. A co pro 10 000 000 sloučenin? A co při pouze 100 struktur / s? Potřebujeme metody pro screening chceme vyřadit co nejvíce kandidátů bez nutnosti dělat substrukturní vyhledávání
Screening Možné metody Molekulová hmotnost Počet atomů Počet atomů určitého prvku Počet kruhů Výskyt definovaných fragmentů
Jak ukládat data pro screening Čísla Výskyt fragmentů booleovské hodnoty velký počet ukládání po jedné je neefektivní => bitová pole => fingerprinty (otisky prstů)
Druhy fingerprintů Předdefinované Je předem známý seznam fragmentů, které se mají hledat MACCS keys 166 nebo 320 bitové Pokud má molekula daný bit nastavený, určitě obsahuje daný fragment Hash fingerprinty Pokud má molekula daný bit nastavený, možná obsahuje daný fragment Pokud nemá molekula daný bit nastavený, určitě neobsahuje daný fragment
MACCS keys 0 >= 4 H 1 >= 8 H 2 >= 16 H 3 >= 32 H 4 >= 1 Li 5 >= 2 Li 6 >= 1 B 7 >= 2 B 8 >= 4 B... Section 2: Rings in a canonic Extended Smallest Set of Smallest Rings (ESSSR) ring set... 115 >= 1 any ring size 3 116 >= 1 saturated or aromatic carbon-only ring size 3 117 >= 1 saturated or aromatic nitrogen-containing ring size 3 118 >= 1 saturated or aromatic heteroatom-containing ring size 3 119 >= 1 unsaturated non-aromatic carbon-only ring size 3... Section 7: Complex SMARTS patterns... 713 Cc1ccc(C)cc1 714 Cc1ccc(O)cc1
Hash fingerprinty Nalezneme v molekule všechny fragmenty podle nějakého pravidla např. všechny lineální fragmenty od 3 do 7 atomů (Daylight fingerprint) Nějakou hash funkcí jim přiřadíme číslo od 0 do velikosti fingerprintu např. 0-1023 (1024 bitů, 128 bytů) pro zajištění rozsahu použijem % (x % 1024 <= 1024) Nastavíme bit s tímto číslem na 1
Hash fingerprinty Vzhledem k použití hash funkce může víc fragmentů spadnout do jedné hodnoty => nelze na základě nastaveného bitu usoudit na existenci => lze na základě neexistence bitu usoudit na neexistenci fragmentu => to nám pro screening stačí
Jak porovnávat fingerprinty Hledaný fragment => fp1 Zkoumaná molekula => fp2 zkoumaná molekula musí mít všechny fragmenty z hledané fp2 musí obsahovat všechny bity z fp1 fp2 & fp1 == fp1 (žádný bit z fp1 se nesmí vynulovat) (fp2 & fp1) ^ fp1 == 0
Hledání podobných struktur Podobnost je subjektivní věc Methanol a ethanol jsou pro chemika často zaměnitelné, ale při pití je to rozdíl Někdy lze použít isomorfii grafů k posouzení jak velká část molekul je totožná nepřekousne např. rozdíl mezi cyklopenanem a cyklohexanem v jinak naprosto totožné struktuře Fingerprinty jsou opět cesta vpřed sloučeniny s podobnými otisky prstů jsou nejspíš podobné
Jak určit podobnost fingerprintů Nejde jen o množství stejných fragmentů Je třeba počítat i s rozdíly a = počet společných bitů (průnik, fp1 & fp2) b = počet všech nastavených bitů (sjednocení, fp1 fp2) Tanimoto koeficient a/b od 0 do 1 stejné fingerprinty 1, žádný průnik 0 jeden v 10 mimo => 9/10 => 0.9
Pár věcí na závěr Né všechny fingerprinty jsou stejně vhodné kratší fingerprinty nemají rozlišovací schopnost delších Fingerprinty založené na předdefinovaných fragmentech se liší schopností popsat některé molekuly (mohou a nemusí obsahovat bit pro specifickou skupinu) Algoritmus pro získání hash fingerprintu ovlivňuje jeho selektivitu
Volně dostupné implementace OpenBabel umí počítat a porovnávat fingeprinty Mychem a Pgchem implementace chemických funkcí na MySQL a PostgreSQL s pomocí OpenBabelu CDK Chemistry Development Kit