O.S.E.L. - Programování DNA počítačů pro každého
 Programování DNA počítačů pro každého
Koncept DNA počítačů existuje už asi 20 let a několik novinek z poslední doby ukazuje na možné oživení. Kam se obor posunul? Jaké přístupy se dnes zdají být perspektivní a jaké byly naopak (navždy? dočasně?) opuštěny? Bude DNA počítač spíše léčit rakovinu nebo lámat šifry?

Začneme zopakováním, které lze s klidem přeskočit. DNA počítačem myslíme prostě systém, který provádí výpočty, tj. ze vstupu podle předem daných pravidel generuje výstup. V zásadě lze DNA počítání rozdělit do dvou hlavních skupin:

- postupy nějak související s biologickou funkcí DNA, kdy výstupy mají podobu RNA a proteinů, jsou nějak „biologicky aktivní“. Takto lze s DNA počítači pracovat i v živých buňkách. Příklad úlohy/algoritmu: je-li v prostředí X a Y, syntetizuj Z.

- DNA počítače řešící úlohy s biologickou funkcí nesouvisející. Příklad algoritmu: rozhodni, zda X je prvočíslo. Křemíkové počítače jsou také obecné, výpočty na nich se nijak nevztahují k tomu, co jinak provádíme s křemíkem (dejme tomu sklářský průmysl).

Dalo by se říct, že druhý přístup působí jako chytřejší (obecnější), nicméně teď to vypadá spíš na to, že šlo o slepou uličku. Nicméně i první přístup se dostává na stále vyšší úroveň abstrakce, kdy příslušné systémy zřejmě brzy půjde programovat bez toho, aby člověk něco věděl o genetickém kódu.

 

Bloudění obchodního cestujícího

Leonard Adleman, Kredit: Wikipedia, CC BY-SA 3.0
Leonard Adleman, Kredit: Wikipedia, CC BY-SA 3.0
S myšlenkou DNA počítačů přišel jako první Leonard Adleman („A“ v šifře RSA je právě po něm) na Caltechu, respektive alespoň na jeho práci se pak všichni další odkazují. Adleman demonstroval DNA počítač na řešení úlohy obchodního cestujícího (varianta 2 - „nebiologické“ počítání). V tomto problému jde o to, že obchodní cestující má projít předem určený počet bodů, obvykle smí každý navštívit pouze jednou. Jedna verze předpokládá, že každý bod je spojen s každým a hledáme nejkratší trasu. Jindy jsou k dispozici pouze některé spojnice a hledáme, jak trasu vůbec propojit. Každopádně Adleman bral řetězce DNA, jimiž reprezentoval body i spojnice mezi nimi. Bude-li délka řetězce DNA nějak odpovídat délce spojnice, bude řešením úlohy například nejkratší molekula – dejme tomu ta, která bude nejlehčí, „vyplave“.

Úlohy je třeba speciálně implementovat – tak, aby řetězce byly v souladu se zadáním komplementární a lepily se svými částmi k sobě. Též je třeba implementovat omezující podmínky, postup bude možná vyžadovat více kroků s nějakou ručně prováděnou separací. A nakonec, výsledek bude třeba ověřit. Všechno to vyžaduje vědět něco o biochemii. Jen si to zkuste navrhnout, alespoň pokud nevíte, jak to dělal Adleman...

Samozřejmě, že pokus se provádí s velkým nadbytkem molekul, aby se zajistilo, že se realizují všechny kombinace a navíc řešení ve výsledné směsi nepřehlédneme. Za těchto podmínek ale vše zreaguje vedle sebe velmi rychle („masivní paralelismus“).

Trochu poznámek z pohledu informatiky: úloha obchodního cestujícího patří k těm typům, kdy je výpočet obtížný, ale zkontrolovat řešení je relativně snazší. Navíc jde o typ problému, kde často nepotřebujeme složitě hledat to úplně nejlepší řešení, ale stačí nám rychle najít řešení dostatečně dobré. Eventuální přednost DNA počítače oproti klasickému zde spočívala právě a pouze v masivním paralelismu; jinak šlo o normální algoritmy s normální výpočetní složitostí. Jakkoliv se DNA počítače často zmiňovaly vedle počítačů kvantových, principy byly úplně jiné – např. už proto, že DNA počítání bylo/je s trochou snahy celkem pochopitelné :-).

