Labtutorials.org

Archive for the ‘bioinfo’ Category

Mire jó a „cső” karakter?

In bioinfo, bioinformatics, bioinformatika on June 6, 2018 at 1:45 pm

A „W” billentyű nem csupán egy betűt rejt, hanem egy másik, elég fontos karaktert is – ha az AltGr-rel együtt használjuk; a „|” („pipe” vagy „cső”) karakter ugyanis egy olyan, a UNIX-alapú operációs rendszerek egyik hasznos funkciójával rendelkezik, amely egyben rámutat e rendszerek kizárólagos előnyeire. A cső karakter egy parancs kimenetét egy újabb parancs bemenetévé alakítja, függetlenül attól, mekkora szövegtömbről is van szó (a UNIX rendszerekben nincs memóriakorlát, annyi memóriát használhatunk, amennyi csak van a számítógépünkben). Ezáltal egészen hosszú láncok, ún. „pipeline”-ok vagy „csővezetékek” építhetőek fel parancssorban, az adott feladatsornak megfelelően, és elkerülve a nagyszámú ideiglenes fájl létrehozását.

Ez jelenthet egészen egyszerű lépéseket is, pl. ha egy tömörített vagy átdolgozott szövegfájl első vagy utolsó sorait szeretnénk ellenőrizni, pl. zcat fajl.gz | head vagy sed ’s/ /\t/g’ fajl.txt | tail. Az előbbi példa egy kicsomagolt szövegfájl első 10 sorának parancssorban való megjelenítésére alkalmas, az utóbbi példa pedig egy szövegfájl „space” karaktereinek tabulátorokra való cseréje után az utolsó 10 sor megjelenítésére. Ezen a módon meglehetősen összetett dolgokat is ki lehet hozni az adatfájlokból: nemcsak karakterek cseréjére vagy bizonyos sorok kigyűjtésére alkalmas a parancsok egymás után fűzése, hanem gyakorlatilag bármilyen adattranszformáció vagy számítás megoldható ezen a módon. A csővezetékek (ill. a UNIX) további előnye, hogy az extrém nagy fájlokat is ugyanolyan hatékonyan kezelik, mint a kisebb fájlokat, és ciklus(ok)ba foglalva akár extrém sok azonos típusú fájlon is végrehajtható ugyanaz a feladat.

Emellett persze még ott van a párhuzamosítás lehetősége is, ha a fájlok csoportjait definiálva indítunk el párhuzamosan ciklusokat, amellyel megsokszorozhatjuk a feladat megoldásának sebességét, és tovább csökkenthetjük a várakozási és gépelési időt. Ha nemcsak bizonyos feltételeknek megfelelően strukturált fájlokat, hanem egységes fájlneveket és fájlrendszereket is használunk, tovább nő az automatizálhatóság lehetősége, amellyel nemcsak a gépelés mennyiségét, így pl. a gépelési hibákat küszöbölhetjük ki, hanem a munkaidőt tekintve is sokkal hatékonyabbak lehetünk. A parancsvégi „&” karakterrel háttérbe küldve a feladatokat új paramétereket tesztelhetünk, vagy új feladatokba is belekezdhetünk – nem lesz szükség a folyamatok felügyeletére, csak a végeredményt, a végső fájlokat kell ellenőriznünk.

Létezik ezen felül egy „nohup” (no hangup) parancs is, amelyet a csővezetékünk elé írva az internetkapcsolat bontásakor sem áll majd le a feladat; bár ez ciklusok esetében csak akkor alkalmazható, ha azokat Shell szkriptekbe építjük.

Így vagy úgy, de egy nagyon hasznos parancsról van szó, amely megengedi, hogy a szerver tovább dolgozzon akkor is, ha már nem vagyunk jelen. Ez különösen akkor fontos, ha napokig-hetekig fut valami, és nem rendelkezünk feladatütemezővel. Ami már egy másik történet…

 

EEM (1)
Az Emberi Erőforrások Minisztériuma ÚNKP-17-3-IV-DE-140 kódszámú Új Nemzeti Kiválóság Programjának támogatásával készült.

Advertisements

UNIX alapok

In bioinfo, bioinformatics, bioinformatika on June 2, 2018 at 1:36 pm

A blognak bár nem célja programozásra tanítani az olvasót, úgy érzem, mégis ki kell térjek legalább egy alkalommal az általunk használt UNIX/LINUX (Shell) héjprogramozás alapszintű bemutatására és néhány alapvető parancs ismertetésére.

