PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY
BAKALÁŘSKÁ PRÁCE
Webová aplikace SCIA
2011
Viktor Vozar
Anotace Strukturu a funkci proteinů jakožto základních biomakromolekul určují vzájemné interakce aminokyselin, ze kterých se proteiny skládají. Pochopení interakcí mezi vedlejšími řetězci aminokyselin je tedy klíčem k pochopení kódu života, tedy k tomu, jak sekvence jednotlivých aminokyselin určující pořadí vedlejších řetězců aminokyselin v řetězci určuje výslednou strukturu proteinů. Pracovníci Katedry fyzikální chemie Přírodovědecké fakulty Univerzity Palackého v Olomouci a Ústavu organické chemie a biochemie, AV ČR v Praze ve spolupráci s European Bioinformatics Institute v Hinxtonu, UK sestavili databázi těchto interakcí a napočítali interakční energie odpovídající síle těchto interakcí. Cílem této bakalářské práce je úprava této databáze a následná tvorba dynamického webového prostředí k prezentaci databáze interakčních energií a k jejímu dalšímu využití ve strukturní bioinformatice. Součástí webového rozhraní je i vizualizace anotovaných strukturních dat interagujících párů vedlejších řetězců aminokyselin.
Děkuji rodině, a především manželce, za trpělivost a podporu během mého studia. Dále pak mému vedoucímu práce Mgr. Tomáši Kührovi a RNDr. Karlu Berkovi, Ph.D. za odborné rady, a zvláště pak skutečnosti, že jsem se jejich prostřednictvím mohl dostat k velice zajímavé vědecké problematice.
Obsah 1. Úvod 1.1. Stručný popis problematiky . . . . . . . . . . . . . . . . . . . . . 1.2. Databáze používané ve výpočetní chemii . . . . . . . . . . . . . . 1.3. Výběr technologií . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Grafické rozhraní aplikace 2.1. Úvodní stránka . . . . . . 2.2. Atlas . . . . . . . . . . . . 2.3. Pair Specific Data . . . . . 2.4. Administrátorská stránka .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
8 8 8 9 10 11 11 12 14
3. Programový kód aplikace
16
4. Databáze
17
5. Použité technologie 5.1. Jmol . . . . . . . . . . . . . . . . . . . . 5.2. Gnuplot . . . . . . . . . . . . . . . . . . 5.2.1. Tvorba histogramu . . . . . . . . 5.2.2. Algoritmus vytváření histogramů 5.2.3. Alternativa k algoritmu . . . . . 5.3. MonoDevelop . . . . . . . . . . . . . . . 5.4. PHP . . . . . . . . . . . . . . . . . . . . 5.5. XHTML . . . . . . . . . . . . . . . . . . 6. Instalace a údržba 6.1. Požadavky na systém . . . . . . . . . . 6.2. Instalace OS a potřebných programů . 6.3. Nastavení adresářů, kopírování souborů 6.4. Nastavení a vytvoření databáze . . . . 6.5. Kontrola databáze . . . . . . . . . . . 6.6. Webové prohlížeče a Jmol . . . . . . . 6.7. Údržba . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
. . . . . . .
. . . . . . . .
22 22 24 25 26 28 29 29 30
. . . . . . .
31 31 31 32 32 33 34 35
Závěr
36
Conclusions
37
Reference
38
4
A. Příklady pomocných programů v jazyce C# A.1. Konverze původních datových souborů . . . . . . . . . . . . . . . A.2. Generování obrázků molekul . . . . . . . . . . . . . . . . . . . . .
40 40 41
B. MySQL skripty B.1. Ukázkový skript MySQL použitý při vývoji databáze scia . . . . . B.2. Oprávnění k přístupu do databáze . . . . . . . . . . . . . . . . . .
42 42 45
C. Obsah přiloženého CD
46
5
Seznam obrázků 1. 2. 3. 4. 5. 6.
webová stránka Atlas . . . . . . . . . . . . . . webová stránka Pair Specific Data . . . . . . webová stránka Admin Pages of SCIA - FAQs Arg Asn cluster-1.png . . . . . . . . . . . . . Tyr Trp cluster-1.png . . . . . . . . . . . . . . Příklad generovaného histogramu . . . . . . .
6
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
10 13 15 22 22 24
Seznam tabulek
7
1. 1.1.
Úvod Stručný popis problematiky
Proteiny tvoří většinu biologických makromolekul v buňce. Slouží zde k mnoha účelům od čistě strukturních přes signální dráhy až k metabolismu. Každá proteinová jednotka je tvořena lineární sekvencí aminokyselin spojených tzv. peptidickou vazbou do jednoho tzv. hlavního řetězce, ze kterého visí jednotlivé kratší tzv. postranní řetězce. Ty do sebe zapadají a protein se pak skládá do funkční trojrozměrné struktury procesem tzv. protein foldingu [1]. K rozklíčování tohoto děje je možné použít znalosti již vyřešených struktur, které jsou uloženy v databázi PDB (Protein DataBank - http://www.pdb.org ) [2]. Berka et al. analyzovali sílu jednotlivých interakcí mezi páry postranních řetězců aminokyselin, které byly vyřezány z PDB databáze a dále zpracovány pomocí klastrovací analýzy struktury a následně s pomocí metod výpočetní chemie [3]. Vznikla tak databáze interakčních energií (IE) mezi jednotlivými páry aminokyselin [4]. Cílem této bakalářské práce je převod této databáze do webové podoby.
1.2.
Databáze používané ve výpočetní chemii
Databáze Side-chain Interaction Atlas (SCIA) navazuje na dlouhodobou snahu pochopit interakce určující skládání proteinů do jednoznačné trojrozměrné struktury, která je následně zodpovědná za funkci proteinu ať už v rámci organismu, nebo v technickém využití. Databáze již byly dříve použity například k pochopení síly interakcí mezi vybranými chemickými páry. Typem takovéto databáze je třeba databáze BEGDB (Benchmark energy and geometry database) provozovaná pracovníky Ústavu organické chemie a biochemie v Praze, AV ČR (www.begdb.com) [5]. V BEGDB jsou uložené výsledky výpočtu interakčních energií pro několik sad molekul a umožňuje komparativní studium výsledků jednotlivých metod výpočetní chemie, a tak podporuje vývoj lepších metod a umožňuje i srovnání síly jednotlivých interakcí vyskytující se v chemických systémech. V případě proteinů se mnoho databází zaměřuje v rámci tzv. bioinformatik ať už na analýzu sekvencí proteinů (např. www.uniprot.org) [6], nebo jejich experimentálně stanovených trojrozměrných struktur (www.rcsb.org), případně další [7] [8] [9]. V oblasti skládání proteinů je vhodné zmínit se alespoň o databázi dynamiky proteinů DYNAMEOMICS provozovanou na University of Washington v Seattlu, USA (www.dynameomics.org) [10] [11]. V této databázi jsou uloženy výsledky simulačních studií analyzujících, jak se proteiny chovají v roztoku a co odpovídá za jejich stabilitu a případné rozložení (denaturaci). Dynameomics tedy také zkoumá interakce v rámci proteinů podobně jako SCIA, ale zaměřuje se především na
8
dynamiku a stabilitu struktury proteinu jako celku, zatímco SCIA obsahuje informace o stabilitě proteinů v rámci jednotlivých aminokyselinových párů.
1.3.
Výběr technologií
Během úvodních rozhovorů o požadavcích na systém se zadavatelem RNDr. Karlem Berkou, Ph.D, vyplynul požadavek na operační systém (OS) typu Linux. Linux jako hlavní operační systém, je zadavatelem používán při práci a dalším důvodem jsou pořizovací náklady na software. Dále je pak důležitý fakt, že většina výpočetních programů na výpočetních clusterech běží obvykle pod operačním systémem typu UNIX, ze kterého Linux vychází. Z podobných důvodů pak byly použity aplikace nutné pro chod webového serveru a databáze. V chemických vědních oborech je rozšířeno použití programu Jmol pro zobrazování chemických struktur. Pro matematické zobrazování funkcí a grafů je často používán program Gnuplot. Na základě těchto skutečností byly vybrány tyto základní technologie pro praktickou realizaci aplikace: • Linux (operační systém) • Apache2 (webový server) • MySQL (databázový systém ) • PHP (skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek) Další pomocné technologie: • Jmol (prohlížeč a editor chemických struktur ve trojrozměrném zobrazení) • Gnuplot (multiplatformní program pro vytváření obrázků grafů) • MonoDevelop (vývojové prostředí primárně určené pro programovací jazyk C#) Bližší podrobnosti k uvedeným technologiím budou v následujících kapitolách.
9
2.
Grafické rozhraní aplikace
Tato kapitola se zabývá popisem aplikace z hlediska grafického rozhraní. Další kapitoly pak z hlediska kódování, rozložením souborů na disku a struktury databáze.
Obrázek 1. webová stránka Atlas Aplikace se skládá ze tří základních stránek: • úvodní stránka (index.php) • stránka obsahující specifická data ke každému páru (pair.php) • administrátorská stránka (adminpg.php) 10
2.1.
Úvodní stránka
Úvodní stránka (index.php) je rozcestník do celé aplikace. V levém horním rohu stránky se nachází hlavní menu okrové barvy obsahující tyto položky: • Introduction - úvodní stránka • Entry to atlas - vstupní stránka do atlasu • Methods - popis výpočetních metod • Administration - vstup do administrátorkých stránek • Contacts - kontakty na správce a administrátora stránek • FAQ - seznam zodpovězených a často kladených dotazů • Publications - odkazy na publikace a reference • News - novinky a zprávy týkající se především změn a úprav v aplikaci apod. Kliknutím na některou položku se zobrazí konkrétní podstránka vpravo od menu svislé dělící čáry. Tyto podstránky jsou ve skutečnosti realizovány samostatnými soubory typu php, které ovšem neobsahují kompletní strukturu xhtml souboru (hlavička, tělo . . .) Nejdůležitější odkaz aplikace v této části je Atlas (Entry to atlas).
2.2.
Atlas
Stránka Atlas obsahuje tabulku velikosti 20x20 párů aminokyselin1 . Nad tabulkou se nachází volby pro výběr metod, jednotek a typů zobrazovaných hodnot energií.
Typy zobrazovaných hodnot energií: • „cluster representativeÿ hodnoty energií jsou v databázi reprezentovány samostatnými tabulkami o velikostí 400 řádků pro každou metodu. Jde o reprezentanty nejčastějších interakcí, tedy nejpočetnějšího klastru páru dotyčných aminokyselin, které byly určeny pomocí klastrování geometrií všech párů dotyčných aminokyselin. Aminokyselina v řádku v tabulce byla použita na překládání struktur, a pozice aminokyseliny v sloupci byla použita pro stanovení klastrů aminokyselin. Výměna středové a porovnávací aminokyseliny (tj. výměna sloupce za řádek a naopak) pak vede k výběru odlišných klastrů a tím i k jiným hodnotám interakčních energií pro dotyčné páry mimo diagonálu [3]. 1
V bílkovinách se střídá 20 aminokyselin, které jsou kódovány genetickým kódem
11
• Hodnoty „most stableÿ a „medianÿ jsou získávány z odlišných tabulek databáze, ve kterých jsou uloženy všechny interakční energie vypočítané pomocí různých metod výpočetní chemie [4], a kde pro každý pár existují stovky až tisíce vypočítaných hodnot energií. Z těchto hodnot je následně nalezena nejstabilnější interakční energie2 („most stableÿ). • Střední pár „medianÿ je zjištěn ze seřazeného seznamu energií k danému páru aminokyseliny vzorcem (počet energií/2), tedy prostřední hodnota ze seznamu. • Volbou „number of interactionsÿ se v tabulce zobrazí počet interakcí k dotyčnému páru, ze kterého je pak tvořen histogram na stránce Pair Specific Data. Poznámka: Pro některé náročné metody výpočtu interakčních energií nejsou dostupná vypočítaná data pro celý soubor struktur, proto se v takovém případě při výběru „most stableÿ a „medianÿ nezobrazí tabulka s energiemi. Prostřednictvím odkazu energie v tabulce je možné otevřít nejdůležitější stránku aplikace SCIA a to stránku se specifickými daty k vybranému páru Pair Specific Data .
2.3.
Pair Specific Data
Tato stránka je nejdůležitější z celé aplikace. Lze do ní přistoupit ze stránky Atlas odkazem z tabulky. Zde údaje zobrazují nejen interakční energie pro „cluster representativeÿ, ale také pro všechny další dvojice nalezené v databázi vybraného páru. Kromě statických obrázků lze strukturu páru interaktivně zobrazit pomocí apletu Jmol (trojrozměrné zobrazení) kliknutím na obrázek molekuly. Tažením myši po obrázku je možné rotovat s trojrozměrným obrázkem molekuly. Kliknutím pravým pravým tlačítkem myši se zobrazí další nabídka apletu Jmol. Ve spodní části stránky se pak nachází aktuálně vygenerovaný obrázek histogramu jehož parametry lze interaktivně měnit. To je možné pomocí panelu User setting of histogram.
2
Nejstabilnější energie jsou z definice ty nejzápornější. Jde totiž o energii, kterou je do systému třeba dodat, aby se interakce uvolnila.
12
Obrázek 2. webová stránka Pair Specific Data
13
2.4.
Administrátorská stránka
Tato stránka podává informace o webové aplikaci SCIA a umožňuje její částečnou správu. Pro běžného uživatele je nedostupná, protože vyžaduje heslo administrátora. Vstoupit lze do ní z hlavní stránky odkazem z hlavního menu Administration. Hlavní menu obsahuje tyto položky: • Main - Stránka obsahuje hlavní informace z ostatních podstránek. • PHP info - Výpis funkce phpinfo() obsahující globální informace o vlastním webovém serveru. • Database info - Obsahuje výpis všech tabulek databáze scia s počtem záznamů (Tables of database SCIA). Dále pak popis jednotlivých sloupců konkrétních tabulek s možností jejich výběru (Describe table) a nakonec výpis obsahu konkrétní tabulky (Preview of table). • File system - protože při používání aplikace dochází k ukládání dat do dočasného adresáře (Directory /tmp), je dobré mít informace o tomto adresáři a o zaplnění disku. Dále je zde možnost mazat ručně dočasné soubory podle doby jejich vzniku (volby mazání souborů: smazat všechny, starší než 15 minut, starší než jeden den) • FAQs - Na této stránce je možné spravovat FAQs (otázky a odpovědi týkající se SCIA). Administrátor může zadávat otázky a odpovědi, a ty jsou ukládány do databáze SCIA. Jejich výpis se pak objeví na hlavní stránce SCIA - podstránka FAQ. Automaticky se ukládá datum vložení. Tabulku scia faqs je možné zálohovat (Save Backup, Load Backup) ve formátu textového souboru. • Counter - Počitadlo návštěv stránek (Counter of visits) obsahuje jednak výpis posledních 30 návštěv stránek SCIA ve formě tabulky, tak samotnou hodnotu počitadla, která je vlastně počtem záznamů (řádků tabulky). Sloupce obsahují IP adresu návštěvníka, datum, hodinu a čas uložení záznamu. První tři sloupce tvoří primární klíč, takže každý návštěvník je započítáván maximálně jednou za hodinu. • Administrators - Zde je možné spravovat (přidávat a mazat) administrátory stránek. Jestliže však existuje pouze jediný administrátor, nelze ho smazat. Přihlašovací hesla se zobrazují v hešovací podobě z důvodu bezpečnosti. • Logout - Umožňuje okamžité odhlášení z administrátorských stránek.
14
Obrázek 3. webová stránka Admin Pages of SCIA - FAQs
15
3.
Programový kód aplikace
Aplikace SCIA je napsaná v kódu PHP v kombinaci s jazykem XHTML a Javascript. Kód byl psán v linuxové verzi editoru gPHPEdit. Pomoc s odstraňováním chyb (především syntaktických) byla umožněna pomocí webové aplikace W3C Markup Validation Service. Ta umožňuje kontrolovat chyby ve výsledných HTML (XHTML) stránkách generovaných PHP serverem. Webové prohlížeče jsou k chybám relativně benevolentní a snaží se zobrazit www stránku za každou cenu. Každý prohlížeč se může chovat trochu jinak, přesto je základem právě takováto kontrola HTML (XHTML) kódu, aby se vyloučily problémy se zobrazováním stránek z důvodu chyb v kódu. I z těchto důvodů byla aplikace byla testována na více webových prohlížečích: • Mozila Firefox 4.01, 5.0 • Google Chrome 10.0 a 11 • MS Internet Explorer 8 a 9 • Opera 11.50 Byly vybrány novější a aktuálně nejpoužívanější verze webových prohlížečů. Nelze tak zaručit úplnou kompatibilitu zobrazování stránek na všech ostatních prohlížečích a to z časových důvodů (vyžaduje dlouhodobé testování). Webová aplikace SCIA se nachází v adresáři /SCIA (webového serveru). Tento adresář dále obsahuje: • index.php • /codephp - adresář obsahující všechny soubory *.php (kromě index.php) • /css - adresář obsahující soubory stylů *.css • /images - adresář obsahující obrázky • /Jmol - adresář obsahující aplikaci Jmol, její applet a data pro zobrazování interaktivních trojrozměrných struktur párů aminokyselin. • /tmp - adresář obsahující dočasné soubory (obrázky, skripty, datové soubory) vznikající generováním stránek Pair Specific Data Specifickým souborem je index.php, který je hlavní vstupní branou na stránky. Pro svoji činnost vyžaduje další soubory, které jsou uloženy v adresáři /codephp většinou voláním funce require once jako virtuální podstránky. Dalším specifickým souborem je confSCIA.php, který se nachází v adresáři /codephp. Tento soubor obsahuje konstanty (např. název, jméno a heslo do databáze) a funkce často používané na ostatních stránkách. 16
4.
Databáze
Databáze je jednou z nejdůležitějších částí aplikace. Původní data byla v souborech různé struktury a typu. Z důvodu jejich množství (přes 1,5 milionu záznamů) byla vytvořena databáze scia, aby bylo možné v rozumném čase tyto data zpracovávat a zobrazovat na webových stránkách. Struktura databáze: mysql> show tables; +----------------+ | Tables_in_scia | +----------------+ | A03CA | | OPLSCA | | PM6DH | | RIDFTD | | SCCDFTBD | | aminokyseliny | | crA03CA | | crOPLSCA | | crPM6DH | | crRIDFTD | | crSCCDFTBD | | methods | | scia_admin | | scia_counter | | scia_faqs | | struct | | surf | | units | +----------------+
Tabulky A03CA, OPLSCA, PM6DH, RIDFTD, SCCDFTBD jsou hlavním zdrojem dat pro generování histogramů. Obsahují data získaná danou metodou výpočtu. mysql> describe A03CA ; +------------+------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+-------------------+-----------------------------+ | aminoacid1 | tinyint(4) | NO | PRI | NULL | | | aminoacid2 | tinyint(4) | NO | PRI | NULL | | | c_paru | int(11) | NO | PRI | NULL | | | struct | tinyint(4) | NO | PRI | NULL | auto_increment | | e1 | double | YES | | NULL | | | e2 | double | YES | | NULL | | | e3 | double | YES | | NULL | | | dist1 | double | YES | | NULL | | | dist2 | double | YES | | NULL | | | cas | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +------------+------------+------+-----+-------------------+-----------------------------+ Příklad obsahu: mysql> select * from A03CA
limit 2;
+------------+------------+--------+--------+--------+-------+--------+-------+-------+---------------------+ | aminoacid1 | aminoacid2 | c_paru | struct | e1 | e2 | e3 | dist1 | dist2 | cas | +------------+------------+--------+--------+--------+-------+--------+-------+-------+---------------------+ | 2 | 2 | 1000 | 1 | 0.02 | 1.165 | 1.185 | 1.27 | 2.477 | 0000-00-00 00:00:00 | | 2 | 2 | 100 | 1 | -0.022 | -0.67 | -0.692 | 1.185 | 2.392 | 0000-00-00 00:00:00 | +------------+------------+--------+--------+--------+-------+--------+-------+-------+---------------------+
17
Tabulka aminokyseliny obsahuje ID číslo, název, zkratky názvů: +-----------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+----------------+ | IDaminokyseliny | tinyint(4) | NO | PRI | NULL | auto_increment | | nazevCZ | varchar(30) | YES | | NULL | | | zkratka | varchar(5) | YES | | NULL | | | pismeno | char(1) | YES | | NULL | | | nazevEN | varchar(30) | YES | | NULL | | +-----------------+-------------+------+-----+---------+----------------+ Příklad obsahu: mysql> select * from aminokyseliny limit 2; +-----------------+---------+---------+---------+---------+ | IDaminokyseliny | nazevCZ | zkratka | pismeno | nazevEN | +-----------------+---------+---------+---------+---------+ | 1 | Glycin | Gly | G | Glycine | | 2 | Alanin | Ala | A | Alanine | +-----------------+---------+---------+---------+---------+
Tabulky crA03CA, crOPLSCA, crPM6DH, crRIDFTD, crSCCDFTBD obsahují data o interakčních energiích pro „cluster representativeÿ páry pro každou výpočetní metodu: mysql> describe crA03CA ; +-------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+------------+------+-----+---------+-------+ | amac1 | varchar(5) | NO | PRI | NULL | | | amac2 | varchar(5) | NO | PRI | NULL | | | e3 | double | YES | | NULL | | +-------+------------+------+-----+---------+-------+ Příklad obsahu: mysql> select * from crA03CA limit 2 ; +-------+-------+--------+ | amac1 | amac2 | e3 | +-------+-------+--------+ | Ala | Ala | -0.193 | | Ala | Arg | -1.744 | +-------+-------+--------+
Tabulka methods obsahuje seznam metod a asociací mezi tabulkami (např. asociace A03CA a crA03CA): mysql> describe methods; +------------+----------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+----------------+------+-----+---------+-------+ | tab_name | varchar(30) | NO | PRI | NULL | | | met_name | varchar(30) | YES | | NULL | | | crtab_name | varchar(30) | YES | | NULL | | | des | varchar(64000) | YES | | NULL | | +------------+----------------+------+-----+---------+-------+ Příklad obsahu: mysql> select * from methods limit 2 ; +----------+--------------------+------------+-------------------------+ | tab_name | met_name | crtab_name | des | +----------+--------------------+------------+-------------------------+ | A03CA | parm03 Ca-only ff | crA03CA | FAQ/methods.html#A03CA | | OPLSCA | OPLS Ca-only ff | crOPLSCA | FAQ/methods.html#OPLSCA | +----------+--------------------+------------+-------------------------+
18
Tabulka scia admin obsahuje seznam administrátorů stránek SCIA: mysql> describe scia_admin; +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | user_id | int(11) | NO | PRI | NULL | auto_increment | | username | varchar(30) | YES | UNI | NULL | | | password | char(41) | NO | | NULL | | | first_name | varchar(30) | YES | | NULL | | | last_name | varchar(30) | YES | | NULL | | | email | varchar(50) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+ Příklad obsahu: mysql> select * from
scia_admin;
+---------+----------+-------------------------------------------+------------+---------------------+------------------+ | user_id | username | password | first_name | last_name | email | +---------+----------+-------------------------------------------+------------+---------------------+------------------+ | 1 | test | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | Tester | Testerovič |
[email protected] | | 2 | admin | *4ACFE3202A5FF5CF467898FC58AAB1D615029441 | Admin | Administrátorovič |
[email protected] | +---------+----------+-------------------------------------------+------------+---------------------+------------------+
Poznámka: ve sloupci password se neukládají z důvodu bezpečnosti skutečná hesla, ale jejich hešovaná hodnota. Tabulka struct je připravena na budoucí využití pro možné ukládání dat ve stávajících souborech typu pdb: mysql> describe struct; +------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+-------+ | aminoacid1 | tinyint(4) | NO | PRI | NULL | | | aminoacid2 | tinyint(4) | NO | PRI | NULL | | | c_paru | int(11) | NO | PRI | NULL | | | struct | tinyint(4) | NO | PRI | NULL | | | atom | tinyint(4) | NO | PRI | NULL | | | atom_name | varchar(4) | YES | | NULL | | | molekule | varchar(3) | YES | | NULL | | | c_mol | tinyint(4) | NO | | NULL | | | x | double | YES | | NULL | | | y | double | YES | | NULL | | | z | double | YES | | NULL | | +------------+------------+------+-----+---------+-------+
Tabulka surf je připravena na budoucí využití při zobrazování grafů typu surf: mysql> describe surf; +------------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+------------+------+-----+---------+-------+ | aminoacid1 | tinyint(4) | NO | PRI | NULL | | | aminoacid2 | tinyint(4) | NO | PRI | NULL | | | c_paru | int(11) | NO | PRI | NULL | | | ses | double | YES | | NULL | | | sas | double | YES | | NULL | | | sesvol | double | YES | | NULL | | +------------+------------+------+-----+---------+-------+
19
Příklad obsahu: mysql> select * from surf limit 2; +------------+------------+--------+------+-------+--------+ | aminoacid1 | aminoacid2 | c_paru | ses | sas | sesvol | +------------+------------+--------+------+-------+--------+ | 1 | 1 | 1 | 4.37 | 59.11 | -5.09 | | 1 | 1 | 2 | 4.29 | 59 | -6.32 | +------------+------------+--------+------+-------+--------+
Hodnoty energií v databázi jsou v jednotkách kcal/mol. Aby je bylo možné přepočítávat do jiných jednotek, bylo třeba vytvořit speciální tabulku units. Ta obsahuje nejen převodní konstanty (sloupec ucons), ale také informace pro velikost písma (sloupec size) a zaokrouhlení (sloupec round) nutné pro korektní zobrazování ve webových tabulkách (stránka Atlas). Tabulka units tedy obsahuje seznam fyzikálních jednotek a jejich přepočet k základní jednotce kcal/mol: mysql> describe units; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | IDunit | tinyint(4) | NO | PRI | NULL | auto_increment | | unitname | varchar(30) | YES | UNI | NULL | | | ucons | double | YES | UNI | NULL | | | ux | varchar(30) | YES | | NULL | | | size | tinyint(4) | NO | | NULL | | | round | tinyint(4) | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+ Obsah tabulky units: mysql> select * from units; +--------+------------------+---------+-------------------+------+-------+ | IDunit | unitname | ucons | ux | size | round | +--------+------------------+---------+-------------------+------+-------+ | 1 | kcal/mol | 1 | | 11 | 1 | | 2 | cm<sup>-1 | 349.75 | | 9 | 0 | | 3 | kJ/mol | 4.184 | | 10 | 1 | | 4 | eV | 0.04336 | | 10 | 2 | | 5 | h | 1.59 | x1000 | 8 | 2 | | 6 | erg | 6.948 | x10<sup>-14 | 9 | 1 | +--------+------------------+---------+-------------------+------+-------+
Tabulka scia counter slouží jako záznam a počitadlo návštěv stránek: mysql> describe scia_counter; +-----------+-------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+-------------------+-----------------------------+ | ip_adresa | varchar(40) | NO | PRI | NULL | | | datum | date | NO | PRI | NULL | | | hodina | tinyint(4) | NO | PRI | NULL | | | cas | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +-----------+-------------+------+-----+-------------------+-----------------------------+
20
Obsah tabulky scia_counter: mysql> select * from scia_counter limit 2; +-----------+------------+--------+---------------------+ | ip_adresa | datum | hodina | cas | +-----------+------------+--------+---------------------+ | 10.0.0.2 | 2011-07-24 | 19 | 2011-07-24 19:06:19 | | 10.0.0.2 | 2011-07-25 | 17 | 2011-07-25 17:11:25 | +-----------+------------+--------+---------------------+
Tabulka scia faqs slouží ke správě stránky FAQ. Zde jsou uloženy otázky a odpovědi: mysql> describe scia_faqs; +----------+--------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+-------------------+-----------------------------+ | faq_id | int(11) | NO | PRI | NULL | auto_increment | | question | varchar(760) | YES | UNI | NULL | | | answer | varchar(760) | YES | | NULL | | | counter | int(11) | YES | | NULL | | | dt | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +----------+--------------+------+-----+-------------------+-----------------------------+ Příklad obsahu tabulky scia_faqs: mysql> select * from scia_faqs; +--------+------------+------------------------+---------+---------------------+ | faq_id | question | answer | counter | dt | +--------+------------+------------------------+---------+---------------------+ | 10 | otázka 1 | odpověď na otázku 1 | 0 | 2011-07-29 15:16:47 | | 11 | otázka 2 | odpověď na otázku 2 | 0 | 2011-07-29 15:17:18 | +--------+------------+------------------------+---------+---------------------+
Celá databáze je vytvořena pomocí skriptů (soubory createdbSCIA.sql a new account.sql ) obsahující SQL příkazy. Příklad skriptu používaného při vývoji aplikace se nachází v příloze B tohoto dokumentu.
21
5.
Použité technologie
V této kapitole budou popsány podrobnější informace k použitým technologiím a příklady jejich použití v aplikaci SCIA.
5.1.
Jmol
Jmol je freewerový open-source prohlížeč a editor chemických struktur v trojrozměrném zobrazení. [12] Je tedy určen především studentům, pedagogům a výzkumným pracovníkům v oblasti chemie a biochemie. Je multi-platformní, běží na operačních systémech Windows, Mac OS X a Linux. Existují tři základní formy pro praktická použití jako: • JmolApplet - applet pro webový prohlížeč, který může být integrován do webových stránek. • Aplikace Jmol - jako samostatná Java aplikace, která běží na pracovní ploše. • JmolViewer - vývojový nástroj, který lze integrovat do jiných Java aplikací. Pro aplikaci SCIA byla využita forma JmolApletu pro samotné zobrazování ve webových stránkách a samostatná aplikace Jmol pro studium možností zobrazování a ke generování statických obrázků ve formátu png.
Obrázek 4. Arg Asn cluster-1.png
Obrázek 5. Tyr Trp cluster-1.png
Na ukázku jsou zobrazeny páry molekul aminokyselin argininu s asparaginem (obrázek 4.) a molekuly tyrozinu s tryptofanem (obrázek 5.), které z datového
22
souboru typu .pdb generuje aplikace Jmol jako obrázek ve formátu png. Příklad integrace JmolAppletu do webových stránek: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta name="author" content="Viktor Vozar" />
Test JmolApplet <script src=’../Jmol/Jmol.js’ type=’text/javascript’> <script type="text/javascript"> function changeObject(txt,jmolpic){ jmolSetDocument(0); jmolInitialize("../Jmol"); jmolSetAppletColor("#FFFFFF"); document.getElementById(jmolpic).innerHTML = jmolApplet(342, "load ../Jmol/jmoldata/"+txt+" ; select all;Backbone off; wireframe 0.15; spacefill 0.45;move 0 360 0 0 0 0 0 0 6; " ); }
Klikněte na obrázek pro nahrání JmolAppletu
Dle uvedeného kódu se nejprve zobrazí obrázek Tyr Trp cluster-1.png. Po kliknutí na něj se teprve načte JmolApplet. Pokud je načten, lze myší natáčet pohled na trojrozměrnou strukturu molekul. Kliknutím pravým tlačítkem na JmolApplet lze dále provádět další nastavení vlastností zobrazení a různá měření, např. vzdálenosti atomů, apod. Některé vlastnosti lze nastavit také pomocí parametrů spouštěného appletu. Například parametr: move 0 360 0 0 0 0 0 0 6 - provede rotaci o 360 stupňů na ose Y během 6-ti sekund. Soubor Tyr Trp cluster-1.pdb obsahuje data - souřadnice jednotlivých atomů, ze kterých vzniká výsledný interaktivní trojrozměrný obraz páru aminokyselin. Soubory s příponou .pdb jsou umístěny na webovém serveru a mají například následující strukturu: ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM
1 5 8 9 11 12 14 15 17
CA CB CG CD1 CD2 NE1 CE2 CE3 CZ2
TRP TRP TRP TRP TRP TRP TRP TRP TRP
1 1 1 1 1 1 1 1 1
-4.900 -5.580 -4.840 -4.920 -3.900 -4.070 -3.430 -3.390 -2.480
-0.900 -1.210 -0.670 0.590 -1.380 0.720 -0.470 -2.690 -0.840
-1.990 -0.650 0.540 1.050 1.340 2.120 2.320 1.320 3.280
23
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM ATOM
19 21 23 27 30 31 33 35 37 39 40
CZ3 CH2 CA CB CG CD1 CD2 CE1 CE2 CZ OH
TRP TRP TYR TYR TYR TYR TYR TYR TYR TYR TYR
1 1 2 2 2 2 2 2 2 2 2
-2.450 -2.000 -0.420 -0.020 0.000 -1.200 1.200 -1.210 1.200 -0.010 -0.030
-3.050 -2.120 -1.910 -1.510 0.000 0.720 0.720 2.110 2.120 2.810 4.180
2.280 3.240 -1.560 -0.140 0.000 0.000 0.000 -0.020 -0.020 -0.030 -0.090
1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Podrobnější informace o aplikaci Jmol lze také získat např. na stránkách: http://www.jmol.org http://www.callutheran.edu/BioDev/omm/scripting/molmast.htm
5.2.
Gnuplot
Gnuplot [14] je multiplatformní grafická utilita určená k vytváření 2D a 3D grafů. Byla původně vytvořena pro vědce a studenty k interaktivní vizualizaci matematických funkcí a dat, ale rozrostla i na podporu mnoha neinteraktivních využití, jako například webových skriptů. Gnuplot podporuje mnoho různých typů výstupů: interaktivní obrazovky terminálů, přímý výstup do plottery nebo moderní tiskárny, a výstup do mnoha formátů souborů (eps, obr, jpeg, LaTeX, METAFONT, PBM, pdf, png, PostScript, SVG, . . .). V aplikaci SCIA je Gnuplot použit ve funkci pro generování histogramů interakčních energií na stránkách Pair Specific Data (pair.php). Tato funkce je jedna z nejdůležitějších, a proto na následujících řádcích bude následovat popis algoritmu pro vytváření histogramů a integrace Gnuplot do aplikace SCIA. Samotná aplikace algoritmu je pak provedena pomoci kódu PHP.
Obrázek 6. Příklad generovaného histogramu
24
5.2.1.
Tvorba histogramu
V databázi scia jsou v tabulkách pro danou metodu obsaženy stovky až desítky tisíc záznamů interakcí pro každý pár. Každý tento záznam (řádek v tabulce databáze) obsahuje názvy dvou molekul aminokyselin (id aminokyselin), číslo interakce (klastru) a hodnotu interakční energie. Např. na obrázku 6. je 7307 párů aminokyselin (interakcí) s názvem Ile/Tyr. Z této sumy interakčních energií (IE) je třeba vytvořit histogram. Základní myšlenka byla taková, že se zjistí nejmenší hodnota interakční energie ze sumy klastrů k danému páru, dále pak nejvyšší energie a tím bude dán základní interval hodnot pro osu x v histogramu. Tento interval se pak rozdělí na menší intervaly (vzorky). Každý vzorek bude mít svoje počitadlo nastavené na číselnou hodnotu 0. Pak se všechny clustery k danému páru projdou a každá hodnota energie clusteru se porovná a zjistí se do kterého vzorku (intervalu) patří. Počitadlo zjištěného vzorku se pak zvýší o 1. Na ose y se pak zobrazí počet párů (clusterů) patřících do daného vzorku. Ukázalo se však, že takto vytvořené histogramy pro některé páry aminokyselin nemají dostatečnou informační hodnotu. Důvodem je, že výpočetní metody mohou často uvést přehnaně repulzní hodnoty (přesahující hodnoty očekávatelných interakčních energií až o více než tisícinásobky), které pak následně ruší přípravu histogramů. V praxi tyto přehnané hodnoty obrovsky zvyšovaly interval hodnot na ose x. Tak se buď téměř všechny energie vešly do jednoho vzorku, nebo se zobrazili graficky jako malá úzká špička v histogramu. Toto nepatrné množství přehnaných energií tak zdeformovalo celý histogram. Jako kompromis se ukázalo vynechat vždy necelé procento nejvyšších energií (resp. použít dolních 99,1%). V níže popsaném algoritmu je toto popsáno jako 1. fáze ořezání. Histogramy již vypadaly lépe, ale ještě je bylo potřeba vylepšit. Jelikož v první fázi bylo potřeba rozumně stanovit hlavní interval hodnot na ose x podle minimální a maximální hodnot interakčních energií, tak ve druhé fázi bylo potřeba hlavní křivku histogramu „roztáhnoutÿ. Příklad: V základním nastavení je hlavní interval hodnot interakčních energií (IE) rozdělen na 500 vzorků. Dejme tomu, že počet klastrů (hodnot IE v databázi) je pro vybraný pár aminokyselin 1000. V cyklu se zjistí do kterého intervalu vzorku každá hodnota IE patří a počitadlo vzorku se zvýší o jedna. Nyní máme data pro histogram. V programu je to pole o velikosti 500. Každá buňka pole odpovídá jednomu vzorku tedy malému intervalu hodnot IE. Obsah buňky je pak počet IE, které do tohoto intervalu patří. Pokud provedeme součet všech hodnot v buňkách, tedy sumu celého pole, logicky nám opět musí vyjít celkový počet hodnot IE. V tomto příkladě 1000. Když 25
bychom se však podívali na rozložení hodnot v poli, zjistili bychom například, že v prvních 100 vzorcích (buňkách v poli) se nachází 99% všech hodnot IE. Jinými slovy je v první pětině pole (pětina 100 vzorků z 500) většina hodnot IE a také graficky je hlavní „těloÿ histogramu v první pětině osy x. Prakticky se tedy provede druhá fáze ořezání, kdy se při vytváření souboru dat pro program Gnuplot v cyklu sčítají do proměnné hodnoty buněk pole počitadel. Jakmile se zjistí, že tato suma počitadel dosáhne 99% všech IE, tak se cyklus a tedy tvorba souboru dat pro Gnuplot ukončí. Nyní se nám tedy generuje histogram, jehož hlavní „těloÿ je v ideálním případě rozloženo přes celou osu x.
5.2.2.
Algoritmus vytváření histogramů
Histogramy jsou vytvářeny ve dvou variantách. První varianta vytváří základní histogram a druhá uživatelsky definovaný histogram. Pro druhou variantu je třeba uživatelské rozhraní, a tím je panel (User setting of histogram) ve spodní části stránky Pair Specific Data pod obrázkem histogramu. Aby se zamezilo uživatelským chybám a zároveň jednoduše rozlišilo, který typ histogramu se bude tvořit, je základním kritériem nastavení intervalu v panelu. Pokud je hodnota start range a zároveň end range rovna 0 nebo vybrán chybný rozsah (start range≥end range) je generován základní histogram (počátek intervalu na ose x musí být logicky nižší než horní hranice intervalu). • Proveden dotaz SQL pro výběr všech hodnot interakčních energií k danému páru. • V případě, že výsledkem dotazu je nulový počet záznamů, je obráceno pořadí molekul a proveden nový SQL dotaz. • Transformace výsledku dotazu do seřazeného pole hodnot interakčních energií. • Vyhledání minimální energie (nejmenší hodnota IE). • Vyhledání maximální energie - počet všech nalezených IE (buněk v poli) je násoben 0.991 (1. fáze ořezání extrémních energií nad 99.1%). Výsledkem je číslo, které ukazuje na pozici v poli. Zde je načtena maximální energie. • Výpočet velikosti jednoho vzorku = (max. energie – min. energie)/počet vzorků.
26
• vytvoření dalšího pole (počitadla) o velikosti počtu vzorků (standardně je použito 500 vzorků) a nastavena hodnota každého vzorku na 0. Každý vzorek tak reprezentuje počitadlo energií k danému páru v určitém rozsahu a je tedy nejprve vynulováno. • Vytvoření hlavního počitadla (proměnná $pp) • V cyklu jsou procházeny všechny hodnoty k danému páru. Provede se porovnání do kterého rozsahu pole hodnota patří a hodnota v dotyčném rozsahu je pak navýšena o 1. Zároveň se zvýší o 1 hlavní počitadlo $pp, které tak aktuálně vytváří sumu všech v cyklu prošlých počitadel v poli. • Dosáhne-li hlavní počitadlo $pp 99% hodnoty počtu všech buněk pole hodnot IE (druhá fáze ořezání), je cyklus ukončen. • Pole počitadel převedeno na datový soubor kde v prvním sloupci je počet energií a ve druhém sloupci pak počátek IE rozsahu vzorku. Na prvním řádku v dalších sloupcích základního histogramu jsou přidány hodnoty energie také pro „custer representativeÿ, „most stableÿ a „medianÿ s konstantní výškou. Pozor: tyto hodnoty jsou zobrazeny pouze pro informaci kde se v histogramu nacházejí. Jejich výška (osa y - pairs) tak není zobrazením jejich počtu. • Takto vytvořený datový soubor je uložen jako zdroj dat pro program Gnuplot. • Vytvoření skriptu (souboru). Tento skript potřebuje program Gnuplot pro generování obrázku histogramu. V podstatě jsou to parametry pro Gnuplot jak má histogram vypadat a kde má najít soubor dat vytvořený v předchozích fázích algoritmu. • Zavolání programu Gnuplot a vygenerování obrázku histogramu ve formátu png. User setting of histogram se liší tím, že pokud uživatel zadá rozsah minimální a maximální energie (start range a end range), pak se obě výše zmíněné fáze ořezání neprovedou a rozsah minimální energie a maximální energie je tak přesně stanoven uživatelem. Jinak se zpracování uživatelsky zadaného histogramu neliší. Energie jsou v databázi uloženy v jednotkách kcal/mol zaokrouhlena na 3 desetinná místa a do ostatních jednotek jsou převáděny během funkce vytváření histogramu. Pokud se histogram nezobrazí a místo něj se ukáže text např. Graph: no data (table PM6DH not exist), pak je tabulka energií pro danou metodu prázdná nebo neexistuje (data nejsou dosud k dispozici).
27
Zde je příklad obsahu takového skriptu: #skript pro vytvoření obrázku (.png) grafu programem gnuplot set terminal png size 1006, 350; # gnuplot recommends setting terminal before output # The output filename; to be set after setting: set output "/home/viktor/WWWserv/SCIA/tmp/img_graf_Ala-Ala_A03CAu1.png"; set title "Histogram: Ala/Ala"; set style data histogram; set style histogram cluster gap 1; set style fill solid border 1; # -1 set xzeroaxis; set yzeroaxis; # zobraz osu y set xlabel "Interaction energy ( kcal/mol )"; set ylabel "pairs (6850)"; #set style data lines; # kreslení dat spojitou čarou další :dots (tečky),boxes ,impulses(svislé čáry),steps set style data boxes; plot "/home/viktor/WWWserv/SCIA/tmp/data_graf_Ala-Ala_A03CAu1.dat" using 2:1 title "Method: A03CA ", \ "/home/viktor/WWWserv/SCIA/tmp/data_graf_Ala-Ala_A03CAu1.dat" using 4:3 title "Cluster.rep" with impulses, \ "/home/viktor/WWWserv/SCIA/tmp/data_graf_Ala-Ala_A03CAu1.dat" using 6:5 title "Most stable" with impulses, \ "/home/viktor/WWWserv/SCIA/tmp/data_graf_Ala-Ala_A03CAu1.dat" using 8:7 title "Median" with impulses; replot;
Příklad části datového souboru: 1 -1.123 181 -0.19 181 -1.12 181 -0.52 2 -1.112078 0 -1.101156 0 -1.090234 4 -1.079312 1 -1.06839 2 -1.057468 4 -1.046546 2 -1.035624 2 -1.024702 6 -1.01378 6 -1.002858 13 -0.991936 . . .
Na výše uvedeném kousku datového souboru je vidět v prvním sloupci počet jednotlivých energií a ve druhém pak počátek rozsahu vzorku. První řádek případně obsahuje další sloupce pro zobrazení energií „cluster represenativeÿ, „most stableÿ a „medianÿ. Podrobnější informace o aplikaci Gnuplot lze také získat např. na stránkách: http://www.gnuplot.info/ 5.2.3.
Alternativa k algoritmu
Jak bylo uvedeno v algoritmu, 1. a 2. fáze ořezání umožňují uspokojivé zobrazení histogramů pro většinu párů z důvodu některých přehnaných hodnot IE, které mohou způsobit, že zobrazený histogram nenese užitečnou informaci. 28
Pokud by se vytvořila tabulka s mezními maximálními hodnotami interakčních energií pro každý pár, nebylo by třeba takto empirickým ořezáváním připravovat základní histogram. Výhodou by bylo, že základní histogramy by pak pro každý pár aminokyselin měli stanovenu maximální IE ještě lépe a intervaly pro každou metodu výpočtu by mohly byly stejné. Přepínáním mezi metodami v panelu by zůstával stejný rozsah hodnot na ose x a bylo by tak ještě lepší srovnání histogramů mezi jednotlivými metodami. Nevýhodou je však fakt, že by se musela tato tabulka vytvořit ručně. Obsahovala by sice 400 hodnot maximálních hodnot IE, ale tyto hodnoty pro každý pár by se museli porovnávat s každou metodou výpočtu, tedy 400x5 tj. 2000 srovnání. Totéž by se pak, pro ještě lepší přesnost, muselo udělat kdyby se vytvořila tabulka minimálních IE.
5.3.
MonoDevelop
MonoDevelop [15] je vývojové prostředí primárně určené pro programovací jazyk C# a další .NET jazyky. MonoDevelop umožňuje vývojářům rychle psát desktopové a ASP.NET webové aplikace pro operační systém (OS) Linux, Windows a Mac OS X. MonoDevelop usnadňuje vývojářům aplikací na platformě .NET vytvořené ve Visual Studiu přechod do Linuxu a udržovat jedinou kódovou základnu pro všechny platformy. Vývojové prostředí MonoDevelop bylo v aplikaci SCIA využito pro tvorbu krátkých programů v jazyce C#, které prováděly konverzi původních datových souborů na lépe strukturované soubory. Takto upravené soubory byly snadno použitelné pro import dat do databáze MySQL. Dalším příkladem použití je hromadné kopírování obrázků a datových souborů pro aplet Jmol zároveň s jejich přejmenováním, či pomoc při vytvoření skriptu pro Jmol na generování obrázků molekul. Některé uvedené příklady je možné si prohlédnout v příloze A na konci tohoto dokumentu.
5.4.
PHP
PHP je široce užívaný skriptovací jazyk, který je především určen pro vývoj dynamických webových aplikací. PHP kód se může přímo vkládat do HTML, XHTML, WML stránek, nebo samostatných souborů (s příponou php). Zkratka PHP znamená Hypertext Preprocessor, původně Personal Home Page. Při použití PHP pro dynamické stránky jsou skripty prováděny na straně serveru a k uživateli je přenášen až výsledek jejich činnosti, tedy například už jen HTML stránka bez kódu PHP.
29
5.5.
XHTML
XHTML (zkratka anglického extensible hypertext markup language - „rozšiřitelný hypertextový značkovací jazykÿ) je značkovací jazyk pro tvorbu hypertextových dokumentů v prostředí WWW vyvinutý World Wide Web Consortium (W3C). Původně se předpokládalo, že se stane nástupcem jazyka HTML, jehož vývoj byl verzí 4.01 ukončen. V roce 2007 však došlo k založení pracovní skupiny, která má za cíl vytvořit novou verzi HTML, která ponese označení HTML 5 a její XML variantu XHTML 5. Vedle toho paralelně pokračuje i vývoj XHTML 2.0. [19]
30
6.
Instalace a údržba
6.1.
Požadavky na systém
Instalace kompletního systému, na kterém běží aplikace SCIA vyžaduje znalejšího uživatele operačního systému Linux. Při vývoji aplikace byly použity dva počítače. Jeden pro samotný vývoj a druhý jako testovací trvale zapojený webový server. Tento testovací webový server má tuto základní konfiguraci: • dvou-jádrový procesor intel Atom • paměť RAM 2GB • pevný disk SATA 250GB • operační systém Linux (distribuce Kubuntu 11.04) Velikost webového sdresáře /SCIA se pohybuje kolem 70 MB a velikost databázových souborů obsahujícího data pro dvě metody je asi 120 MB (v adresáři /var/lib/mysql/). Konfigurace je uvedena hlavně pro ilustraci na jak výkonném systému lze aplikaci provozovat s rozumnou odezvou webové části aplikace. Následující stručné kroky instalace popisují instalaci na PC bez operačního systému (OS).
6.2.
Instalace OS a potřebných programů
• stažení a intalace OS Linux (např. http://www.kubuntu.org/getkubuntu/download
distribuce
• instalace následujících programů (např. v konzoli) – apt-get install gnuplot – apt-get install apache2 – apt-get install mysql-client – apt-get install mysql-server – apt-get install php5 – apt-get install php5-mysql – apt-get install gphpedit
31
Kubuntu)
6.3.
Nastavení adresářů, kopírování souborů
• otevřít konfigurační soubor apache2: /etc/apache2/sites-available/default • upravit a doplnit v něm nastavení webového adresáře: (pokud je adresář webového serveru jiný než je základní nastavení) např:
AllowOverride all Order allow,deny Deny from all Tím se nastaví umístění adresáře webového serveru a zakáže prohlížení souboru z prohlížečů. • další nastavení serveru je možné v souboru /etc/apache2/apache2.conf • pak provést restart apache2 příkazem v konzoli: /etc/init.d/apache2 restart (nebo ještě lépe restartovat počítač) • zkopírovat (rozbalit archív) z DVD aplikaci scia (adresář SCIA) do webového adresáře serveru • vytvořit či změnit nastavení adresáře /SCIA/tmp pro zápis! (jinak nebude funkční např. generování histogramů) Již po instalaci webového serveru apache2 by po zadání vlastní IP adresy (nebo 127.0.0.1) ve webovém prohlížeči měla zobrazit stránka obsahující text ”It works!”. Po zadání 127.0.0.1\SCIA by se měla zobrazit úvodní stránka webové aplikace SCIA.
6.4.
Nastavení a vytvoření databáze
Nejprve je třeba v konzoli vstoupit pomocí příkazu cd do adresáře /createdb kde jsou uloženy skripty a data pro vytvoření databáze. Například: cd /path/createdb/ (za slovo path je třeba zadat skutečnou cestu) 32
• vytvoření databáze scia pomocí skriptu createdbSCIA.sql: sudo mysql < /path/createdbSCIA.sql nebo: mysql -u root -p < /path/createdbSCIA.sql
kde root je administrátor PC. Vytváření databáze může chvíli trvat z důvodu vkládání většího množství dat. • je třeba upravit skript new account.sql otevřením v nějakém textovém editoru (např. kate): grant create, create temporary tables, delete, execute, index, insert, lock tables, select, show databases, update, drop on *.* to ’jméno’ identified by ’heslo’;
Zde přepsat ”jméno” a ”heslo” pro přístup do databáze, které bude užíváno aplikací SCIA. • uložit skript new account.sql • opět tento skript spustit: sudo mysql < /path/new_account.sql nebo: mysql -u root -p < /path/new_account.sql • Stejné jméno a heslo musí být /SCIA/codephp/confSCIA.php:
přepsáno
i
v
PHP
scriptu
//připojení k databázi: define ("DB_LOCALHOST", "localhost:3306"); //připojení k databázi define ("DB_USER", "jméno"); //uživatel (musí být nastaveno také v MYSQL !!!!) define ("DB_PASSWORD", "heslo"); // heslo do databáze (musí být nastaveno také v MYSQL !!!!)
6.5.
Kontrola databáze
Pokud se nevyskytly problémy, tak aplikace SCIA by měla být funkční. V mysql konzoli lze v případě problémů zkontrolovat databázi také. Postup: Spustit mysql v konzoli: mysql -u root -p (případně jen: sudo mysql ) kde ”root” je jméno administrátora. Postupně zadávat příkazy: • show databases; - vypíše tabulku databází a mezi nimi by běla být scia 33
• use scia; - vybere databázi scia • show tables; - vypíše tabulku všech tabulek v databázi • describe aminokyseliny; - popis tabulky aminokyseliny • describe A03CA; - popis tabulky A03CA • select * from aminokyseliny; - vypíše obsah tabulky aminokyseliny • select * from A03CA limit 5; - vypíše 5.řádků z tabulky A03CA Více příkazů lze najít v příloze B tohoto dokumentu, kde je ukázka vývojového skriptu pro vytvoření databáze scia nebo přímo otevřením souboru createdbSCIA.sql v nějakém textovém prohlížeči. Pro přidělování práv k databázi lze využít upravený soubor new account.sql.
6.6.
Webové prohlížeče a Jmol
Tato podkapitola se zabývá problémy se spouštěním apletů Jmol v některých webových prohlížečích a operačním systému Linux. Většina příkladů byla vyzkoušena v 64 bitové verzi linuxové distribuce Kubuntu. • Nejprve je potřeba stáhnout soubor jre-6u26-linux-x64.bin ze stránek: http://www.java.com/en/download/linux manual.jsp?locale=en • soubor jre-6u26-linux-x64.bin uložit např. do svého domovského adresáře a změnit jeho atribut oprávnění na „ je spustitelnýÿ • provést instalaci spuštěním tohoto souboru v konzoli • v adresáři /mozilla/plugins/ /jre1.6.0 26/lib/amd64/libnpjp2.so
vytvořit
link
na
soubor
cd /usr/lib/mozilla/plugins/ sudo ln -s /home/path/jre1.6.0_26/lib/amd64/libnpjp2.so • je třeba restartovat webový prohlížeč Více informací o tomto problému lze získat také na adrese: http://www.mail-archive.com/
[email protected]/msg15259.html
34
6.7.
Údržba
Zvláštní pozornost vyžaduje adresář /tmp do něhož se ukládají dočasné soubory nutné pro generování obrázků histogramů. Každý obrázek má originální název, aby se obešlo „kešováníÿ internetových serverů, což se ukázalo jako problém při generování uživatelských histogramů. Z toho důvodu by se data mohly časem hromadit, protože je nelze okamžitě smazat dokud si je webové prohlížeče nestáhnou. Proto byla vytvořena funkce clearTmpFiles() nacházející se v souboru /codephp/confSCIA.php. Musí být hodně rychlá, aby nebrzdila už tak náročné generování histogramů. Funkce tedy nejprve jen spočítá soubory v adresáři /tmp. Jestliže její počítadlo nepřesáhne 500 souborů, její činnost se ukončí a pokračuje normální generování stránky Pair Specific Data. Pokud však její počitadlo dosáhne 500, dále už nepočítá a pokračuje druhá část funkce, která začne mazat soubory starší než 10 minut (600 sekund). Tak se dosáhne relativní rychlosti mazání souborů, a tím že se mažou soubory starší 10-ti minut, se zabrání konfliktu s aktuálně generovanými soubory jiných uživatelů. Funkce je sice automaticky spouštěná na počátku generování stránky Pair Specific Data, ale na administrátorské stránce (položka menu File system) je možné ručně mazat adresář /tmp také.
35
Závěr V průběhu řešení této bakalářské práce byly zprovozněny webové stránky SCIA určené pro: • prezentaci databáze interakčních energií mezi vedlejšími řetězci aminokyselin v proteinech, • srovnáním hodnot interakčních energií vypočítaných pomocí různých metod výpočetní chemie umožňuje jejich vzájemné porovnávání pro výpočty interakcí v proteinech, • vizualizaci struktury nejčastějších párů mezi jednotlivými vedlejšími řetězci pomocí aplikace Jmol, • vizualizaci distribuce interakčních energií pro jednotlivé páry pomocí interaktivních nastavitelných histogramů s volitelnou metodou výpočtu interakčních energií, rozsahu hodnot, vzorkování a zobrazenou jednotkou.
36
Conclusions The results of this bachelor thesis coclude in the preparation of the web pages SCIA (Side-Chain Interaction Atlas). SCIA is intended to be used as: • a presentation web page for the protein side-chain interaction energy database, • a platform for the comparison of several computational chemistry methods, which are usually used in study of proteins, • a visualization platform for the study of typical motifs of interaction pairs of side chains in proteins using Jmol applet, • a visualization of the distribution of interaction energies for individual sidechain pairs using interactive histograms wit user defined range of values, method of computation of the interaction energies and also units of energy.
37
Reference [1] Donald Voet a Judith G. Voetová. Biochemie. Victoria Publishing, Praha, 1990. [2] Protein DataBank http://www.pdb.org (1.8.2011) [3] Berka, K.; Laskowski, R.; Riley, K. E.; Hobza, P.; Vondrasek, J. Representative Amino Acid Side Chain Interactions in Proteins. A Comparison of Highly Accurate Correlated ab Initio Quantum Chemical and Empirical Potential Procedures. J. Chem. Theory Comput. 2009, 5 ( 4) 982 - 992 [4] Berka, K.; Laskowski, R. A.; Hobza, P.; Vondrasek, J. . Energy Matrix of Structurally Important Side-Chain/Side-Chain Interactions in Proteins. J. Chem. Theory Comput. 2010, 6, 2191–2203 [5] Řezáč, Jan; Jurečka, Petr; Riley, Kevin E; Černý, Jiří; Valdes, Haydee; Pluháčková, Kristýna; Berka, Karel; Řezáč, Tomáš; Pitoňáka, Michal; Vondrášek, Jiří and Hobza, Pavel. Quantum Chemical Benchmark Energy and Geometry Database for Molecular Clusters and Complex Molecular Systems (www.begdb.com): A Users Manual and Examples. Collect. Czech. Chem. Commun. 2008, 73, 1261-1270 [6] The UniProt Consortium. The universal protein resource (UniProt). Nucleic Acids Res. 2008, 36, D190-D195. [7] Bernstein,F.C., Koetzle,T.F., Williams,G.J., Meyer,E.F., Brice,M.D., Rodgers,J.R., Kennard,O., Shimanouchi,T. and Tasumi,M. The Protein Data Bank: a computer-based archival file for macromolecular structures. J. Mol. Biol. 1977, 112, 535-542. [8] Berman,H.M., Westbrook,J., Feng,Z., Gilliland,G., Bhat,T.N., Weissig,H., Shindyalov,I.N. and Bourne,P.E. The Protein Data Bank. Nucleic Acids Res. 2000, 28, 235-242. [9] Berman,H., Henrick,K., Nakamura,H. and Markley,J.L. The worldwide Protein Data Bank (wwPDB): ensuring a single, uniform archive of PDB data. Nucleic Acids Res. 2007, 35, D301-D303. [10] Beck, D. A. C. Jonsson, A. L. Schaeffer, R. D. Scott, K. A. Day, R. Toofanny, R. D. Alonso, D. O. V.; Daggett, V. Dynameomics: mass annotation of protein dynamics and unfolding in water by high-throughput atomistic molecular dynamics simulations. Protein Eng. Des. Sel. 2008, 21, 353-368.
38
[11] Kamp, M. W. Van der; Schaeffer, R. D. Jonsson, A. L. Scouras, A. D. Simms, A. M. Toofanny, R. D. Benson, N. C. Anderson, P. C. Merkley, E. D. Rysavy, S. Bromley, D. Beck, D. A. C.; Daggett, V. Dynameomics: A Comprehensive Database of Protein Dynamics. Structure. 2010, 18, 423-35. [12] Jmol: an open-source Java viewer for chemical structures in 3D. http://www.jmol.org (1.8.2011) [13] Nathan Silva and David Marcey. An Introduction to Jmol* Scripting**, 2007. http://www.callutheran.edu/BioDev/omm/scripting/molmast.htm (1.8.2011) [14] Gnuplot http://www.gnuplot.info/ (1.8.2011) [15] MonoDevelop http://monodevelop.com/ (1.8.2011) [16] Timothy Boronczyk, Elizabeth Naramore, JasonGerner, Yann Le Scouarnec, Jeremy Stolz, Michael K.Glass PHP6,MySQL, Apache, Vytváříme webové aplikace. Computer Press, a.s.,Brno, 2009. [17] Jakub Vrána. 1001 tipů a triků pro PHP. Computer Press, a.s.,Brno, 2010. [18] http://cs.wikipedia.org/wiki/PHP (1.8.2011) [19] http://cs.wikipedia.org/wiki/Extensible HyperText Markup Language (20.7.2011) [20] Amadeo Mareš. 1001 tipů a triků pro C#. Computer Press, a.s.,Brno, 2008.
39
A. A.1.
Příklady pomocných programů v jazyce C# Konverze původních datových souborů
using System; using System.IO; namespace crConvert { class MainClass { public static void Main (string[] args) { string cesta="//home//viktor//Scia//DATA_4_SCIA//"; Console.WriteLine ("Vyhledávám soubory. Čekejte prosím..."); string starýTxt="Mat_RIDFTD_090219.csv"; Console.Clear (); string novýTxt="Mat_RIDFTD_090219.txt"; if (File.Exists (novýTxt )) File.Delete (novýTxt); StreamWriter sw= new StreamWriter (novýTxt); StreamReader sr= new StreamReader(cesta+starýTxt); string řádek=""; int i=0; string[] záhlaví= sr.ReadLine ().Split (’,’); while (řádek != null) { string novýřádek; řádek=sr.ReadLine (); string[] tělo; if (řádek == null) break ; tělo= řádek.Split (’,’); for (int j=1;j
40
A.2.
Generování obrázků molekul
Pomocný program v jazyce C# jež vytváří část skriptu pro aplikaci Jmol pro hromadné generování obrázků molekul: using System; using System.IO; namespace JmolPic { class MainClass { public static void Main (string[] args) { string cesta="/home/viktor/WWWserv/SCIA/Jmol/jmoldata/"; Console.WriteLine ("Vyhledávám soubory. Čekejte prosím..."); string[]strFiles=Directory.GetFiles (cesta,"*.pdb",SearchOption.AllDirectories ); Console.Clear (); string newfilename="/home/viktor/Scia/JmolPic/jmoldata.txt"; StreamWriter jfil= new StreamWriter(newfilename); string strLoad=""; for (int i=0;i<strFiles.Length ;i++) { strLoad= "load /*file*/\""+ strFiles[i]+"\";"; jfil.WriteLine (strLoad); jfil.WriteLine ("_setModelState;"); jfil.WriteLine ("write IMAGE PNG 2 \""+Path.GetDirectoryName(newfilename)+"/" +(Path.GetFileName(strFiles[i])).Replace(".pdb",".png") +"\";"); jfil.WriteLine (); Console.WriteLine (Path.GetDirectoryName(newfilename)+"/" +Path.GetFileName(strFiles[i])); } jfil.Close(); } } }
41
B. B.1.
MySQL skripty Ukázkový skript MySQL použitý při vývoji databáze scia
#spuštění skriptu sql: #mysql [-u uživatel] [-p]
#select * from aminokyseliny; #výpis celé tabulky #select * from aminokyseliny order by pismeno; create table units (
42
IDunit TINYINT not null auto_increment primary key,unitname varchar(30) UNIQUE KEY, ucons DOUBLE UNIQUE KEY, ux varchar(30), size TINYINT not null, round TINYINT not null ) type=InnoDB; insert into units values (null,’kcal/mol’,1,’’,11,1), (null,’cm<sup>-1 ’,349.75,’’,9,0), (null,’kJ/mol’,4.184,’’,10,1), (null,’eV’,0.04336,’’,10,2), (null,’h’,1.59,’x1000’,8,2), (null,’erg’,6.948,’x10<sup>-14’,9,1);
create table A03CA ( aminoacid1 TINYINT not null, aminoacid2 TINYINT not null,c_paru INTEGER not null, struct TINYINT not null AUTO_INCREMENT, e1 DOUBLE, e2 DOUBLE, e3 DOUBLE, dist1 DOUBLE, dist2 DOUBLE,cas TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(aminoacid1, aminoacid2, c_paru, struct) ) type=MyISAM; create table OPLSCA ( aminoacid1 TINYINT not null, aminoacid2 TINYINT not null,c_paru INTEGER not null, struct TINYINT not null AUTO_INCREMENT, e1 DOUBLE, e2 DOUBLE, e3 DOUBLE, dist1 DOUBLE, dist2 DOUBLE,cas TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY(aminoacid1, aminoacid2, c_paru, struct) ) type=MyISAM; #show tables; #zobrazit všechny tabulky #describe A03CA; #zobrazit strukturu tabulky #select * from A03CA; #výpis celé tabulky #select * from A03CA where aminoacid1=1 AND aminoacid2=1 AND c_paru=2; create table surf ( aminoacid1 TINYINT not null, aminoacid2 TINYINT not null,c_paru INTEGER not null, ses double, sas double, sesvol double, PRIMARY KEY(aminoacid1, aminoacid2, c_paru) ) type=InnoDB; #select * from surf where aminoacid1=1 AND aminoacid2=1 AND c_paru=2; create table struct ( aminoacid1 TINYINT not null, aminoacid2 TINYINT not null,c_paru INTEGER not null, struct TINYINT not null, atom TINYINT not null, atom_name varchar(4),molekule varchar(3),c_mol TINYINT not null, x double, y double, z double, PRIMARY KEY(aminoacid1, aminoacid2, c_paru, struct, atom) ) type=InnoDB; create table methods ( tab_name varchar(30) not null primary key, met_name varchar(30) UNIQUE KEY, crtab_name varchar(30) UNIQUE KEY, des varchar(64000) UNIQUE KEY ) type=InnoDB; insert into methods values
43
(’A03CA’,’parm03 Ca-only ff’,’crA03CA’,’FAQ/methods.html#A03CA’), (’OPLSCA’,’OPLS Ca-only ff’,’crOPLSCA’,’FAQ/methods.html#OPLSCA’), (’PM6DH’,’PM6-DH’,’crPM6DH’,’FAQ/methods.html#PM6DH’), (’RIDFTD’,’RI-DFT-D’,’crRIDFTD’,’FAQ/methods.html#RIDFTD’), (’SCCDFTBD’,’SCC-DFTB-D’,’crSCCDFTBD’,’FAQ/methods.html#SCCDFTBD’); select * from methods; create table crA03CA ( amac1 varchar(5) not null,amac2 varchar(5) not null, PRIMARY KEY(amac1, amac2 ) ) type=InnoDB;
e3 double,
create table crOPLSCA ( amac1 varchar(5) not null,amac2 varchar(5) not null, e3 double, PRIMARY KEY(amac1, amac2 ) ) type=InnoDB; create table crPM6DH ( amac1 varchar(5) not null,amac2 varchar(5) not null, e3 double, PRIMARY KEY(amac1, amac2 ) ) type=InnoDB; create table crRIDFTD ( amac1 varchar(5) not null,amac2 varchar(5) not null, PRIMARY KEY(amac1, amac2 ) ) type=InnoDB; create table crSCCDFTBD ( amac1 varchar(5) not null,amac2 varchar(5) not null, PRIMARY KEY(amac1, amac2 ) ) type=InnoDB;
e3 double,
e3 double,
#načtení dat do load data local into table load data local into table load data local into table load data local into table load data local into table load data local into table
databáze z připravených souborů: infile ’/home/viktor/Scia/surfy.txt’ surf fields terminated by ’;’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/Mat_A03CA_090219.txt’ crA03CA fields terminated by ’\t’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/Mat_OPLSCA_1.txt’ crOPLSCA fields terminated by ’\t’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/Mat_DFTBD_1.txt’ crSCCDFTBD fields terminated by ’\t’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/Mat_PM6DH_090219.txt’ crPM6DH fields terminated by ’\t’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/Mat_RIDFTD_090219.txt’ crRIDFTD fields terminated by ’\t’ lines terminated by ’\n’;
load data into load data into load data into
infile ’/home/viktor/Scia/DATA_4_SCIA/CLUREP.OLD.csv’ crA03CA fields terminated by ’\t’ lines terminated by ’\n’ ignore 1 lines; infile ’/home/viktor/Scia/DATA_4_SCIA/A03CA_B.txt’ A03CA fields terminated by ’;’ lines terminated by ’\n’; infile ’/home/viktor/Scia/DATA_4_SCIA/C27CA_B.txt’ OPLSCA fields terminated by ’;’ lines terminated by ’\n’;
local table local table local table
#kontrolní výpisy:
44
show tables; #zobrazit všechny tabulky select * from aminokyseliny; #výpis celé tabulky; select count(*) from aminokyseliny; select * from units; #výpis celé tabulky; select count(*) from units; select * from A03CA limit 3; select count(*) from A03CA; select * from crA03CA limit 3; select count(*) from crA03CA; select * from crOPLSCA limit 3; select * from crPM6DH limit 3; select * from crRIDFTD limit 3; select * from crSCCDFTBD limit 3; select * from methods; select * from struct limit 3; select * from surf limit 3; select count(*) from surf; select * from viewA03CA limit 3; select count(*) from viewA03CA; #počty párů select * from (select aminoacid1 as ac1, aminoacid2 as ac2, group by aminoacid1, aminoacid2) as A03CAcp order by #výpis most stable select * from (select aminoacid1 as ac1, aminoacid2 as ac2, group by aminoacid1, aminoacid2) as A03CAcp order by
count(*) as pairs from A03CA pairs; min(e3) as pairs from A03CA ac1 , ac2;
#výpis most stable se zkratkami aminoacid select am1.zkratka, am2.zkratka, energy from (select * from (select aminoacid1 as ac1, aminoacid2 as ac2, min(e3) as energy from A03CA group by aminoacid1, aminoacid2) as tabmet order by ac1) as tbl , aminokyseliny as am1, aminokyseliny as am2 where am1.IDaminokyseliny=ac1 AND am2.IDaminokyseliny=ac2;
B.2.
Oprávnění k přístupu do databáze
Následující krátký skript pak přiděluje oprávnění webové aplikaci (uživatel ’wwwserv’, heslo ’sima’) k přístupu do databáze: grant create, create temporary tables, delete, execute, index, insert, lock tables, select, show databases, update, drop on *.* to ’wwwserv’ identified by ’sima’;
Pozor!!! Stejné jméno a heslo musí být i v PHP scriptu confSCIA.php: //připojení k databázi: define ("DB_LOCALHOST", "localhost:3306"); //připojení k databázi define ("DB_USER", "wwwserv"); //uživatel (musí být nastaveno také v MYSQL !!!!) define ("DB_PASSWORD", "sima"); // heslo do databáze (musí být nastaveno také v MYSQL !!!!) . . .
45
C.
Obsah přiloženého CD
doc/ Dokumentace práce ve formátu PDF, vytvořená dle závazného stylu KI PřF pro diplomové práce, včetně všech příloh, a všechny soubory nutné pro bezproblémové vygenerování PDF souboru dokumentace (v ZIP archivu), tj. zdrojový text dokumentace, vložené obrázky, apod. src/ Kompletní zdrojové texty webové aplikace SCIA se všemi potřebnými zdrojovými texty a dalšími soubory. Jsou obsaženy v ZIP archivu SCIA.zip včetně adresářové struktury pro zkopírování na webový server. readme.txt Instrukce pro nasazení webové aplikace SCIA na webový server, včetně požadavků pro její provoz, a webová adresa, na které je aplikace nasazena pro testovací účely a pro účel obhajoby práce. Navíc CD/DVD obsahuje: data/ Ukázková a testovací data použitá v práci a pro potřeby obhajoby práce. Jsou obsaženy v souboru createdb.zip ve formě SQL skriptů (přípona sql) a datových souborů (přípona txt) pro vytvoření a naplnění MySQL databáze.
46