(Odstavce až sem zřejmě už řada čtenářů četla mnohokrát, sloužily jen pro zopakování. Naopak teorii výpočetní složitosti, všechny ty NP úplné problémy apod. zde pomíjíme. Je to zajímavé, ale na úplně jiný článek. Otázka NP úplných problémů je vůbec skvělá – na jednu stranu se řadí mezi 7 největších výzev matematiky po roce 2000, na druhou stranu se předpokládá, že tento problém by na rozdíl od ostatních mohl s trochou štěstí vyřešit i někdo jiný než profesionální matematik.)

 

Kombinatorická a hmotnostní bariéra

Martyn Amos, School of Computing, Mathematics and Digital Technology, Manchester Metropolitan University, UK
Martyn Amos, School of Computing, Mathematics and Digital Technology, Manchester Metropolitan University, UK

Vypadalo to nadějně, je však třeba říct, že Adlemanův DNA počítač vyžadoval ruční práci a navíc byl schopen řešit pouze jediný typ úlohy – a to se pro každé konkrétní zadání musel pokus vždy navíc znovu připravit ručně. Posléze se objevily i DNA počítače pro jiné typy úloh, třeba pro tzv. splnitelnost (satisfiability – to je např. takové to „X nechce sedět vedle Y, Y musí sedět vedle A... - proveďte rozsazení večírku“).

 

Experimentovalo se s řadou systémů, které byly poloautomatické, tj. různé verze úlohy se třeba řešily tak, že se otevíraly různé výpustě kanálků, jak se jednotlivé roztoky DNA spolu míchaly. Jeden z těchto systémů byl dokonce roku 2002 vystavován i v sousedním Německu na známém počítačovém veletrhu CeBIT.

Zřejmě by se tyto postupy daly dále odladit (a zobecňovat, ale to bychom se dostali zase do spletitostí informatiky, třeba ke konečným automatům vs. Turingovým strojům atd.), větší problém byl však jinde. Ukázalo se, že oproti počítačům klasickým totiž vlastně neexistuje „prostor“, kde by DNA počítače byly výhodnější/rychlejší.

Masivní paralelismus a miliony molekul tančících vedle sebe ve zkumavce se zdály být řešením pro kombinatorickou explozi, která postihovala počítače klasické. Jenže ani DNA počítače si s řešením úlohy obchodního cestujícího o větším množství bodů nedokázaly poradit zrovna jednoduše. Narazily zde především na tzv. hmotnostní bariéru; složité zadání úlohy znamenalo syntézu dlouhých řetězců DNA, což bylo nákladné a relativně chybové. Pak, aby se vytvořily všechny kombinace, namísto zkumavek musely být protřepávány obří nádoby. Vůbec nebylo jisté, zda se opravdu vše promíchalo, ani jak z takové směsi nějak jednoduše separovat molekulu kódující řešení.

Peripetie popisuje např. i v češtině vyšlá kniha Martyna Amose „Na úsvitu živých strojů“ (česky 2008, jeden z posledních zajímavých titulů kdysi legendární edice Kolumbus, než ji Mladá fronta pohřbila), když konstatuje, že obor zamrzl mj. i proto, že vlastně neexistovala poptávka z komerční sféry. Od té doby těžko říct, techniky manipulace s DNA jistě pokročily, ale totéž platí pro výpočetní možnosti klasických počítačů, je zde navíc cloud a pronájem výpočetního výkonu (magická zkratka IaaS). Na oživení to zatím nevypadá.

 

Programování buněk

Již někdy v roce 2004 (či ještě dříve) se ale byly zkonstruovány i DNA počítače jiného typu, navržené pro fungování v buňkách, kde měly převzít jejich řízení. (Opět na okraj: podobné systémy v buňkách už působí i přirozeně. Není to ani tak, že DNA by fungovala digitálně, zatímco vlastní „proteinový život“ byl už analogový. Digitální kód je v čisté podobě přítomen u bakterií třeba i při přepínání enzymů metabolizujících různé zdroje, kdy dění odpovídá výpočtu pravdivostní hodnoty logické funkce. Z toho vyplývá i to, že digitální systémy nejsou buňkám nutně cizí, ale měly by se dát bez větších problémů vestavět do dalších procesů.)

Zde byl průkopníkem především Ehud Shapiro z Weizmanova institutu v Izraeli. První výpočty fungovaly ještě ve zkumavce, ale v živé buňce se to nijak principiálně neliší (pouze je tam třeba novou DNA nějak dostat a zajistit, aby se nedegradovala). Shapiro např. přišel se systémem, který bral v úvahu 4 podmínky – za diagnózu rakoviny se považovala současná exprese dvou genů a naopak absence exprese u dvou genů dalších (eventuálně se může posuzovat i snížená či zvýšená aktivita – viz ještě dále). Při splnění podmínek se DNA představující počítač různě zkracovala/okusovala/rozmotávala, až se odhalila sekvence, při jejímž čtení se přes RNA syntetizoval protein jako léčivo.