A UNIX (ejtsd: juniksz) egy közel 50 éve, 1969-ben létrehozott fejlesztői környezet, melyet Ken Thompson és Dennis Ritchei a Bell Laboratories-zal együttműködve, saját célra dolgozott ki. Bár sokak szerint furcsa dolog egy operációs rendszer nyelvét munkára bírni, az általa nyújtott lehetőségek pedig sok tekintetben elmaradhatnak az újabb, specializáltabb és magasabbszintű programnyelvek által nyújtott lehetőségektől – mint például a Python (Biopython), Perl vagy R programnyelvekétől, melyek 99%-ban lefedik a bioinformatikai programokat –, mégis nagyon hasznos eszközként kell tekintsünk rá. Nemcsak azért, mert könnyedén kiválthatjuk vele az Excel által kínált függvényeket, hanem azért is, mert ez egy szkriptnyelv, amely úgy működik, mintha csak szövegmanipulációra lett volna kitalálva. A bioinformatika pedig gyakorlatilag a nagy szövegfájlok (például szekvenciafájlok, táblázatok) feldolgozásának a tudománya. A UNIX által akár több millió sorból és/vagy oszlopból álló táblázatokat is hatékonyan kezelhetünk: alkalmazásával a feladatok végrehajtási ideje nagyságrendekkel lerövidülhet, és eltekinthetünk például attól a mindenki számára ismert problémától is, amikor a táblázatba foglalt értékeink dátummá alakulnak.

A UNIX fontos erénye, hogy kombinálható egyéb nyelvekkel. A SED (streamline editor) szövegszerkesztő és AWK „táblázatkezelő” például hamar a UNIX alapeszközeivé váltak, de egy R programnyelvben, kifejezetten bioinformatikai célra megírt elemző programot mint a DiffBind, is közvetlenül tudunk használni UNIX parancssorban (az Rscript parancs használatával). Egy UNIX platform egyszerre több felhasználónak képes munkafelületet biztosítani, és nagyszámú munkafolyamat egyidejű indítására is alkalmas. Az előző bejegyzésben bemutatott ngsdeb szerverünkön működő 236 (40+88+24+7×12) processzor lehetővé teszi azt is, hogy ezek a folyamatok párhuzamosan fussanak, más-más processzor igénybevételével, tovább gyorsítva így a felhasználók munkáját.

 A ngsdeb szerver több számítógép összekapcsolásából épül fel, melyeket node-oknak nevezünk. A bejelentkezést követően az ún. head (login) node-ra érkezünk, ahonnan munkánk megkezdése előtt – a házirend szabályai szerint – át kell lépjük valamelyik compute node-ra. Ehhez a következő karaktersort kell begépelni: ssh n001.

A korábbi, [username@admin ~]$ karaktersor helyett egy új sorban a [username@n001 ~]$ jelenik meg, amely továbbra is jelzi a felhasználónevünket, ill. hogy épp melyik node-ra jelentkeztünk át. A „~” karakter arra utal, hogy épp a /home könyvtárban tartózkodunk, a „$” (sorvég) karakter pedig arról árulkodik, hogy az előzőleg begépelt parancsunk befejeződött és újabb utasításokat adhatunk. Mivel a szervert használó munkacsoportok adatai más-más meghajtókon találhatóak, el kell jussunk a megfelelő könyvárig. No, de hogyan?

Azok számára, akik a terminál megnyitását követően már elveszettnek érzik magukat, nem tudják, hogyan tudnak lépegetni a mappák között, ill. hogyan tudnak fájlokat létrehozni, törölni vagy átmozgatni, összegyűjtöttem a legfontosabb UNIX parancsokat és azok magyarázatait:

pwd

pwd, azaz print working directory; kiírja a teljes elérési útját annak a könyvtárnak, ahol épp tartózkodunk; közvetlenül a bejelentkezést követően ez a /home/username könyvtárat fogja jelenteni

ls

kilistázza az adott mappa tartalmát (fájlokat és (akár al)könyvtárakat is egyaránt)

cd

cd, azaz change directory; begépelése után az adott könyvtárból elérhető alkönyvtár nevét megadva a kívánt könyvtárba léphetünk át (pl.: cd samples vagy cd samples/sample1 begépelésével egyből a samples könyvtárba, vagy a benne található sample1 könyvtárba juthatunk)

cd ..

visszatérés egy mappával „feljebb”; cd ../.. begépelésével pedig két mappával „feljebb”, stb.

mkdir

mkdir, azaz make directory;az mkdir all_samples begépelésével az aktuális könyvtárban létrehozhatunk egy új mappát all_samples néven

