Úvodcloákriptování Petr Kulhánek kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno C2110 Operační systém UNIX a základy programování ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^mz_\ - > Skripty skripty versus programy, editory, spouštění > GNUPIot příkazy, terminály > BASH proměnné, řídící struktury > Praktický příklad průběh výpočtu volné energie pomocí metadynamiky C2110 Operační systém UNIX a základy programování - 2 - Skripty > programy versus skripty > jak psát skripty > spouštění skriptů C2110 Operační systém UNIX a základy programování - 3 - Program je soubor strojových instrukcí zpracovávaných přímo procesorem. Program vzniká překladem zdrojového kódu programovacího jazyka. Překládané jazyky: • C/C+ + • Fortran zdrojový kod '".,„ program překlad (kompilace) vstup výstup Skript je textový soubor obsahující příkazy a řídící sekvence, které jsou vykonávány interpreterem použitého skriptovacího jazyka. Skriptovací jazyky: • bash • gnuplot • awk • JavaScript • PHP vstup skript interpreter výstup C2110 Operační systém UNIX a základy programování - 4- • snadná optimalizace • rychlé vykonávání • nevyžaduje rekompilaci • vytváření samospustitelného kódu • špatná optimalizovatelnost • nutnost rekompilace • nelze vytvářet samospustitelný ! # pomalejší vykonávání kód zdrojový kod vstup '".,„ program překlad (kompilace) výstup skript interpreter vstup výstup C2110 Operační systém UNIX a základy programování - 5 - Jelikož jsou skripty textové soubory, lze použít libovolný textový editor umožňující uložení textu v čisté formě (bez formátovacích metadat). Textové editory: • vi • kwrite • kate • gedit K psaní scriptů lze používat i specializované vývojové prostředí - IDE (Integrated Development Enviroment). IDE obsahuje kromě editoru i správce projektu, ladící nástroje (debugger) a další. Většinou dostupné pro komplexnější jazyky: JavaScript, Python, PHP, atd. Vývojové prostředí: • kdevelop • NetBeans • Eclipse C2110 Operační systém UNIX a základy programování - 6- 1) Nepřímé spouštění Spouštíme interpreter jazyka a jako argument uvádíme jméno skriptu. $ bash muj_skript_v_bashi $ gnuplot muj_skript_v_gnuplotu Skripty nemusí mít nastaven příznak x (executable). 2) Přímé spouštění Spouštíme přímo skript (shell automaticky spustí interpreter). $ ./mujskriptvbashi $ ./mujskriptvgnuplotu Skripty musí mít nastaven příznak x (executable) a interpreter (součást skriptu). C2110 Operační systém UNIX a základy programování - 7 - Specifikace interpreteru (první radek skriptu): #!/absolutní/cesta/k/interpreteru/skriptu Skript v bashi Skript v gnuplotu #!/bin/bash echo "Toto je skript v bashi! #!/usr/bin/gnuplot set xrange[0:6] plot sin(x) pause -1 • Pokud není interpreter skriptu při jeho přímém spuštění uveden, použije se interpreter shellu. • Interpreter uvedený ve skriptu se ignoruje při nepřímém spuštění. C2110 Operační systém UNIX a základy programování - 8- Spouštíme přímo skript (shell automaticky spustí interpreter). $ ./mujskript musí mít nastaven příznak x (executable) $ chmod u+x muj_skript_v_gnuplotu Cesta (relativní či absolutní) ke skriptu je uvedena. Systém spustí uvedený soubor. $ mujskript Cesta ke skriptu není uvedena. Shell hledá skript v adresářích určených systémovou proměnnou PATH. C2110 Operační systém UNIX a základy programování -9 - GNUPIot > úvod, interaktivní mód > základní příkazy > typy terminálů DMP + H20, free energy [kcal/mol] http://www.gnuplot.info/ 3.5 u) 2.5 G 1.5 100 80 60 40 20 -2-10 1 DD 14-16/16-7 [A] C2110 Operační systém UNIX a základy programování - 10- GNUPIot slouží k vykreslování 2D a 3D grafů umožňující práci v interaktivním tak i skriptovacím režimu. Interaktvní mód $ gnuplot GNUPLOT Version 4.2 patchlevel 2 last modified 31 Aug 2007 System: Linux 2.6.24.5-laptop-2mnb Copyright (C) 1986 - 1993, 1998, 2004, 2007 Thomas Williams, Colin Kelley and many others Type shelps to access the on-line reference manual. The gnuplot FAQ is available from http://www.gnuplot.info/faq/ Send bug reports and suggestions to Terminal type set to 'xll' gnuplot> příkazová řádka gnuplotu C2110 Operační systém UNIX a základy programování - 11 - set title "graph title" nastaví název grafu set xrange[min_value:max_value] nastaví rozsah x-vé osy set yrange[min_value:max_value] nastaví rozsah y-vé osy set n o key nezobrazí legendu k datovým řadám plot "file.dat" using x_column_id:y_column_id with lines title "data title" zobrazí XY graf zobrazující data ze souboru file.dat pause -1 čeká na zmáčknutí klávesy C2110 Operační systém UNIX a základy programování - 12 - Terminál určuje kam bude graf vykreslen. set term xll výstup je vykreslen do okna set term png size 800,600 výstup je vykreslen jako obrázek ve formátu png set output "output.png" výstup bude uložen do souboru output.png C2110 Operační systém UNIX a základy programování - 13 - BASH > úvod, interaktivní mód > příkazy > proměnné > řídící struktury http://www.gnu.org/software/bash/ C2110 Operační systém UNIX a základy programování - 14- Praktický příklad > volná energie > metadynamika > znázornění průběhu výpočtu volné energie pomoci metadynamiky C2110 Operační systém UNIX a základy programování - 15 - > termodynamická veličina > stavová funkce (AA, AG) > určuje "užitečnou" práci NVT podmínky: Heimholtzova energie AA=AU-TAS NVp podmínky: Gibbsova energie AG=AH-TAS 8 S« - u: 1 1 ' 1 i ■ i ' i \ÄA*i ■ . /á^f \ f- 1 1 r i L \ í/. 1 i i i.i.i ó 7 K 9 Reaction Coordinate 10 11 Volná energie je spjata s rovnovážnou a rychlostní konstantou: AA =-RT\nK = -RT\n1 k K -1 k=K 1 h k T -^1 rvB± RT e C2110 Operační systém UNIX a základy programování - 16- \}V mi j\ Povrh volné energie je zaplňován Gaussovými funkcemi. Pohybové rovnice (molekulová dynamika) m d2xM dV{x d ť Ô X: I MTD časové závislý potenciál FA(s,/) = Í>,exp~ 2al t=\ Pohybové rovnice metadynamiky (přímý přístup) m.. Ô2Xi{t)_ Q V(x+Vh(x,i 1 dť dxt Časově závislý potenciál konverguje k volné energii A(s) = lim-Vh(i,s) l —>oo Laio, A.; Parrinello, M. Proc. Natl. Acad. Sei. U.S.A. 2002, 99, 12562-12566. C2110 Operační systém UNIX a základy programovaní - 17 - PMFLib - MTD E 4 % $ 2 4 5 6 7 8 reaction coordinate [A] výška 0.01 kcal/mol, šířka 0.5 Á MTD frekvence 500 fs 1 ns dlouhá simulace 300 K, vakuum, silové pole GAFF, časový krok 0.5 fs 10 i Ô> «? ^ / DIS (vzdálenost) C2110 Operační systém UNIX a základy programování - 18- 1) Výpočet odhadu volné energie z časově závislého MTD potenciálu $ module add pmflib $ mtd-energy --time 100 _meta.rst_meta.energy počet gaussiánů (parametr) \ odhad volné energie (výstup) MTD potenciál (vstup) _meta.rst obsahuje 2) Vykreslení grafu s odhadem volné energie 3) Skript v bashi, který bude postupně počítat odhad volné energie a vykreslovat její graf pro rostoucí počet gaussiánů 4) Vytvoření finální animace C2110 Operační systém UNIX a základy programování -19- 2) Vykreslení grafu s odhadem volné energie plot 'jneta.energy1 using 1:2 with lines 3) Skript v bashi, který bude postupně počítat odhad volné energie a vykreslovat její graf pro rostoucí počet gaussiánů for((T=10;T<1000;T+ = 10)) do done 4) Vytvoření finální animace $ module add mplayer MEncoder tutorial: http://www.cscs.ch/~mvalle/mencoder/mencoder.html 5) Přehrání animace $ module add mplayer $ mplayer output.avi C2110 Operační systém UNIX a základy programování - 20 - Domácí úkol Free energy [kcal/mol] dl [A] 11 Free energy [kcal/mol] 10 9 „ 8 < fN 7 TJ 6 5 4 ■ výška 0.01 kcal/mol, šířka 0.5 x 0.5 Á MTD frekvence 500 fs 2 ns dlouhá simulace 300 K, vakuum, silové pole GAFF, časový krok 0.5 fs ■ -10 5 6 7 8 9 10 11 dl [A] 2x DIS (vzdálenost) C2110 Operační systém UNIX a základy programování - 21 - Literatura > zdroje užitečných informací C2110 Operační systém UNIX a základy programování - 22 - GNUPIot Domovská stránka: http://www.gnuplot.info/ (dokumentace, tutoriály, zdrojové kódy) BASH Domovská stránka http://www.gnu.org/software/bash/ (dokumentace, zdrojové kódy) Bash Guide for Beginners http://tldp.Org/guides.html#bbg Advanced Bash-Scripting Guide http://tldp.0rg/guides.html#abs Bash očima Bohdana Milara http://knihy.root.cz/kniha/bash-ocima-bohdana-milara/ C2110 Operační systém UNIX a základy programování - 23 - Poděkování C2110 Operační systém UNIX a základy programování - 24 -