HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

(Majdnem) mindent a Blastról

2015.02.22. 21:04 Travis.CG

Nem hiszem, hogy van még egy olyan bioinformatikai program, ami ennyire alapvető lenne, mint a Blast. Van egy elméletem, ami szerint egy ötlet eredetiségét úgy lehet lemérni, hogy hányan próbálják meg lemásolni, illetve a farvizén elevezni. A Blast ebben torony magasan vezet.

Kezdetek

Kezdetben vala a Smith-Waterman algoritmus és láták a bioinformatikusok, hogy ez jó. És volt szekvencia összehasonlítás, homológia keresés, első nap. Azután a sok szekvenciát elkezdték adatbázisokba gyűjteni, és hamar rájöttek, hogy a Smith-Waterman algoritmus sokáig tart, ha egy adatbázisban kell keresni. Ekkor született meg a Fasta, aminek a neve egy fájlformátumban köszön vissza. Ebből is látszik, hogy többféle módon válhat hallhatatlanná valaki. A Fasta három verziót élt meg, és 2000-ben nyugdíjazták. Én életemben egyetlen egyszer használtam, amikor egy gépen nem volt elérhető a Blast, akkor is csak demonstrációs célokból.

A hős színre lép

Amikor megjelent a Blast, még nem volt az a sziporkázó program, mint most. Nem volt képes gap-esen illeszteni, hiányzott belőle néhány statisztika, viszont kegyetlen gyors volt, miközben az érzékenység oltárán nem áldoztak fel sokat. A sebességre pedig égetően nagy szükség volt. A GenBank-ben abban az időben már 33 ezer szekvencia volt, ami nem tűnik túl nagynak, de akkoriban a gépek teljesítménye sem volt eget rengető.

A program lehetőségei viszont sokakat megihlettek. Blast dolgozik a RepeatMasker gépházában, az annotáló rendszerekben, mint amilyen a Trinotate is, de még HLA típizáló munkafolyamatokban is kap helyet. Ismeretlen fehérjék funkcióinak felderítésére az első lépés még manapság is az, hogy Blast segítségével megkeressük a rokon fajokban a szekvenciát és reménykedünk benne, hogy ott kísérletesen is ellenőrízték a fehérje szerepét (nem csak egy másik Blast kereséssel állapították meg azt). Egyszóval megtaláljuk mindenütt, ahol a szekvencia hasonlóság meghatározására van szükségünk. Gátlástalan cégek odáig merészkednek, hogy üzleti modellt építenek erre a remek kis programra.

Használata

A Blast parancssori kapcsolói rengeteget változtak a verziók során, és hála a különböző webes megoldásoknak, sokszor nincs is szükség az ismeretükre. Rendszeres használat esetén vagy ha nagy mennyiségű adatunk van, szükség lehet a Blast kézi futtatására. Ebben a leírásban a 2.2-es verzióval foglalkozom. Első lépés mindig az adatbázis építése. Ezt a makeblastdb paranccsal hozhatjuk létre egy FASTA fájlból. Meg kell adni a bemeneti állomány nevét, a szekvencia típusát (fehérje vagy DNS) és opcionálisan a kimeneti fájlok prefixét.

makeblastdb -in input.fasta -dbtype nucl -out mydb

Ezután jöhetnek a kérések. Az adatbázis és a kérés típusa határozza meg, melyik Blast programot kell futtatnunk:

program kérés adatbázis
blastn nukl nukl
blastp prot prot
tblastn prot nukl (transzlált)
blastx nukl (transzlált) prot
tblastx nukl (transzlált) nukl (transzlált)

A blastn programnak ezen felül három módja van: a megablast és a blastn-short és a dc-megablast. A megablast nagy mennyiségű kérés esetén gyorsabb, mintha többször lefuttatnánk a Blasttot, mert a kéréseket összefűzi egy szekvenciává. A blastn-short rövid (20 nukleotid) szekvenciák esetén adnak hatékony eredményeket. A -task paraméter segítségével aktiválhatjuk ezeket.

Az alapértelmezett paraméterek a legtöbb esetben elegendőek, olykor mégis szükség lehet azok állítgatására, hogy hatékonyabb, esetleg kevesebb eredményt kapjunk. Az első a -window_size. Ezzel állíthatjuk be, hogy mikor kapcsoljon össze két közeli találatot a blast. A -word_size segítségével állíthatjuk a legkönnyebben a program érzékenységét. Minél magasabbra állítjuk, annál nagyobb összefüggő, teljesen illeszkedő szakaszokat fog megtalálni. Tehát gyorsabb fog futni, de kevesebb találatot kapunk a kevésbé hasonló szekvenciákból.