cp

cp, azaz copy paste; a cp sample1.bam ../. begépelésével a sample1.bam fájlt az eggyel „feljebb” található könyvtárba másolhatjuk át. A „../” után gépelt „.” karakter azt jelöli, hogy a megadott mappába szeretnénk másolni a fájlt. Amennyiben úgy szeretnénk áthelyezni, hogy új nevet is kapjon, a következő szerint kell eljárnunk: cp sample1.bam ../copy_of_sample1.bam

mv

mv, azaz move; a mv sample1.bam ../. begépelésével a sample1.bam fájlt egy könyvtárral „feljebb” mozgathatjuk, ugyanakkor a mv sample1.bam first_sample.bam paranccsal a sample1.bam fájlt az adott könyvtárban first_sample.bam-ra nevezhetjük át

rm

rm, azaz remove; rm sample1.bam begépelésével a sample1.bam törlésre kerül; egy könyvtár és annak teljes tartalmának törléséhez a -r kapcsolót is alkalmaznunk kell, pl.: rm -r samples

head

a head sample1.bed parancs kiírja a sample1.bed fájl első 10 sorát; head -25 sample1.bed pedig kiírja az első 25 sorát

tail

a tail sample1.bed parancs kiírja a sample1.bed fájl utolsó 10 sorát; tail -25 sample1.bed pedig kiírja az utolsó 25 sorát

cat

a cat sample1.bed kiírja a képernyőre a sample1.bed teljes tartalmát; ezt ebben a formában ritkán használjuk, inkább fájlok összefűzésére: cat sample1.bed sample2.bed sample3.bed > sample123.bed, amely a sample1-2-3.bed fájlok tartalmát egymás alá fűzi az általunk definiált sorrendben. A „>” karaktert követő fájlnevet tekinti a parancssor az újonnan létrehozott (vagy felülírt!) kimeneti fájl nevének

wc

wc, azaz word count; wc -l sample1.bed begépelésével a sample1.bed sorainak számát kapjuk meg

man

a man, azaz manual parancs használatával információt nyerhetünk arról, hogy egy adott parancs mire és milyen kapcsolókkal használható, pl. a man wc begépelésével megtudhatjuk, hogy a wc parancs a -w kapcsolóval együtt használva (man wc -w sample1.bed) kiírja, hogy a sample1.bed fájl hány szóból áll.

top

a top parancs kilistázza az aktuális node-on a felhasználók által elindított és épp futó job-okat

ps

a ps parancs begépelése információt nyújt csak az általunk elindított és futó job-okról az aktuális node-on

kill

a ps parancs által pl. „7698 pts/0”-ként kilistázott folyamatot, amely mondjuk a homer2 program futását jelöli, a kill 7698 pts/0 begépelésével a homer2 futását leállíthatjuk

exit

kilép az aktuális terminálból; ha valamelyik node-on tartózkodunk, akkor visszalép pl. a head node-ra

A fentiek alapján, ha szeretnénk megszámolni, hogy egy fájl első öt sora hány karakterből áll, megtehetjük azt, hogy a head -5 fájl.txt > fájl_v2.txt paranccsal létrehozunk egy új fájlt, amely csak a számunkra fontos 5 sort tartalmazza, majd a wc -m fájl_v2.txt paranccsal a képernyőre kiíratjuk az eredményt. Az átmeneti fájl (fájl_v2.txt) létrehozását azonban elkerülhetjük, munkánkat pedig meggyorsíthatjuk, ha a head és a wc parancsokat a megfelelő kapcsolókkal egy sorban alkalmazzuk: head -5 fájl_v2.txt | wc –m

Mit is csináltunk? Alkalmaztuk a „|”, azaz a „pipe” vagy „cső” karaktert, amely segítségével az első lépés kimenete lett a második bemenete.

Erről fog szólni a következő bejegyzés.

 

EEM (1)

Az Emberi Erőforrások Minisztériuma ÚNKP-17-3-IV-DE-140 kódszámú Új Nemzeti Kiválóság Programjának támogatásával készült.

Belépés az ngsdeb szerverre

In bioinfo, bioinformatics, bioinformatika on May 30, 2018 at 7:07 pm

Munkánkhoz a Debreceni Egyetem Genomi Medicina és Bioinformatikai Szolgáltató Laboratóriumának ngsdeb szerverét használjuk, amely a közelmúltban jelentős bővítésen ment keresztül, és mint szuperszámítógép, 40+88+24+7×12 processzort, 3×128+256+6x48Gb memóriát és 40+6x11Tb merevlemezt tud magáénak.

Az új felhasználók számára a szerverre való belépéshez a rendszergazda biztosít egy bejelentkezési nevet és egy ahhoz tartozó jelszót, mely utóbbi az első belépést követően könnyen megváltoztatható. Bejelentkezés után egy UNIX (RedHot Linux) platformra érkezünk, amely UNIX operációs rendszerekről egy terminál megnyitásával közvetlenül elérhető, míg a Windows-t használóknak ugyanezt a UNIX felületet a PuTTY nevű, mindenki számára ingyenesen elérhető FTP kliens biztosítja.

A PuTTY letöltését és telepítését követően a szerverre való belépéshez a HostName mezőben a felhasználónevet és a szerver nevét kukaccal elválasztva kell megadni (username@ngsdeb.med.unideb.hu). A szerver titkosított hálózati kapcsolattal történő, távoli eléréséhez az SSH (Secure Shell) hálózati protokollt kell bejelölnünk, továbbá a Port beállítása is szükséges, melyet szintén a rendszergazda biztosít az új felhasználók számára. Amennyiben mindent begépeltünk, kattintsunk a megnyitás (Open) gombra.

1

A jelszavunk „vakon”, már a terminálablakba történő begépelése után egy Enter-rel tudjuk véglegesíteni a bejelentkezésünket, és máris a /home könyvtárban találjuk magunkat. Abban az esetben, ha a szervert nem az egyetem területéről próbáljuk elérni, az IP-címünket a rendszergazdának kell megadjuk ahhoz, hogy kivételként kezelhesse, és – akár otthonról is – bármikor hozzáférhessünk a szerverhez.

A Windows-t használóknak az asztali gépük és a szerver közötti fel- és letöltéshez a szintén ingyenes WinSCP FTP klienst is fel kell telepíteniük, amely szintén a kiszolgálót (ngsdeb.med.unideb.hu), a Port-ot, a felhasználónevünket és a jelszavunkat kéri a bejelentkezéshez.

2

Bejelentkezést követően a WinSCP két ablakra osztva jelenik meg; a bal oldali ablakban az asztali gépünk, jobb oldalon pedig a szerver mappái között lépegethetünk. Egyszerű áthúzással egy fájl/mappa, vagy többszörös kijelöléssel akár fájlok/mappák egyidejűleg is áthelyezhetőek.

3

Ha Windows operációs rendszert használunk, milyen programokat kell tehát telepítenünk ahhoz, hogy elkezdhessük a munkát?

PuTTY: https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

WinSCP: https://winscp.net/eng/download.php

Mivel több felhasználó is dolgozhat egy időben a szerveren, használata mindenki számára azonos feltételekhez, szabályokhoz kötött.

A „házirend” a http://genbioinfo.med.unideb.hu/ honlapon érhető el.

 

 

Az Emberi Erőforrások Minisztériuma ÚNKP-17-3-IV-DE-140 kódszámú Új Nemzeti Kiválóság Programjának támogatásával készült.

Bioinformatika – kell ez nekem?

In bioinfo, bioinformatics, bioinformatika on May 24, 2018 at 9:36 am

Lassan húsz éve, hogy megjelentek az első közlemények az emberi genom teljes szekvenciájáról és a gének elhelyezkedéséről. E „térkép” megismeréséhez bár közel 15 évre volt szükség, nagyon fontos, mára már alapvető információt köszönhetünk a Humán Genom Projekt eredményeinek. Mindez magával hozta a DNS szekvenálás fejlődésének igényét, például az újgenerációs szekvenálási (NGS, Next-Generation Sequencing) módszerek megalkotását, finomítását, ezáltal a szekvenálás költséghatékonyabbá válását. A néhány száz genomi régióra irányuló chip-alapú technikákat felváltották a genomszintű vizsgálatok és specifikus antitestek használatával a fehérje-DNS kölcsönhatások genomi pozíciói is feltérképezhetővé váltak. Mindez hatalmas szekvenálási adathalmazt teremtett, tárolásuk pedig – jelenleg is – különféle adatbázisokban történik.

Manapság ha genomikáról, transzkriptomikáról vagy csak általánosságban molekuláris biológiáról beszélünk, már nem csupán a laboratóriumban végzett bonyolult kísérletekre gondolunk. A szekvenálási adatok önmagukban még nehezen értelmezhetetőek; az információ kinyeréséhez sok-sok lépcsőt kell megmásznunk, mely lépések bizonyos esetekben komolyabb informatikai és/vagy programozói ismereteket igényelnek.