Stále to ale bylo docela složité na návrh i implementaci, kdy některé molekuly byly popisovány jako vlastní hardware, jiné jako přenašeče informace, další jako implementátory pravidel či přepínače přenašečů... Shapiro tehdy mimochodem tvrdil, že k nasazení takové léčby nedojde určitě dřív než za 10 let, což tedy nebyl nijak pesimistický odhad.

 

Vrchol abstrakce: BioVerilog

Ehud Shapiro, Weizmann Institute of Science
Ehud Shapiro, Weizmann Institute of Science

Jaké jsou poslední novinky počítačů pracujících v živých buňkách? Asi nejzajímavější inovace byly oznámeny vědci z MITu. Jde v nich o to, aby se vytváření DNA počítačů/programů dostalo na vyšší úroveň abstrakce. Programování ve strojovém kódu bylo pro pár vyvolených, vytvořit vývojový diagram nebo kód v Pascalu už zvládlo mnohem více lidí. Vlastní kód potom vygeneruje kompilátor či provede interpretr.

 

Podobně v případě DNA počítače by člověk program navrhl prostě jako logickou strukturu ze známých bloků (syntetizuj X, je-li Y, ale není-li Z) málem jen taháním myši. Tento abstraktní kód by se pak zkompiloval do samotných sekvencí DNA. Samozřejmě normální člověk by je nesyntetizoval na koleně, ale odeslal v rámci příslušného ekosystému do laboratoře. Zde by se připravily řetězce a vložily do buňky bakterie, kde by prováděly příslušné operace. Zadavateli by dorazila dejme tomu Petriho miska s kulturou. Tvorba GMO pro každého – ať zelené aktivisty klepne.

Snad ještě zajímavá maličkost: příslušná vložená DNA může v každém druhu bakterie (prozatím, snad dojde i na kvasinky) fungovat trochu jinak, pro každou bakterii budeme tedy mít trochu jiný kompilátor. Což ale zase není nic nezvyklého, zdrojové kódy programů si také běžně kompilujeme pro různé operační systémy vedle sebe.

Právě takové komplexní prostředí na základě jazyka Verilog navrhli na MITu.

(podrobnosti ScienceMag.cz: Senzory, logická hradla, vstupy, „knihovny“, co je Verilog...)

 

Automat na stavebnice DNA

Podobný automatizovaný přístup se na MITu zkouší i pro tvorbu 3D struktur z DNA. Už se takto dařilo stavět různé krychle, nanomotory, dopravníky (struktury, kde se DNA smotá a tím dopraví na místo určení požadované navázané další látky). Opět ale prozatím platilo, že postavit něco z DNA vyžaduje rozumět příslušné technologii. Ono i navrhnout obyčejnou krychli apod. objekt z vláken DNA třeba obnáší nejenom seskládat komplementární báze, ale také zajistit, aby se nesmotaly jinak. Proces často vyžaduje i „pomocné“ stěny a spojnice, které strukturu drží pohromadě v požadované podobě. Zde by abstraktní programovací prostředí (pojmenované Daedalus – tj. Daidalos, tvůrce krétského Labyrintu) mělo vypadat tak, že uživatel zadá 3D strukturu, třeba i složitou typu toroidů, a pak dále postupuje podle „průvodce instalací“.

(podrobnosti ScienceMag.cz)

 

Digitální a analogové počítače v jediném systému

Ačkoliv, jak už bylo uvedeno výše, v živých organismech probíhá řada procesů víceméně digitálního typu, stejně tak tu funguje i řada analogových – podle koncentrace látky X se syntetizuje množství Y. V případě buňky jde o strukturu zbastlenou v průběhu evoluce. Pro naše DNA počítače navrhované naopak od stolu bychom ideálně potřebovali nějaký přepínač, který by umožnil převádět signály obou typů mezi sebou. Pustili se do toho samozřejmě opět na MITu. Výsledkem jsou přepínače mezi digitálním a analogovým světem typu: čím více zaznamenáš látky X, tím víc syntetizuj Y. Jakmile ale X přesáhne určitou hodnotu, namísto syntézy Y udělej něco úplně jiného (podrobnosti ScienceMag.cz)


Autor: Pavel Houser
Datum:23.06.2016