A -matrix segítségével azt határozhatjuk meg, mennyire tekintsünk hasonlónak két monomert. Ez a beállítás nagyon függ attól, mire is akarjuk használni a Blastot és ha elrontjuk, ezzel okozhatjuk a legnagyobb kárt.

Ha nem érdekelnek minket a gapek, akkor az -ungapped segítségével megszabadulhatunk minden ilyen beállítástól. Főleg rövidebb szekvenciák esetén érdemes használni. Ellenben ha irányítani szeretnénk a gapek hosszát és számát, akkor a -gapopen és -gapextend segítségével bírálhatjuk felül az alapértelmezett viselkedést. Az algoritmus szempontjából ide kell venni a -penalty és -reward opeciókat is. A szekvenciák összehasonlításánál gyakran többféle módon is összeilleszthetünk két szekvenciát. A következő, erősen sarkított példa is ezt kívánja szemléltetni:

Az illesztés paramétereire nem térnék ki, mert rengeteg weboldal és fórum foglalkozik velük. A kimenet feldolgozását viszont valahogy elmúlasztják bemutatni. Az alapértelmezett kimenet jó vizuális áttekintésre, de sok eredmény esetén nehéz a feldolgozásuk. A legegyszerűbb ilyenkor táblázatos formát kérni (-outfmt 7 vagy -outfmt 6, attól függően, hogy akarunk-e kommenteket, vagy nem). Ha több információt szeretnénk visszakapni, az XML lehet segítségünkre. XML-t szinte valamennyi programozási nyelven fel lehet dolgozni. Azt is megadhatjuk, hogy táblázatos kimenet esetén milyen mezőket kapjunk vissza.

from xml.dom.minidom import parse
import sys
xml = parse(sys.argv[1])
for hit in xml.getElementsByTagName('Hit'):
    hitacc = hit.getElementsByTagName('Hit_accession')[0].firstChild.nodeValue

A fenti Python kód kigyűjti a találatok szekvencia azonosítóit.

Habár a nukleotid alapú Blast nagy népszerűségnek örvend, a fehérje alapú homológia keresés a gyakorlatban sokkal lényegesebb. Mivel különböző trinukleotidok is kódolhatják ugyan azt az aminosavat, ezért a fehérje alapú kereséssel olyan hasonlóságokat is megtalálhatunk, ahol az evolúciós távolság nagyobb. Nem véletlen, hogy fehérje alapú keresésre többféle Blast program létezik.

A blastp sok tekintetben megegyezik a blastn-el, ezért az ott leírtak itt is alkalmazhatóak. A psi-blast ellenben egy teljesen más keresési stratégiát valósít meg. Szekvencia helyett ugyanis mátrixokkal keres. Míg a nukleotid alapú összehasonlításnál csak azt nézzük, hogy a szekvenciák egy ponton megegyeznek-e vagy sem, addig a fehérjék összehasonlításánál a nagyszámú kémiai jellemző miatt árnyaltabb hasonlósági mutatókat kell megállapítani. Erre szolgálnak a mátrixok. Minél több hasonló szekvencia kerül a mátrixba, annál több információnk van arról, hogy a szekvenciák mely pozíciói konzerváltak, tehát az összehasonlítás során lényegesek, és melyeknél van nagy diverzitás. De hogyan lesz egyre több elemünk a mátrixban? A psi-blast ezt iterációval oldja meg. A találatokat felhasználva új mátrixot képez és megismétli a keresést. Parancssorban a -num_iterations kapcsolóval szabályozhatjuk ezt.

A psi-blast minden iteráció után egyre távolabbi hasonlóságokat képes megtalálni, így előfordulhat, hogy végül olyan találatokat is megkapunk, aminek kevés köze van az eredeti kereső szekvenciához. A phi-blast ezért egy szabályos kifejezés-szerű mintázattal csökkenti ezen találatok számát. Parancssorban a phi_pattern opcióval adhatunk meg egy fájlt, amiben definiálhatjuk a mintázatokat. Ha a weben keresünk, csak egy mintázatot használhatunk. A szabályos kifejezés szintaxisáról itt olvashatunk.

