Matematicko-fyzikální fakulta Univerzity Karlovy v Praze DIPLOMOVÁ PRÁCE Václav Bartáček
Simulace činnosti buněk v závislosti na jimi produkovaných látkách
Katedra aplikované matematiky Vedoucí diplomové práce: Doc. RNDr. Zdeněk Hedrlín, CSc. Obor studia: informatika
Děkuji doc. Zdeňkovi Hedrlínovi za všechno, co přispělo ke vzniku této práce, zvláště pak za pořádání seminářů, které mi pomohly nejen k sepsání této práce.
Prohlašuji, že jsem svou diplomovou práci napsal samostatně a výhradně s použitím citovaných pramenů. Souhlasím se zapůjčováním práce. V Praze dne 10. dubna 1999
Václav Bartáček
2
Obsah 1 Úvod 1.1 Empatický přístup . . . . . . . . . 1.1.1 Fyzikální analogie . . . . . . 1.1.2 Empatický versus observační 1.1.3 Vsuvka nejen o jazyku . . . 1.1.4 Cytopredikujeme . . . . . . 1.2 Simulujeme . . . . . . . . . . . . . 1.3 Ukazujeme . . . . . . . . . . . . . . 1.4 O čem je tato práce . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
5 . 5 . 5 . 6 . 7 . 8 . 9 . 9 . 11
2 Modelujeme prostředí 2.1 Chemické látky . . . . . . . . . . . . 2.2 Chemické reakce . . . . . . . . . . . 2.2.1 Úbytek látek VAXovou reakcí 2.3 Prostor . . . . . . . . . . . . . . . . . 2.3.1 Difuse . . . . . . . . . . . . . 2.4 Poloha a pohyb buněk v prostředí . . 2.4.1 Tlak buněk . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
12 12 13 14 14 15 17 17
3 Modelujeme buňku 3.1 Signály z okolí buňky . . . . . . . . 3.1.1 Receptory . . . . . . . . . . 3.2 Buněčná sezóna . . . . . . . . . . . 3.2.1 Určení sezóny . . . . . . . . 3.2.2 Změna sezóny . . . . . . . . 3.3 Zygotický graf . . . . . . . . . . . . 3.4 Receptorový zákon . . . . . . . . . 3.5 Zákon dělení buňky . . . . . . . . . 3.6 Buňka . . . . . . . . . . . . . . . . 3.7 Jeden krok simulace chování buňky
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
19 19 20 21 22 23 23 25 26 26 27
3
. . . . . . . . . .
4 Homeostáze 4.1 Funkce změny počtu receptorů . . . . . . . . . . . . . 4.2 Buňky produkují i konzumují . . . . . . . . . . . . . 4.2.1 Rovnovážný bod . . . . . . . . . . . . . . . . 4.2.2 Produkce a konzumace jako funkce viditelnosti 4.3 Setrvačnost produkce . . . . . . . . . . . . . . . . . . 4.4 Látková homeostáze . . . . . . . . . . . . . . . . . . 4.5 Buněčná homeostáze . . . . . . . . . . . . . . . . . . 4.5.1 Makrofág . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
28 28 29 30 32 33 34 35 35
5 Cykly v zygotickém grafu 5.1 Prostý cyklus . . . . . . . . . 5.2 Autoregulační cyklus (zg12b) 5.3 Loukoťový cyklus (zg12c) . . 5.4 Inhibice cyklů . . . . . . . . . 5.5 Diferenciace buněk (zg21a) .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
37 37 39 39 40 42
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
6 Závěr
43
A Seznam označení
45
B Jak B.1 B.2 B.3 B.4 B.5 B.6 B.7 B.8
. . . . . . . .
47 47 48 49 50 51 55 56 57
C Programátorské poznámky C.1 Struktura programu . . . . . . . . . . . . . . . . . . . . . . . . C.2 Balíky (packages) . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Programátorská dokumentace . . . . . . . . . . . . . . . . . .
58 58 59 61
D Disketa
62
Literatura
64
ovládat applet První kroky . . . . . . . . . . . Co program umí . . . . . . . . . Awale . . . . . . . . . . . . . . Control Panel . . . . . . . . . . Explorer . . . . . . . . . . . . . SpaceBox Info Dialog . . . . . . Panel v rámu ‘Místo pro applet’ Jak urychlit výpočet . . . . . .
4
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Kapitola 1 Úvod Cílem této práce je vytvořit konkrétní simulaci činnosti živých buněk v závislosti na pravidlech popisujících produkci chemických látek těchto buněk. Bude nás zajímat vzájemné ovlivňování buněk a jejich individuální vývoj v čase. Soustředíme se zvláště na buňky imunitního systému. Než ovšem vysvětlíme, o čem tato práce skutečně pojednává a jakým způsobem a pro jaké účely by měla sloužit, musíme přednést určité úvahy a zavést určité pojmy. Budeme např. vycházet z tzv. empatického modelu chování živé buňky, který již byl úspěšně aplikovaný v simulaci např. vytváření neuronové sítě, vzniku a léčby alergií apod.
1.1
Empatický přístup
Nejprve se musíme rozhodnout, jakým způsobem budeme přistupovat k našemu problému, co nás bude zajímat a co vědomě zanedbáme. Naše rozhodnutí, které věci budou pro nás důležité a které nikoliv, bude značně ovlivňovat výsledný model.
1.1.1
Fyzikální analogie
Pojďme na chvíli na exkurzi do historie fyziky. Počátkem 17. století objevil německý astronom Johannes Kepler několik zákonů, které popisují pohyby planet kolem Slunce. Kepler objevil tyto zákony na základě četných pozorování. Ještě v tom samém století přišel Isaac Newton se svým všeobecným gravitačním zákonem. Newtonův zákon popisuje vzájemné působení hmotných těles a může být aplikován i na pohyb planet ve sluneční soustavě.
5
Jak se liší Keplerovy zákony od zákona Newtonova ? Než odpovíme na tuto otázku, musíme si představit, jak asi oba velcí pánové dospěli ke svým poznatkům. Tak nejdříve pan Kepler. Pan Kepler pozoroval, porovnával se svými poznatky a zkušenostmi a pak vyvozoval. Neptal se na to, zda planety ‘vědí’, co je to elipsa, ačkoliv jeho zákony o ní mluví a přikazují planetám, aby se podle nich řídily. Pan Kepler použil observační přístup, díval se na pohyb planet zvenku, pozoroval. Pan Newton na to šel zcela jinak. Jeho zákon vypovídá o vzájemném působení dvou hmotných těles. Newton nepozoroval tělesa zvenku, ale díval se na situaci, jako kdyby on sám byl tím jedním tělesem. Jeho zákon je zákonem vnitřním, nedá se pozorovat zvenku. To pěkné na takovém zákoně je, že z něj lze odvodit spoustu nových věcí, nových ve smyslu zvenku dosud nepozorovaných. Pan Newton si zvolil empatický přístup, ‘vlezl’ si dovnitř tělesa, empatoval.
1.1.2
Empatický versus observační
Naším úkolem není určit který z přístupů je jednoznačně lepší1 , ale spíše oba přístupy rozlišit. Observační přístup Vlastně se snažíme vypozorovat určité zákonitosti ve zkoumaných jevech. Můžeme tedy mít dalekohled a pozorovat dráhy vesmírných těles. Pouze na základě pozorování určíme zákony jejich pohybu. Co když ale tento pohyb závisí na něčem, co pozorovat nelze ? Pokud se nám podaří objevit zákon z vnějších pozorování (vnější zákon), můžeme ho použít jen v situacích, kde jsme ho vypozorovali. Takový zákon je vlastně úzce spojený s pozorováním. Empatický přístup Nesmíme situaci pozorovat zvenku. Musíme dokonce zapomenout vše, co víme z vnějšího pozorování. Musíme se ponořit do situace, jako bychom v ní byli my sami. My jsme kámen, v každém časovém okamžiku na nás působí gravitace. Ta jediná může ovlivnit směr našeho dalšího letu. Vnitřní zákon (ten, který jsme nevypozorovali, ale odhadli zevnitř situace) není spjatý přímo se žádným pozorováním. Samozřejmě by to nebyl moc 1
Museli bychom se ptát, co znamená být jednoznačně lepší
6
užitečný zákon, kdyby se neshodoval s pozorovanými skutečnostmi. Pozorování nám teď slouží už jenom k potvrzení (nebo také vyvrácení) vnitřního zákona. My si ovšem navíc můžeme vzít úplně odlišnou sitaci a podívat se, zda v ní platí náš vnitřní zákon. Pokud ano, zjistíme, že mohou existovat situace, kde platí stejný vnitřní zákon, ale navenek, v pozorováních, se jeví zcela odlišně. Zvláště to platí o nových situacích. Vnitřní zákon může platit i v situacích, které nebyly do té doby pozorovány. Newton předpověděl, co se bude dít, hodíme-li kámen dostatečně velkou rychlostí. Vnitřní zákon nám dovoluje takové jevy předpovídat, predikovat.
1.1.3
Vsuvka nejen o jazyku
I ty nejkrásnější myšlenky je potřeba sdělit, tedy (většinou) převést do jazyka, do slov. A tady číhá velké nebezpečí. Tedy zaprvé: převést jemné myšlenky do vět, tak aby jim posluchač rozuměl, může být dosti obtížné (někdy i nemožné). Rozhodně se snáze vysvětluje problém někomu, koho známe. Víme totiž, jak daná osoba zareaguje na to či ono, co asi z daného problému zná apod. Dva lidé, kteří se znají, mají totiž vybudovaný společný ‘jazyk’ a stačí málo, aby se domluvili. Pokud ovšem sdělujeme problém někomu, koho neznáme, musíme mu říci mnohem více a stejně si nemůžeme být jisti, zda nám zcela porozuměl. Je to z toho důvodu, že jednotlivá slova mohou být chápána různými lidmi různě. A proč ? Protože si většinou představí pod stejným slovem různé situace. Můžeme tedy říci slovo ‘simulace’. Toto slovo ovšem může vyvolat u každého z nás spoustu asociací z nejrůznějších situací. Kdo si myslí, že přesně ví, co znamená, když se řekne ‘simulace’, ten jistě nepochopil. Protože ‘simulace’ je pouhé slovo, slovo vytržené z kontextu. Zatímco třeba ‘dělat simulace’ nebo ‘nedělat simulace’ už vypovídá o nějaké chvíli, procesu. A dva lidé tomu budou jistě rozumět stejně, pokud prožili stejnou chvíli. Vědomě jsme se tedy dopouštěli chyb, když jsme o několik odstavců výše psali o ‘přístupech’. Raději jsme měli volit spojení ‘dělat empaticky’ nebo ‘empatovat’. A ještě jeden kámen úrazu. Nesmíme zapomínat na autory výroků. Dokonce by se možná dalo říci, že výrok (věta, článek atp.) je bezcenný, pokud neznáme autora. Jako příklad vezmeme větu: ‘B je hlupák’. Tato věta nevypovídá nic o tom, zda ten člověk je hlupák, či nikoliv. Pokud ovšem víme, že A říká, že B je hlupák, můžeme si už o tom člověku udělat svoji vnitřní představu. Totiž o člověku A – ten si myslí, že B je hlupák. Doufáme, že snad tato malá vsuvka čtenáře neodradila od dalšího čtení této práce. 7
1.1.4
Cytopredikujeme
V předcházejíci části jsme naznačili, že ve fyzice existovaly dva úplně odlišné pohledy na sledovanou situaci. To samé ovšem platí i pro jiné obory, např. pro teoretickou biologii2 . Pojďme se nyní chvíli zabývat otázkou: jak simulovat chování buněk. Čtenář už jistě tuší, že budeme opět rozlišovat mezi pozorováním a empatováním, tentokrát ale v buněčné říši. V klasické biologii se hodně uplatňuje přístup observační. Biologové zkoumají vnější projevy chování buněk, snaží se je popsat a buňky samotné klasifikovat, zařadit, pojmenovat. Někteří se pokoušejí dělat simulace sledovaných systémů. Tyto simulace bychom my označili jako vnější simulace. Například lze pozorovat koncentrace různých látek v prostředí. Dále lze vysledovat, že koncentrace určitých látek spolu nějak souvisejí. Výsledkem může být soustava diferenciálních rovnic, která se řeší numericky – simulací. Co lze ovšem očekávat od simulace chování buněk, ve které buňky nehrají žádnou roli ? Vezmeme tedy v úvahu buňky – to ony ovlivňují stav prostředí a sebe navzájem. Buňky mohou být např.: nervové, kožní, krevní, kostní. Navrhneme zákony pro jednotlivé typy buněk, vytvoříme simulační program a ptáme se: Je to vnitřní simulace ? Rozhodně ne. Protože jsme pracovali s názvy pozorovaných buněk (nervová . . . ), nemůže se jednat o simulaci vnitřní. Když speciální buňka zvaná neuron vypouští během zlomku sekundy určité množství molekul mediátoru, jedná se o činnost ovlivněnou dlouhodobým vývojem této buňky, nikoliv o činnost závislou na pojmenování buňky. Neuron nezajímá, že v jeho okolí se nachází cizí bakterie, zatímco buňka fagocyt by si na bakterii ráda smlsla. Neurony a fagocyty procházejí odlišným vývojem, a proto se chovají odlišně. A teprve na základě odlišného vnějšího chování dostávají svá jména. Navíc všechny buňky jednoho organismu vznikají postupným rozdělením prvopočáteční buňky, tzv. zygoty. Podíváme-li se na linii buněk od zygoty až ke konkrétnímu neuronu, zjistíme, že někde v této linii nedokážeme určit, zda buňka je ještě zárodečná buňka, nebo je to už neuron. Dceřinná buňka se od rodičovské liší většinou jen málo3 , proč by se měly tedy tyto dvě buňky chovat podle odlišných zákonů ? Proč by se měla zygota chovat podle odlišných zákonů než neuron ? Z naší úvahy plyne, že všechny buňky by se měly řídit podle stejných zákonů. Pokud se nám povede zavést jednotná pravidla chování pro všechny buňky jednoho organismu, jsme na dobré cestě k dělání vnitřních buněčných 2
tento pojem se sem příliš nehodí, ale v tuto chvíli je to asi nejvhodnější varianta odborník namítne, že existuje tzv. kapování, ovšem to lze už zachytit ve vnitřních pojmech buňky, jak uvidíme později 3
8
simulací.
1.2
Simulujeme
Může se stát, že sice víme, jak udělat vnitřní simulaci, ale je tak výpočetně náročná, že se vlastně nedá provést. V takovém případě se musíme uchýlit opět k vnějším simulacím. Představme si nyní, že chceme simulovat nějaký komplexní buněčný systém. Budeme chtít simulovat produkci protilátek v imunitním systému, práci makrofágů (odstraňovač smetí i buněk), kosti a ještě třeba neuronovou síť. Vnitřní simulace takového systému bude jistě hodně výpočetně náročná, a ačkoliv by určitě mohla přinést cenné výsledky, byla by v praxi nepoužitelná. My ovšem můžeme řešit problém po částech. Vytvoříme vždy jeden program určený pro konkrétní situaci – např. pohyb makrofága v prostředí. V dalších programech, které nemají za úkol ukázat pohyb makrofága, ale v kterých potřebujeme vědět, jak se makrofág chová, ho nasimulujeme jednodušeji, z vnějšku. Z programu o pohybech makrofága určíme např. četnost setkání makrofága s ostatními buňkami a tuto četnost použijeme jako vnější parametr do dalších programů. Takto vznikne sada programů, které simulují určitou situaci s různou přesností, resp. které jdou do větší či menší hloubky ‘zvnitřňování’ simulace. Budeme se snažit, aby takto vzniklé programy byly konzistentní, tj. abychom výměnou vnitřní simulace za zjednodušenou vnější dostali shodné výsledky.
1.3
Ukazujeme
Můžeme se ptát, proč vlastně chceme dělat nějaký simulační program. Podle toho, s jakým cílem se pouštíme do nějakého úkolu, se bude lišit jak průběh řešení úkolu tak výsledek samotný. Simulační program můžeme tedy vytvořit abychom: • psaním simulačního programu zpřesnili svoje úvahy • shrnuli všechno, co známe, do jednoho celku • použili průběh simulace k novým úvahám • si simulací ověřili nějaké teoretické znalosti • si simulací projasnili něco, co už známe • si vytvořili pro sebe svůj obraz (představu) toho, co simulujeme 9
• navodili představu toho, co simulujeme, u někoho jiného • sjednotili představy mezi různými lidmi Poslední tři důvody dávají možnost vzniku tzv. představovým programům. Takové programy se vytváří hlavně proto, aby si člověk, který program spouští, vytvořil svůj vlastní obraz toho, co se programem simuluje, a aby několik lidí mělo tyto obrazy alespoň podobné. Podobností vnitřních obrazů mezi několika lidmi lze dosáhnout toho, že lidé se snadněji domluví o daném problému a problém se může i rychleji vyřešit. Příkladem cíleného vytváření podobných obrazů jsou semináře pořádané na univerzitách. Jedná se o semináře v počtu většinou 5 až 15 lidí. Jeden člověk na začátku předvede kousek nějaké své práce a ostatní se ho pak snaží v diskusi pochopit. V okamžiku, kdy všichni sjednotí svoje vnitřní představy, vstane někdo jiný a předvádí zase kousek svých vlastních úvah. Situace se opakuje. Celé takové jednání vede k lepšímu porozumění mezi aktéry semináře. Vraťme se však k našim představovým programům. Člověk vytvářející představový program musí provádět vcítění, empatii, do lidí, kteří si budou jeho program spouštět. Asi je jasné, že snadněji se vytváří program pro někoho, koho známe, než pro někoho neznámého. Podle toho, jak důkladně autor programu provedl empatii, se ukáže, nakolik budou podobné vnitřní představy autora programu a jeho uživatele. Představový program bude vlastně většinou demostrační program, který si uživatel pustí jako kazetu a pak už pouze sleduje děj na obrazovce. Až teprve po prvním seznámení se může uživateli dát volnost zasahovat do běhu programu. Uživatel si totiž může klást otázky typu: “Co se stane, když. . . ”, otázky, na které nejsou na kazetách připraveny odpovědi. Zásah do běhu programu znamená otázku. Odpovědi jsou pak změny v průběhu programu. Pokud je cílem našeho snažení vytvořit u někoho cizího opravdu ucelenou představu o nějakém rozsáhlém problému, nebude stačit program jeden, ale bude jich muset být celá sada. Může to být ovšem vyřešeno tak, že program sice bude jeden (přehrávač), ale budeme s ním dodávat několik datových souborů (kazety). Uživatel si pak bude pouštět jednu kazetu za druhou a postupně si budovat svou vnitřní představu. Ovšem stejně jako ve škole, na konci každé kazety by měl být nějaký test (zkouška), zda uživatel opravdu pochopil, resp. vytvořil si o problému podobnou představu jako autor programu. Zavedením takových testů ovšem vzniká riziko, že program bude chápán někým jako ‘hra’, hlavním úkolem ve ‘hře’ je dostat se do vyšší úrovně. Sadu kazet bez testů si lze představit jako učebnice pro různé ročníky. Budeme se spoléhat, že čtenář bude číst učebnice pěkně popořadě – nejdříve se naučí malou násobilku a teprve pak se bude zabývat nekonečnými řadami. 10
1.4
O čem je tato práce
Jak již bylo naznačeno v úvodu, výsledný program by měl být schopen simulovat chování buněk a vzájemné působení mezi buňkami. Model chování buňky by měl být co nejjednodušší a měli bychom zdůvodňovat, proč je takový, jaký je. Mělo by se rozlišovat, co je do modelu vloženo zvnějšku (observačně) a co je tam naopak vnitřního. Měli bychom ukázat, že z jednoduchých vnitřních zákonů lze odvodit a pozorovat zdánlivě složité výsledky. Celý program by měl být koncipován jako představový program, tzn. že k programu by měla být dodána sada ‘kazet’. Každá kazeta by měla dávat určitou představu o určité situaci. Kazety by měly být uspořádány vzestupně podle složitosti navozované představy.
11
Kapitola 2 Modelujeme prostředí V této kapitole se budeme zabývat modelováním chemických látek, pozice a pohybu buněk v prostředí. Vybereme jen určité typy chemických látek a ostatních si nebudeme všímat. Stejně tak vybereme jen určité chemické reakce. Taková zjednodušení jsou nutná pro snížení výpočetní náročnosti.
2.1
Chemické látky
Asi nemá smysl vyjmenovávat názvy různých typů chemických látek, které mohou ovlivnit chování buněk. Máme k tomu hned dva dobré důvody: seznam by byl docela dlouhý, ale hlavně názvy typů látek nevypovídají nic o tom, co vnitřně znamenají pro buňku. Z vnitřního buněčného hlediska se ovšem můžeme dívat na všechny typy látek stejně. Můžeme maximálně rozlišovat, zda látka může ovlivnit chování konkrétní buňky, či nikoliv. V našem modelu si všechny látky očíslujeme (v programu je obarvíme) a množinu indexů uvažovaných látek označíme I. Množství látky obarvené indexem i ∈ I v určitém čase a určitém místě budeme nazývat hladinou látky a označovat li . Vektor hladin všech látek označíme l. Hladina látky bude vždy nezáporná a pro snadnější počítání ji omezíme na interval h0, 1i. Horní mez sice bude možné teoreticky překročit, ale takové případy se budeme snažit z dalších úvah eliminovat. Interval h0, 1i volíme pouze v modelu, ve skutečnosti to může odpovídat různým rozsahům koncentrací – např. od 0,001 do 0,002. Náš model nám tedy dovolí soustředit se pouze na situace, ve kterých se hladiny látek pohybují jen v určitých mezích.
12
2.2
Chemické reakce
Vlastně budeme uvažovat pouze jeden typ reakce, ovšem pro imunitní systém ten nejdůležitější. Jedná se o reakce někdy speciálně označované jako reakce antigen–protilátka. V molekulovém světě to při takové reakci vypadá tak, že dvě určité molekuly mohou do sebe prostorově zapadnout a vytvořit tak molekulu novou. Princip lze ukázat pomocí metafory zámku a klíče. Otočením správného klíče v zámku nelze klíč vysunout. Nesprávný klíč není možné do zámku ani zasunout. Dvě látky, jejichž molekuly do sebe mohou zapadnout na principu zámku a klíče, budeme nazývat komplementární látky. Symbolicky budeme tyto látky označovat jako VAX. Molekula V se může spojit s molekulou A a společně tak vytvoří molekulu X. Ještě potřebujeme vědět, že některé dvojice látek se vzájemně slučují ‘rychleji’ a jiné dvojice ‘pomaleji’. Rychlosti reakcí závisí na tvaru molekul a pro každé dvě látky je tato rychlost pevně určena a nazývá se VAXová afinita. VAX tedy bude nadále pro nás čtveřice hv, a, x, affi, kde v, a, x ∈ I jsou indexy chemických látek, aff ∈ h0, 1i je VAXová afinita. Množinu všech VAXů budeme značit X. Už jsme si vysvětlili princip VAXových reakcí, nyní musíme objasnit, v čem spočívá důležitost těchto reakcí. Učiníme tak na konkrétním případě antigen–protilátka. Lékaři označují antigenem látku, která je pro organismus (buňky) vesměs cizí, ovlivňuje procesy v buňkách, resp. vyvolává obrannou reakci některých buněk. Například viry mají na svém povrchu antigeny. Pomocí těchto látek může virus ovlivňovat chování jím napadené buňky, příp. může vniknout do buňky a celou ji zničit. VAXově komplementární látka k určitému antigenu se nazývá protilátka. Protilátky mohou být produkovány buňkami imunitního systému, nebo mohou být přítomny v krvi po očkování. Molekuly protilátky se spojují s molekulami antigenu a tím znemožňují působení antigenu na buňky. Blokace antigenu umístěného přímo na obalu virových tělísek paralyzuje působení viru. Hladiny dvou VAXově komplementárních látek se díky VAXovým reakcím navzájem regulují. Přítomnost obou látek znamená postupný úbytek obou látek až do úplného vyčerpání jedné z nich. Rychlost snižování hladin ovšem postupně klesá. Čím je v prostředí méně molekul, tím menší je šance, že se dvě molekuly mohou ‘potkat’ a VAXově se spojit.
13
2.2.1
Úbytek látek VAXovou reakcí
Zavedeme si funkci α : I × I → h0, 1i, která dvěma indexům látek přiřadí VAXovou afinitu. Látky, které nejsou VAXově komplementární, mají nulovou afinitu. Platí α(i, j) = α(j, i) pro i, j ∈ I. Hladiny látek li je možné považovat za funkce času t. Úbytky dvou VAXově komplementárních látek jsou v každém čase stejné, protože se molekuly spojují v poměru 1:1. Úbytek látek je tím větší, čím větší jsou aktuální hladiny obou látek a čím větší je VAXová afinita páru. Vše shrnuje následující vztah: dla dlv = ∼ −lv (t)la (t)α(v, a) dt dt Úbytek je navíc nutné přenásobit nějakou konstantou, která bude určovat rychlost simulace (speed ). Nesmíme ještě zapomenout zvýšit hladinu látky x, pokud ovšem takovou látku v modelu uvažujeme. Celý algoritmus VAXové reakce bude v jednom kroku vypadat následovně: proc vaxReaction() begin for hv, a, x, aff i ∈ X do decay := lv ∗ la ∗ aff ∗ speed; lv := lv − decay; la := la − decay; if x ∈ I then lx := lx + decay; fi od end.
2.3
Prostor
Zkoumaný prostor rozdělíme na menší části. Každou část, která už bude nedělitelná, nazveme box. Box je tedy část prostoru, kde už nedokážeme rozlišit dvě různá místa. Box má v každém čase jisté hladiny všech látek, hladina jedné látky v určitém boxu a v určitém čase je konstantní. Celkový prostor je dán množinou boxů B a sousedstvím boxů. Sousedství dvou boxů je popsáno dvojicí1 {b, b′ }, kde b, b′ ∈ B. Množinu všech sousedství budeme značit N. 1
v programu používáme uspořádanou dvojici kvůli zadávání a vizualizaci boxů
14
Obrázek 2.1: Vyrovnání hladiny difusí Modelovaný prostor si tedy můžeme představit jako neorintovaný graf, kde vrcholy grafu představují jednotlivé boxy a hrana mezi dvěma vrcholy odpovídá sousedství mezi příslušnými boxy.
2.3.1
Difuse
Difusi budeme modelovat observačně, tedy z vnějšku. Ten, kdo někdy pozoroval difusi, ví, že základním (pozorovatelným) výsledkem difuse je vyrovnávání hladin látek. Příkladem, který známe snad všichni, je příprava čaje. Představme si jednorozměrné prostředí, kde hladina látky je popsána nějakou funkcí f . Pak budeme chtít, aby se hladina snížila tam, kde je lokální maximum, a zvýšila tam, kde je lokální minimum. Na obrázku 2.1 vše znázorňují šipky. Z matematické analýzy víme, že lokální extrémy funkce jedné proměnné lze určovat pomocí druhé derivace dané funkce. Pokud tedy existuje druhá derivace na celém intervalu (kromě krajních bodů intervalu), můžeme navrhnout vztah pro difusi: ft+1 = ft + ∆ft′′ ft je aktuální hladina látky, ft+1 je hladina látky po jednom kroku difuse. Parametr ∆ určuje rychlost difuse. Difusi tedy budeme simulovat po krocích. Rychlost počítané difuse bude záviset na rychlosti simulace a také na typu difundované látky. Různé látky mohou totiž difundovat různou rychlostí. Oba typy rychlostí jsou v našem vzorci zachyceny parametrem ∆.
15
Protože jsme si zavedli diskrétní prostor (rozděleneý na boxy) a každý box navíc může sousedit s jedním, dvěma i více jinými boxy2 , musíme náš model difuse přizpůsobit těmto podmínkám:
1 X ft+1 (b) = ft (b) + ∆ −ft (b) + ft (b′ ) m {b,b′ }∈N
b ∈ B je box, ve kterém provádíme difusi a m je počet jeho sousedních boxů. Předpokládáme, že objem boxů je stejný. Difusi budeme provádět pro každou látku zvlášť. Nebudeme uvažovat vzájemné působení molekul dvou různých látek při difusi. Předpokládáme totiž, že pracujeme s velmi malými skutečnými koncentracemi látek. Budeme potřebovat pracovní pamět pro zapamatování si starých hodnot hladin látek. Difusi musíme totiž provádět ve všech boxech jakoby ‘paralelně’. V následujícím algoritmu pro tyto účely používáme pole buffer. proc diffusion() begin for i ∈ I do ∆ := diffusionspeed[i] ∗ simulationspeed; j := 0; for b ∈ B do buffer[j] = b.getLigand(i); j := j + 1; od for b ∈ B do d := 0; for {b, b′ } ∈ N do d := d + buffer[b′ ]; od m := card { p | p ∈ N & b ∈ p } ; d := ∆ ∗ (b.getLigand(i) − d/m); b.setLigand(i, d); od od end. 2
u izolovaných boxů nemá difuse význam
16
2.4
Poloha a pohyb buněk v prostředí
Buňky budou rozmístěny v jednotlivých boxech. Každý box bude mít omezenou kapacitu na počet umístěných buněk. Buňky se mohou přemísťovat mezi sousedními boxy. Nebudeme uvažovat aktivní přesuny buněk mezi boxy (např. pohyb makrofágů), ale pouze pasivní pohyby spojené s množením a růstem buněk.
2.4.1
Tlak buněk
Pokud se v jednom boxu nachází víc buněk, než je kapacita boxu, buňky se snaží rozmístit do okolních boxů. Vlastně se snažíme namodelovat tlak buněk. Situace by šla modelovat vnitřně pomocí tzv. pružinkového modelu. Buňky by byly kuličky spojené pružinkami. Přiblížení buněk–kuliček by znamenalo stlačení jedné pružinky a následná změna sil v soustavě. Podle Newtonových zákonů mechaniky je síla působící na těleso úměrná zrychlení těelesa, odtud by se vypočítal vektor rychlosti kuličky a následná změna pozice kuličky–buňky. Nám ovšem nyní nejde o přesné určení pozice každé buňky, ale spíše o to, aby se nám buňky nehromadily v jednom boxu. Tlak buněk budeme modelovat tedy opět (jako difusi) z vnějšku. Buňky budeme přesouvat lokálně vždy mezi dvěma sousedními boxy. V jednom kroku se tedy každá buňka může přemístit maximálně o jeden box dále. Následuje formální zápis algoritmu: proc cellPressure() begin for b ∈ B do overcell[b] := max{0, b.getCellCount() − b.getCellCapacity ()}; od for {b′ , b′′ } ∈ N do if overcell[b′ ] > overcell[b′′ ] then moveCells(b′ , b′′ ); else if overcell[b′ ] < overcell[b′′ ] then moveCells(b′′ , b); fi fi od end. 17
Nejprve se určí boxy, ve kterých je více buněk, než je kapacita boxu. Potom se pro každé dva boxy, které spolu sousedí, zkontroluje, zda alespoň v jednom z nich jsou ‘nadbytečné’ buňky. Pokud navíc počet buněk v jednom z boxů převyšuje počet buněk v druhém boxu, jsou nadbytečné buňky přesunuty do boxu s menším počtem buněk. Procedura moveCells přesouvá alespoň jednu buňku mezi boxy. Je třeba navíc ošetřit situace, kdy box má více sousedů, než je kapacita buněk v boxu. V takovém případě bychom podle stávajícího algoritmu ‘přečerpali’ počet buněk z boxu. Další možnost zlepšení algoritmu je pamatovat si u každé buňky čas a box posledního přemístění. V proceduře moveCells pak lze vybírat buňky k přesunu do specifických boxů. Zlepšení se projeví v tom, že pozice jednotlivých buněk budou stálejší a buňky samotné se nebudou mezi sebou mísit. V jednorozměrné síti boxů dokonce nastane ideální případ – buňky budou vedle sebe pořád přesně v tom pořadí, ve kterém se zrodily. Uživatel výsledného programu se bude lépe orientovat mezi množstvím buněk na obrazovce. Samotná simulace bude věrohodnější a budeme ji moci použít i k náročnějším pokusům, jako je např. diferenciace buněk.
18
Kapitola 3 Modelujeme buňku V této kapitole se budeme zabývat vnitřním modelováním buňky. Nebudeme rozlišovat buňky podle biologických názvů (nervová, jaterní apod.), ale budeme předpokládat, že všechny buňky se chovají podle stejných vnitřních zákonů. Oprávněnost tohoto přístupu můžeme ukázat na příkladu zygoty, což je zárodečná buňka celého organismu. Každá buňka se totiž vyvine ze zygoty postupným buněčným dělením. Všechny buňky mají tedy shodnou dědičnou informaci (uloženou v DNA, případně v buněčných organelách jako jsou např. mitochondrie). Někdo může namítnout, že během vývoje od zygoty k ‘hotové’ buňce se tyto dělením mění, diferencují. My musíme ukázat, že diferenciace buněk je možná, aniž by se měnila společná pravidla chování buněk. Pozorovaná diferenciace buňky tedy bude možná na základě nějaké vnitřní buněčné, nepozorované změně.
3.1
Signály z okolí buňky
Jako signály, které mohou ovlivnit chování buňky, mohou sloužit chemické látky v okolí buňky, světlo (elmag. záření), tlak na buňku, sousedství s ostatními buňkami. Teď jsme vyjmenovali vlivy na buňku, které můžeme pozorovat. My ovšem chceme použít empatický přístup, tedy něco docela jiného. Jako hlavní (a pro nás jediné) signály budou sloužit molekuly látek přítomných v okolí buňky. Molekuly mohou být dvojího druhu: malé a velké. Malé molekuly jsou takové molekuly, které do buňky mohou proniknout pomocí mikrokanálků v buněčném povrchu. Tyto molekuly tedy mohou proniknout do buňky kdykoliv, množství látky takto pohlcené buňkou závisí pouze na hladinách látky v okolí a uvnitř buňky. 19
Velké molekuly jsou všechny ostatní molekuly. Velké molekuly tedy nemohou proniknout do buňky pomocí mikrokanálků, ale musí využívat jiných speciálních mechanismů. Tyto molekuly mohou ovlivnit buňku dvojím způsobem: buď jsou nějak přeneseny přímo do vnitřku buňky, nebo jim stačí ‘dotknout’ se povrchu buňky. Oba způsoby více přiblížíme v odstavci o receptorech. Ostatní vnější faktory lze shrnout pod jednu střechu s názvem stres 1 . Je jedno, zda buňku ‘opékáme’ na pánvi, nebo ji topíme v kyselině, buňka vždy reaguje podobně – začne se chovat stresovaně, tedy jinak, než když je v klidném prostředí. V našem modelu budeme uvažovat pouze velké látky a nebudeme uvažovat buněčný stres.
3.1.1
Receptory
Receptory jsou speciální molekuly zakotvené v povrchu buňky, které buňce slouží jako čidla chemických látek. Pro různé chemické látky mohou existovat různé typy receptorů. Molekula látky, která se nachází v blízkosti buňky, je detekována receptorem v okamžiku, kdy se tato molekula spojí s molekulou receptoru VAXovou reakcí, tedy reakcí fungující na principu zámku a klíče. Molekula receptoru může být spojena s vnitřkem buňky např. pomocí vláken cytoskeletonu a samotné spojení receptoru s komplementární molekulou už může vyvolat nějaké změny v chování buňky. Někdy je možné slyšet termín, že se buňka otřese. Receptor může sloužit i jako ‘brána’ pro vstup určitých molekul. Komplementární molekula se spojí s molekulou receptoru, celá dvojice se ‘otočí’ dovnitř buňky a poté se molekuly opětovně oddělí. Velká molekula se tak může dostat přes jinak pro ni neprůchodný buněčný povrch. Receptor navíc může sloužit i jako brána na vypouštění látek ven z buňky. Princip je obdobný jako pro vstup molekuly do buňky. Některé receptorové brány mohou dokonce sloužit v obou směrech. Příkladem je speciální molekula umístěná na povrchu mitochondrií2 , která dovnitř pouští molekuly ADP a ven pouští molekuly ATP. Velikost buněčného povrchu zaručuje omezenost počtu receptorů. V našem modelu budeme uvažovat počet všech receptorů jako číslo z intervalu h0, 1i. Toto číslo může být vztaženo vždy k určitému buněčnému povrchu, 1 V našem modelu nechceme dělat podrobnosti typu: světlo a fotosyntéza, vliv teploty na rychlost chemických reakcí a podobně. 2 mitochondrie sice není buňka, ale dá se modelovat na podobných principech jako buňka
20
resp. jeho velikosti. Toto normování počtu receptorů nám zlepší možnost sledování počtu receptorů u různých buněk. Zjednodušíme si vztah receptorů a látek tak, že pro každou látku bude existovat právě jeden typ receptorů. Receptory budou jednoznačně určovat detekovanou látku3 . Toto zjednodušení se dotkne všech VAXů. Každá látka je nyní součástí právě jedné VAXové dvojice. Toho můžeme využít při zápisu komplementárních látek. Pokud budeme mít látku s indexem i, pak její VAXový protějšek bude mít index ¯i. Souhrn všech receptorů na molekuly různých látek u jedné buňky bude tedy n-tice nezáporných čísel hri1 , ri2 , . . .i, kde rij jsou normované počty receptorů na látku ij ∈ I. Tento souhrn budeme značit r. Platí podmínka omezení celkového počtu receptorů u jedné buňky: X
rij ≤ 1
ij ∈I
Je dobré si uvědomit, že receptory označené indexem i jsou receptory na látku s tímto indexem. Receptory samotné jsou ovšem tvořeny látkou komplementární k látce i, což je látka označená indexem ¯i.
3.2
Buněčná sezóna
Sezónou buňky budeme rozumět vnitřní stav buňky. Buňky v odlišných vnitřních stavech se většinou budou chovat různě. Buňky ve stejných vnitřních stavech se budou chovat podobně. Oprávněnost zavedení vnitřního stavu buňky plyne ze znalostí transkripce buněčné DNA. Jedna nebo více těchto molekul jsou uloženy v jádře buňky a obsahují informace pro výrobu různých látek. Tato informace ovšem není zpřístupněna celá najednou, ale vždy jsou odkryty jen určité části. Odkrývání a zakrývání se děje podle signálů, které buňka přijímá ze svého okolí. Odkrytím jedné části se může zakrýt část jiná. Biologové hovoří o tom, že buňka přestaví svoje továrny na výrobu látek. Pro nás tedy bude tedy vnitřní stav buňky odrážet to, jaké má buňka právě zprovozněné továrny. Každý náš vnitřní stav, resp. sezóna, odpovídá určitému odkrytí DNA v buněčném jádru. Je jasné, že budeme muset opět zjednodušovat, aby výsledný model byl použitelný, resp. simulovatelný na počítači. Bude se jednat hlavně o redukci počtu stavů. 3
Kdybychom nezavedli takovéto zjednodušení, museli bychom sčítat všechny typy látek, které se na dané receptory nachytají, resp. které tvoří s molekulami receptorů VAX. Látky by se museli vážit pomocí VAXové afinity. Zajímavostí takového přístupu je, že buňka nerozlišuje nachytané typy látek na jednom druhu receptorů.
21
Nyní se budeme ptát, co určuje tento vnitřní stav a za jakých okolností buňka tento stav změní.
3.2.1
Určení sezóny
Sezóna jedné buňky je určena signály z okolí buňky a to signály, které je buňka schopna jakýmkoliv způsobem zachytit. Uvažujeme-li pouze látky sestávající z velkých molekul, pak aby buňka byla schopná zachytit a zaregistrovat danou látku, musí na ni mít potřebné receptory. Nyní se začíná rýsovat důležitost buněčných receptorů. Buňka, která nemá receptory na určitou látku, nemůže být touto látkou ovlivňována. Buňka na danou látku vůbec nereaguje. Buňka, která má receptory na určitou látku, může danou látku detekovat. Detekce určité látky ve svém okolí může pro buňku znamenat signál k vyvíjení určité činnosti. Do našeho modelu vložíme zákon, podle kterého vnitřní stav buňky souvisí s určitou detekovanou látkou. Počet možných vnitřních stavů buňky bude shodný s počtem uvažovaných látek v modelu. Buňka ovšem může mít na svém povrchu více typů receptorů, tedy může v jednom okamžiku detekovat více druhů látek najednou. Buňka se ovšem musí ‘rozhodnout’ mezi několika signály. V našem modelu nebude možné, aby buňka byla v několika stavech najednou. Buňka si tedy zvolí sezónu podle nejsilnějšího signálu. Nejsilnější signál pro buňku nemusí znamenat látku s nejvyšší hladinou. Buňka totiž nemusí mít na danou látku vůbec žádné receptory. Stejně i pro látky, na které buňka receptory má, je nutné vzít v patrnost poměry mezi počty receptorů. Vlastně se nyní ptáme, kolik které látky buňka vidí. Buňka vidí tím více látky, čím více má receptorů na tuto látku a čím více je této látky v okolí buňky. Pro náš model navrhneme funkci viditelnosti φ: φ(l, r, aff) = l r aff l je hladina látky, r je počet receptorů na danou látku, aff je afinita VAXového páru tvořeného párem receptor – detekovaná látka. Nejsilnější signál bude ta látka, která bude pro buňku nejvíce viditelná. Tomuto signálu bude odpovídat i sezóna buňky s. Sezóny budeme číslovat (barvit) stejně jako látky. Sezóna buňky bude tedy určena takto: s = max { φ(li , ri, α(i, ¯i)) | i ∈ I } Sezóna na látku i bude pro nás sezóna, kdy buňka vidí nejvíce látky s indexem i. 22
Jeden z vnitřních stavů by mohla být tzv. stresová sezóna. Do takové sezóny by se mohla buňka dostat při stresu 4 . Pokud bychom ovšem do modelu zavedli i tento pojem stresové sezóny, museli bychom zavést rovněž kritérium, za jakých okolností se buňka do stresové sezóny dostane, resp. jak se má buňka rozhodovat mezi standardními signály a signály stresovými. Do našeho modelu ovšem stresové sezóny zatím vkládat nebudeme.
3.2.2
Změna sezóny
Změna sezóny je určována vlastně z okolí buňky, např. zvýšením hladiny jedné látky. V simulaci musíme postupovat obráceně – buňka si musí sama zjišťovat, zda nemá změnit svoji sezónu. V každém kroku simulace dojde tedy k určení sezóny pro každou buňku s tím, že pokud se sezóna od posledního kroku nezměnila, buňka pokračuje v dosavadních činnostech, a pokud se sezóna změnila, je nutné přestavět buněčné továrny. funct getSeason() begin maxphi := 0.0; getSeason := noseason; for i ∈ I do phi := φ(li , ri , α(i, ¯i)); if phi > maxphi then begin maxphi := phi; getSeason := i; end fi od end.
3.3
Zygotický graf
V předcházejícím odstavci jsme se zmínili o tom, že živá buňka produkuje látky zakódované v jaderné DNA. Pro náš model budeme potřebovat také nějakým způsobem ‘zakódovat’, co má buňka dělat v určité sezóně. Sezóna je pro buňku specifická tím, jaké části DNA jsou odkryty. Podle těchto odkrytých informací buňka produkuje látky a vypouští je do okolí. 4
porušení membrány, vysoká teplota atp.
23
1
2
3
4
5
6
V
A
Obrázek 3.1: Příklad zygotického grafu bez ohodnocení Každá sezóna v našem modelu bude tedy spjatá s výčtem látek, které se mají v dané sezóně produkovat. Celou situaci lze zachytit pomocí orientovaného grafu. Každý vrchol tohoto grafu odpovídá jedné buněčné sezóně. Hrana z vrcholu i do vrcholu j znamená, že buňka v sezóně i vyrábí látku j. Z jednoho vrcholu může vést více hran – buňka produkuje víc typů látek. Pokud z vrcholu nevede žádná hrana, buňka nic neprodukuje. Graf určující produkci látek v závislosti na buněčné sezóně budeme nazývat zygotický graf 5 . Tento graf je společný pro všechny buňky modelovaného organismu, stejně jako živé buňky ze stejného organismu mají shodnou DNA6 . Na obrázku 3.1 je ukázka zygotického grafu. Vrcholy jsou představovány přihrádkami, hrany jsou kresleny jako šipky. Každá přihrádka určuje sezónu na určitou látku. Horní řadu přihrádek můžeme indexovat V1 , V2 , . . . V6 , dolní řadu zase A1 , A2 , . . . A6 . Přihrádky jednoznačně odpovídají látkám, navíc látky Ai a Vi tvoří VAX. Všechny zygotické grafy budeme nadále kreslit v této formě. Živá buňka může ovšem produkovat najednou různé látky v různých množstvích. Látky jsou v jaderné DNA kódovány tzv. geny, větší počet odkrytých genů pro jednu látku pak může znamenat větší produkci dané látky buňkou. Rozšíříme si tedy náš zygotický graf o další údaje – poměry v produkcích jednotlivých látek. Nabízí se to nejjednodušší řešení: ohodnotíme hrany v grafu. Každá hrana grafu bude tedy ohodnocena číslem z intervalu (0, 1i, ohod5
Někdy budeme též uvádět ekvivalentní termín produkční graf Název zygotický graf je odvozen z faktu, že všechny buňky vyvinuté ze společné zygoty mají shodné grafy 6
24
nocení slouží pro určení poměrů výroby jednotlivých látek, nikoliv pro jejich absolutní velikosti. Opět tedy značně zjednodušujeme model, protože např. nebereme v úvahu rozdíly v energetické náročnosti výroby jednotlivých látek. Stejně tak zanedbáváme ‘surovinové’ zdroje pro výrobu jednotlivých látek. Předpokládáme prostě, že buňka má všeho dost, nebo že informace uložená v DNA je pro výrobu látek dostačující. Někdy se ohodnocenému zygotickému grafu říká graf pípový. V dalších úvahách však budeme používat označení zygotický graf i pro grafy ohodnocené. V ukázkách grafů, kde půjde hlavně o tvar grafu, nebudou hrany ohodnoceny. Neohodnocený graf si však můžeme také představit jako graf, jehož hrany jsou ohodnocené stejným číslem. Můžeme tedy vlastně uvést, že se budeme zabývat pouze grafy ohodnocenými.
3.4
Receptorový zákon
Receptory jsou pro buňku velice důležité. Pomocí receptorů může buňka detekovat ve svém okolí určitou látku a podle toho i změnit své chování. Receptory se mohou časem ‘opotřebovat’ nebo úplně zničit, navíc při rozdělení buňky se dělí mezi buňky dceřinné i receptory z buňky původní. Buňka musí mít tedy možnost zvyšovat počty svých receptorů. Pro zvyšování počtu receptorů musíme zvolit určitý vnitřní buněčný zákon. Všechny buňky budou tento zákon dodržovat. Tento zákon budeme nazývat receptorový zákon. Uvažujme o tom, kdy má buňka zvyšovat počty svých receptorů. Receptory jsou vlastně molekuly určitých chemických látek, buňka si je tedy musí umět vyrábět. Zákon by mohl vypadat tak, že buňka si vyrábí ty receptory, které může vyrobit v dané sezóně podle zygotického grafu. Jiná verze receptorového zákona by mohla vypadat takto: buňka si vyrábí receptory podle speciálního receptorového grafu, což je obdoba zygotického grafu pro výrobu receptorů. Tento přístup vychází z toho, že receptory musí být navíc ukotveny v buněčném povrchu, a proto je jejich výroba ‘náročnější’ než výroba látek, které buňka vypouští do okolí. Úplně nejjednodušší, ovšem ve svých důsledcích neméně zajímavý, je receptorový zákon, podle kterého si buňka vyrábí v každé sezóně jen receptory na tu látku, která je nejvíce viditelná. Je-li buňka v sezóně na látku i, pak si vyrábí (zvyšuje počet) receptory na tuto látku i. Poslední verze je zajímavá tím, že buňka se vlastně přizpůsobuje okolí. Metaforicky lze říct, že buňka je jako hospodyně, která:
25
• když je sezóna na borůvky, sbírá borůvky a shromažďuje všechny nádoby, do kterých se borůvky mohou sbírat, • když je sezóna na meruňky, češe meruňky a shromažďuje zavařovací láhve, • ...
3.5
Zákon dělení buňky
Další zákon, který musíme zvolit, je zákon buněčného dělení. Zákon musí jasně říkat, kdy se daná buňka rozdělí a jak budou vypadat buňky dceřinné. Z omezenosti počtu receptorů na buněčném povrchu víme, že buňka si nemůže zvyšovat počty svých receptorů věčně. V určitém okamžiku už na povrchu nemá místo. A zde se přímo vybízí možnost rozdělit buňku na dvě menší, z nichž každá bude mít poloviční počty receptorů. Obě nové buňky pak budou ve stejné sezóně jako buňka původní. Po takovém rozdělení tedy vzniknou dvě identické buňky, které mají opět volné místo pro přidávání receptorů7 . Pokud bychom modelovali i tvar buňky, museli bychom do modelu vnést možnost nerovnoměrného rozdělení buněčných receptorů, což se někdy označuje jako tzv. kapování. Je možné vzít do úvahy i další podněty pro buněčné dělení, třeba nějaký signál z okolí, speciální látku, případně stres.
3.6
Buňka
Nyní shrneme všechny předcházející úvahy z této kapitoly. Buňka tedy bude pro nás znamenat souhrn následujících údajů: • společné pro všechny buňky: – zygotický graf – receptorový zákon – zákon dělení buňky • v každém čase odlišné: – počty receptorů na povrchu – sezóna 7
Dá se snadno nahlédnout, že při buněčném dělení se zvětšuje celkový povrch buněk.
26
– produkce látek Oba dva zákony, zákon receptorový a zákon dělení, musí být společné opravdu pro všechny buňky v modelovaném systému. Zygotické grafy se mohou lišit pouze v případě, že sledujeme buňky z různých organismů (vyvinuté z odlišných zygot).
3.7
Jeden krok simulace chování buňky
Protože výsledkem našich úvah bude počítačový program, je třeba převést všechny akce modelované buňky do sekvencí. Symbolicky můžeme zapsat jeden krok simulace chování buňky následovně: proc life() begin season := getSeason(); product(season); changeReceptors(season); if shallDivide() then divide(); fi end. Nejdříve se určí sezóna, v které se buňka nachází (getSeason). Dále se vyprodukuje určité množství látek do okolí buňky – product. Produkce je vázána na aktuální sezónu, navíc je nutné řešit problém určité setrvačnosti v produkci látek. Další akcí je změna počtu receptorů – changeReceptors. Receptory se přidávají podle platného receptorového zákona. Nakonec je nutné zkontrolovat, zda se má buňka podle zákonu dělení rozdělit – test shallDivide. V případě, že je test pozitivní, se buňka dělí – divide.
27
Kapitola 4 Homeostáze Živé buňky jsou schopné regulovat koncentrace látek ve svém okolí, koncentrace látek se tak většinu času nemusí měnit, tento jev se nazývá homeostáze látek v prostředí. Homeostáze je vnější projev ‘správného’ soužití buněk. Homeostáze znamená, že každá látka má v prostředí ‘správnou’ koncentraci. Koncentrace látek v prostředí určují, co která z buněk právě vykonává. Nižší koncentrace nějaké látky může znamenat ‘hladovění’ buněk závislých na dané látce. Vyšší koncentrace jiné látky může znamenat to, že buňky ‘utíkají’ od svojí tradiční práce a v důsledku toho může dojít k nadvýrobě další látky, atd. Takové porušení homeostáze může znamenat nemoc. Dříve než se pustíme do zkoumání homeostáze, musíme si náš model doplnit, resp. upřesnit a implementovat konkrétní zákony.
4.1
Funkce změny počtu receptorů
Použijeme nejjednodušší formu receptorového zákona a necháme buňky zvyšovat pouze receptory na sezónní látku. Buňka nebude ztrácet receptory, receptory se budou snižovat pouze rozdělením buňky. Nyní musíme určit pravidlo pro rychlost přidávání receptorů buňkou. Chceme-li udělat vnitřní pravidlo, pak jediné, na čem může v našem modelu záviset tato rychlost, je maximální viditelnost. Rychlost by měla být rostoucí v závislosti právě na této viditelnosti. Čím více buňka vidí látku v okolí, tím rychleji si zvyšuje počet receptorů na ni. Tento přístup lze zdůvodnit ze znalosti cytoskeletonu: receptory mohou být pomocí něho spojeny s buněčným jádrem a podle množství detekovaných molekul se může regulovat i výroba součástí receptorů. Kdyby buňka zvyšovala počet receptorů už při nulové viditelnosti, do28
y
thres
drec
φ Obrázek 4.1: Graf zvyšování počtu receptorů buňkou cházelo by k rychlému množení buněk. Pro odstranění tohoto problému si zavedeme do modelu parametr, který nazveme receptorový práh a označíme thres. Buňka začíná zvyšovat počet receptorů, až když je viditelnost vyšší než je hodnota receptorového prahu. Zdůvodnění lze opět učinit pomocí cytoskeletonu: je třeba překročit určitou minimální ‘sílu’, aby se informace rozšířila z povrchu buňky až do jejího jádra. Zvyšování počtu receptorů zavedeme jako po částech lineární funkci viditelnosti ρ: ( 0 . . . φ ≤ thres ρ(φ) = (φ − thres)drec . . . φ > thres Druhý parametr drec určuje rychlost zvyšování počtu receptorů. Graf funkce je na obrázku 4.1. Hodnotu každého z parametrů zvolíme stejný vždy pro všechny buňky jednoho organismu. Tyto parametry vyjadřují schopnost buňky vyrábět si receptory a budeme předpokládat, že tato schopnost je pro (modelované) buňky jednoho organismu stejná, resp. je určena již od zygoty.
4.2
Buňky produkují i konzumují
V předcházejících kapitolách jsme uvedli, že buňky produkují určité látky podle aktuálního stavu. Dále bylo naznačeno, že molekuly nachytané na buněčné receptory mohou být buď uvolněny zpět do prostředí, anebo je buňka ‘skonzumuje’. Buňky mohou tedy látky nejen produkovat, ale i konzumovat. Pokud buňky dohromady vyprodukují více látky, než ji dohromady skonzumují, pak se hladina dané látky v prostředí zvyšuje a naopak. Pro zajištění homeostáze
29
y
φ
osc
φ
Obrázek 4.2: Rovnovážný bod buněčné produkce a konzumace je potřeba, aby buňky při nízké hladině látky vyprodukovaly této látky více, než jí ‘skonzumovaly’, a naopak. Budeme předpokládat, že rychlost buněčné produkce i konzumace bude záviset na tom, kolik látky buňka vidí ve svém okolí. Pro viditelnost jsme si zavedli označení φ. Obrázek 4.2 ukazuje závislost buněčné produkce (silná čára) a buněčné konzumace (slabá čára) na viditelnosti okolní látky. Obrázek je vztažen pouze k jedné látce. Bod označený jako φosc nazveme rovnovážný bod buňky.
4.2.1
Rovnovážný bod
Pojďme zkoumat důsledky existence rovnovážného bodu v grafu buněčné produkce a konzumace na chování buněk. Dále předpokládáme, že máme v prostředí jen jednu látku a všechny buňky jsou v sezóně na tuto látku. Jedna buňka Pokud buňka vidí φosc látky, pak vyprodukuje tolik látky, kolik jí skonzumuje. Zvýší-li se poté hladina látky v okolí buňky, pak se i zvýší viditelnost dané látky pro buňku a ta skonzumuje více látky než vyprodukuje. Zvenku to pak vypadá, jako kdyby buňka ‘snižovala’ hladinu dané látky. Při snížení hladiny látky ji naopak buňka ‘zvyšuje’. Pokud má buňka určitou ‘setrvačnost’ v produkci látky (viz 4.3), pak se může stát, že hladina látky v prostředí neustále kmitá, osciluje, kolem bodu určeném rovnovážným bodem buňky a jejím počtem receptorů1 . 1
l = φosc /(aff r)
30
Jestliže je buňka v rovnovážném stavu a zvyšuje si počet svých receptorů, pak se pro ni zvyšuje i viditelnost okolní látky. Následkem toho dojde opět ke snížení hladiny látky v prostředí. Buňka se může navíc někdy rozdělit. Po rozdělení vzniknou dvě buňky, které mají ovšem poloviční počty receptorů, a tudíž vidí v okolí méně látky, než viděla buňka původní. Pokud rozdělením receptorů klesne viditelnost pod rovnovážný bod, pak nové buňky zvýší hladinu látky v prostředí. Pokud viditelnost neklesne pod rovnovážný bod, pak buňky hladinu dále snižují. Přidávání receptorů závisí na volbě parametrů pro jejich přidávání. Je-li receptorový práh vyšší než rovnovážný bod, pak buňka po dosažení rovnovážného bodu v tomto bodě zůstane. Je-li práh nižší, buňka si stále zvyšuje počet svých receptorů a posléze se dělí. Situace se pak opakuje i s více buňkami. Úplně stejně by se chovalo i více buněk, pokud by ovšem všechny měly stejné počty receptorů. Více buněk znamená rychlejší změny v prostředí – hladina látky se ustálí dříve, nebo kmitá kolem rovnovážného bodu s kratší periodou. Dvě buňky Dvě buňky se stejným počtem receptorů je vlastně případ popsaný v předchozím odstavci. Ovšem dvě buňky s nestejným počtem receptorů, to je situace dosud nepopsaná. I dvě buňky s různými počty receptorů mohou udržovat stálou hladinu látky v prostředí. Viditelnost jedné buňky je pod rovnovážným bodem a viditelnost druhé buňky je nad rovnovážným bodem. Buňka, která má méně receptorů, vidí méně látky, a proto vyprodukuje více, než skonzumuje. Druhá buňka vidí více látky, a proto skonzumuje více, než vyprodukuje. Dohromady ovšem buňky vyprodukují tolik, co skonzumují. Zvyšování a snižování látky v prostředí má za následek úplně stejné chování buněk, jak bylo popsáno v odstavci o jedné buňce. Zajímavější je to s přidáváním receptorů. Pokud bude receptorový práh shodný s rovnovážným bodem, pak si receptory přidává pouze buňka s více receptory. Obě buňky se vzdalují od rovnovážného bodu, každá na opačnou stranu, až do doby, kdy se buňka s více receptory rozdělí. Buňka s menším počtem receptorů vlastně ‘nutí’ buňku s vyšším počtem receptorů, aby se rozdělila. Pokud dvě nové buňky mají každá méně receptorů než buňka, která se nerozdělila, pak se situace opakuje. Postupným zvyšováním počtu buněk se ovšem vyrovnávají rozdíly v počtech jejich receptorů. Podobné chování buněk lze předpovědět i pro případy, kdy je receptorový práh o něco menší nebo naopak větší než rovnovážný bod. 31
y
φ
osc
φ
max 1
φ
max 2
Obrázek 4.3: Graf funkcí produkce a konzumace
4.2.2
Produkce a konzumace jako funkce viditelnosti
Zavedení buněčné konzumace vychází z představy, že buňka může svými receptory ‘pochytat’ molekuly z okolí. Buňka tedy skonzumuje určitou část z toho, co vidí. Tato část bude určena parametrem hunger, který bude společný pro všechny buňky a pro konzumaci všech látek2 . Konzumaci jedné látky jednou buňkou označíme µ a bude platit: µ(φ) = hunger φ Produkce látky buňkou může záviset na tom, co buňka vidí, ale zároveň tento vztah nebude asi lineární. Nároky na výrobu látky mohou růst rychleji. Buňka, která vidí dvakrát více látky než jiná buňka, vyprodukuje sice více látky než buňka druhá, ale rozhodně méně než dvojnásobek produkce druhé buňky. Pro výrobu látky tedy volíme raději logaritmickou funkci a označíme ji λ: λ(φ) = pi
ln(1 + φ conv) ln(1 + conv)
Parametr conv má vliv na konvexitu výsledné křivky, pro hodnoty blízké nule je graf podobný přímce, pro větší hodnoty je graf více zakřiven. Parametr pi udává velikost produkce a je obecně pro každou sezónu a produkci každé látky v dané sezóně jiný. Jako tyto parametry můžeme použít právě hodnoty odvozené ze zygotického grafu. Funkce λ nabývá hodnot z intevalu h0, pii, tedy aby λ(φ) ≤ 1, pak pi ∈ (0, 1i. Na obrázku 4.3 jsou zobrazeny grafy funkce produkce (silná čára), funkce konzumace (slabá čára) a rovnovážný bod φosc . Body φmax1 a φmax2 ukazují 2
jedná se o další zjednodušení
32
maximální viditelnost látky pro buňky s určitým počtem receptorů. Buňky s větším počtem receptorů mohou vidět více látky (φmax2 ) než buňky s menším počtem receptorů (φmax1 ).
4.3
Setrvačnost produkce
U živých buněk můžeme pozorovat jistou setrvačnost v produkci látek. Změní-li se okolní prostředí, buňka ještě nějakou dobu produkuje ‘staré’ látky, jakoby se nic nezměnilo. Je to dáno tím, že buňce nějaký čas trvá, než si ‘uvědomí’ novou situaci a než se její vnitřní změny projeví navenek3 . Setrvačnost lze modelovat dvojím způsobem. Můžeme modelovat setrvačnost produkce tak, že zohledníme minulou produkci nějakou váhovou funkcí. ˜ vypadá takto: Formálně pak nová funkce λ ˜ λ(φ(t)) =
Z
∞
−∞
λ(φ(x))w(t, x)dx
Druhá možnost, jak namodelovat setrvačnost, je modelovat postupné kumulování informace: ¯ λ(φ(t)) =λ
Z
∞ −∞
φ(x)w(t, x)dx
Pro váhovou funkci by mělo platit: w(t, x) = 0 pro t < x Z
∞
−∞
w(t, x)dx = 1 ∀t
Váhová funkce w může tedy vypadat takto: w(t, x) =
(
−at−x ln a . . . t ≥ x 0 ... t < x
a ∈ h0, 1i
Dá se dokázat, že pokud je produkční funkce λ lineární a prochází počát˜ = λ, ¯ tzn. že produkce zohledněná setrvačností je v obou případech kem, pak λ stejná. Zbývá ukázat, jak počítat setrvačnost v diskrétních krocích počítačové ˜ a navrhneme simulace. Zvolíme si setrvačnost produkční (první případ – λ) ji počítat takto: 3
Buňka produkuje dvoufázově: nejprve se z molekuly DNA uložené v jádru vytvoří molekuly RNA, které se přenesou do cytoplazmy. Poté dochází za pomoci ribozómů a podle informace nesené molekulami RNA k výrobě molekul bílkovin. Může docházet ještě k dalším úpravám vyrobených molekul.
33
˜ ˜ λ(φ(t + 1)) = aλ(φ(t)) + (1 − a)λ(φ(t)) a ∈ h0, 1i Po n-té iteraci rozepsání předchozího vzorce vznikne následují výraz: ˜ (n) (φ(t)) = an λ ˜ (n−1) (φ(t − n)) + (1 − a) λ
n−1 X
ai λ(φ(t − i))
i=0
což lze považovat za analogii produkční setrvačnosti ve spojitém případě.
4.4
Látková homeostáze
Stálost hladin látek v prostředí nazveme látková homeostáze. V oddíle zabývajícím se produkcí a konzumací látek buňkami (4.2) jsme se už látkovou homeostází zabývali. Tehdy jsme ovšem předpokládali, že všechny buňky jsou pouze v jedné sezóně a ovlivňují tedy pouze samy sebe. Tento vztah by se dal označit jako vztah A → A. Nyní se podíváme na případ, kdy látek je v prostředí více a také buňky jsou v různých sezónách. Buňky jednostranně závislé (A → B) Máme buňky, které mají receptory jen na látku A (A-buňky) a buňky, které mají receptory jen na látku B (B-buňky). A-buňky vyrábějí látku B, B-buňky nevyrábějí nic. Do prostředí proudí stálé množství látky A. Předpokládejme, že hladina látky A se ustálí, tzn. že A-buňky se přestaly dělit a přidávají do prostředí konstantní množství látky B. Protože B-buňky při vyšší hladině více konzumují a při nižší hladině méně konzumují, je zaručeno, že se hladina látky B také ustálí. Hodnota hladiny látky B bude záviset na parametrech produkce a konzumace, na počtu a rozložení receptorů A-buněk a také na hladině látky A. Obrázek 4.4 je možné použít pro systém složený z jedné A-buňky a jedné B-buňky. Značky A1 , A2 ukazují dvě různé pozice A-buňky (A1 pro nižší hladinu látky A, A2 pro vyšší hladinu látky A), značky B1 , B2 ukazují příslušné pozice B-buňky. Větší produkce dodávané látky A znamená i větší produkci látky B. Změna hladiny látky A se projeví i jako změna hladiny látky B. Obecné vztahy mezi buňkami Pro látkovou homeostázi musí obecně platit, že celkové množství skonzumované látky je rovno celkovému množství vyprodukované látky4 . 4
Pokud máme uzavřený systém – nic neodteče ven a nic nepřiteče dovnitř.
34
y
A1
B1
B2
A2
φ
Obrázek 4.4: Látková homeostáze Každá buňka může mít víc typů receptorů, tedu může konzumovat víc typů látek najednou. Stejně tak mohou buňky v různých sezónách produkovat stejnou látku. Je vidět, že jsme dosud uvažovali pouze ty nejjednodušší případy. Složitější případy už není tak snadné teoreticky analyzovat, jako vhodnější způsob zkoumání se doporučuje dané případy simulovat pomocí počítače.
4.5
Buněčná homeostáze
Buněčnou homeostázi budeme považovat za stav, kdy se počty buněk v sezónách příliš nemění. Stavem, který nelze nazvat buněčnou homeostází, je např. neustálé zvyšování počtu buněk dělením. Zatím jsme do modelu nevložili žádný způsob, jak počet buněk snižovat, nemáme v něm žádnou formu buněčné smrti. Jeden ze způsobů buněčné smrti představují speciální žravé buňky, tzv. makrofágy.
4.5.1
Makrofág
Makrofágy jsou buňky, které ‘prolézají’ prostředím, ‘kontrolují’ ostatní buňky a podle jistých pravidel můžou buňky i zabíjet. Protože tato práce není zaměřena na podrobné modelování makrofágů, vložíme makrofágy do našeho modelu zvenku, pouze jako výsledky chování makrofágů prozkoumané v jiných pracích ([3], [6]). Budeme simulovat odolnost ‘normálních’ buněk vůči makrofágům. Buňky méně odolné budou při setkání s makrofágem zničeny, buňky více odolné se
35
stanou ještě odolnějšími. Odolnost buněk se bude snižovat buněčným dělením. Formálně si odolnost vůči makrofágům označíme rmf . Bude nám to připomínat, že ve vnitřní simulaci je odolnost buňky závislá na počtu speciálních receptorů5 . Budeme požadovat, aby rmf ∈ h0, 1i. Dále si zavedeme práh odolnosti mfthres. Pokud bude odolnost buňky rmf menší než tento práh, buňka bude při setkání s makrofágem zničena. Pokud buňka nebude makrofágem zničena, setkání naopak posílí její odolnost. Každým setkáním se zvýší odolnost rmf o konstantní hodnotu mfdrec. Aby se nám odolnost příliš ‘nekumulovala’, zastavíme toto její zvyšování po dosažení určité hranice maxrmf 6 . Rozdělením buňky se sníží odolnost obou nových buněk na jednu polovinu odolnosti buňky původní. Setkání makrofága s buňkou budeme simulovat náhodně pomocí klasické urny s různobarevnými kuličkami. Vytáhneme-li z urny kuličku bílou, makrofág potká jednu z buněk, vytáhneme-li kuličku jiné barvy, makrofág žádnou buňku nepotká. Poměr počtu bílých a ostatních buněk v urně bude určovat četnost potkávání makrofága s buňkou. Pokud je buněk málo, makrofágy stačí zvyšovat jejich odolnost. Počet buněk je buď stálý nebo se zvyšuje. Pokud je buněk tolik, že makrofágy nestačí zvyšovat jejich odolnost, pak další generace buněk7 už nebude vůči makrofágům odolná. Tyto buňky budou postupně zničeny. Bude záležet na tom, zda v systému zůstaly ‘staré’ buňky. Zničením nové generace buněk se totiž zvýší pravděpodobnost setkání makrofága a starých buněk. Pokud makrofágy stačí zvýšit odolnost těchto starých buněk, je šance, že systém se bude dále rozvíjet. A právě systém, ve kterém se buňky odstraněné makrofágy stačí dělením nahrazovat buňkami novými a počet těchto nových buněk nepřevyšuje počet buněk odstraněných, je systémem s buněčnou homeostází.
5
tzv. radarových receptorů např. maxrmf = 2 ∗ mfthres. Je třeba zaručit konzistenci parametrů, omezili jsme si totiž hodnotu rmf shora, a proto mfthres ≤ 1/2. 7 dceřinné buňky 6
36
Kapitola 5 Cykly v zygotickém grafu Tvar zygotického grafu určuje chování buněk. V této kapitole se soustředíme na zygotické grafy obsahující cykly. Cyklus v zygotickém grafu obecně znamená uzavřenost systému buněk, buňky jsou schopné vzájemně se ‘vyživovat’ a nemusí být závislé na ničem jiném. Ukážeme, že cyklus v zygotickém grafu předepisuje buňkám zvláštní druh chování a může být důležitým prvkem při regulaci látkové výměny buněčného systému. Předvedeme několik zvláštních případů cyklů v zygotickém grafu. Jedna kapitola ale nestačí popsat vše, co by se dalo o cyklech zkoumat. Je dobré si uvědomit, že všechny následující poměrně složité úvahy se provádí v modelu, který obsahuje jednoduché principy. Budeme se také odvolávat na provedené simulace, které lze najít na přiložené disketě (kódy zg...).
5.1
Prostý cyklus
Cyklus, který v zygotickém grafu obsahuje jako vrcholy látky z různých VAXů, nazveme prostý cyklus. Prostý cyklus tedy neobsahuje dvě látky, které by spolu tvořily VAX. U cyklů obecně budeme uvádět jejich délku, tj. počet látek, které obsahují. Budeme říkat, že cyklus je na n-látkách, jestliže délka cyklu je n. Prostý cyklus neobsahuje nikdy ani jeden celý VAX, a proto místo látky budeme říkat ‘AX’. Pokud řekneme, že cyklus je na n-AXech, pak to bude znamenat, že se jedná o cyklus prostý a jeho délka je n. Nejjednodušším prostým cyklem je smyčka na jedné látce. Buňky v sezóně na tuto látku produkují tu samou látku. Nás budou zajímat delší cykly, smyčku na jednom AXu jsme zkoumali v kapitole 4 – Homeostáze. 37
Specializované buňky (zg11a) Pokud jsou buňky specializované, zůstavají v patřičných sezónách i v době, kdy je hladina jejich sezónních látek nízká. Buňky tedy ‘nepřeskakují’ mezi sezónami. Zvýšení hladiny jedné látky cyklu má za následek zvýšení hladin všech látek cyklu. Čím více totiž buňky vidí svoji sezónní látku, tím více produkují další látku v cyklu. Zajišťují-li použité parametry látkovou homeostázi, pak se hladiny začnou postupně opět snižovat – jedny buňky skonzumují více, než druhé stačí vyprodukovat. Hladiny látek tak mohou chvíli oscilovat. Přesto, je-li zajištěna možnost látkové homeostáze, se hladiny ustálí. Doba, za kterou se tak stane, závisí na délce cyklu. Čím delší cyklus, tím delší doba pro ustálení. Perioda oscilace závisí na počtu buněk. Čím více je buněk, tím kratší je perioda. Nespecializované buňky (zg11b) Nespecializované buňky jsou takové buňky, které mají receptory na všechny látky cyklu. Buňky tedy mohou tentokrát mezi sezónami ‘přeskakovat’ podle toho, kolik vidí okolních látek. Mají-li všechny buňky stejné počty všech receptorů, pak ‘přeskakují’ mezi sezónami stejně. Všechny buňky tedy v určitém okamžiku produkují stejnou látku. Zároveň platí, že všechny buňky v každém okamžiku konzumují všechny látky v prostředí – mají totiž receptory na všechny látky. Protože zygotický graf je cyklus, buňky se ‘přesouvají’ po vrcholech (sezónách) a ve směru tohoto cyklu. Buňky se přesunou do další sezóny až v okamžiku, kdy si vyrobily dostatečné množství další látky. Pokud by buňky byly na počátku naprosto stejné a pokud by se dělily na dvě naprosto identické dceřinné buňky, pak by buňky neustále takto ‘obíhaly’ po sezónách cyklu. Poruší-li se alespoň jedna z předcházejích podmínek, proces se může dramaticky změnit. Jestliže jedna buňka bude mít trochu více receptorů na látku A, než mají ostatní buňky, pak se tato buňka ‘snadněji’ přepne do sezóny právě na látku A. V sezóně A tedy setrvá o něco déle než ostatní buňky, a proto si vyrobí o něco více receptorů opět na látku A. Mělo by být vidět, že nepatrná odlišnost na počátku může vést po několika děleních k úplné specializaci buňky. Jsou-li buňky receptorově odlišné, ‘nepřeskakují’ už mezi sezónami společně, ale jednotlivě. Nakonec se může stát, že se buňky přestanou přepínat mezi sezónami úplně. V každé sezóně cyklu musí být ovšem v té době alespoň jedna 38
buňka. Kdyby existovala ‘prázdná’ sezóna, cyklus produkce by byl porušen kvůli jedné chybějící látce. Z toho ovšem plyne, že doba, za kterou se buňky specializují, je kratší, pokud má cyklus menší délku. Pokud jsou buňky specializované, chovají se dále tak, jak jsme to popsali v předcházejícím oddíle (zg11a).
5.2
Autoregulační cyklus (zg12b)
Autoregulačním cyklem nazveme takový cyklus v zygotickém grafu, který obsahuje alespoň dvě VAXově komplementární látky. Obecně lze říci, že všechno, co jsme řekli o prostých cyklech, platí i pro cykly autoregulační ovšem s určitými dovětky. Látky VAXově komplementární se totiž vzájemně inhibují, což se může projevit tak, že hladiny těchto látek jsou nižší než hladiny ostatních látek1 . Poměrně důležitá je vzdálenost VAXově komplementárních látek v cyklu. Jsou-li tyto látky v cyklu blízko za sebou, tlumí se výkyvy hladin všech látek cyklu rychleji než např. u prostého cyklu2 . Jsou-li naopak VAXově komplementární látky na protějších stranách cyklu, výkyvy látek se tlumí pomaleji než u prostého cyklu. Navíc vnější zvýšení hladiny jedné z těchto látek vyvolá snížení hladiny druhé látky. Vzniknou tedy dvě vlny – vlna zvyšování produkce a hladin látek a vlna snižování produkce a hladin. Dokonce se pak může stát i to, že hladina látky, kterou jsme zvnějšku zvýšili, se po čase sníží pod původní hodnotu.
5.3
Loukoťový cyklus (zg12c)
Loukoťový cyklus je speciálním případem cyklu autoregulačního. V loukoťovém cyklu ovšem nexistuje látka, jejíž VAXový doplněk by nebyl obsažen v cyklu. Navíc platí, že VAXově komplementární látky jsou na protějších stranách cyklu – jsou od sebe maximálně vzdáleny. Obrázek 5.1 znázorňuje schematicky loukoťový cyklus na osmi látkách. Experimentálně byla vypozorována nová vlastnost loukoťového cyklu. Jsou-li buňky specializované a je-li zajištěna buněčná homeostáze, pak oscilace hladin látek se v závislosti na parametrech buněčné produkce nemusí tlumit. Loukoťový cyklus představuje možnost zajištění neustálých změn hladin látek. 1 2
jsou-li parametry produkce stejné pro všechny látky prostý cyklus a specializované buňky
39
V
A
Obrázek 5.1: Představa loukoťového cyklu Parametry produkce (parametry ze zygotického grafu) přitom určují, zda se oscilace bude tlumit, anebo nikoliv. Experimentálně lze dokonce ověřit, že pro parametry produkce existuje určitá mez taková, že pro parametry menší, než je tato mez, se hladiny ustálí a pro parametry větší se nikdy neustálí. Navíc velikosti parametrů produkce určují rozdíly maximálních a minimálních hladin látek v průběhu cyklu.
5.4
Inhibice cyklů
Inhibicí cyklů budeme rozumět, že pracují-li buňky v sezónách jednoho cyklu, je potlačena práce buněk druhého cyklu. Zvnějšku lze pozorovat, že hladiny látek jednoho cyklu jsou tím vyšší, čím nižší jsou hladiny látek druhého cyklu. Následují popisy dvou případů, které se liší vnitřně, ale dávají podobné výsledky pro vnějšího pozorovatele. VAXová inhibice (zg13a) Zygotický graf obsahuje cykly, které se ‘dotýkají’ v jednom VAXu tak, jak je to znázorněno na obrázku 5.2. Buňky jsou specializované a parametry nastaveny tak, aby pro každý cyklus samostatně byla zajištěna látková homeostáze. Pokud pracují pouze buňky jednoho, nebo druhého cyklu, situace je stejná, jako kdyby zygotický graf obsahoval pouze jeden cyklus. Jestliže však pracují buňky prvního cyklu a do prostředí je dodána některá z látek druhého cyklu, hladiny látek prvního cyklu se sníží a buňky druhého cyklu začínají pracovat. Může se stát, že vnější dávka látky druhého cyklu je tak vysoká, že buňky prvního cyklu přestanou úplně produkovat a buňky 40
V A
Obrázek 5.2: Zygotický graf pro VAXovou inhibici
V A
Obrázek 5.3: Zygotický graf pro buněčnou inhibici druhého cyklu začnou udržovat látkovou homeostázi druhého cyklu. Dostatečně velká dávka látky z druhého cyklu může tedy ‘vypnout’ buňky prvního cyklu a ‘zapnout’ buňky druhého cyklu. Buněčná inhibice (zg13b) Zygotický graf obsahuje cykly, které nemají ani společný vrchol (látku) ani společný VAX. Jedná se o naprosto nezávislé cykly, příklad grafu je na obrázku 5.3. Buňky tentokrát nejsou specializované, tedy mají receptory na všechny látky z obou cyklů. Budeme-li navíc předpokládat, že každá buňka má stejný počet receptorů na každou látku, pak všechny buňky v každém okamžiku budou ve stejné sezóně. Snadno se dá zjistit, že buňky společně ‘obíhají’ pouze v sezónách jednoho cyklu. V okamžiku, kdy se dostatečně zvýší hladina některé z látek druhého cyklu, se všechny buňky přepnou do sezóny na tuto látku a začnou ‘obíhat’ v sezónách druhého cyklu. Pozorovatel, který sleduje pouze hladiny látek, nemusí tedy vůbec zjistit 41
rozdíly mezi VAXovou a buněčnou inhibicí.
5.5
Diferenciace buněk (zg21a)
Zygotický graf obsahuje jeden prostý cyklus na dvou AXech. V nehomogenním prostředí je na počátku jedna buňka, která má receptory na obě látky cyklu. V prostředí je alespoň jedna z látek cyklu. Buňka se přepne do sezóny na látku, kterou lépe vidí. Začne si vyrábět receptory na tuto látku a případně se rozdělí. Zároveň ale také produkuje do prostředí druhou látku cyklu. V okamžiku, kdy vidí lépe druhou látku, se opět přepne do druhé sezóny. Časem z jedné buňky vznikne více buněk, které vyplňují jakousi kouli. Prostředí uvnitř této koule je jiné, než prostředí na jejím kraji. Látky se šíří v prostředí difusí. Protože různé buňky jsou v různém prostředí, začnou se zvyšovat rozdíly mezi jejich počty receptorů. Některé buňky se mohou úplně specializovat na konkrétní látku. Experimentálně lze ověřit, že buňky uvnitř ‘koule’ mají receptory na obě látky, zatímco buňky blíže ke kraji mají receptory pouze na jednu látku. Dokonce tato ‘koule’ je složena ze ‘slupek’ stejných buněk, střídají se ‘slupky’ buněk specializovanějších na jednu a druhou látku.
42
Kapitola 6 Závěr Chtěli jsme ukázat, že jednoduché vnitřní principy chování buňky mohou mít za následek poměrně složité pozorovatelné výsledky. Snahou však nebylo vytvořit model, který by vystihoval všechny dosud pozorovaná chování buněk. Model, který jsme zde předvedli, dává tedy pouze hrubou představu o tom, jak by živé buňky mohly pracovat. Pro jemnější představu by bylo třeba model více rozšířit. Nepodařilo se například nasimulovat vznik a léčbu alergií, tak jak to bylo učiněno v práci [1]. Důvodem byly odlišnosti v našem modelu buňky od modelu popsaném v [1]. Rozšíření našeho modelu o další parametry by dovolilo simulovat jak alergické chování buněk, tak všechny situace popsané v této práci. Kvůli poměrné jednoduchosti stávajícího modelu však bylo v této práci od zkoumání alergií upuštěno. Přes jednoduchost použitého modelu se podařilo ukázat několik případů složitého chování buněk. Navíc při zkoumání uvedených případů vycházely najevo další nové skutečnosti, které nebyly do práce zařazeny. Při psaní programu, kdy se zkoušely různé varianty buněčných zákonů, se ukázalo, že obecný vnitřní model buňky dává v mnohých případech stejné výsledky bez ohledu na konkrétní použité zákony (např. lineární produkce místo uvedené logaritmické). Výsledky uvedené v této práci mohou mít tedy obecnější význam. Zhotovený program umožňuje simulovat různé situace, dokonce i situace o kterých jsme se v této práci nezmiňovali. Program byl vyvíjen převážně jako program představový – měl by sloužit pro vytváření představ o chování buněk. Vedle faktického vytváření modelu buňky (=co se zde dělalo) měla tato práce zároveň ukázat metodický postup pro toto budování (=jak se to dělalo). Snažili jsme se udělat empatii do buňky, a pokud to nebylo možné, alespoň jsme zdůraznili fakt, že provádíme neempatické modelování. 43
Během dokončování této práce se ukázalo, že program může být chápán jako virtuální laboratoř. V této laboratoři si každý návštěvník může jednak prohlédnout ukázkové a předem připravené experimenty, jednak se může nějakých experimentů osobně zúčastnit. V laboratoři se lze tak naučit něčemu, co se nelze naučit pouhým čtením sebelepšího textu. Návštěvník odchází z laboratoře obohacen o zkušenosti, které by mimo ni jen ztěží získával.
44
Příloha A Seznam označení
I X B N
Pomůcka indexes vaXes boxes neighbours
Popis množina množina množina množina
indexů uvažovaných chemických látek všech VAXů všech boxů všech sousedních dvojic boxů
Tabulka A.1: Množiny
li l ri r s rmf
Pomůcka ligand ligands receptors receptors season macrophag
Popis hladina chemické látky s indexem i hladiny všech látek počet receptorů na látku i ∈ I počty všech typů receptorů jedné buňky buněčná sezóna (vnitřní stav buňky) odolnost buňky vůči makrofágům Tabulka A.2: Veličiny
F α φ ρ µ λ
Dom(F) I×I h0, 1i3 h0, 1i h0, 1i h0, 1i
Rng(F) h0, 1i h0, 1i h0, 1i h0, 1i h0, 1i
Popis VAXová afinita funkce viditelnosti přidávání receptorů konzumace látky buňkou produkce látky buňkou Tabulka A.3: Funkce
45
thres drec hunger conv maxrmf mfthres mfdrec
Obor hodnot h0, D 1i E 1 0, 1−thres h0, 1i h0, ∞i h0, D 1i 0, maxrmf 2 h0, 1i
Popis práh pro přidávání receptorů rychlost přidávání receptorů část skonzumovaná buňkou konvexita produkce buňky maximální odolnost buňky vůči makrofágům práh odolnosti buněk vůči makrofágům zvýšení odolnosti buňky Tabulka A.4: Parametry
46
Příloha B Jak ovládat applet Po natažení potřebných dat do vašeho prohlížeče by se měl zaplnit pravý horní rám, změnit obsah pravého dolního rámu a měla by se navíc objevit tři nová okna s nápisy: 1. Awale 2. Control Panel 3. Explorer Každý applet má v sobě připravenou určitou scénu, resp. několik scén, které si můžete spouštět, prohlížet a případně i ovlivňovat. Seznam scén s aktuálně vybranou scénou je uveden v pravé horní části prohlížeče (tato část byla označena jako Místo pro applet). Je možné, že seznam scén není vidět – je schován pod dolním okrajem – stačí posunout patřičnou rolovací lištou. Vedle seznamu se nachází tlačítko Reload, kterým je možno všechny scény najednou restartovat.
B.1
První kroky
Nejprve ukážeme hlavní části programu. Asi nejzajímavější je na první pohled okno Explorer. Zde se zobrazují buňky a aktuální množství jednotlivých látek v prostředí. Každá látka má svojí barvu a tato barva odlišuje jednu látku od ostatních v celém programu (nejen v Exploreru). Buňky jsou zobrazeny buď jako kroužky celé vyplněné jednou barvou (barva určuje oblíbenou látku1 ), nebo jako někdy vícebarevné ‘dortíky’, kde 1
sezónní látka
47
každá barva určuje množství receptorů na jí odpovídající látku. Žlutá barva určuje receptory na žlutou látku, zelená na zelenou apod. V některých scénách je pro každou buňku zobrazena i její odolnost proti makrofágům. Okno Explorer je jediné okno, u kterého má smysl manuálně měnit velikost. Místo označené dříve jako Místo pro applet obsahuje kromě seznamu scén a tlačítka Reload hlavně panel, ve kterém se průběžně zaznamenávají množství jednotlivých látek v prostředí. Aktuálně vybranou scénu můžete spustit a zastavit pomocí tlačítek Play a Stop v okně Control Panel. V tom samém okně pak můžete sledovat počítačku kroků. Nejméně nápadné je okno Awale. Toto okno ukazuje jednotlivé počty buněk, které si oblíbily určitou barvu. Takže např. číslo 3 v poli označeném světlou žlutou znamená, že v celém sledovaném prostředí jsou celkem tři buňky, které si oblíbily světležlutou barvu. Jednotlivá okna můžete zavřít pomocí jejich systémového menu. Znovu je můžete otevřít následujícím způsobem: 1. Přejeďte myší na rám Místo pro applet. 2. Stiskněte pravé tlačítko myši (případně CONTROL + tlačítko myši) a nepouštějte. Objeví se nová nabídka. 3. Přejeďte myší na položku s názvem okna, které chcete otevřít (stále přitom musíte držet tlačítko myši). 4. Pusťte tlačítko myši. Pokud se neobjeví požadované okno, postup opakujte.
B.2
Co program umí
Program simuluje život buněk podle pevně daných pravidel. Počáteční stav se načte ze speciálního souboru a pak se vše počítá. • Látky: – jsou odlišeny barvami. – Každé látce odpovídá určitá barva, která je stejná pro všechna okna programu. • Prostředí může být: 48
Obrázek B.1: Awale – homogenní – hladina každé látky je stejná ve všech místech prostředí – nehomogenní – prostředí je rozděleno do tzv. boxů. Box už představuje homogenní prostředí. Boxy jsou uspořádány v pravidelné (2D) čtvercové mřížce. Mezi sousedními boxy dochází k výměně látek (difusí) a k přesouvání buněk (simulovaným tlakem). • Sledovat lze: – časový průběh hladin zvolených látek – aktuální hladiny zvolených látek ve zvolených místech – počty všech buněk, které mají oblíbenou určitou látku – u jednotlivých buněk ve zvolených místech ∗ ∗ ∗ ∗
počty receptorů oblíbenou látku odolnost proti makrofágům smrt buňky makrofágem
• Vnější krmení znamená dodání látek zvenku: – manuální – uživatel vybere látku, určí množství látky, vybere místo, kam dodat látku, a ve zvoleném okamžiku provede injekci. – automatické – mohou být naplánované pravidelné i nepravidelné injekce v inicializačním souboru.
B.3
Awale
Awale je stará africká desková hra, jejíž hrací pole se nápadně podobá našemu oknu se stejným názvem. V africké hře se přesouvají kamínky (bobule
49
Obrázek B.2: Control Panel nebo fazole) mezi jednotlivými políčky a důležitou roli přitom hrají počty kamínků v každém políčku. V našem Awale každé políčko označené navíc určitou barvou vypovídá o počtu buněk, které si oblíbily látku dané barvy. Pokud je scéna spuštěna, může docházet (stejně jako v africké hře) k tomu, že buňky ‘skáčou’ mezi políčky. Políčka jsou uspořádaná do dvojic. Dvojici tvoří vždy horní a dolní políčko. Každá taková dvojice tvoří VAX (dvě navzájem molekulově komplementární látky, styl ‘zámek a klíč’). Jedno z políček má jinou barvu – to znamená, že toto políčko je vybrané. Vybrané políčko označuje vybranou látku (barvu). Pomocí myši můžete vybrat jiné políčko tak, že prostě kliknete levým (standardním) tlačítkem na pozici požadovaného políčka. Nově vybrané políčko se poté barevně odliší od ostatních. Vybraná látka slouží pro následující účely: • Zapnout/Vypnout zobrazení hladiny příslušné látky v prostředí. • Dodat určité množství příslušné látky do prostředí (injekce). Zobrazení vybrané látky lze ovládat tak, že myší najedete na okno Awale a podržíte pravé tlačítko (příp. CONTROL + tlačítko) myši. Zobrazí se nabídka s jednou položkou: Hidden. Podle puntíku vedle této položky lze zjistit aktuální stav – je-li puntík zamáčknutý, pak zobrazování je vypnuté a naopak. Výběrem této položky se stav vymění (zapnuto na vypnuto a naopak). Jak dodat určité množství látky do prostředí se dozvíte v oddíle Contol Panel. Zavřením okna Awale lze urychlit simulaci! Otevření okna se provádí pomocí panelu v rámu Místo pro applet. Manuální zvětšení rozměrů okna nemá praktický význam.
B.4
Control Panel
Toto je hlavní ovládací panel celého programu. Skládá se ze tří částí: 50
• Ovládání běhu simulace • Počítačka kroků • Injekční panel Čtyři tlačítka v levé části okna slouží k řízení běhu simulace. Tlačítkem Stop lze zastavit simulaci. Tlačítkem Step lze vykonat jeden krok simulace. Tlačítkem Loop lze spustit simulaci v nekonečné smyčce. Tlačítkem Slide lze vykonat pevně stanovený počet kroků simulace. Uživatel nemá zatím možnost měnit počet těchto kroků. Počítačka kroků se skládá z velkého displeje a trojice tlačítek vpravo vedle něj. Displej ukazuje počet odsimulovaných kroků pro každou scénu zvlášť. Po výběru nové scény se displej automaticky přenastaví, po restartu scény se automaticky vynuluje. Tlačítka vedle displeje nemají zatím žádnou funkci, jsou zde připravena pro budoucí verze programu. Injekční panel slouží pro dodání určité látky do scény. Pomocí minitlačítek malého displeje můžete nastavit množství dodávané látky – toto množství se pohybuje od 0.0 do 1.0 – každé z dvojice tlačítek odpovídá jedné pozici desetinného rozvoje. Horní tlačítka zvyšují hodnotu na příslušné pozici, dolní ji naopak snižují. Před injekcí je nutné zvolit určitou látku (v okně Awale) a případně i zvolit místo ve scéně (v okně Explorer). Injekce se provádí pomocí tlačítka s výmluvným symbolem umístěným pod malým displejem. Zavřením okna Control Panel se simulace prakticky neurychlí. Otevření okna se provádí pomocí panelu v rámu Místo pro applet. Manuální zvětšení rozměrů okna nemá praktický význam.
B.5
Explorer
Na obrázku B.3 je ukázka, jak vypadá okno Explorer v jednoduché formě. Takové okno se objeví, pokud aktuální scéna obsahuje pouze jeden homogenní box (prostředí bez difuse). V takovém případě je okno rozděleno pouze na dvě části: horní a dolní. V horní části jsou zobrazeny buňky v prostředí. Existuje několik typů zobrazení, která lze přepínat pomocí speciální nabídky (bude popsáno později): 1. Receptory, oblíbená látka 51
Obrázek B.3: Explorer 2. Oblíbená látka, odolnost vůči makrofágům 3. Receptory, oblíbená látka, odolnost vůči makrofágům 4. Pouze oblíbená látka 5. Žádné buňky ad 1) Každá buňka je zobrazena jako koláčový graf. Jednotlivé výseky grafu určité barvy odpovídají množství receptorů, které má buňka pro látku dané barvy. Prázdný výsek (barva pozadí) ukazuje volné místo pro nové receptory. Barva okraje koláčového grafu určuje oblíbenou látku dané buňky. Přeškrtnutý koláč znamená, že buňka byla zničena makrofágem. ad 2) Každá buňka je zobrazena jako zčásti vyplněný čtverec, čím více je čtverec zaplněn, tím více je buňka odolná vůči makrofágům. Neschopnost buňky bránit se makrofágům je naznačena křížkem uvnitř prázdného čtverečku. Destrukce buňky makrofágem je označena vyplněním čtverečku zvláštní barvou. V ostatní případech určuje barva čtverečku oblíbenou látku buňky. ad 3) Kombinace prvních dvou způsobů. Diagramy pro jednu buňku jsou zobrazeny pod sebou. ad 4) Každá buňka je zobrazena jako jednobarevný kruh. Barva kruhu znázorňuje oblíbenou látku dané buňky. ad 5) Buňky se vůbec nezobrazují. Použijte tuto volbu pro urychlení simulace.
52
Obrázek B.4: Explorer – složitější forma Velikost zobrazovaných buněk závisí na počtu buněk uvnitř a na šířce okna Explorer. Buňky mají takovou velikost, aby se mohly zobrazit všechny. Hladiny látek se zobrazují v dolní části okna jako vodorovné barevné čáry. Výška čáry nad spodním okrajem okna určuje množství látky v prostředí. Zobrazení každé látky lze zakázat pomocí nabídky okna Awale. Zobrazování hladin látek je urychleno tak, že se kreslí pouze hladiny těch látek, kde došlo ke změně. Může se stát, že hladiny dvou různých látek se zobrazí do stejné výšky, a tedy uživatel vidí jen tu, která je nakreslena ‘navrchu’. Při další změně této ‘vrchní’ látky se ovšem pozice té ‘spodní’ látky neobnoví. ‘Spodní’ látka tak na malý okamžik může zmizet (při změně hladiny této látky se ovšem zase objeví). Tím jsme vyčerpali popis jednodušší formy okna Explorer, nyní si ukážeme druhou, složitější formu. Ukázka je na obrázku B.4. Takto, nebo nějak podobně, vidí uživatel okno Explorer v případě, že aktuální scéna obsahuje více homogenních boxů – ve scéně se tedy počítá s difusí. Zásadní rozdíly od jednoduché formy okna jsou dva: přibyl nový panel v horní části okna a dolní část je navíc rozdělena svislými čárami. Každé pole oddělené od ostatních svislou čárou znázorňuje jeden homogenní box. Takové pole je ještě rozděleno na nám už známé části, ve kterých se zobrazují buňky nebo hladiny látek v prostředí. Kliknutím myši na určité atomární pole (horní nebo dolní!) lze vybrat určité boxy pro různé účely. Na posledním obrázku byly vybrány čtvrtý box zleva (zelený box) a pátý box zleva (modrý box). Horní výběr (zelený box) určuje jeden homogenní box, do kterého se může dodat látka zvenku pomocí injekce (okno Contol Panel). Pokud se tedy stiskne tlačítko injekce v okně Control Panel, pak se látka dodá právě do takto označeného boxu. Dolní výběr (modrý box) určuje jeden homogenní box, ve kterém sledujeme časovou závislost hladin látek, viz Panel v rámu ‘Místo pro applet’. 53
Přejděme nyní k popisu nového panelu v horní části okna. Panel se skládá ze tří částí: • Barevné vysvětlivky – vlevo nahoře • Tlačítka výběru – vpravo nahoře • Mapa scény – dole Mapa scény ukazuje uspořádání všech homogenních boxů – resp. jak spolu boxy sousedí – dále indikuje ty boxy, které jsou zobrazené v dolní části Exploreru, a navíc dva speciálně vybrané boxy – tzv. horní výběr a dolní výběr (popisovali jsme je o odstavec výše). V dolní části Exploreru se tedy nemusí zobrazovat všechny boxy scény najednou, ale jen určité vybrané boxy. Výběr těchto boxů se provádí následujícími způsoby: • Myší klikáme na zvolená políčka na mapě. • Stiskneme tlačítko myši na prvním zvoleném políčku, držíme stále tlačítko a posouváme myš na další zvolená políčka. Uvolníme tlačítko. Oba dva způsoby zadávání výběru jsou ekvivalentní. Jediné, na co je třeba dávat pozor u obou způsobů zadávání, je pořadí volených políček. Tomuto pořadí bude totiž odpovídat pořadí zobrazených boxů v dolní části Exploreru. Takto zvolená políčka jsou na mapě indikována jako stlačená. Pokud s výběrem nesouhlasíme, je možné stisknout tlačítko Clear vpravo nahoře a postup výběru opakovat. Teprve pokud stisknete tlačítko Select, odpovídající zvolené boxy se zobrazí ve spodní části Exploreru. Posledním z trojice tlačítek – Select All – lze zvolit a zobrazit všechny boxy ve scéně (pořadí takto volených boxů odpovídá pořadí boxů při tvorbě scény). Nabídku okna Explorer lze vyvolat stlačením pravého tlačítka myši (příp. CONTORL + tlačítko myši). Nabídka obsahuje tyto možnosti: • Refresh – překreslí obsah Exploreru • Cells – zapne/vypne zobrazování buněk • Grid – zapne/vypne zobrazení svislých dělicích čar • Receptors – zapne/vypne zobrazování receptorů v buňkách • Radar Receptors – zapne/vypne zobrazování odolonosti buněk vůči makrofágům, tato volba je přístupná pouze ve scénách, které dovolují simulovat chování makrofágů 54
Obrázek B.5: SpaceBox Info Dialog • Inject Box Info... – zobrazí informační dialog o boxu určeném horním výběrem • Watcher Box Info... – zobrazí informační dialog o boxu určeném dolním výběrem Zavřením okna Explorer lze výrazně urychlit simulaci! Otevření okna se provádí pomocí panelu v rámu Místo pro applet. Rozměry okna lze upravovat dle potřeby.
B.6
SpaceBox Info Dialog
Toto dialogové okno se objeví, když uživatel zvolí jednu ze dvou položek ...Box Info... nabídky okna Explorer. Okno obsahuje číselné informace o hladinách látek a buňkách v jednom boxu a v určitém čase. Uživatel může otevřít více těchto oken najednou. V horní části okna je lišta s těmito informacemi: • jméno scény • identifikační číslo boxu • čas simulace Největší část okna zaujímá tabulka, kde každý řádek odpovídá jedné látce. Látky, které mají vypnuté zobrazování (viz okno Awale), v tabulce odpovídající řádek nemají. V prvním sloupci tabulky jsou vypsány hladiny jednotlivých látek v boxu. Barevné terčíky identifikují příslušné látky. Zbytek tabulky ukazuje rozložení receptorů na buňkách. Každý sloupec odpovídá jedné buňce. Pořadí výpisů je shodné s pořadím buněk v boxu 55
Obrázek B.6: Hlavní panel Exploreru. Řádek pak odpovídá tomu, kolik má buňka receptorů na látku vyznačenou v prvním sloupci tabulky. Pokud buňka nemá receptory na danou látku, je to vyznačeno znakem ‘-’. Pozor: Na některých systémech (např. SGI/IRIX) se toto dialogové okno zavírá automaticky při zavření okna Explorer. Na jiných systémech (např. OpenWindows) se toto okno automaticky nezavírá ani při ukončení celého appletu. Okno lze ovšem zavřít manuálně pomocí tlačítka Close.
B.7
Panel v rámu ‘Místo pro applet’
Největší část vlastního appletu zabírá plocha určená pro zaznamenávání hladin látek v čase. Pod ní se nachází lišta se seznamem všech scén a jediné tlačítko Reload. Na plochu se kreslí hladiny pouze těch látek, které mají povolené zobrazování (viz okno Awale). Pokud je simulace spuštěna, obsah plochy se pohybuje zprava doleva a nové hodnoty se přitom zakreslují vpravo. Obsah plochy se vyčistí při spuštění jiné scény, než byla ta dosavadní, nebo při restartu scény. Pomocí speciálního tlačítka (resp. nabídky) v dolní liště je možné měnit aktuální scénu. Pokud dosavadní scéna byla spuštěna, automaticky se zastaví. Při změně scény se automaticky mění obsahy oken Awale, Explorer, nápověda v prohlížeči a počítačka kroků v Control Panelu. Tlačítko Reload slouží pro restartování všech scén. Všechny scény jsou načteny z inicializačního souboru. Nabídka panelu se zobrazí podržením pravého tlačítka myši (resp. CONTROL + tlačítko myši). Kurzor myši se v tu chvíli musí nacházet na hlavní ploše, nikoliv na spodní liště ! Nabídka obsahuje tyto položky: 56
• Fast – pokud je tato volba zapnutá, simulace přechází do rychlého módu: přestává se kreslit časový průběh hladin látek v prostředí a program využívá procesor mnohem efektivněji. • Awale – otevře/zavře okno Awale • Contol Panel – otevře/zavře okno Contol Panel • Explorer – otevře/zavře okno Explorer Pozor: Zapnutá volba Fast může způsobit pomalejší překreslování obsahu v ostatních oknech appletu nebo dokonce v samotném prohlížeči.
B.8
Jak urychlit výpočet
Platí zcela jednoduché pravidlo: čím méně je toho vidět, tím rychlejší je simulace. Následuje seznam akcí, kterými lze urychlit výpočet. Seznam je odstupňován od nejúčinějších postupů k těm méně účinným. 1. Zapněte volbu fast v nabídce panelu appletu. 2. Zavřete okno Explorer. • Vypněte zobrazení buněk. • Vypněte zobrazení receptorů. • Vypněte zobrazení odolnosti buněk vůči makrofágům. • Zmenšete počet zobrazovaných boxů. • Zmenšete okno. 3. Zavřete okno Awale. 4. Vypněte zobrazování hladin látek v prostředí (nabídka okna Awale).
57
Příloha C Programátorské poznámky Program byl vytvořen v jazyce Java, konkrétně ve verzi 1.0.2, což znamená, že může být spouštěn v jakékoli běžně dostupné Java Virtual Machine (JVM). Jazyk Java byl vybrán pro možnost jednoduchého spouštění a prezentace programu. Program nepoužívá žádné native metody ani žádné nestandardní balíky tříd, je proto přenositelný mezi různými platformami. Program se testoval na několika různých platformách (Linux, Solaris, IRIX, Windows NT, Windows 95) a v různých interpretech Javy (JDK, Netscape Navigator, Internet Explorer). Program má formu Javovského appletu, je tedy nutné, aby se spouštěl v rámci nějakého HTML dokumentu, nikoliv samostatně jako Java aplikace. Pro uživatele je tento způsob výhodnější, protože mu dovoluje spouštět celý program uvnitř jeho WWW prohlížeče. Jedná se o prezentační program, simulační jadro tedy není ostře odděleno od zbytku kódu. Jazyk Java je navíc sám o sobě přenositelný, a proto je i celá aplikace přenositelná i s grafickým rozhraním.
C.1
Struktura programu
Zdrojové třídy programu jsou umístěny v několika balících, které jsou hierarchicky uspořádány. V každém balíku jsou umístěny třídy, které slouží pro podobné účely (např. balík vb.awt obsahuje třídy pro podporu grafiky). Program byl navržen a napsán s využitím objektové metodologie, přizpůsobené Javovským podmínkám. Program si vytváří při inicializaci jedno nové vlákno, které se používá pro výpočty simulace. Další vlákna se už poté nevytvářejí. 58
Balík vb.awt vb.cytoapi vb.cytoapi.gui vb.cytoapi.manag vb.cytoapi.util Celkem
Počet tříd 13 8 20 16 6 63
Tabulka C.1: Velikosti balíků
C.2
Balíky (packages)
Balík vb.awt Tento balík obsahuje pomocné třídy vylepšených grafických komponent. Základní třída se jmenuje Component3D, která je potomkem Javovské třídy java.awt.Component. Třída Component3D je nadtřídou celé řady dalších tříd, s kterými vytváří hierarchii vylepšených grafických komponent. Protože program je koncipován tak, aby byl spustitelný ve všech verzích Javy, bylo nutné dopsat některé třídy, které se už v novějších verzích Javy vyskytují (např. PopupMenu). Balík vb.cytoapi Tento balík obsahuje všechny třídy zodpovědné za simulaci, jedná se o jádro celého programu. Třídy jsou poměrně nezávislé na třídách z ostatních balíků (výjimku tvoří pouze třída ZGTester). Třída ZGTester z tohoto balíku je hlavní třídou appletu. Jméno této třídy se vkládá spolu s dalšími parametry do HTML dokumentu. Balík vb.cytoapi.gui Grafické prostředí programu. Jedná se o třídy, které zobrazují informace na obrazovku. Nejedná se však o třídy, které by zpracovávaly události od uživatele. Balík vb.cytoapi.manag Třídy, které řídí běh programu a zpracovávají vstup od uživatele. Každá třída má na starosti určitou oblast, např. určitý prvek na obrazovce. V závislosti na vstupu od uživatele se volají konkrétní metody nějaké zobrazovací 59
ControlPanel
Awale
ControlPanelAdapter
AwaleAdapter Scenario Runner VisibilityManager
FeederList MainManager GoodFrameAdapter Parser WindowManager ZGTester
FastModeManager ExplorerStyleManager
ExplorerAdapter
ICanvasAdapter
Explorer
ICanvas
Obrázek C.1: Hlavní vztahy mezi jednotlivými třídami
60
třídy. Centrální třídou je třída MainManager. Obrázek C.1 ukazuje hlavní vztahy mezi třídami celého programu. Balík vb.cytoapi.util Balík pomocných tříd. Jedná se o pomocné datové struktury jako je spojový seznam (LinkedList) nebo speciální spojový seznam pro buňky (CellSet).
C.3
Programátorská dokumentace
Programátorská dokumentace se nachází na přiložené disketě. Tato dokumentace byla vygenerována standardním Javovským programem javadoc ze zdrojových souborů do formátu HTML. Dokumentace je psána anglicky.
61
Příloha D Disketa Disketa obsahuje několik archivů, které je nutné nejdříve rozbalit. Rozbalení se provádí takto (každý archiv zvlášť): • na platformách Windows 9x a Windows NT použijte nějaký uživatelsky přívětivý program, např. WinZip, stačí stisknout určité tlačítko (např. extract) a archiv se rozbalí. • na platfomách UNIX je nutné každý soubor nejprve dekompresit programem gunzip (tento program je volně šiřitelný pod licencí GNU) a poté rozbalit programem tar. Vše je možné provést na jednom příkazovém řádku: $ gzip -cd virlab.tgz | tar xvf Po rozbalení každého archivu vznikne adresář se stejným názvem, jako měl archiv.
Archiv apidoc Programátorská dokumentace ve formátu HTML, vygenerovaná ze zdrojových kódů pomocí standardního javovského programu javadoc. Dokumentace obsahuje popisy i k metodám a členům, které nejsou public. Dokumentace je psána anglicky. Hlavní soubor se jmenuje packages.html.
Archiv src Zdrojové kódy programu. Obsahuje pouze soubory s příponou .java. Přeložením souboru vb/cytoapi/ZGTester se přeloží všechny potřebné třídy programu. 62
Archiv virlab Virtuální laboratoř. Nejprve si přečtěte soubor README.html nebo soubor README. Hlavní soubor virtuální laboratoře se jmenuje index.html. Tento archiv obsahuje též popisy parametrů appletu (doc/vlozit.html) a popis parametrů scénáře (doc/scn.html). Tato dokumentace je potřebná pouze pro případ, že si budete chtít vytvořit vlastní scénu (kazetu). POZOR: virtuální laboratoř byla vyvinuta hlavně pro možnost spouštění přes službu WWW sítě internet. Spouštění z lokálního disku počítače je také možné, avšak byly zjištěny problémy s prohlížečem Communicator 4.0 na platformě Windows 95. Odstranit problémy lze přesunutím celého adresáře virtuální laboratoře do adresáře přístupného pomocí nějakého WWW-serveru. Soubory se pak stahují právě přes tento server (adresa pak začíná na http://). Virtuální laboratoř je možné momentálně navštívit též na adrese: http://www.ms.mff.cuni.cz/~vbar3159/cytopred/vlab_vb/
Než vstoupíte do virtuální laboratoře Virtuální laboratoř je místo, kde si můžete nechat předvést předem připravené experimenty a přečíst si krátké povídání související s daným experimentem. Do experimentu však můžete sami zasahovat. Nejjednodušším zásahem je pozastavení experimentu, případně jeho krokování. Po zvládnutí řízení běhu simulace se můžete pokusit zasahovat přímo do experimentu – pomocí injekční stříkačky lze zvyšovat hladiny látek v prostředí. Vzhledem k tomu, že laboratoř je pouze virtuální, nehrozí žádné nebezpečí při experimentování. Pokud se něco nepovede, stačí stisknout tlačítko Reload a vše je opět v počátečním stavu. Detailní popis, jak s programem (=appletem) zacházet, naleznete v dokumentu Jak ovládat applet, který je přístupný i z laboratoře.
63
Literatura [1] Bláha J. (1996): Matematické modelování imunitního procesu. Diplomová práce MFF UK, Praha. [2] Hubáček A. (1996): Matematický model adaptace buňky s využitím v imunologii. Diplomová práce MFF UK, Praha. [3] Špimr M. (1997): Matematické modelování činnosti fagocytující buňky. Diplomová práce MFF UK, Praha. [4] Neuberg T. (1998): Simulácia imunitného systému s premenlivou rýchlosťou reakcí. Diplomová práce MFF UK, Praha. [5] Straka T. (1998): Neuronové sítě s více mediátory. Diplomová práce MFF UK, Praha. [6] Kraemer M. (1998): Matematický model imunitního systému s topologií. Diplomová práce MFF UK, Praha. [7] Wolpert L. (1994): Triumf embrya. Academia, Praha. [8] Dvořák J. a kol. (1992): Ve stínu AIDS. Academia, Praha. [9] Nečas O. a kol. (1991): Cytoskelet. Academia, Praha. [10] Wallace D. C. (1997): Mitochondrial DNA in Aging and Disease. Scientific American 8, 22-29. [11] Smith R. (1999): The Timing of Birth. Scientific American 3, 50-57.
64