A bioinformatikát mint kifejezést az 1970-es években Paulien Hogeweg és Ben Hesper holland biológusok alkalmazták először, ma pedig főként olyan folyamatok megnevezésére használjuk, mint a fehérjék 3D szerkezetének előrejelzése, biológiai hálózatok kutatása, vagy az említett szekvencia adatoknak az elemzése. Jelen van ugyanakkor az egészségügyben is, hiszen a képalkotó diagnosztikai módszerek, mint a röntgen, CT (komputertomográfia), MR (mágneses rezonancia) vagy a funkcionális MR képalkotás (fMRI) – amely egyenesen az agy működésének vizsgálatát teszi lehetővé – a fizika mellett túlnyomórészt az informatikára támaszkodnak. A bioinformatika interdiszciplináris tudományként tehát ötvözi a biológiát, informatikát, matematikát, fizikát, továbbá a statisztikát, így szakszerű alkalmazásához vagy a kísérletet végző biológusnak kell idejéből az informatika megismerésére áldozni, vagy az informatikusnak kell elmélyülnie a biológiában.

A genomi bioinformatikai módszereik alkalmazásában talán a legnagyobb nehézséget mégis az jelenti, hogy a szekvenálási adatok feldolgozásához nem létezik egységes protokoll. Csupán az alapelemzés az, ami automatizálható – minden további, specifikus kérdésre csak jól megtervezett és kiválasztott elemzési folyamat adhat pontos választ, melynek elengedhetetlen része a biológus és az informatikus közötti rendszeres és hatékony kommunikáció.

A kutatók körében kezd egyre inkább elfogadottá válni, hogy az adatbázisokban fellelhető nyers adatokat új információk reményében bárki felhasználhassa. A rohamosan növekvő NGS adatok – és sok esetben a redundáns kísérletek – lehetővé teszik, hogy a megfelelő mintagyűjtést követően akár saját laboratóriumi hozzájárulás nélkül – pusztán a bioinformatika alkalmazásával – is értékes funkcionális genomikai kutatásokat végezzünk. A bioinformatikai adatbázisokból történő információgyűjtés a biológusok munkáit is gyakran megalapozza; sőt, idejük legjava kezd átterelődni a számítógép elé. Nem kérdés tehát, hogy egy minimális bioinformatikai ismeret mindenképp a biológus javát szolgálja.

Magyarországon jelenleg leginkább a molekuláris biológusok és biotechnológusok nyerhetnek betekintést a bioinformatikába. Szakirányként választhatjuk a Szegedi Tudományegyetemen, de tantárgyként szerepel többek közt a Debreceni Egyetem molekuláris biológus, a Budapesti Műszaki és Gazdaságtudományi Egyetem villamosmérnök, ill. műszaki informatika, vagy az Eötvös Lóránd Tudományegyetem Természettudományi Karának képzésein is. Ugyanakkor, mint önálló szak, a felsőoktatásban még nem kapott helyet és az említett képzések tematikája is nagy varianciát mutat.

2017. január 1. óta Magyarország is tagja az ELIXIR (European Life-sciences Infrastructure for biological Information) programnak, melynek elsődleges célja a számítógépes biológiával foglalkozó európai kutatói közösség együttműködésének elősegítése. Támogatja régi és új adatbázisok, elemző módszerek fejlesztését, létrehozását, standardizálását, informatikai kurzusok szervezése révén pedig kezdők számára is lehetőséget biztosít egy-egy terület megismerésére.

Jelen sorozatban szeretném leginkább a biológiában jártas érdeklődők számára bemutatni, milyen NGS módszereket ismerünk, hogyan és milyen publikus adatbázisokból lehet szekvenálási adatokat letölteni, mik azok az alapvető lépések, amelyeket minden esetben alkalmaznunk kell a nyers szekvencia adatokon. Bemutatom az általánosan – és általunk is – használt programcsomagokat, majd specifikus elemző- és vizualizáló lépésekre is kitérek.

Remélem, bejegyzéseim sokak kedvét meghozza a bioinformatika tanulásához, de legrosszabb esetben is egy olyan alaptudást biztosít, melynek segítségével a biológus magabiztosan tud majd az informatikussal kommunikálni.

Az Emberi Erőforrások Minisztériuma ÚNKP-17-3-IV-DE-140 kódszámú Új Nemzeti Kiválóság Programjának támogatásával készült.

%d bloggers like this: