HTML

Az élet kódjai

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

Friss topikok

  • sdani: @Travis.CG: Nohát, nem is tudtam, hogy ilyen van... bár ahogy elnézem ezek a komponensek fizetősek... (2018.11.01. 10:14) Rossz beidegződések a bionformatikában
  • Csenge Tarnói: Ez érdekes. Most csinálok egy meta-analízist, életemben először, úgyhogy az én tudásom is felszíne... (2018.10.01. 21:39) Ez már nekem sok
  • robertherczeg: Nekem a kedvenc az volt, hogy: "Inkább eleve Mann-Whitney és/vagy Wilcoxon tesztet használjunk, m... (2018.09.04. 07:47) Ezért utálom a Wilcoxon-tesztet
  • Travis.CG: ÉÉÉÉÉs megjelent! (2018.08.24. 23:31) Nehéz szülés 2
  • Szedlák Ádám: Hogy én mennyire köszönöm ezt a posztot, arra nincs szó. A kódoljon mindenki / legyen mindenki olc... (2018.06.25. 03:37) Legyen mindenki programozó

EnsEMBL telepítés a felhőre

2010.10.20. 12:57 Travis.CG

Korábbi bejegyzésemben arról panaszkodtam, hogy az Amazon Cloudon csak az ember adatait tette fel az EnsEMBL, abból is egy régi verziót. Örömmel közölhetem, hogy ez nem igaz. A teljes adatbázis fent van MySQL és Fasta formátumban.

Mostani írásomban arra akarok kitérni, hogyan lehet feltelepíteni ezt az adatbázist saját instance-ra. Első lépésként indítsunk el egy Amazon virtuális gépet. Mivel én GNU/Linux rendszert használok, a továbbiakban erre térnék ki. Első lépés, hogy telepítsük a MySQL-t, Perl-t. Ha az Olvasóim olyan kényelmesek, mint én, akkor egy Ubuntu alatt az apt-get/aptitude parancsokkal bűvészkednek, ha pedig nálam ügyesebbek, akkor forráskódból telepítik azt tetszőleges disztribúció alatt ;-)

Ha Elasticfox Mozilla bővítménnyel vezérlik a virtuális gépeket, akkor a Volumes and Snapshots fülön, a Saved Snapshots táblázatból kiválasztják a kívánt EnsEMBL adatbázist. Jelen esetben EnsEMBL 59 MySQL-t és jobb egérgomb segítségével létrehoznak egy kötetet (volume) belőle. Ez amolyan virtuális háttértárólónak fogható fel. Ha megjelenik a Created Volumes listában, akkor kapcsoljuk hozzá a futó gépünkhöz. (Figyelem! A kötet és a gép legyen azonos zónában, különben nem kapcsolhatóak össze) Adjunk meg egy eszköz nevet (jelen esetben ez a /dev/sdd lesz).

Jelentkezzünk be a virtuális gépbe ssh-n keresztül. A következő paranccsal hozzunk létre egy könyvtárat és csatoljuk be a korábban létrehozott kötetet:

sudo mkdir /ensembl
sudo mount /dev/sdd /ensembl

Természetesen a jogok beállításáról se feledkezzünk meg. Az ensembl könyvtárban ott a teljes MySQL struktúra. Most már csak az adatbázis kezelőnek kell megmondani, hogy hol találja a fájlokat. Az ensembl könyvtárban mindennek adjunk mysql tulajdonosi jogokat.

sudo chown -R mysql:mysql /ensembl

Hozzuk létre az adatbázisokat. Az EnsEMBL ugyanis minden egyes fajnak egy adatbázist hoz létre. A könyvtárat elnézve ez jó sok adatbázis, ráadásul olyan vicces neveik vannak, mint spermophilus_tridecemlineatus_core_59_1i. Utálok sokat gépelni, ezért a következő módon hozom létre az adatbázisokat:

cd /ensembl
ls | awk '{print "create database "$1";"}' >~/createdb.sql

Majd beletöltöm az adatbázisba:

mysql -u root <~/createdb.sql

Most jön a trükk. A /var/lib/mysql-ben vannak a létrehozott adatbázisok. (Kivéve, ha valaki nagyon profi és máshova tette, de az úgyis tudja, hol keresse) Meg is nézhetjük őket. A sok sudo gépelését kezdem unni, ezért root leszek. (sudo su, de gondolom ezt már mindenki tudja).

Kitörlöm a könyvtárakat, amiket fáradságos munkával létrehoztam.

cd /ensembl
for i in *; do rm -fr /var/lib/mysql/$i; done

Ezután hozzunk létre symlinkeket és állítsuk be a jogokat.

cd /ensembl
for i in *; do ln -s /ensembl/$i /var/lib/mysql/$i; chown -h mysql:mysql /var/lib/mysql/$i; done

Ennyi. A rendszer működik. Illetve mégsem. Ha bármi miatt nem megy a fenti módszer, akkor a jogosultságok tájékán kell keresni a megoldást. Amikor próbálgattam a módszereket, sokszor a következő hibaüzenettel találkoztam:

ERROR 1018 (HY000): Can't read dir of './homo_sapiens_core_59_37d/' (errno: 13)

A mysql nem tudott belépni a könyvtárba. Fórumokat olvasgatva a következő megoldások segítenek:

1) A szülő könyvtárnak is mysql tulajdonában kell lennie.

2) Legyen bekapcsolva a have_symlink (kövesse a linkeket)

3) Ubuntu alatt az apparmornak be kell állítani, hogy olvashassa azt a könyvtárat is, ahova áthelyeztük az adatbázis fájljait. Ezt röviden be is mutatom, mert az Ubuntu nagyon népszerű, talán többen belefuthatnak a hibába. (forrás)

Az /etc/apparmor.d/usr.sbin.mysqld fájlt szerkesszük, adjuk hozzá a következő sorokat:

/ensembl/ r,
/ensembl/** rw

(természetesen a kapcsos zárójelen belül). Indítsuk újra az apparmort (sudo service apparmor restart) és minden megjavul.

 Most hozzunk létre egy mysql felhasználót, és adjuk meg neki a megfelelő jogokat, hogy használhassa az adatbázist.

mysql -u root

create user 'ensembl'@'localhost' identified by 'ensembl'

Emlékezünk még a createdb.sql fájlunkra? Használjuk ismét, hogy jogokat adjunk az első felhasználónak:

sed 's/;//' createdb.sql | awk '{print "grant select on "$3".* to '"'"'ensembl'"'"'@'"'"'localhost'"'"'; "}' >grant.sql

Az idézőjelek kicsit ilyesztőek lehetnek. Ha ezzel megvagyunk, nincs más dolgunk, mint beadni a mysql-nek, a korábban leírt módon.

A következő lépés, hogy Perl API-t telepítsük.

Először a Bioperl csomagot telepítsük. Adjuk ki a sudo cpan parancsot. Ez elindítja a telepítő scriptet. Adjuk ki az install Bundle::BioPerl parancsot. Ha nem tudjuk, milyen válaszokat adjuk a kérdésekre, akkor az enter megnyomásával léphetünk tovább. Ezzel nagy hibát nem követünk el.

A BioPerl csomag telepítése után következik az EnsEMBL perl csomagok telepítése. Én itt el szoktam térni az általánosan elfogadott telepítési módszertől, mert én a modul könyvtárat egyszerűen bemásolom a többi Perl modul közé.

Tehát kicsomagolom a Perl modulokat a jó öreg tar -xfz -vel, majd a modules könyvtár teljes tartalmát átmásolom pl. a /usr/lib/perl5 könyvtárba. (Vagy más perl5 modul könyvtárba, ahol megtalálható a Bio névteret jelölő könyvtár) Az EnsEMBL moduljai nem fognak felülírni egyetlen más modult sem. (Legalábbis nekem még nem tették)

Ha készen vagyunk, próbáljuk ki a következő rövid szkriptet, amivel ellenőrizhetjük, hogy mindent jól végeztünk:

use Bio::EnsEMBL::Registry;
use strict;

# Get all exons

my $reg = 'Bio::EnsEMBL::Registry';
$reg->load_registry_from_db(-host => 'localhost', -user => 'ensembl', -pass => 'ensembl');
my $adaptor = $reg->get_adaptor('Human', 'Core', 'Exon');
my @exons = $adaptor->fetch_all();

 

Ha hiba nélkül lefut, akkor végeztünk.

Szólj hozzá!

Címkék: cloud computing bioinformatika

A bejegyzés trackback címe:

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

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.