A psi-blast egyik gyengesége, hogy a mátrix egy blastp keresés első találatából származik. Ezt a hiányosságot igyekszik kiküszöbölni a delta-blast. Ennél a programnál először a konzervált domain adatbázisra történik egy illesztés, majd ebből állítja elő a mátrixot.

Futtatási módszerek

Blastot nagyon sokféle módon futtathatunk. Ha van egy böngészőnk, akkor csak annyi a dolgunk, hogy felkeressük a számtalan weboldal egyikét. Ez rendkívül kényelmes és egyszerű módja a keresésnek. Hátránya, hogy sok limitációval kell számolnunk. Leggyakrabban a kereső szekvenciák számát és méretét korlátozzák.

Ha nincs böngészőnk (például mert egy távoli gépre jelentkeztünk be parancssorban) vagy szeretnénk kicsit automatizálni a kereséseket, akkor az URL API lehet segítségünkre. Ebben az esetben egy URL-be írhatjuk be paraméterként a program beállításait. A folyamat két lépcsős. Először elküldjük a kérést, kiszedjük a Request ID-t (RID), majd ennek ismeretében letöltjük az eredményt. Mivel ebben az esetben nincs automatikus oldal frissítés, ezért ha túl kevés idő telik el a kérés elküldése és az eredmény letöltése között, csak egy értesítést kapunk. Ugyan csak ügyeljünk rá, hogy ne terheljük le a szervert túl sok kéréssel. Ezzel csak azt érjük el, hogy letiltanak bennünket. Minimum a következő paramétereket kell megadnunk:

 wget "http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?QUERY=145361606&DATABASE=nr&PROGRAM=blastn&CMD=Put" -O rid.html

A kérés az Arabidopsis AGO5 mRNS-ét küldi el. A QUERY mezőbe a GI számot írtuk be. Az eredményt a következő utasítással kaphatjuk meg (figyelem, a RID kérésenként változik!):

wget "http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=B5ZDS8C2015&CMD=Get" -O result.html

A paraméterek teljes listája itt található.

Akit a GET-es paraméterek limitációi aggasztanak, használhat SOAP-ot is. Ezt használják a klikkelős programok nagy többsége is. Példaprogramokat itt találunk. Ha a klikkelős programokat választanánk inkább, szóba jöhet a CLC Workbench programcsalád legtöbb tagja, a Geneious, de akár az ingyenes UGene vagy az NCBI Genome Workbench is.

A végére hagytam a legegyszerűbb módszert. A parancssoros blast program a -remote kapcsolóval távoli feldolgozást kezdeményez. Helyi használatra a poszt elején láthattunk példákat. Ha számítógépünket nagyon lefoglalják egyéb programok, használhatunk célhardvereket is. Ezek többnyire FPGA alapokon nyugszanak.

Technikák

A Blast legegyszerűbb, mindenki által ismert használati módja, hogy elküldünk egy szekvenciát és nézzük, milyen találatokat kapunk. Ortológok keresésénél szokták használni a reciprok keresést. Ez két keresésből áll. Először egy "normál" keresést hajtunk végre, majd a legjobb találattal ismét végrehajtunk egy keresést egy olyan adatbázison, amiben az előző kereső szekvencia is szerepel. Ha az első helyen visszakapjuk az eredeti szekvenciát, a két szekvenciát 1-1 ortológnak kiáltjuk ki.

Új organizmus transzkrip annotálásnál, ha a blastn eredmény nem kielégítő, tblastn-t is lehet használni. A fehérje szekvencia konzerváltabb, mint a DNS, ezért esélyesebb, hogy jó eredményt fogunk kapni.

Vannak esetek, amikor a Blast erőssége (lokális illesztés) egyben a hátránya is. Aki sok keresést futtatott, találkozhatott azzal a jelenséggel, hogy túl sok HSP-re esett szét a találat. Ha nem akarunk másik illesztő programot használni, jó szűrési módszer, hogy csak azokat a HSP-ket tekintjük egy találatnak, amelyek azonos orientációban vannak (természetesen a HSP-k közötti távolságot limitáljuk).

Végszó

A Blast hosszú ideje hű társa a bioinformatikusoknak és még az is marad egy jó ideig. Ezzel a poszttal szeretnék tisztelegni az alkotóik előtt és kívánok nekik még ezer hivatkozást.

Szólj hozzá!

Címkék: bioinformatika

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr405404522

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása