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ó

Plink kínok

2019.03.17. 22:14 Travis.CG

A plink az a fajta program, ahol a dokumentáció elméletileg mindent tartalmaz, a gyakorlatban mégis szinte használhatatlan. Mégpedig azért, mert hiányzik az információ, hogy milyen kombinációban használjuk azokat. A dolgot tovább bonyolítja, hogy a program két verzióban létezik. Egy 1.9 jelzésű bétában és egy 2.0 alfában, amit felváltva kell használni, mert még nem jutottak el oda, hogy minden funkció mindkét helyen meglegyen. (Természetesen ott van az eredeti program is, csakhogy az még nem képes közönséges VCF fájlt beolvasni.)

Ráadásul egyes funkciókat eltávolítottak a stabil verzióhoz képest, mert úgy találták, hogy más programok sikeresebben valósítják meg azt. Ilyen például a haplotípus azonosítás.

Ami viszont megmaradt, hogy a plink mindegyik elemzése saját külön eredményfájlt készít, egyedi kiterjesztéssel. Így biztosak lehetünk benne, hogy nem írjuk fellül eredményeinket. A kimenet kevés kivételtől eltekintve szóközzel elválasztott szöveges fájl, de hogy ne legyen egyszerű az életünk, változó hosszúságú szóköz van mindenhol, hogy nézegetve szép, rendezett külsőt mutasson. Ha R-be akarjuk betölteni, én a következő módszert használtam:

data <- read.table("plink.mendel", skip = 1)

Alapértelmezett módon az R szépen be tudja olvasni a fájlt, de a fejléccel gondjai lesznek, mert az oszlopnevek is tartalmazhatnak szóközt. Ha nem olvassuk be, és utólag készítjük el, az sokkal eredményesebb.

Megpróbálok összeszedni itt egy korántsem teljes leírást, hogyan juthatunk el egy közönséges VCF fájlból valami elemzés felé.

plink2 --vcf input.vcf --fam work.fam --out work
plink --vcf input.vcf --out work

Honnan jön a work.fam fájlunk? Nekünk kell elkészíteni. A felépítése itt található. Ügyeljünk rá, hogy a minták sorrendje ugyan az legyen, mint a VCF-ben, mert különben nem fog működni, és azt a hibaüzenetet adja, hogy "Error: Mismatched IDs between --vcf file and work.fam." A vicces az, hogy fam fájl nélkül is működik, akkor készít egy psam fájlt. Ez egy kezdetleges fam fájlnak tűnik, amit kézzel szerkeszthetünk, bővíthetünk.

A másik fontos dolog, hogy ha vissza akarjuk keresni, hogy VCF-ünk melyik rekordja szerepel a plink fájlokban, akkor célszerű az ID mezőt kitölteni. Különben csak pontokat fogunk látni.

plink --bfile work --freq --out freq

Ekkor a minior allélok frekcenciáit írhatjuk ki pozíciónkként.

plink --bfile work --mendel --out problem

A paranccsal azokat az eseteket listázhatjuk ki, ami ellentmond a mendeli öröklésnek. Önmagában nem sok segítség, de ha észben tartjuk, hogy a de-novo mutációk aránya a szakirodalom szerint 10e-8 nukleotidonként, akkor ellenőrizhetjük, mennyire jó a variant call (vagy a szülők tényleg szülők-e).

plink --bfile work --check-sex

A fenti paranccsal ellenőrizhetjük, hogy a fam fájlban a mintáknak beállított nem megfelel-e a valóságnak. Akár elírás, akár minta csere történt, érdemes ellenőrizni.

Adataink ellenőrzése után jöhet a tényleges elemzés. Például asszociáció keresés betegség és genetikai variáció között:

plink --bfile work --tdt

Ekkor a családfát is figyelembe veszi a program. Ha ezt nem kívánjuk használni, akkor a

plink --bfile work --assoc

parancsot is használhatjuk. Mindkét esetben további módosítókat használhatunk a parancssorban.

Természetesen további lehetőségek is vannak, de ha idáig eljutottunk, akkor már képesek vagyunk megérteni a dokumentáció felépítését és nagyobb eséllyel találjuk meg azt, amire szükségünk van.

Szólj hozzá!

Címkék: bioinformatika

A fától az erdőt

2019.03.10. 23:07 Travis.CG

Korábban azt írtam, hogy a döntési fák nem stabilak és az adat kismértékű változására is gyökeresen más megoldást adhatnak. Ez nem jó hír, de szerencsére van rá megoldás. A megoldás pedig - mint annyi más esetben - a véletlen perturbáció használata nagyon sokszor, végül vesszük az eredmények eredőjét. Ezt hívjuk véletlen erdőnek (random forest).

Tehát generálunk nagyon sok döntési fát, mindegyiket egy kicsit másképp és reménykedünk benne, hogy a sok próbálkozás összegzése egy stabil eredmény. Attól függően, hogy mit változtatunk a fák között, különböző típusú véletlen erdők vannak. Abban is lehet eltérés, miként összesítjük a sok eredményt.

De nézzük meg, hogy történik mindez a gyakorlatban. Mivel a véletlen erdő igen népszerű klasszifikáló eljárás, megpróbálok több implementációt is bemutatni.

Python

Ha a scikit-learn csomagot használjuk, a kód rendkívül hasonló lesz a döntési fánál bemutatott kódhoz. Ez az API tervezési sajátságából is adódik. A különböző tanuló algoritmusok egységes felülettel rendelkeznek, hogy könnyebb legyen elsajátítani azokat.

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators = 100)
rf = rf.fit(data, category)

Az n_estimators paraméterrel a döntési fák számát adhatjuk meg. Az algoritmus ezek eredményeit fogja összevonni. A data és category változók megegyeznek a döntési fánál leírt változókkal, ugyan úgy két tüdőrák típus expressziós adatait tartalmazzák. Az eredő fát viszont nem tudjuk kirajzolni a korábban bemutatott módon. Ha megpróbáljuk, hibaüzenetet kapunk.

R

A legelterjedtebb véletlen fa csomag R-ben - nem meglepő módon - a randomForest nevet viseli. A használata sem bonyolultabb egy hipotézis tesztnél.

rf <- randomForest(outcome ~ ., data = input, ntree = 500)

A bemenet egy data.frame vagy mátrix, ahol egy oszlop a kimeneti változót jelenti, a többi a független adatokat. Az ntree opcióval adhatju meg, mennyi fát akarunk generálni. Azért, hogy az egész ne csak a levegőben lógjon, bemutatom, hogy miként használható a korábban is bemutatott tüdőrákos adatokon.

Miután letöltöttük az adatokat, először beolvassuk azokat és táblázatot csinálunk belőlük. A könnyebbség kedvéért két táblázatot mindkét tumor típusnak.

library(randomForest)

readData <- function(initdir){
   files <- list.files(initdir, recursive = T, pattern =    "txt.gz",full.names = T)
   data <- read.table(files[1])
   rownames(data) <- data$V1
   data <- data[,2,drop=F]
   for(i in 2:length(files)){
      new <- read.table(files[i])
      data <- cbind(data, new[,2])
   }
   return(data)
}

luad <- readData("luad/")
lusc <- readData("lusc/")

Ebből a két táblázatból készítünk egy harmadikat, ahol minden egyes sor egy minta lesz, az oszlopok a gének expressziói. Ehhez még egy oszlopot rakunk, ami a tumor típusát definiálja. Ez lesz egyébként a függő változónk is.

data <- as.data.frame(rbind(t(lusc),t(luad)))
data <- cbind(data, c(rep("lusc", ncol(lusc)),rep("luad", ncol(luad))))
colnames(data)[60484] <- "cancer"

Végül a tanítási fázis:

rf <- randomForest(cancer ~ ., data = data, ntree = 500)

Legalábbis elméletileg. Nekem a tanítás segfaulttal elszállt, ha az összes génre akartam futtatni. Ha csak 100 génre limitáltam, akkor gond nélkül lefutott.

A ranger csomag szintaxisa is teljesen hasonló. Érdekessége, hogy van C++-os futtatható változata is.

rf <- ranger(cancer ~., data = data)

A teljes génszetten ez sem futott le az R halála nélkül, de száz génre gond nélkül alkalmazható volt.

Szerencsére a következő csomagunk, az Rborist megtöri a fenti hagyományt, és ezzel megakadályozza, hogy telefonkönyv-szerű felsorolássá degradálódjon ez a poszt. Szintaxisa közelebb áll a scikit-learn filozófiájához. Az adatok generálása egy kicsit ezért más lesz:

data <- as.data.frame(rbind(t(lusc),t(luad)))
response <- as.factor(c(rep("lusc", ncol(lusc)),rep("luad", ncol(luad))))
rf3 <- Rborist(data, response)

Ez az egyedüli csomag, ami több szálat is képes használni és ez volt az egyedüli (az általam próbáltak közül), ami képes volt a teljes adatszettet feldolgozni fagyás nélkül!

Összegzés

Habár R és Python nyelven is elérhetőek véletlen erdő implementációk, ha masszív adatmennyiséggel kell számolni, célszerű Pythont használni. Ez igazából nekem is meglepő eredmény, nem tudom, miért nem működtek hatvanezer génre az R implementációk többsége. A memória nem fogyott el, az biztos (6% memóriát használtak egy 32GB memóriával rendelkező gépen). Az Rborist rendesen kihasználta az alatta futó vas erőforrásait. Kb. 20% memóriát használt és 7 magot a nyolcból. Igaz, a példák nem voltak életszerűek (nem csináltunk külön tanuló és teszt adatsort), nem is mértük, mennyire jók az egyes implementációk. Azt sem szabad elfelejteni, hogy R-ben további csomagok érhetőek el, amelyekre nem tértem ki. A Jupyte notebookok elérhetőek itt.

Szólj hozzá!

Címkék: machine learning

Ami az excel táblázatnál is rosszabb

2019.03.09. 22:59 Travis.CG

Mi lehet rosszabb egy excel táblázatnál? A válasz nem az, hogy két inkonzisztens excel táblázat, bár az is elég közel van hozzá. A válasz a Word táblázat.

Mikor már azt hiszem, nem tudnak meglepni, kiderül, hogy még van mit tanulnom. Rájöttem, hogy az adat bányászat tényleg bányászás. Nem gyémánt, vagy arany, hanem szénbányászat a 60-as évekből. Tényleg le kell menni az ismeretlenbe, bemocskolni magad az ott található, egészségre káros anyagokkal és reménykedni, hogy élve feljössz. Mindezt miért? Hogy a felszínre hozz egy csomó környezetszennyező anyagot.

Most kaptam egy ilyen szép táblázatot:

screenshot_20190301_140949.png

Jajj, de aranyos! Megsimogathatom? Eszedbe ne jusson, torokra támad! Mi a fene az a szám a fejléc alatt? Mi az, hogy sok éves átlag? Eltérés? Minek az oda? Miért nem kell minden oszlop alá átlag? És összeg? A "vegetációban összesen" honnan a fenéből jön? Mindez egy olyan programba ágyazva, aminek a legemlékezetesebb funkciója egy flipper.

Persze itt nem áll meg a menet, kaptam még egy táblázatot, ami az oldal szélesség miatt nem fért el, ezért a kilógó oszlopokat új sorba helyezték! A második oszlop ezért mást jelentett a 6. sor után. De kedvesek voltak, mert a fejlécet is bennehagyták. A cellák értékei pedig igen hasznosak voltak: "sok", "kevés", "jó", "igen jó". Ezzel a kódolással csak egyetlen probléma volt: a jó lehetett 1,43. Az igen jó 2,1, de akár 1,07 is. (Ezt onnan tudom, hogy végül megkaptam a numerikus értékeket is.) Legszívesebben lecseréltem volna az összes értéket "igen rosszra". Információ tartalmán mit sem változtatna.

A slussz poén, hogy otthon elpanaszoltam a "sokéves átlaggal" kapcsolatos problémáimat, mire a feleségem megjegyezte, hogy a sokéves átlagtól való eltérés teljesen elfogadott a botanikai lapokban. "Mindenki így csinálja." Egy teljes tudomány terület tartja életben ezeket a táblázatokat! Ha ilyen sokan vannak, csak egyet tehetünk.

Szólj hozzá!

Címkék: életmód

Tanítsd a tanárt

2019.02.24. 23:34 Travis.CG

A magyarországi Elixir úgy tűnik sokkal akívabb, mint a Magyar Bioinformatikai Társaság. Utóbbi évente egyszer szervez egy összecsapott konferenciát, csakhogy békén hagyja őket a közösség, de az Elixiresek lelkesedése töretlen. Tavaly láthattuk az első Software Carpentry-t, most pedig a Carpentry oktatók felnevelése kezdődött el.

A kétnapos oktatásra az ország számos pontjáról jöttek jelöltek, vagyis nem kell félni, hogy az egész kezdeményezés beltenyésztett rendezvénnyé váljon (habár a Debreceni Egyetem érezhetően felülreprezentált volt).

Az oktatást Sarah Morgan és Piraveen Gopalasingam vezette (de megengedte, hogy Pivnek hívjuk és így megkegyelmezett hitvány kiejtésünknek), akik az EBI-nál végzik a jövő bioinformatika oktatóinak képzését. Érezhető volt, hogy mindketten tapasztalt oktatók és rengeteg oktatásmetodikai tudással rendelkeznek.

Mivel a hallgatók nagy része maga is oktat vagy oktatott már, így nem kifejezetten arról volt szó, hogyan oktassunk, inkább arról, milyen módszerek vannak és a különböző hátterrel rendelkező emberek megoszthatták egymással a tapasztalataikat.

Egy konkrét példán említve: Nem sorolták fel, milyen oktatási módszerek vannak, hanem arra kértek minket, hogy négyes csoportokban szedjünk össze annyit, amennyit tudunk. Ezeket kis, tapadós cédulákra írtuk, minden cédulára egyet. Miután letelt a feladatra adott idő, az összeset felragasztottuk egyetlen nagy papírra, oktatóink csoportosították azokat, majd reagáltak mindegyikre. Kiemelték egyesek előnyeit és hátrányait.

A közös, oldott légkör és a folyamatos tennivalók miatt nem lankadt a figyelem és több információ áramlott, mintha csak diákra vetítve látnánk felsorolva mindezt. Legalábbis én így éreztem. Akadt, aki szerint túl sok triviális dolgot mondtak el. Szerintem pedig az ilyen megbeszélések alatt sok olyan problémát is érintettünk, amivel egyes tanárok a munkájuk során találkoztak és az oktatók mindig reagáltak ezekre.

Persze a fő irányvonal (figyeljünk a hallgatóságra, kérjünk visszajelzést, tűzzűnk ki elérhető célokat) evidensnek tűnhet. De ha visszagondolok saját, nem túl releváns oktatói tevékenységemre, az derül ki, hogy nem sok visszajelzést kértem. Talán nem tévedek nagyot, ha feltételezem, hogy mások is időnként megfeledkeznek egyik-másik alapvető dologról.

A másik kifogás, ami fülembe jutott, az volt, hogy az itt elmondottak nem alkalmazhatóak az egyetemi tanrend kötöttségei között. Való igaz, hogy az egyetemi oktatás során nem sok tanárt hívtunk "Kapitányomnak", de ez nem jelenti azt, hogy nem szabad próbálkozni, illetve bele kell törődni. Egyikünk, aki segítő volt az első Software Carpentri-n, például tudta alkalmazni a piros-zöld tapadós cédulákat, amivel a hallgatók segítséget kérhettek.

Már az első nap is tevékeny volt, a második napon volt a gyakorlat. Házi feladatként egy rövid, három perces bemutatót kellett tartani, tetszőleges témában. A laptopnak nem sok hasznát vettem az első nap, ezért úgy döntöttem, anélkül oldom meg a feladatot. A felszerelésem elég szegényes volt, ezért valami egyszerű dolgot akartam csinálni. Végül egy YouTube videót használva inspirációként, bemutattam, hogyan lehet egyszerűen tejet önteni dobozból. Voltak mások is, akik mellőzték a technikát. Láttunk csomó kötési technikákat vagy A3-as papíron bemutatott interleukineket.

Három tagú csoportokban megbeszéltük minden tag előadását, építő javaslatokat tettünk, majd bemutattuk mindenkinek a javított verziót. Itt újabb kritikákat kaptunk.

Ezután ismét csoport munka következett. Kiválasztottunk egy bemutatót és azt felturbóztuk egy egész kurzussá a rendelkezésre álló egy órában. Nem csak a kurzus anyagát terveztük meg, hanem a feltételeket is összegyűjtöttük.

Mire idáig eljutottunk, alaposan elfáradt mindenki, kivéve az instruktorokat. Nem tudom, honnan szedték az energiát, de biztos nem az apró süteményből.

Összességében szerintem hasznos volt, még akkor is, ha nem leszek Carpentries oktató.

Szólj hozzá!

Címkék: életmód

Adat feldolgozás a gyökerekig hatolva

2019.02.18. 22:30 Travis.CG

Az adatok feldolgozásához rengeteg szoftver-környezet áll rendelkezésünkre. Ott van a veterránnak számító Matlab/Octave, újabban a számtalan kernellel futtatható Jupyter, a konzervatívabb beállítottságúaknak az RStudio., extravagánsaknak Julia. Sőt, állítólag van egy excel nevű is, de azt valami horror filmben mutatták, nagyon meg is ijedtem tőle.

Mégis van a kutatóknak egy olyan rétege, akik nem ezeket használják. A Cernben a részecskegyorsítók adatait nem a fenti megoldásokkal kezelik. Nekik olyan feldolgozási gyorsaságra van szükségük, amit a szkriptnyelvek nem biztosítanak, ezért megalkották a Root-ot. Persze azt sem szabad elfelejteni, hogy a rendszert 1995-ben kezdték fejleszteni, amikor a Python még pelenkát viselt, az R pedig éppen kibújt a tojásból.

Rendkívül furcsának tűnhet, hogy egy olyan világban, ahol az értelmezett nyelvek virágkorukat élik, valaki C++-t használ adatfeldolgozásra, de ha túl vagyunk az első sokkon, és csak alap funkciókra szorítkozunk, akkor a nyelv használata a meghívott osztályokon túl nem tér el jelentősen a Python osztályok használatától. 

Az adat ábrázolási módszerek igen bőségesek, bár érezhető, hogy ki az elsődleges célközönség, ezért felülreprezentáltak a jelfeldolgozó függvények. De rengeteg magas szintű osztály segít abban, hogy saját vizualizációs eljárást implementáljunk, akár OpenGL segítségével is. Itt látszik igazán, hogy a C++ nem is olyan rossz választás. Hiszen, ha az R vagy Python képességeit akarjuk kiterjeszteni, mert az adott területre még nem létezik modul, akkor kénytelenek vagyunk egy másik programozási nyelvet választani. A Root-nál nem. Itt elég, ha csak a C++-t ismerjük. Amit használunk, azzal bővítjük a rendszer képességeit is.

De amin a leginkább meglepődtem, hogy a Root saját GUI fejlesztővel van felszerelve! Igen, jól olvastátok! Aki használt már Visual Basic-et, ahhoz hasonló módon tud felhasználói felületet készíteni. Kereszt platformosan! A QT meg a millió liszensz lehetőségével elmehet a...

Természetesen a Root is halad a korral. Számtalan kapcsolódási lehetősége van más keretrendszerekhez, úgy, mint Python, R, Jupyter, Spark, Ruby.

A fizikusoknak nyilván gazdag numerikus kelléktárat is biztosítani kell, hogy képesek legyenek modelleket alkotni, valamint eszközöket nyújtani a szimulációs adatok generálásához is. Ez utóbbihoz Monte Carlo szimulációs osztályok állnak a kutatók rendelkezésére.

A telepítése rendkívül egyszerű. Először kicsomagoljuk a letöltött állományt, majd létrehozunk egy könyvtárat a binárisoknak. Ezután kiadjuk a könyvtárból a következő parancsot:

cmake path_to_src
make
make install

A konfigurálás alatt rengeteg opciót adhatunk meg. Ha például szeretnénk R-ből használni a Root-ot, akkor a -Dr=on opcióval bekapcsolhatjuk azt (ebben az esetben az Rcpp és az RInside csomagoknak a gépen kell lenniük.) Én három különböző gépre telepítettem (ezek körül az egyik egy HPC környezet volt, fordító nélkül) és minimális problémába ütköztem. Azok is a függőségek hiányából fakadtak. A fordítási idő elég hosszú, több órát is igénybe vehet.

Nézzünk egy példát a rendszer használatára. Rajzoljunk egy denzitás függvényt:

TF1 myfunc("test", "1/sqrt(2*TMath::Pi())*exp(-0.5*x**2)",-3,3);
myfunc.Draw();

A fenti példában a TF1 osztályt használjuk, amivel egy dimenziós függvényeket ábrázolhatunk. A függvényt magát a második paraméterben adjuk meg, majd a tartományt, ahol ábrázolni akarjuk. A második sor maga a rajzolás. Eredményül egy interaktív plotot kapunk, amit tetszés szerint átszabhatunk. Csak nézzük meg az Edit -> Style menüpontot. Akár saját stílust is definiálhatunk. De akár a képet is elmenthetjük klikkelve, vagy módosíthatjuk, ha bekapcsoljuk a Toolbart. Szövegeket és nyilakat helyezhetünk el az ábrán, mintha csak rajzolnánk. R-ben ezt csak parancsokkal lehet megtenni, ami nem mindig öröm. Természetesen erre itt is lehetőség van.

Azért azt sem szabad elfelejteni, hogy a rendszer nem tökéletes. Fórumokon sokan kritizálják, hogy kevés ember fejleszti, kicsi a felhaszálói bázis, ezért egyes hibák sokáig rejtve maradhatnak. Nincs elég oktatói anyag, a C++ kódot értelmező Cint borzalmas memória kezeléssel van megáldva.

Például én is tapasztaltam, hogy az R-ben alkalmazott módszert, hogy a history-ból előhívjuk a korábban begépelt parancsot és lefuttatjuk újra, nem működik. A rendszer kiabál miatta.

De aki nem riad meg a C++-tól és szeretné adatait hatékonyan feldolgozni, esetleg szeretne modellezni, nyugodtan adjon neki egy esélyt.

Szólj hozzá!

Címkék: statisztika opengl

Kevésbé ismert szakzsargonok az informatikából

2019.02.14. 23:07 Travis.CG

  • Plug and Pray: Csatlakoztasd és reméld, hogy működik
  • DevWoops: Elrontja a programot, majd kirakja az éles szerverre
  • SenilPhone: Egykor okostelefon volt...
  • FullSuck Developer: A frontendet és a backendet is tönkre tudja vágni
  • CaaS (crying as a service): Cloud technológia, amit fájdalom használni
  • IDE (Irritable Development Environment): Idegesítő fejlesztő környezet
  • IoS (Internet of Shits): Semmire nem jó, de legalább netre van kötve
  • VR (Vomit Reality): Virtuális valóság, amitől kidobod a taccsot

Szólj hozzá!

Setét Torony - a vargabetű

2019.02.02. 23:18 Travis.CG

Eddie azon kapta magát, hogy nem emlékszik az út elejére. Minél inkább próbálta felidézni, hogyan kerültek erre az ösvényre, annál ködösebbek lettek a gondolatai. Talán újabb révülésbe értek? De akkor hol maradtak a szokásos harangok? Eddig akár hányszor sodródtak le a Torony felé vezető nyíl egyenes útról, minden alkalommal furcsa hanghatások kísérték a

(teleportációt)

jelenséget. Most viszont a feje tiszta volt, érzékei normálisan működtek.

- Jól vagy, drágám? - kérdezte Susanna-t. Nem azért, mert úgy látta, felesége nincs jól, csak meg akarta törni az utazás egyhangúságát és ha ez a furcsa állapot csak az ő fejében létezik, akkor a válasz minden bizonnyal valami banális lesz.

- Mintha egy furcsa ködben lebegnék - válaszolta a nő.

Eddie bólintott. Drogos múltja miatt mindent tudott a ködben lebegésről.

- Valami megváltozott. Mintha letértünk volna az utunkról - jegyezte meg Jake. A mellette lépdelő szőrmókus szemében megértés villant. - Roland, mit jelenthet ez?

A harcos sokáig nem válaszolt. Már azt hitték, szó nélkül hagyja beszélgetésüket, amikor megszólalt.

- Szerintem nem Stephen King írja ezt a történetet.

- Ez biztos? - kérdezte Jake. A harcor bólintott.

- Honnan tudod?

- Tudom - zárta le a vitát Roland, pontosan azzal a hangsúllyal, amivel útjuk során az összes megmagyarázhatatlan dolgot eddig elintézte.

- Akkor nem számíthatunk több deus ex machinára? - kérdezte riadtan Susannah.

Roland nem ismerte a kifejezést, de értette, mire gondolt a nő. Bólintott.

- Ezért kell nagyon óvatosnak lennünk. Legyetek ti is résen.

Nem is sejtették, hogy a terület, amin haladnak, Grog fennhatósága alá tartozik. Grog félelmetes lény volt, ha csak hírből is ismerik, nagy ívben kerülték volna el a vidéket. De nem ismerhették. Grog élve falt fel minden lényt, ami vagy aki idetévedt. Senki nem menekülhetett éhsége elől. A Bíbor Király is csak lábujjhegyen mert belépni a területére, amikor Grog aludt. Nagyon szedte ő is a lábát.

- Legalább nem lesz több utalás King más regényeire - jegyezte meg Eddie. Észre sem vette, hogy egy miniatűr homok várra tolja felesége tolószékét, amely kiköpött mása volt a shawsank-i fegyintézetnek.

- Figyeljél, mézem - duruzsolta Susannah, ahogy a tolószéke megbillent.

Grog idegei pattanásig feszültek. Hetekig tökéletesítette azt a homokvárat, amiről egyik éjjel álmodott, erre ezek a betolakodók tönkretették. Dühe csak fokozódott, amikor Csí megszaglászta és vizeletével megjelölte a romot. Kitárta karmokban végződő végtagjait, fejét hátra hajtva az ég felé emelte és elkezdte a gyűjteni a kozmikus energiákat, hogy testében egyesítve azt, lecsapjon a betolakodókra.

- Furcsán lehült a levegő - jegyezte meg Jake.

- Mintha a nap is sötétebb lenne - állapította meg Eddie.

Érezték mindannyian. Mintha az élet szökne el a tájból és áramlana valami felé, ami bekebelezi.

- A világ elmozdult, de ez akkor is túlzás - morogta Roland.

Egyikük sem látta vagy érezte ezt az ésszel felfoghatatlan szörnyet, ami előidézte ezt a változást. Grog tett két lépést előre, észre sem véve, hogy a homokvár romjaiban lépked ő is. Őrülten sok energiát szippantott magába. Megfeszültek izmai, bőre szinte hullámzott, ahogy próbálta bent tartani a mérhetetlen sok energiát. Készen állt rá, hogy nagyítóként fókuszálva lecsapjon, megsemmisítve mindent. Felordított. De nem azért, hogy csapást intézzen, hanem fájdalmában. A szőrmókus vizelet kikiezdte a bőrét. Grog, mivel minden élőlényt még azelőtt elpusztított, hogy az kicsit konfortosabban érezte volna magát, nem tudta, hogy testének egyes egyedül a szőrmókus vizelet az ellensége. Fürödhetett volna lávában, ihatott volna lúgot, mindez meg sem kottyan neki. De ez...

A csapat megfordult, készen rá, hogy szembe szálljanak a veszedelemmel. Roland kezébe már lövésre készen meredt a fegyver csöve. De látták, semmi szüksége lövésre. Grog lába porladni kezdett, a kór terjedt egész testén, végül az összegyűjtött energiát képtelen volt visszatartani és szétrobbant. Darabjai pernyeként elszálltak a szélbe. Ugyan olyan nevetséges halált halt, mint a ka-tet többi ellensége.

- Megszíttad rútpofa - vetette oda Detta hangján Susannah.

- Ez meg mi volt? - kérdezte Eddie már-már eszelős hangon. Roland látta, hogy kicsit remeg a kezében a fegyver.

- Meghalt, nem árthat nekünk - vonta meg vállát Roland, mint aki nem kíván tovább foglalkozni a dologgal. Szeme azonban megállapodott Jake-en.

- Jake, jól vagy?

Jake szeme a semmibe bámult, de a körülötte vibráló levegő elárulta, hogy valami rendkívüli történik vele. Talán közvetlenül a Sugár szól hozzá.

- El kell mennünk New Yorkba - suttogta földöntúli hangon.

- Már megint? Esküszöm, több időt töltünk ott, mint a Belső Világban - fakadt ki Eddie. Az elején még örült, ha visszamehetett, hiszen onnan származott, de most már kezdte igazán unni. Fegyvert visel az oldalán, egy beszélő állattal utazik, szörnyekkel harcol, feleségül vett egy skizofrén nőt, minek menne vissza? Mégis újra és újra oda vezet az útjuk.

- De hogy jutunk oda? - kérdezte Roland. Látszólag őt a hogyan érdekelte, nem a miért.

- Azzal az ajtóval - mutatott jobbra Jake, de még a fejét sem fordította el. Tekintete továbbra is a távolba meredt, mégis pontosan az ajtó felé mutatott, ami épphogy kivehető volt a látóhatáron.

- Naná, hogy van egy ajtó, pont itt, a semmi közepén - morgott Eddie.

- Mi, a baj, drágám? - kérdezte Susannah.

- Csak kezd elegem lenni a megfejthetetlen dolgokból, amit kérdés nélkül elfogadunk. Például egyszer sem kérdőjeleztük meg ezeket a hirtelen felbukkanó gondolatokat. Mi van, ha a Bíbor Király küldte?

- Nem ő volt - jegyezte meg Roland. Szája vékony vonallá préselődött.

- Honnan tudod? Én a helyében biztos küldtem volna egy telepatikus üzenetet, hogy ugorjunk a legközelebbi szakadékba. És nem lenne több ka-tet. Kész, vége, viszlát fakabát.

Blaine említésére Susannah összerázkódott. Csí ijedten Jake lábához kuporodott.

- Elfeledkezel apád arcáról! - kiáltotta Roland.

- Nem, a józan ész nevében kérdem, miért kell birkák módjára viselkednünk? Ott egy rohadt ajtó, amit eddig észre sem vettünk, és most azonnal át kell mennünk rajta. Miért? Vándorlunk téren, időn, Stephen King könyveken keresztül, miközben igazából a dolgok folyására alig van hatásunk. Nem értem, ha a semmiből szendvicsek tudnak megjelenni, amikor elfogy a készletünk, miért nincs egy ajtó, amivel egyből a Toronyhoz jutunk?

- Befejezted? - kérdezte Roland.

- Igen - válaszolta immár higgadtabban. - Nem is értem, miért pofázok, úgyis odamegyünk ahhoz az ajtóhoz és elmegyünk New Yorkba.

Roland csak bólintott, mint aki tudomásul veszi, hogy vége a hisztinek, haladhatnak tovább. Letértek az útról és a következő két órát azzal töltötték, hogy elérjék az ajtót. Mint a többi ajtó útjuk során, ez is csak szemből látszott. Oldalról nézve azonnal eltűnt a szemük elől, akár csak egy poligon hiba a számítógépes játékoknál.

- Én megyek át elsőnek. Gyertek szorosan mögöttem! - mondta Roland.

Rátette kezét a kilincsre, megvárta, míg tárcsai felsorakoznak közvetlen mögötte, majd kinyitotta. Az ajtó éles visítással kitárult és a csapat egymás sarkára taposva átlépett New Yorkba. Mögöttük szinte azonnal becsapódott az ajtó, de szerencsére senki sem sérült meg. Másodpercekig nem láttak semmit, mintha a Napba néztek volna. Látásuk folyamatosan kitisztult és ekkor vették észre, hogy egy férfi mosdóban vannak. Nekik háttal az egyik piszoárnál testes férfi végezte a dolgát. Öltönyt viselt, amelyet Eddie azonnal felismert.

Előkapta fegyverét és elkurjantotta magát.

- Ismét találkozunk! De most nem lesz időd üdvözölni! - azzal egyetlen golyóval megölte a férfit, akinek még arra sem maradt ideje, hogy a sliccét felhúzza.

- Apád szerelmére, mi ütött beléd? - kérdezte elképedve Roland.

- Ez csak Jack Andolini volt - legyintett Eddie. - Akár hányszor New Yorkba vetődök, összetalálkozom vele. Vagy két különböző világban megöltem már, még egy nem számít.

- Drágám, nálad komolyan elmentek otthonról - állapította meg Susannah, ahogy nézte a véres tetemet.

Az illemhelyre hárman rontottak be. Bizonyára a lövés hangjára. Roland a szem számára láthatatlan sebességgel rántotta elő fegyverét és csípőből leszedta az első két férfit. Eddie, akinek a kezében még mindig ott füstölgött a pisztoly, a harmadikat lőtte homlokon. Susannah, Jake és Csí fedezékbe vonult.

Roland azonnal újra töltött. Szemét le sem vette a bejáratról. Várta a második hullámot, de nem jött senki. A csípős lőpor füstje kezdett eloszlani.

- Ha most kijöttök feltartott kézzel, gyorsan végzünk veletek - kiáltotta be egy hang. - Legalább tizen vagyunk kint, állig felfegyverezve.

- Ügyes blöff - kiáltotta vissza Roland.

- Gondolod? Ez a maffia vendéglője. Itt van Balazar a teljes testőrségével. Elrontottátok az ebédjét, amitől nagyon pipa.

- Kellett neked lelőni Andolinit - mordult Eddie-re Roland.

- Hé, én mondtam réveteg tekintettel, hogy menjünk át egy ajtón, aminek nem tudtuk, mi van a másik oldalán?

- Ha Eddie nem lövi le Andolinit, most mind kint lennénk az étteremben, fedezék nélkül - mondta Jake.

- Nem tudunk visszamenni az ajtón? - kérdezte Susannah.

- Nem, egy irányú - válaszolta Jake.

- Akkor ki kell törnünk - jegyezte meg Susannah. Roland bólintott.

- Jake, Eddie, húzzátok el a holttesteket az ajtóból. Susannah, vedd le a ruhájukat és gyújtsd meg. Az iszákomban találsz gyufát. Ügyelj rá, hogy jó nagy füst legyen!

Munkához láttak.

- Fogy az időtök. Minél hamarabb kijöttök, annál gyorsabban vége lesz - sürgette őket a kinti hang.

- Ha bejössz, akkor is gyorsan vége lesz - válaszolta Eddie.

Roland az egyik zakót a csap alá tartotta és vizesen a tűzre rakta. Nemsokára hatalmas fehér füstpamacsok emelkedtek. Jake leszedte az egyik WC fedelet és azzal legyezte a füstöt az étterem felé.

- Mi a francot csinálnak? - kérdezte Pete Trop, Andolini helyettese. Rajta kívül még heten várták a csapatot. Balazar, mikor meglátta a füstöt, rögtön tudta, mi fog következni. Hadvezérként utasította embereit:

- Ti ketten! Borítsátok fel az asztalokat és használjátok fedezéknek. Pete, te menj a bárpult mögé. Vidd magaddal Dagi Joe-t is.

Közben a füst egyre jobban terjedt. Alig lehetett látni a mosdó bejáratát. Egyszer csak egy tolókocsis alak körvonalai kezdtek kibontakozni.

- Tűz! - kiáltotta Balazar. Hét fegyver szólalt meg egyszerre, pokoli lármát csapva. A kocsi mögött egy apró, kutyaszerű alak futott ki, egyenesen a bárpult mögé, de mindenki csak a tolószékkel volt elfoglalva. Egymás után csapódtak a hatalmas testbe a lövedékek.

- Tüzet szüntess, ez Andolini! - kiáltotta az egyik maffiózó, aki a legközelebbi fedezékből lőtt.

Csí közben felfutott Pete farmeros lábán, végigszaladt karján és nyaki artériájába mélyesztette fogát. Meglepetésként ért mindenkit a beálló csendbe a férfi ordítása. Pete felállt és megpróbálta lerázni magáról a szőrmókust. Vér spriccelt a bárpult mögötti tükörre. Dagi Joe megpróbált segíteni a haldokló férfinak, de nem járt sikerrel. Eközben Susannah kibukfencezett a WC-ből. Alacsonyan volt, nehéz célpontot nyújtott. Gyorsan leszedett két maffiózót. A lövés hangja észhez térítette az életben maradtakat. Ismét a mosdó bejárata felé fordultak, de elkéstek. Roland, Eddie és Jake is kint volt már. Minden egyes lövésük talált. Az étterem padlóján nemsokára hullák feküdtek.

Balazar lebukott egy felborított asztal mögé. Tekintete idegesen járt jobbra-balra, hátha megkaparinthat egy fegyvert. Az asztal fáján keresztül lőtték le. Életének utolsó leckéje az volt, hogy az asztal lap nem állítja meg a pisztolygolyókat.

Roland gyorsan újra töltött. Jake magához ölelte a véres pofájú Csít.

- Nem esett bajod?

- Jod - válaszolta Csí.

- Ideje távozni - mondta Roland. Fürkésző szeme újabb ellenséget keresett, aki talán Balazárhoz hasonlóan lapulva várja az alkalmat, hogy golyót röpítsen a hátukba.

- A tüzet eloltjuk? - kérdezte Eddie.

- Nem, hagyjuk, hogy a hely leégjen.

- Pipa - mondta Eddie.

- Tessék?

- Unalmas vándorlás: pipa, rémisztő szörny: pipa, misztikus telepatikus üzenet: pipa, véres lövöldözés: pipa. Ebből áll a történetünk, még nem vettétek észre?

- Kifelejtetted a bizarr szexuális együttléteket - vigyorgott Jake.

- Valamint a gondolkodó gépeket, amelyek megőrülnek - tette hozzá Susannah.

- Inkább fogjátok meg a csomagokat és menjünk - morogta Roland.

Susannah visszamászott a székébe, Roland kifelé kezdte tolni az étteremből. Eddie felkapta a zsákokat és kiment, mielőtt a lángok rákaptak volna az ebédlőasztalokra.

 - Rendben, látnok fiú, merre tovább? - kérdezte Eddie.

- A Genom Központba - vágta rá Jake.

- Ezt most még egyszer, mert nem értettem a szavakat.

- Én sem értem, de tudom, hogy oda kell mennünk. Ott fogunk találkozni az írónkkal.

A csapat kérdőn nézett Rolandra, aki csak megvonta a vállát.

- Talán hipnotizálhatnánk, hogy hagyja békén a történetünket - elmélkedett a harcos.

- Ez a leghülyébb ötlet, amit valaha hallottam - mondta Susannah.

- Semmivel sem nagyobb hülyeség, mint amikor Stephen Kinget hipnotizáltuk, hogy írja meg a történetünket - jegyezte meg Eddie.

A nő széttárta a karját: csináljatok, amit akartok.

Mivel nem volt pénzük, kiadós gyaloglás elé néztek, de ez meg sem konnyant nekik egy másik világban tett utazásaik után. Eddig egyetlen New York-i kiruccanásuk alatt sem nézték meg őket, és úgy tűnt, ez az út sem lesz kivétel.

Lemenőben volt a nap, amikor elérték a Genom Központot. A bejárat felett fehér transzparens hirdette, hogy a mai napon kezdődik a XXII. Nemzetközi Számítógépes Rákkutató Konferencia.

- Ide orvosok vagy tudósok jönnek? - kérdezte Susannah.

- Teljesen mindegy, egyikükre sem hasonlítunk - mondta Eddie, majd hozzátette: - Van egy olyan érzésem, hogy a mi kis íronk csak szeretne itt lenni.

Beléptek a forgó ajtón. A regisztrációs pult felé vették az irányt. Az asztal tele volt névjegy kártyákkal. Két kedves nő mosolyogva üdvözölte őket.

- Megtudhatnánk a kedves nevüket? - kérdezte a jobb oldali nő.

- Á, itt van az enyém - kapott fel Eddie találomra egy kártyát. A többiek követték példáját. A regisztráció után mindannyian kis szatyrokat kaptak, amiben toll, jegyzetfüzet és a konferencia nyomtatott anyaga volt, valamint ismeretlen műszerek reklámbrossúrái. Roland megvetően mérte végig a szatyrot. Hozzászokott, hogy vándorlásai során csak erős anyagból készült felszerelést használjon, de ez a szatyor úgy nézett ki, öt percet sem fog bírni.

- Arra találják az előadó termet - igazította útba őket a recepciós.

- Hogy fogjuk megtalálni az írót? - kérdezte Susannah.

- A szokásos módszerekkel: telepátiával, semmiből előbukkanó varázstárgyakkal, gondolkodó gépekkel - vágta rá azonnal Eddie.

- Drágám, kezdesz idegesítő lenni - felelte a nő. Eddie duzzogva elhallgatott.

Roland felhúzott szemöldökkel rájuk sandított. Az együtt töltött idő alatt most először fordult elő, hogy valódi házastársakként viselkedtek.

Jake észrevett egy kutatót, aki a kiakasztott posztereket nézte. Alacsony volt, sárga esőkabátot viselt, és bár fedett helyen voltak, széles karimájú kalap volt a fején. Jake odalépett mögé, elgáncsolta. Már nyúlt volna a fegyveréért, amikor Roland elkapta a csuklóját.

- Ez egy alacsony ember! - sziszegte a fiú.

- Jake...

- Értesíteni fogja a Bíbor Király embereit!

- Nem, Jake. Ő nem can-toi. Csak egy ember, akinek borzalmas az öltözködési stílusa.

A földön fekvő férfi elkerekedő szemmel bámult rájuk.

- Tessék? - ennyire futotta tőle.

- Ugyan, Jake - lépett oda hozzájuk Eddie. Elkapta a férfi orrát, és megtekerte. - Nem visel maszkot. Nem can-toi.

- Érvényes a vízumom, érvényes a vízumom - hadarta a sárga esőkabátos fájdalmában.

- Drágáim, menjünk abba a terembe - mutatott előre Susannah. - Itt felesleges feltűnést keltünk.

A terembe belépve, rengeteg embert láttak. Mindegyikük előtt furcsa, sok gombos szerkezet feküdt. Eddie, aki '86-ban lépett át Roland világába, sejtette, hogy ezek talán számítógépek. Az előadói pultnál rövid hajú, szemüveges férfi készült az előadásra. Egy pillanatra felnézett és megakadt a szeme az újonan érkezetteken. Egy pillanatra megmerevedett, majd idétlen vihogásba tört ki. Az első sorban ülő kutatók érdeklődve nézték, mi lehet a nevetés tárgya, de nem értették, mi olyan mulatságos.

Roland szeme résnyire szűkült, ahogy farkas szemet nézett a vihogó férfivel.

- Ő lesz az - jelentette ki, majd elindult felé. A többiek követték.

A szemüveges férfi csak röhögött, mintha a világ legjobb poénjával szórakoztatták volna.

- Ti...ti... - képtelen volt befejezni a mondatot. Furcsa akcentusa volt, Eddie szerint Kelet-európai országból származhatott.

Néhányan futó pillantást vetettek a kis közjátékra, de inkább a laptop monitorját bámulták. Roland elővett egy lövedéket és táncoltatni kezdte az ujjai között. A férfi nevetése elakadt.

- Hallod a hangomat? - kérdezte Roland.

- Tisztán és érthetően - felelte a férfi. Hasonló réveteg kifejezés ült az arcára, mint Jake-nek, amikor azt mesélte nekik, hogy New Yorkba kell jönniük.

- Miért írsz rólunk?

- Elolvastam a Setét Torony mind a hét vagy nyolc kötetét és ez kikívánkozott belőlem. King a bevezetőben azt írta, ez az ő válasza a Gyűrűk Urára. Nekem ez a válaszom a Setét Toronyra. A Gannak nem lehet parancsolni. Olyan, mintha befognád a szád a tüsszentés előtt. A trutymó az orrodon fog távozni.

- Kinghez méltó hasonlat - jegyezte meg Eddie.

- Azt kérnénk, hogy többet ne írj rólam vagy a ka-tetről. Szabotálod az utunkat a Setét Toronyhoz. Te nem a Gan köldöke vagy.

- Nem, nem vagyok a Gan köldöke. Sokkal inkább az alfele.

- Legalább van önkritikája - szúrta közbe Eddie. Hangjában némi elismerést lehetett felfedezni.

- Akár milye is vagy a Gannak, ideje felhagyni vele - vette vissza a szót Roland. - Háromig számolok és te nem fogsz emlékezni erre a beszélgetésre, de aszerint fogsz cselekedni.

- Random szereplők hipnotizálása: pipa - mondta Eddie, inkább csak úgy magának.

- Egy, kettő, három - mondta Roland.

A férfi pislogott hármat. Értetlen tekintettel nézett körül. Roland és barátai pedig eltűntek a létezés eme síkjáról, akár csak egy Bruce Willis sci-fi szereplői.

Szólj hozzá!

Címkék: irodalom

Szerver törés. Utasításra

2019.01.23. 23:00 Travis.CG

A történet úgy kezdődött, hogy egy nagyon kedves kolléganőnk külföldre ment. Pontosan nem tudni, mi van a háttérben, de ami tény, a kommunikáció szinte lehetetlenné vált vele. A probléma a be nem fejezett projektekkel volt, amiket cikk állapotba kellene varázsolni, de minden adat egy szerveren volt, bezárva a szerverterem zajos gépei közé.

Mivel a kutatók úgy tudták, hogy senki másnak nincs hozzáférése a géphez, ezért az intézet igazgató személyes levelében adott utasítást a gép feltörésére.

Most komolyan, ki tudna visszautasítani egy ilyen ajánlatot? Legitim kalózkodás valós infrastruktúrában! Máshol csak ugatnak arról, hogy változatos munkavégzés.

Az első gond az volt, hogy igazából senki nem tudta, hol van a gép. Lementem a rendszergazdákhoz, hogy megtudakoljam. Ja, a játék érdekessége, hogy ők a fenti levélváltosról nem tudtak, én meg nem kötöttem az orrukra. Először nem értették, melyik gép IP címét kérem, megadták egy NAS szerver címét, majd azt mondták, az a gép nincs is a szerver teremben, de végül addig raktuk egymáshoz az információ morzsákat, amíg kitaláltuk, melyik gépről van szó.

- Azért kérdezzük, mert azt a gépet nem viheted haza!
- Nem akarom elvinni, csak az IP címe kell - válaszoltam.
- Mit akarsz vele?
- Belépni.
- Van hozzáférésed?
- Majd lesz. Írtam a kolléganőnek.

Az utolsó két mondat külön-külön igaz volt, de azt egyik rendszergazdi sem tudta, hogy nem úgy lesz hozzáférésem, hogy kapok valakitől. Legalábbis ez volt a tervem. Aztán kiderült, hogy nekik megvolt a jelszó egy papíron, amitől egy cseppet veszített a játék az ízéből. Ugyanis ha valamit elszúrok (márpedig erre elég nagy esély volt, ahogy ismerem magamat), akkor nem védekezhetek azzal, hogy "de a főigazgató utasított, hogy törjem fel", hiszen a levél igazi értelme az adatok megszerzésére irányult.

Addigra már eltökéltem, hogy végigviszem a projektet, majd legfejlebb lesz néhány "oopsz". Elindítottam egy Kali Linuxot.

Aki nem tudná, a Kali egy olyan disztribúció, amit telepakoltak olyan eszközökkel, amelyek nekem ehhez a munkához kellettek. Amíg az Ubuntu olyan, mint egy kedves nagynéni, addig Kali inkább egy mogorva nagybácsira hasonlít. A nagynéni házában égnek a villanyok, a driverek mind a memóriában csücsülnek, hátha a gyerekeknek éppen egy ritka Wacom digitális táblával van kedvük játszani. A nagybácsi házában sötét honol. Ha fényt szeretnél a szobádba, először egy aggregátort kell bekapcsolni. A nagynéni az ágyba hozza a reggelit, de Kali bácsi nem csinál ilyet. Ha azt mondod neki, éhes vagy, kinyit egy fegyverszekrényt és a réten futkosó nyulak felé bök. Ubuntuéknál a root egy csúnya szó. Nem is mondjuk ki, legfeljebb utalunk rá a társasági etikettnek megfelelő sudoval. Ezzel szemben Kali bácsi folyamatosan káromkodik.

Végül a legfontosabb: Kali bácsinak számtalan igen veszélyes fegyvere van, de egyikről sem beszél. Ha meg akarod tanulni a használatukat, bizony más forrás után kell nézned.

Kali elindítása után elkezdtem szaglászni a gép körül az nmap-el. A program nem találta a gépet. Próbáltam név alapján is elérni, ugyan az lett az eredmény. Biztos kikapcsolták - gondoltam.

Lementem a rendszergazdákhoz, mondtam nekik, hogy az IP nem válaszol. Bementünk a szerverterembe. A gép ott virított, égtek a kis ledek. A kis papír a jelszóval ott hevert a billentyűzet mellett. A rendszergazda belépett, kiadta az ifconfigot. Nem csoda, hogy nem találtam! DHCP volt beállítva, más IP-t kapott, mint amiről a rendszergazdák tudtak. Mondták is, ha majd bejelentkeztem, állítsam át. Hiába, a legnagyobb biztonságban az van, amiről nem is tudunk!

Kezdtem előről. Most már megvolt a gép, válaszolt is, de a nyitott portok még mindig furcsák voltak. Elméletileg ezt a gépet azért rakták a szerver terembe, hogy a kolléganő külföldről is használni tudja. De nem volt nyitva SSH port. Helyette a 80-as, a 110-es, 21-es. Biztos, hogy nem webszerverként üzemelt.

Ismét lementem a rendszergazdákhoz. Mondtam, nem tudok belépni. Ők be tudtak lépni. Hogy lehetek ennyire béna? - kérdeztem magamtól. Már az elején beégek. Átbeszéltük a részleteket, mire kiderült, hogy rossz IP-t jegyeztem meg.

Harmadik menet. Most már az nmap azt is meg tudta állapítani, hogy Ubuntu van a gépen, a MAC címből a gép gyártóját is korrektül adta vissza. Jó helyen járok! Az SSH szerver verziószámát is megkaptam.

Oké, hogyan lépjek be? Az első ötletem az volt, hogy keresek egy OpenSSH sebezhetőséget. A disztribúció már eleve tartalmaz rengeteget. A searchsploit parancs segítségével lehet keresni közöttük. Két távoli parancs futtatására alkalmas sebezhetőség volt. Az egyik egy Python szkript formájában, a másik egy C forráskód volt. Egyiket sem tudtam elsőre lefuttatni, mert hiányoztak a megfelelő csomagok. Végül a C-t választottam, mert a Python kód szerint teljes hozzáférés kell, felhasználói névvel és jelszóval. Nekem meg nem volt jelszavam.

A kód fordításához először telepíteni kellett a libssh-devel csomagot, utána ment gond nélkül. Beadtam neki a szerver nevét, a parancsot, amit futtatni akartam, majd vártam a csodát. De csak egy promptot kaptam, ahol megint a jelszót kérte. Ekkor alaposabban elolvastam a leírást: SFTP sebezhetőség. Ha van hozzáférés, lehet kódot futtatni.

Böngésztem még a furcsa nevű programok között. Az összes ilyesmi volt: Yersinia, Nikto, KillerBee, Wireshark... Miért nincs olyan név, hogy Rainbow? Vagy amilyen neveket az Én kicsi pónim szereplőinek adnak? Mindegy.

Végül a Hydra mellett döntöttem, ami brute force támadást tud intézni egy csomó protokollon keresztül. A jelszó egy tudományos néven alapult, ezért nem szerepelt a Kali egyetlen jelszó listájában sem, tehát szótár alapú törés szóba sem jöhetett. Mivel tudtam, hogy 8 karakter hosszú és nincs benne nagy betű, ezért azt gondoltam, könnyebb lesz a törés. Tévedtem. A program kiköpött egy hibaüzenetet, hogy túl sokáig tartana a futás, nem fog elindulni.

Itt hagytam abba a próbálkozást, mert nem akartam túl sok időt elpocsékolni. Ezek alapján úgy tűnik, a rendszerek nem olyan védtelenek. Igazából egy jól megválasztott jelszóval és folyamatos frissítésekkel elég hatékonyan lehet védekezni, ha az NSA ellen nem is, ellenem mindenképp.

Szólj hozzá!

Címkék: rendszergazda

Uszítsd rá a Krakent! A metagenomra.

2019.01.12. 23:42 Travis.CG

De még jobb, ha a Kraken2-t. Az agresszív név mögött egy metagenomikai taxonómiai elemző program lapul. Bárki, aki dolgozott már metagenomikai szekvenciákkal, az tudja, hogy az eljárás mögött nem áll más, mint begyűjteni mindent, ami "talán jó lesz valamire". A környezetünkből vett mintákban DNS-t keresnek és megszekvenálják.

Mivel a mintákról alapvetően semmilyen információnk nincs, ezért az első lépés általában a taxonok meghatározása. Ezt segíti elő a Kraken2. A szekvenciák taxonómiai helyének meghatározása során megkeresi a legősibb közös őst, ha tudja.

Telepítés

A program telepítése rendkívül egyszerű. A függőségek száma minimális, csupán a sed/find/wget és természetesen a Perl. Használ pár saját, C++-ban megírt kisebb programot is. Nem kötelező, de telepíthetjük az NCBI Blastot is, ahonnan a dustmasker/segmasker programokat fogja használni. (Bár ezek telepítése erőseb ajánlott, ha az alacsony komplexitású régiók okozta problémákat el akarjuk kerülni.) Csak kiadjuk az install_kraken2.sh parancsot a megfelelő könyvtárnévvel és kész.

Természetesen ez még nem használható. A taxonómiai elemzéshez szükség van taxonómiai információkra is. A program természetesen letölti nekünk a megfelelő adatokat, és elvégzi a k-mer bontást is, de ez a lépés értelem szerűen sokkal lassabb. Én 8 magot adtam a programnak, ami elég volt, hogy 5 óra alatt telepítse a standard adatszettet. Ha csak egy 16S adatbázist hozunk létre, az már 4 perc alatt is megvan.

Futtatás

A program futtatása is igen egyszerű. Megadjuk a fájlokat és az adatbázist, az eredményt pedig a képernyőre kapjuk. Minden szekcenciára elvégzi a taxonómiai elemzést. A dokumentációval ellentétben az input formátumot a program határozza meg, nem kell nekünk definiálni, de azt fontos megadnunk, hogy a szekvenciák tömörítettek-e. Ennek hiányában a fájlok azonosítása nem fog működni. Célszerű az --use-names opciót is használni, különben csak taxid-kat kapunk, ami nem nagy segítség.

A futási idővel nincs gond, percek alatt kapunk eredményt. Akinek viszont nem áll rendelkezésére elég memória, a mini-krakennel próbálkozhat, aminek természetesen limitációi vannak, ami az eredmények pontosságán is látszik. Sajnos a kimenet nem tartalmaz semmilyen pontozó rendszert, ami segítségével eldönthetnénk, mennyire jók az eredmények. Az eredmény fájlban ugyan megtaláljuk mennyi kmer esett az adott taxonra, de tüzetesebb átvizsgálásnál találtam olyan eseteket, ahol read nagy része ismeretlen. Négy-öt kmer alapján kijelenteni, hogy egy 300 hosszú szekvencia X taxonhoz tartozik, szerintem nem szerencsés.

Az egyetlen szűrési lehetőségünk a --confidence. A szerzők is elismerik, hogy ez nem egy tökéletes megoldás, de abban segíthet, hogy csökkentsük a fals pozitív találatok számát.

Összegzés

A taxonómiai besorolás nem könnyű annak hierarchikus felépítése miatt. Ehhez jön még a horizontális géntranszfer, ami igen megnehezíti ezt a feladatot. A Kraken2 igyekszik a legjobbat adni és meg sem próbál több, lenni, mint ami: a szekvenciákról megmondja, melyik taxonhoz tartozhat. Nincs vizualizáció, a kimenet kicsit szerencsétlen, de stabilan működik és folyamatosan fejlesztik. Önmagában kevés, hogy puclikáció kész eredményt kapjunk, de egy munkafolyamat részeként igen hasznos.

Szólj hozzá!

Címkék: bioinformatika

Digi és a megnyekkent Ubuntu esete

2019.01.06. 22:08 Travis.CG

Az a jó a családlátogatásokban, hogy akkor rögtön rendbehozhatom a fél éve magára hagyott, ismeretlen eredetű problémákkal küszködő gépeket.

Az egyik ilyen eset egy Ubuntu volt, amit még én állítottam be két éve. Igyekeztem minél kevesebb bonyodalmat okozni a Windowshoz szokott felhasználóknak, ezért kérés nélkül mentek fel a frissítések és a GRUB2 menüje nem jelent meg.

Közben történt egy internet szolgáltató váltás, aminek hatására a gép furcsa dolgokat kezdett csinálni: A mentett weboldalakat gond nélkül megjelenítette, de újakat nem volt hajlandó megnyitni. Az internetet bekötő ember szerint ez merevlemez probléma volt, de szerencsére nem engedték neki, hogy megjavítsa, ezért az adatok megmaradtak a gépen.

Röviddel ez után történt egy disztribúció frissítés is. Illetve történt volna, ha a megvárták volna a telepítés végét. De nem így történt, inkább kikapcsolták, mert "túl sokáig tartott". A leállítás még ment, a boot már nem.

Hurrá, a Jézuska megint gondoskodott számomra a meglepetésről.

A gép bebootolt, a Linux el is indult, de a grafikus felület csak az egér mutatót jelenítette meg. Akkor nagy baj nincs, mert ha boot CD is kellett volna, akkor lettem volna csak igazán pácban. A konzolos bejelentkezés ment, ezért elsőre a GRUB2-t kapcsoltam vissza, hátha a helyreállító módokkal tudok valamit kezdeni.

Itt egy kicsit bénáztam, mert a HIDDEN_TIMEOUT opció is be volt kapcsolva, ezért elsőre nem jelenítette meg a menüt, de végül az ESC gombbal elővarázsoltam.

Feljöttek a helyreállító menük, úgyhogy adtam neki egy csomag javítást. Vagy másfél óráig kerregett, de végül kaptam egy rendszert, ami már a grafikus felületet is megjelenítette.

Jöhetett a net.

Az első furcsaság az volt, hogy az ifconfig parancs nem mutatta a hálózati csatolót. A grafikus felület beállító panelje szerint minden a legnagyobb rendben volt, de mégsem volt net. Valaki hazudik és az ökölszabály, hogy a grafikus cuccok a ludasak. Jobb ötlet híján az /etc/network/interfaces fájlba felvettem az enp0s1-t, mert a grafikus beállító ezt várta. Reboot. Nem történt semmi változás. Aztán kiadtam az ifup enp0s1 parancsot, mire varázsütésre megjelent a hálózati csatoló. Na jó, a varázsütés kicsit túlzás. Két percet kellett várni, és a boot idő is megnövekedett ennyivel. Gondoltam, azzal majd később foglalkozom, először legyen net.

A fejemben lévő lista egy újabb elemét pipálhattuk ki. Már csak netet kell varázsolni.

A telefont böngészve megtaláltam a Digi internet konfiguráló dokumentációját, de legnagyobb meglepetésemre, minden úgy volt beállítva, ahogy kell. Illetve reménykedtem benne, mert az internet eléréshez szükséges jelszót nem tudta senki. Hagytak ott millió papírt, de az előfizető azonosítói nem voltak közötte. Persze, minek is az egy merevlemez hibás gép mellé?

Szerencsére emlékeztem pár ip címre, amit megpingelve választ kaptam. Hoppá, akkor mégis van net! Az SSH is működött. Már csak azt kell kitalálni, miért nincs névfeloldás.

Elég sok időbe telt, mire mire megtaláltam a megoldást. A gond az volt, hogy folyton visszatértem a Digi dokumentációihoz. Volt nekik egy PDF-ük a DNS szerverekkel, azt állítottam be. Pingre válaszoltak, tehát léteztek. Végül egészen véletlenül futottam be egy 2018 márciusi bejegyzésbe, ahol azt tanácsolták, hagyjuk a fenébe a Digi DNS szervereit, használjuk a Gugliét.

Beállítottam az új névszervereket a grafikus felületen, de továbbra sem működött. Aztán kiderült a turpisság. A nmcli device show parancs szerint továbbra is a Digis szervereket akarta használni, csak a harmadik és negyedik helyen próbálta volna a Guglit. De mivel a működésképtelen DNS szerverek válaszoltak, csak értelmes adatot nem közöltek, ezért a rendszer meg sem próbált tovább lépni.

Végül az /etc/network/interfaces fájlba felvettem a nameserver opciót a megfelelő címekkel és bumm, ment újra a mahjong meg a többi Flash játék. Mert ezek voltak a legfontosabbak.

De egy valamit továbbra sem értek. Miként hagyhatja egy szolgáltató, hogy fél évnél hosszabb ideig ne menjenek a szerverei? Nézik, ahogy az emberek fórumokon próbálják kiküszöbölni a problémát és még csak annyit sem tesznek, hogy legalább egy linket kitegyenek a saját oldalukra, hogy mit kell csinálni. Bár lehet, hogy gőzerővel dolgoznak és keresik a merevlemez hibát a saját DNS szerverükben.

Szólj hozzá!

Címkék: rendszergazda

Ajándékok ellenségeink gyerekeinek

2019.01.02. 21:53 Travis.CG

Biztosan mindenkinek vannak olyan ismerősei, akiket utál, de valamilyen okból képtelen megszakítani vele a kapcsolatot. Például mert rokon, akik ábrázatát el kell viselnünk egy-egy nagyobb családi összejövetelnél. Ráadásul még ajándékot is kell vennünk nekik!

Természetesen ez nem akadályozza meg, hogy borsot törjünk orra alá és a szeretet ünnepét kihasználva rafinált bosszút álljunk rajta minden egyes együtt töltött percért. A trükk az, hogy hagyjuk, a gyerekeik végezzék el a - szó szerint - piszkos munkát. Nekünk nincs más dolgunk, csak eszközökkel ellátni őket.

Megmaradó buborék

Sajnos nem találtam linket róla, de létezik olyan szappanbuborék fújó, aminél a buborék nem pukkan ki földet éréskor. Helyette leereszt nagy sokára kipukkan és egy átlátszó hártyát hagy maga után, mintha valami hüllő vedlette volna le. Szőnyegbe kiválóan ragad. Sajnos porszívóval könnyen eltakarítható, ezért nem okoz elég kárt.

Kézzel festő készlet

Ezzel már nagyobb pusztítást okozhatunk. A kicsik úgyis elfelejtik megtörölni a kezüket, ha pedig felszólítjuk őket, hogy mossanak kezet, előtte még összetaperolnak mindent, míg kiérnek a fürdőszobába. Ezért is merem ajánlani. Csak a kupaknak kell lekerülni a tubusok tetejéről és máris színes pöttyök lesznek mindenhol a lakásban. Egyetlen hátrányuk, hogy vízzel könnyen lejönnek, még a ruhákban sem hagynak maradandó foltot.

Fésülködő asztal

Ha hajlandóak vagyunk többet áldozni a bosszúra, akkor vehetünk fésülködő asztalt. A szülők cipelhetik a fogás nélküli dobozt, gondolkodhatnak, hova a fenébe állítsák fel a gyerek új játékát az amúgy is zsúfolt szobában és a millió apró kiegészítő olyan könnyen elveszik, hogy órákig bömbölteti még a legjámborabb csemetét is.

A következő eszközt csak igen kegyetlen embereknek ajánlom, akik készek a Genfi Egyezményt is felrúgni, hogy szenvedni lássák ellenségüket. Jelen blog írója elhatárolódik mindenkitől, aki ilyesmivel lep meg egy gyereket.

Agyagozó készlet

Ezzel a játékkal lehetetlen tisztán játszani. Az agyag előre be van keverve, tehát kibontás után azonnal megkezdi áldásos tevékenységét. Bárki, aki hozzáér, azonnal koszos lesz. Ha megpróbálja lemosni, összekeni az egész fürdőszobát. Tíz perc átlagos játékidőre fél óra takarítás jut gyerekenként. Ha a szülő minden áron valami értelmeset akar alkotni, folyamatos víz kontaktusra kényszerül, amitől agyagos lé fog szétfolyni.

A játékhoz mellékelt motoros forgó tálcánál tökéletesebbet el sem lehet képzelni. Az agyag könnyedén belefolyik és már a második használat után beragad. Persze a csemete addigra már ismét játszani akar, így a szülő kénytelen venni még egy készletet, jóllehet már előre tudja, mi lesz az egész vége. Egyszerűen brilliáns. Bosszú lánc-reakciót idézünk elő!

A hosszú távú  hatásokról nem is beszélve. Az agyag lerakódik apró repedésekben, leülepszik a csatornarendszer kanyarulatos részeiben és mikor a szülő fellélegzi, hogy gyereke végre megunta a cserépedények gyártását, akkor jön az utóhatás. Az eldugult részek szétszedése után a szülő elszörnyedve veszi tudomásul, hogy a gyűlölt anyag még mindig tartogat meglepetéseket.

Szólj hozzá!

Címkék: életmód

Az év poénja

2018.12.23. 21:04 Travis.CG

Ez a levelet kaptam Mikulásra. Bevallom, kicsit unalmas, hogy az összes afrikai diktátor és renegát tábornok az én segítségemmel akarja kimenteni vagyonát. Általában ezért nem is nyitom meg a spam leveleket, de ez felkeltette az érdeklődésemet:

hello,
I'm a hacker who cracked your email and device a few months ago.

My malware updated it every time.
Do not try to contact me or find me, it is impossible, since I sent you an email from your account.
Through your email, I uploaded malicious code to your Operation System.
I saved all of your contacts with friends, colleagues, relatives and a complete history of visits to the Internet resources.
Also I installed a Trojan on your device and long tome spying for you.
You are not my only victim, I usually lock computers and ask for a ransom.
But I was struck by the sites of intimate content that you often visit.
I am in shock of your fantasies! I've never seen anything like this!
So, when you had fun on piquant sites (you know what I mean!)
I made screenshot with using my program from your camera of yours device.
After that, I combined them to the content of the currently viewed site.
There will be laughter when I send these photos to your contacts!
BUT I'm sure you don't want it.
Therefore, I expect payment fro m you for my silence.
I think 600 EUR is an acceptable price for it!
Pay with Bitcoin.
My BTC wallet: 1Ax3aRcMHM35jx4dVXfVfFPGz3wQ9QVg6n
If you do not know how to do this - enter into Google "how to transfer money to a bitcoin wallet". It is not difficult.
After receiving the specified amount, all your data will be immediately destroyed automatically. My virus will also remove itself from your operating system.
My Trojan have auto alert, after this email is read, I will be know it!
I give you 1 days (24 hours) to make a payment.
If this does not happen - all your contacts will get crazy shots from your dark secret life!
And so that you do not obstruct, your device will be blocked (also after 24 hours)
Do not be silly!
Police or friends won't help you for sure ...
p.s. I can give you advice for the future. Do not enter your passwords on unsafe sites.
I hope for your prudence.

Szóval bárki szaftos képeket lát rólam (ami a nem létező webkamerámmal készült), akkor az azért van, mert nem fizettem.

Szólj hozzá!

Címkék: életmód

Lokális maximum keresés

2018.12.18. 01:58 Travis.CG

A fenti elnevezés gyakorlatilag a csúcsok azonosítása változó adatokon. Ezek az adatok változhatnak térben vagy időben. Jelen posztban csak a 2D csúcsok azonosítása a cél, de természetesen léteznek módszerek magasabb dimenziókra is.

Aki egy kicsit is kutakodott a témában, bizonyára tapasztalta, hogy nincs egységes konszenzus, mit is nevezzünk csúcsnak. Amíg az első ábrán teljesen egyértelmű, mit tekintünk a legmagasabb pontnak, addig egy zajos, kiugró értékektől sem mentes adatnál már nem ilyen egyszerű a helyzet:

zoom.png

out.png

Talán ez is az oka, hogy a számtalan elérhető módszer mellett az emberek saját maguk is készítenek ad-hoc megoldásokat, amelyek ugyan úgy, vagy még jobban megfelelnek az igényeknek.

A következőkben azt mutatom meg, hogyan lehet minimális programozással, adott függvényekre támaszkodva megoldani a feladatot. Minimális programozás alatt azt értem, hogy csak a rendszer által biztosított függvényeket használjuk, semmilyen saját magunk által implementált adat transzformációt vagy algoritmust nem kell igénybe venni. Mintha előre gyártott LEGO elemeket illesztenénk össze, de saját kockákat nem gyártunk.

R

R-ben két csomag kerül bemutatásra. Az első a PeakPick. Használata rendkívül egyszerű. Bemenő paramétere egy oszlop mátrix. Ezt a matrix() függvénnyel állíthatjuk elő. Második paramétere a csúcspontok minimális távolsága.

peakPick(matrix(data, ncol=1), 100)

Visszatérési értéke egy logikai mátrix, a bemeneti adatokkal megegyező dimenzióval. Igaz érték esetén az adott elemet csúcspontként azonosította az algoritmus.

A második csomag a nem túl intuitív pracma néven fut. Bemenete egy vektor, tehár a PeakPick-el ellentétben csak 2D adatokra használhatjuk.

findpeaks(data)

A program viszonylag egyszerű algoritmust használ. Csúcsnak tekint mindent, ami előtt és mögött alacsonyabb értékek vannak. Az, hogy mennyi lépésen keresztül történjen ez a növekedés, az nups és ndown paraméterekkel szabályozható.

Python

Az adatelemzés másik nagyágyúja, a Python is biztosít lehetőséget lokális maximumok felderítésére. A scipy csomag jelfeldolgozó rutinok egész sorával rendelkezik.

import scipy.signal as sig
import numpy as np
sig.find_peaks_cwt(data, np.arange(5,10))

Ez a megoldás egy wavelet transzformáción alapul, visszatérési értéke a bemeneti adat indexei, ahol a csúcspontot sikerült megtalálni.

Összegzés

Én denzitás függvényeken próbáltam ki a módszereket és számomra úgy tűnt az R megoldásai sokkal jobb eredményt adtak, közelebb álltak ahhoz, amit én csúcspontnak tekintek. A Pythonos megoldása nagyon érzékeny a második paraméterre és ahogy különböző értékekekt adtam meg neki, néha nagyon meglepő eredményeket adott. Talán az is probléma volt, hogy nem vagyok túl járatos a wavelet transzformációban.

De az biztos, hogy lokális maximum keresésnél nem kerülhetjük el a bemenő adatok szűrését. Ez pedig tovább növeli a beállítandó paraméterek számát. Ezek alapján azt mondanám, hogy a csúcspontok megtalálása egyfajta próba-szerencse módszerrel történik, ahol minden esetben figyelembe kell venni a bemeneti adatok jellegét.

Szólj hozzá!

Címkék: statisztika

Cseppet sem objektíven: Experience 2018

2018.12.10. 15:45 Travis.CG

A magyar demoscene csendesen búcsúzik az évtől az Experience keretein bellül. Egy délutáni nap beülnek a Cserepes házba és végignézik az adott évben legjobbnak ítélt alkotásokat és néhány produkció erejéig még egy compó is van. Szavazás, nyeremény általában nincs, és csak demó kategóriában lehet indulni. Az egész a demók élvezetérő szól.

Idén hat produkció képviseltette magát. Mivel az eseményen nem a versengés a fontos, ezért elhagyom a negatívumok bemutatását és csak az értéket emelem ki.

Hypercluster

Kellemes 4k látványvilág, ambient zenével. Terence, az egy személyes demócsapat ismét lecsapott.

All we be good

Slyspy szintet lépett ezzel a demóval. Elhagyta a 2D rétegek színes kavalkádját és teljes egészében nyitott a harmadik dimenzióba. Igaz, eddig is voltak 3D betétek, de azok valahogy elvesztek az egymásra pakolt rétegek halmazában. Azt hiszem, ha Zoom megbetegszik, a Conspiracy-nak lesz tartalék designere.

8 Pelc szenvedés

Nem volt nyolc pelc és nem volt szenvedés. Bújtatott QBParty invitáció némi humorral fűszerezve. Humora erősen hajaz a Tesco Gazdaságos Demócsapat wildjaira. Jó látni, hogy a lamer demók túlléptek a Firg! alkotta kereteken.

B codes 3

Kellemes kis 256byte intrók gyűjteménye, megfűszerezve egy kis stílussal. Értem ez alatt, hogy nem az effektek voltak a főszerepben, vagy hogy bemutassuk, mennyi kalkulációt lehet bezsúfolni egy igen kicsi futtatható állományba, hanem a méretkorláton belül

Reboot

A produkció idealizálva bemutatta, hogyan is zajlik egy számítógép indulása. Idealizált alatt azt értem, hogy kicsit olyan volt, mint amikor a gyerekeknek az emberi testről készült mesében kis emberkéknek rajzolják a sejteket. Vizuális minőségre sem volt hiba.

Demojoe travels time

Vicces 4k, ahol karikatúra-szerűen bemutatják a régi nagy demókat, miközben úgy érezzük magunkat, mintha egy partyn lennénk. Még el is játszhatott gondolatban a néző azzal, hogy megpróbálja kitalálni, melyik demó fut a stilizált kivetítőn.

Aki teljes egészében megnézné az eseményt, itt teheti meg. A videó előnye, hogy kevésbé vájtszeműeknek a szervezők kommentekkel segítik megérteni, mit is látunk, illetve miért jók az adott alkotások. A bemutatott demók listáját pedig itt nézheti meg, aki tájékozódna az idei év legjobbjairól.

Szólj hozzá!

Címkék: demoscene

Szoftver ácsolás

2018.12.09. 01:55 Travis.CG

Idén rendezték meg először a magyarországi Software Capentry-t. A rendezvény célja, hogy a résztvevőknek betekintést nyújtson az R, Bash és a Git világába. Előzetes tudásra nem volt szükség, amit a résztvevők többsége komolyan is vett. Én segítőként voltam jelen, hogy átlendítsem a nehézségeken azokat, akik elakadtak.

Aki hasonló (vagy bármilyen számítógéppel kapcsolatos) oktatást szeretne szervezni a jövőben és szeretné megtudni, hogy a felhasználók hányféleképpen tudják elrontani a telepítést, az nyugodtan engedje meg a résztvevőknek, hogy saját gépet használjanak. Négy tartalék gép állt rendelkezésre, de mind a négy bevetésre került. Az oktatók ragaszkodtak az R 3.5.1-hez és aki például egy régi Mac-el érkezett, annak esélye sem volt, hogy csomagkezelőből telepítse azt.

Az oktatás menete a következőképp zajlott: Elmondtak egy kis elméletet, majd gyakorló feladat következett. Ilyenkor a segítők járták a terepet és segítettek, ahol tudtak. Leírnék néhány problémát, amivel én, vagy valamelyik másik segítő szembesült.

  • Egyikük meg akarta tartani a régi R-t és mellé telepíteni az újat. Persze a kettő rögtön összeakadt.
  • Windowsos telepítés után a felhasználó átmásolta a programot a c:\Program Files-ból az asztalra, majd csodálkozott, hogy nem ment.
  • RStudioba beírt valami idézőjelet, majd nem tudta bezárni.
  • A gép valami miatt wifi helyett egy nem létező IPhone-hoz akart csatlakozni.
  • Karakter elírások (%in% helyett %>%. Ezt különösen sokáig kerestem)
  • Eltűnt R csomagok. A felhasználó váltig állította, hogy telepítette azokat.
  • A Windowsra telepített Bash-Gittel alig lehetett megtalálni az op rendszer fájljait.

A tematika jól volt felépítve, az oktatók minden blokk után azonnali visszajelzést kértek az ajtóra ragasztott zöld (elégedett) vagy piros (elégedetlen) cetlikkel. Ha a hallgatók elakadtak, akkor is a gépre ragasztott piros cetlivel kellett jelezni ezt. A legtöbben mégsem éltek vele, ezért ha valakinek a kelleténél több ránc gyűlt a homlokára, akkor azért megkérdeztük, van-e problémája.

Amennyire meg tudtam ítélni, a többi segítő is elég felkészült volt és alaposan kivették a részüket a munkából. Nem lógatta a lábát senki.

Nekem csak egy dolog volt furcsa: R-ben az összetett adattípusokkal kezdték a változók taglalását és később mentek az egyszerű típusok felé. Ez már csak azért is gond volt, mert még az egyszerű adattípusok megértése is problémát jelentettek egyeseknek. Például nem értették, miért hívjuk sztringnek azt, amit az R characternek nevez (vagy egyáltalán miért kell máshogy tárolni a szöveget és a számokat). Vagy a tizedes tört miért double?

Azért szép számmal akadtak olyanok is, akik gyorsan abszolválták a tudást és fennmaradó idejükben autó akkumlátorokat kerestek a neten, esetleg saját kíváncsiságukat akarták kielégíteni azzal, hogy kipróbáltak más szintatkikákat is.

Meg volt egy egészen irritáló résztvevő is. Állandóan volt egy megjegyzése, hogy az R-ben miért így vagy úgy van megoldva valami. Mivel egy egészen kicsit még az R-hez is értett, kritizálni kezdte az oktatók módszereit is, de ha nem volt más dolga, akkor a mögötte ülő nőnek udvarolt azzal, hogy szinkrontolmácsot játszott és elismételte azt, amit amit az oktatók mondtak. Ettől biztosan marha okosnak látszott, de a többiek nem tudtak tőle figyelni.

Az egyik szünetben nekem is elkezdett magyarázni, hogy ezt az anyagot csak így lehet elsajátítani, vagyis egész nap csinálni kell, amíg teljesen el nem fáradunk. A szemüvegével úgy nézett ki, mint Okoska. Kedvem lett volna úgy is kezelni.

A második napra maradt a Bash és a Git. Ez a nap egy kicsit nehezebb volt, mert kevesebb segítő maradt, ráadásul a hallgatók is fáradtabbak voltak, ami abból is látszott, hogy megszaporodtak az elírásokból fakadó tévesztések. A parancssor érezhetően nehezebben ment a legtöbb résztvevőnek, emiatt csúszott a program is. A Gitre már csak negyed óra jutott, gyakorlási lehetőség nélkül.

Összességében szerintem jó kezdeményezés, a hallgatók, akikkel beszéltem, pozitívan nyilatkoztak róla. Pontos számokra nem emlékszem, de a jelentkezők száma jóval meghaladta a résztvevőkét, ami azt mutatja, hogy hiába érhetőek el online kurzusok, szükség van a frontális oktatásra. Habár mindenki napi szinten nyúzza a számítógépet, a számítástechnika sokaknak még mindig fekete mágiának tűnik.

Szólj hozzá!

Címkék: programozás életmód

Van felesleges kétmilliód? Légy bioinformatikus!

2018.12.05. 15:24 Travis.CG

Időről-időre mindenki találkozik olyan kurzusokkal, ahol a résztvevőket gazdaggá, sikeressé, esetleg boldoggá változtatják. Egyesek talán elméláznak rajta, hogy ezek a tréningek valószínűleg csak a szervezőket teszik gazdaggá, sikeressé, és ezeken keresztül boldoggá.

De ezzel a kurzussal biztos nem ez a helyzet! Hiszen ki ne akarna bioinformatikus lenni potom két millióért? A hatvan kreditről nem is beszélve! Ha így lebontjuk, akkor százezer forintért megtanulhatunk Pythonban programozni. Ugyan csak a fenti összegért a böngészőt el sem hagyva mindjárt három tudomány területet is megismerhetünk (genomikát, proteomikát, transzkriptomikát).

Ott van a Java is! Ne hallgassunk a vészmadarakra, akik a TIOBE index alapján a nyelv halálát jósolják. A Java ott fog táncolni a C++ sírján, és ez a kurzus résztvevőinek érdeme is lesz. Három kreditért kihagyhatatlan ajánlat.

A statisztikai analízisnél még azt is megtanulják a résztvevők, hány állatra van szükségünk. (Nekem már egy is elég. Főleg, ha az egyik munkatársam az.) Ezek után biztos, hogy kikérik a véleményünket a kísérlet tervezésénél és nem csak odalökik az adatokat.

Igaz, hogy a résztvevők nem fognak semmit tudni a parancssor használatáról, illesztő programokról, vagy bármiről, aminek köze van a második generációs szekvenáláshoz, de én kérdem én: két millióért mégis mit várnak? Miért kell ilyen telhetetlennek lenni? Hiszen még heatmap analízis is van, akár mit jelentsen is ez.

De siessünk, december 20 a jelentkezés határideje. Közeleg a szeretet ünnepe, lepjük meg magunkat, vagy szeretteinket egy ilyen nagyszerű ajándékkal! Én kettőt is veszek, hátha a harmadikat ingyen kapom.

Szólj hozzá!

Címkék: életmód

Bioinformatika a Magyar Tudomány Ünnepén

2018.11.26. 00:07 Travis.CG

A cím kicsit megtévesztő, mert a Magyar Tudomány Ünnepének előadás sorozatához semmi köze. Népszerűsítve is csak egy hibás PDF formájában volt, de legalább Elixir rendezvénynek számít.

Győrffy Balázs: Genomikus adatok alkalmazása új biomarkerek felfedezésére és igazolására

Az előadás a ROCPlot nevű webszolgáltatást mutatta be, ami azt igyekszik meghatározni, hogy egy adott gén expressziója mennyire változik relapszus mentes és kiújult mellrákos betegeknél. Ennek meghatározására egy ROC görbét készítenek, mert az "olyan, mint a Wilcoxon-teszt". Egy példát is láthattunk a BCRP génre. Arra a kérdésre, hogy validálták-e a rendszert, egy nem volt a válasz.

Szalai Bence: Gyógyszer hatásmechanizmus és toxicitás predikciója génexpressziós szignatúrák alapján

Sejtvonalak expressziós mintázatát különböző módszerekkel (CRISPR, gyógyszer) megzavarják, majd az eredményeket rögzítik. Ezek a génexpressziós szignatúrák. A vizsgált gének változásai alapján következtetni lehet az érintett anyagcsere útra. Gyógyszerek esetén viszont az érintett anyagcsere út ismert. Ha két gyógyszer hasonló szignatúrát eredményez, a hatásuk is hasonló lesz. A LINCS-L1000 adatokat használták fel, a szignatúrákat Spearman-korrelációval határozták meg.

Ari Eszter: Vajon mennyire terjednek az antimikrobiális peptid rezisztencia gének?

Az antimikrobiális peptidek a baktériumokra negatív hatást gyakorolnak és ezzel veszélyeztetik az ember természetes flóráját is. A vizsgálat célja az volt, hogy ezek a gének képesek-e horizontális géntranszferrel terjedni. Metagenomikai szekvenciákat elemezve azt vették észre, hogy ezek a gének kevésbé adódnak át. További vizsgálatok azt jelezték, hogy a gének az új környezetben kevésbé fejtik ki a hatásukat.

Hegedűs Tamás: Membránfehérje szerkezeti ABC és ABC membránfehérje szerkezet

A cisztás fibrózis kialakulásáért egy membrán fehérje szerkezeti módosulása felelős. A fehérjék szerkezetének összehasonlítására egy vektorteret definiálnak, de ez nem ad információt a membrán stabilizáló szerepéről. Az elektron denzitás mérésekben viszont jelen van a membrán is. Ha ebből levonják a fehérje elméleti elektron denzitását, akkor (a zaj mellett) megkapják a membrán elektron denzitását. A vizsgálatot a fehérje összes ismert mutációjára megismételték. Az eredményeket két dimezióra vetítették, hogy könnyebb legyen összehasonlítani és egy webszervert is készítettek, ahol mindez online elemezhető.

Hetényi Csaba: A kísérletek korlátain túl: blind docking reloaded

A gyógyszer és célpontja egy komplex struktúrát épít fel, ezen kapcsolat számítógépes elemzésére molekula mechanikai modellek léteznek. A blind docking eljárás egy heurisztikus keresést végez, egyszerűsített erőterekkel dolgozik és a víz molekulákat egyszerűsített reprezentációban tartalmazza. A csoport korábban már készített egy webszolgáltatást a problémára, amit a wrap'n'shake módszerrel feljavítva hívnak újra életre.

Fazekas Dávid: BigData technológiák használata különböző forrású biológiai adatok tárolására és elemzésére

Az adat megosztás nem egyszerű probléma, főleg ha harmadik féltől származó adatokat is integráló szolgáltatást fejlesztenek. Az adatok hatékony tárolásához a data lake elvet alkalmazzák, tehát elkülönítik az adat tárolást és annak feldolgozását. A kettő között a Presto nevű absztrakciós réteg helyezkedik el. A nyers adat tárolása után mindegyik adattípust táblázatos formátumba alakítanak, amit aztán a Presto indexel és lehetővé teszi, hogy SQL lekérdezések segítségével elemezzék azt.

Pancsa Rita: A rendezetlen fehérjék evolúciója új szemszögből

A rendezetlen fehérjék téma még nem merült ki teljesen, ezért most az evolúciójukkal ismerkedhettünk meg. Mivel ezeknél a fehérjéknél a szerkezeti kényszer kicsi, gyors evolúciós változásokat tesz lehetővé. Magasabb az inszerciók és deléciók aránya, amitől magasabb az innovatív potenciáljuk. A korrellált mutációs analízishez viszon szükség van a fehérje szekvenciák illesztésére. A Gremlin-t használták, hogy illeszteni tudják a szekvenciákat, de sajnos a lineáris motívumok túl rövidek voltak, hogy jól illeszthetőek legyenek.

Erdős Gábor: Kontextus függő rendezetlenség

A rendezetlen fehérjék külső faktorok hatására rendezett struktúrákat vehetnek fel. Két régi rendszer, az IUPred (rendezetlen régió azonosítása) és az ANCHOR (kötőhely keresés rendezetlen régiókban) egyesült egy új webszolgáltatásban. Dinamikus megjelenítés, RESTful API, külső adatbázisok integrálása jellemzi az új rendszert. Az IUPred csak kisebb módosuláson esett át, de az ANCHORt újra tanították és paraméterezték.

A két szekció közötti szünetben beszámoltak a magyarországi Elixir helyzetéről. Túl sokat nem tudtunk meg, arra buzdítottak mindenkit, hogy regisztráljon az Elixir oldalára, mert "rengeteg interakció van" és "kizárt dolog, hogy nyomon tudjuk követni".

Szólj hozzá!

Címkék: bioinformatika

Hulladékgazdálkodás

2018.11.12. 00:27 Travis.CG

A felhalmozódó szemétről már rengetegen írtak. A halak beleúsznak az eldobott műanyag dobozokba, a fókák nyakkendőként viselik a műanyag fóliákat. Fujj, belegondolni is szörnyű!

Aztán ott vannak a levélszemetek. Tárolni kell őket, fogyasztják a sávszélességet és még az időnket is rabolják, még ha csak annyira is, amíg töröljük őket.

Mi a helyzet a tudományos hulladékokkal? Azon belül is a bioinformatikai szeméttel? Megkapjuk őket egy szépen csomagolt cikk formájában, ami hemzseg az ilyen szavaktól: egyedülálló, újszerű, kimagasló, páratlan. Az ember bekajálja a meredeken felfelé törő grafikonokat, a 99.9999 százalékos hatékonyságot és azonnal ki akarja próbálni. Aztán jönnek a törött linkek, lefordíthatatlan programok. Minek tekintsük az ilyen programot? És a hozzá tartozó cikket?

A hétköznapi szemetet legalább részben újra lehet hasznosítani. Ezeket a cikkeket mire lehet használni? Elrettentő példán kívül?

Felmerülhet a kérdés, mennyi szemét van? Egy kutatócsoport elmerült a szoftver-szemétben és átnéztek több, mint 24 ezer programot. A programok fele nem érhető el, mert régi az URL, vagy nem telepíthető. A cikk alapján, ha egy programot 2012 előtt készítették vagy nincs GitHub link, nyugodtan felejtsük el.

Szakdolgozókat és PhD hallgatókat bevonva kiválasztottak random 99 programot telepítésre. Két órát szánhattak egy programra. Ha ennyi idő alatt nem sikerült működésre bírni, akkor megkapta a használhatatlan plecsnit. A kiadott dokumentáció alapján a programok fele nem telepíthető, kell hozzá vagy valami függőséget telepíteni vagy belenyúlni a kódba.

De miért kell ennyi energiát beleölni egy program fejlesztésébe? Nem elég addig futnia, amíg a cikket el nem fogadják? Azért, mert nem meglepő módon azt vették észre a cikk szerzői, hogy a telepíthető programok több citációt kaptak.

Tehát, aki meg akarja írni a követkeő IGV-t, annak pár egyszerű szabályt kell alkalmaznia: a progit tegye fel a GitHubra (vagy más publikus helyre), mert az intézeti/egyetemi URL-k jönnek-mennek. Használjon minél kevesebb függőséget (könnyebben telepíthető). Próbáljon csatlakozni nagyobb szoftver depóhoz (pip, Bioconductor, cran, bioconda). Az sem árt, ha rendes dokumentációt készít és mellékel egy kis teszt adatot is, amivel azonnal ki lehet próbálni.

De a legfontosabb üzenet - és ezt nem említi a cikk - hogy a program nem készül el a pulikációval. Azután is van élete, hogy mi másik munkahelyen vagyunk, másik témán dolgozunk. Ha nem is adunk hozzá új funkciókat, csiszolgatni továbbra is kell. Legalább annyira, hogy mások is le tudják fordítani.

Szólj hozzá!

Címkék: programozás filozofálás

Rossz beidegződések a bionformatikában

2018.10.30. 23:10 Travis.CG

Úgy általában a kutatásról elmondható, hogy nem jellemzi egységes megoldási rendszer, még olyan alapvető problémákra sem, amire egy céges környezetben esetleg évek óta van bejáratott protokol. Ezért van az, hogy míg egy dolgozó egyik cégtől átmegy egy másikba, ismerős szoftverekkel, környezettel fog találkozni. (Vagy legalábbis hasonlóakkal.) Ellenben minden kutatólabor kialakítja a saját megoldásait minden élethelyzetre, amit ráerőltet tapasztalatlan szakdolgozókra, PhD hallgatókra és ezek alternatív ismeretek híján terjednek, mint a ragály.

Most összeszedek pár olyan rossz beidegződést, amivel az utóbbi időben találkoztam és mutatok példákat, hogyan lehet elkerülni (vagy kijavítani) azokat. A célom nem az, hogy a saját rossz beidegződéseimet terjesszem (mert ezek is biztos vannak), csupán az, hogy választási lehetőséget az olvasóknak.

Kísérletezés a programkóddal

Elég ritka, hogy valaki egyből leírja a tökéletesen működő szkriptet. Általában készítünk egy próba függvényt/rutint és megnézzük, működik-e. Általában nem működik, de ez részlet kérdés. Esetleg másik, hasonló problémára megpróbáljuk egy létező kódunkat használni, de egy kis módosítással.

Szimptómák

Megjelennek a .1 és .2 kiterjesztésű állományok. Esetleg orig, bak és egyéb szörnyűségek (a végső csapás, mikor már a dátumot kénytelenek beleírni). Furcsa függvények maradnak a kódban, amit semmi nem hív meg. Élettelen változók tömegei hevernek szerteszét. A legrosszabb példa, mivel jelenleg dolgozok itt van. Egyik fájlból több, mint 600 sort töröltem ki, funkcióvesztés nélkül! Döbbenet, amit ott találni!

Megoldás

Verzió követő rendszer. Mindegy, melyik, de ha publikálni akarjuk a kódot, akkor GitHub/GitLab/Bitbucket elkerülhetetlen (és miért ne akarnánk publikálni a kódot? A tudományban beszélnek valami reprodukálhatóságról, vagy miről.). Csinálhatunk millió verziót és nem kell félni, hogy bármi is elveszik. Alternatív lehetőségeket próbálhatunk ki anélkül, hogy veszélyeztetnénk kódunk struktúráját.

Kommunikáció

Tartani kell a kapcsolatot a csoport tagjai között, még akkor is, ha valaki konferenciára megy, otthonról dolgozik, átugrik-a-másik-laborba-de-öt-perc-múlva-itt-lesz-és-nem-láttuk-már-két-napja. Erre ugye ott van az intézeti/egyetemi email, ami legtöbbször funkcionalitásában elmarad a GMailtől.

Szimptómák

Elkezdik használni mindkét levelező rendszert és elszaporodnak az olyan jellegű levelek, hogy "ezt most a másikra küldtem", meg "küldd el még egyszer". De olyannal is találkoztam, hogy Facebookon ment minden közlés, mondván "úgyis azt nézi mindenki". Aztán két macskás videó és egy torta recept közé beékelődött egy genom szekvenálási eredmény.

Megoldás

Erre igazából nincs mindenre jó megoldás (vagy legalábbis még nem találkoztam vele). De az biztos, hogy a szabadidős és munkahelyi szolgáltatásokat el kell különíteni, mást nem, szeparált regisztrációval. A másik fontos, hogy egy csatornán menjen a kommunikáció! A JIRA, bár fizetős, mindent tud, ami egy projekt nyomon követéséhez kell. A Slack lebutított verziója ingyen is elérhető. De aki ingyen cuccot szeretne, installálhat fórum motort is saját szerverre.

Programnyelvek

A régi mondás, mely szerint minden programozási nyelven lehet BASIC programot írni, igaz. Elméletileg bármelyik Turing-teljes nyelven megoldhatóak a problémák, azért mégis érdemes olyan nyelvet használni, amivel kevesebb problémánk van.

Szimptómák

Túlbonyolított, Halálcsillag-jellegű programok, ahol a funkciók nagy része nem a problémát kezeli, hanem nyelvi hiányosságokat pótol. Példának okáért nézzük meg ezt. Egy Visual Basic program. A klikkelős alkalmazásoknak megvan a maga helye, de nem ott, ahol nagy mennyiségű adatot kell feldolgozni. A program diszkréten csipog, amikor készen van és az eredményt a vágólapra másolja. Ha elmúlasztjuk a csipogást? Nos, akkor gondolkodhatunk, hogy a vágólapon található eredmény a mostani, vagy a korábbi futásból származik. Nem véletlen, hogy a Galaxy sem egy elterjedt alkalmazás a bioinformatikában.

Sajnos néha a nyelv fejlesztői is hibásak, amikor olyan feladatok elvégzését is lehetővé teszik, amit nem kéne. Azért, mert R-ben lehet XML-t feldolgozni, még nem jelenti, hogy abban kell csinálni. Láttam ilyet. Szörnyű volt.

Megoldás

Több programozási nyelv ismerete. A leggyakoribb kifogás, hogy nincs rá idő. De több száz soros, érthetetlen vackot írni van? Nem kell profinak lenni benne, de addig érdemes eljutni, hogy megértsük a nyelv mögött rejlő filozófiát. Azután eldönthetjük, hogy ezt el akarjuk-e sajátítani.

Adat tárolás

A nagy áteresztő képességű eljárások (szekvenálás, microarray, mikroszkópia) iszonyú mennyiségű adatot adnak a kutatók kezébe. Ezek tárolása a kutatás szempontjából létfontosságú.

Szimptómák

Az adatok szanaszét vannak, több gépen, elszórt könyvtár szerkezetben. A kommunikációs csatornák ilyen párbeszédekkel vannak tele:
- Hol vannak a februári adatok?
- A 3-as gépen, a data mappában.
- Ott nincs data mappa.
- Ja, tényleg. Ott az adatok3-ban lesz.
- Mi van az adatok2-ben.
- Semmi.
A fájlnevek metainformációkkal vannak tele, mint például human_skincancer_youngAndOld_test. Természetesen egységes konvenció nélkül, mert szakdolgozók, PhD hallgatók jönnek-mennek.

Megoldás

Az adatok legyenek egy helyen, de rendelkezzenek biztonsági másolattal. Legjobb, ha van egy dedikált gép vagy NAS szerver. Személy szerint az USB-s tárolásnak nem vagyok híve, mert igaz, hogy könnyű cipelni, de elhagyni és leejteni is. A fájloknevek legyenek rövidek és minden egyéb információt róluk adatbázisban tárolni. Ezt most nehéz leírnom, de a fájlnevekbe kódolt metainformációknál még egy Excel táblázat is jobb.

Végszó

Természetesen ezeknek csak akkor van értelme, ha több ember is el akarja kerülni a fenti problémákat. Vannak, akik annyira hozzászoktak a rossz szokásokhoz, hogy nem tudnak nélkülük élni. Hiába mondják nekik, hogy húzzák fel a redőnyt, kint süt a nap, ők továbbra is dinamós zseblámpával közlekednek a lákásban. Az ilyen hozzáállás miatt könnyű ilyen cinikusan hozzáállni a problémákhoz, de amíg tehetjük, álljunk ellen.

3 komment

Címkék: bioinformatika

Az MTA Cloud felhasználási lehetőségei

2018.10.14. 21:40 Travis.CG

Alapvetően az MTA Cloudon igényelhető gépek kicsik. Nekem például az otthoni, 6 (vagy 7?) éves gépemet egyik instance sem képes megszorongatni. Még az előző munkahelyi ócskavas is lealázza őket memóriában.

Na, de akkor mire lehet használni őket? A kérdés jogos, bemutatok pár felhasználási lehetőséget. Mert igaz, hogy teljesítményben nincsenek eleresztve, de helyi hálózatba köthetőek és kaphatnak egy publikus IP címet.

A másik potenciális probléma, az elérhető operációs rendszerek típusa. Az Ubuntu Cloud csomagkezelőjében ugyanis nem érhetőek el azok a programok, amelyek egy asztali környezetben megtalálhatóak. Bizony elég sok manuális telepítés szükséges. Én például túl későn vettem észre, hogy az elérhető R olyan régi, hogy a Bioconductor alig ment fel.

1. Jupyter szerver

Pont az előbb írtam, hogy kimagasló számítási teljesítményt ne várjunk, akkor mégis miért kéne Jupyter szervert üzemeltetni? Például azért, mert a szakdolgozók még az akadémiai szférában található gépeknél is silányabb masinákkal vannak felszerelve (vagy csak én voltam balszerencsés).

Arról se feledkezzünk meg, hogy nem mindenki tudja IKEA növényként elszámlázni a számítástechnikai beszerzéseket, és a semminél még ezek a gépek is jobbak.

A szervert viszont csak SSH alagutazással lehet használni, ami egy kis plusz munkát igényel a helyi gépen. Cserébe viszont kapunk egy bárhonnan elérhető szervert és valós időben ellenőrizhetjük a munka haladását. Nem kell elfelejtett e-mailekre hivatkozni. Lehet írni megjegyzéseket is, bár a kommunikáció ilyen formáját nem tartom előnyösnek, mert alig komolyabb egy mindenki által szerkeszthető Wordnél.

2. Web szerver

Néha előfordul, hogy szükség lenne egy webszolgáltatásra, de nem akarjuk "terhelni" az intézeti rendszergazdát. Esetleg teljesen felesleges tőle bármit kérni, mert nem tudja/akarja megcsinálni. Ilyenkor saját magunk hozhatunk létre nekünk megfelelő webes szolgáltatást. Készíthetünk saját Wikipédiát, Blast szervert, Galaxy-t, bármit. Még ha nem is akarunk éles szolgáltatásokat futtatni róla, fejlesztői szervernek is megteszi.

A többi instance egy lokális hálózaton kommunikál a publikus IP-vel rendelkező géppel, ezért nem muszáj minden szervert egy gépen futtatni. Az adatbázis motort külön gépre rakhatjuk, így növelve az össz teljesítményét.

Habár közönséges webszervert nem nehéz csinálni, Shiny alkalmazást nem tudtam telepíteni. Máig nem tudom, miért, de 80-as porton a Shiny szerver nem akart válaszolni, más portot megnyitva nem tudtam kapcsolódni hozzá kívülről. (Persze alagutazáson keresztül működött, ami arra enged következtetni, hogy van egy tűzfal a helyi hálózat és a nagyvilág között.)

3. Tárhely

Felesleges a DropBox 2Gb méretkorlátjával bajlódni. Nem muszáj előfizetni Amazon S3-ra sem. Az instance-okat használhatjuk biztonsági mentésekre, kutatási eredmény megosztására. Ha kívánjuk, Hadoopos HDFS-el több gép tárhelyét is összefűzhetjük. De ha csak közönséges FTP-t telepítünk, azzal is javíthatjuk adattároló kapacitásunkat.

4. Fejlesztés

Ha verzió követő rendszert telepítünk rájuk, akkor bárhol fejleszthetjük programjainkat, nem vagyunk multi cégek kényének-kedvének kitéve, mint GitHub/GitLab/BitBucket esetén. Használhatjuk nagyobb projektek integritás ellenőrzésére is, bár kizárt dolognak tartom, hogy a magyar tudományos életben bárki használna ilyesmit, de cáfoljatok meg.

5. Speciális programokra

Vannak elemzések, amelyek nem igényelnek nagy erőforrást, mégis sokáig futnak. Ha aggódunk, hogy a takarítók esetleg a partvissal kikapcsolják a gépet, közeleg a rettegett áramszünet, nyugodtan használjuk a távoli gépeket. Azt is elképzelhetőnek tartom, hogy egyes bioinformatikai programoknak speciális rendszerkövetelményei vannak, vagy egyszerűen csak régiek, mi mégis használni szeretnénk. Szóba jöhet a Docker, VirtualBox is, mint megoldás, de ha valami miatt nem jöhetnek szóba, akkor még mindig itt van az MTA Cloud.

Összegzés

Az MTA felhő szolgáltatás használata vért és verejtéket kíván, aki használni akarja bizonyára rengeteg nehézséggel fog találkozni. Én legalábbis elég sokkal találkoztam. De ingyen van és ennél gyorsabban nem lehet szert tenni egy gépparkra. Cserébe csak annyit kérnek, hogy említsük meg a publikációkban, hogy használtuk és írjunk egy rövid jelentést.

Szólj hozzá!

Címkék: cloud computing

Ezt sem Wilcoxonnal számoltam...

2018.10.08. 00:01 Travis.CG

Remélem nem unjátok öntömjénező bejegyzéseimet, mert én nem. A következő poszt olvasásához a következő zenét ajánlom:

Eredetileg a fenti címmel akartam egy levelet küldeni a volt főnökömnek legújabb cikkemről. Történt annak idején, hogy sokadszorra kifogásoltam, miért nem DESeq2-t használunk differenciál expresszió számításhoz, amire az volt a válasz, hogy "nekünk még nem sikerült cikket publikálni DESeq-el". Ezzel a kijelentéssel nem tudtam mit kezdeni. Mintha egy orvos azt mondaná, hogy neki még nem volt sikeres műtéte kórházban, csak pajtákban, ahol a legjobb asszisztense egy tehén volt.

Szerencsére mások tudnak DESeq-el is publikálni.

A jelenlegi rákkutatás egyik érdekes kérdése, hogy hiába ismerünk egy csomó mutációt, ami rákos elváltozást okoz, ezek a mutációk nem minden tumorban fordulnak elő. Példának okáért a TP53 mutációk, amit egy igen erőteljes kiváltó oknak tartanak, csupán a tumorok felében fordul elő. Mi történik a tumorok másik felében? Ez kérem egy igen jó kérdés.

De itt még nem állunk meg! Ugyanis olyan mutációk, amelyek rákot okoznak, tömegével fordulhatnak elő teljesen egészséges emberek bőrén, anélkül, hogy bármilyen problémát okoznának.

Tehát egyik oldalon ott vannak a mutációk, amik rákot okoznak, a másik oldalon pedig a rákos mutációk, amikből soha nem lesz rák. Nincs itt valami ellentmondás? Ami azt illeti nincs, mivel az elő szövet egy dinamikus rendszer. A sejtek hatnak egymásra, kommunikálnak és bizony versenyeznek. Ugyan olyan evolúciós mechanizmusok játszódnak le, mint egy gimis bioszkönyvben, ahol a csigapopulációt egy hirtelen keletkezett hegy ketté vágja. Bár meg kell jegyezni, hogy a gimis bioszkönyvekben ennél meredekebb dolgok is előfordulhatnak, például szarvas és szarvatlan tehenek párosodása, de ez más kérdés.

A témához visszakanyarodva: az egészséges sejtek és a kezdődő tumor sejtek versenyeznek és néha a tumor bizony veszít. Persze ezeket mikroszkópikus méretekben kell érteni. Ha egy tumor már látható méreteket öltött, az azt jelenti, hogy az egészséges szövet vesztett.

Először a Nature Cellbe küldték be a cikket, ahonnan elég gyorsan visszadobták. Ezt követte a B-terv, de a főnök közölte, hogy abba az újságba sok bioinfó kell, mert azt szeretik. Ettől persze elkezdett habzani a szám, de végül mégsem én dolgoztam fel a mutációk azonosítását.

Az én részem csak az RNA-seq adatok feldolgozására korlátozódott, mégis jó volt látni, hogyan teszi hozzá mindenki a magáét. A mikroszkópos munka, amely követte a mutáns sejtek osztódását, a matematikai modellezők, akik megpróbálták egyenletekkel leírni a látottakat. Minden módszer más oldalról mutatta meg ugyan azt a jelenséget. Mennyivel erősebb az ilyen eredmény, mintha mindent egy nem paraméteres hipotézis tesztre alapozunk!

De a legjobb munkák mégis azok, amelyek további gondolatokat ébresztenek és más vizsgálatok alapjául szolgálnak. Még csak kézirat szintjén létezett ez, amikor már beküldték szekvenálni az ezen eredményekre épülő új mintákat. Abba a melóba csak belekezdtem, tehát nem biztos, hogy bevesznek a szerzők közé, de az még érdekesebb lesz a normál szövet vs tumor kompetícióban. Ott ugyanis felszeletelték a tumorokat. De ez már egy másik történet.

Szólj hozzá!

Címkék: publikáció

Újrakezdés

2018.09.30. 21:01 Travis.CG

Az életemben mindig voltak olyan időszakok, amikor hosszabb-rövidebb időre kénytelen voltam abbahagyni a spotolást, de a viharfelhők elmúltával azonnal súlyzót szoktam ragadni. Így történt most is. Angliában nem sok időm volt konditermet látogatni, hazajövet pedig a három órás ingázás szívott ki minden erőt belőlem.

Ennek most vége. Újra itt vagyok, hogy bírkózzam a vasakkal. Lementem a konditerembe, hogy megnézzem, mi változott az elmúlt időben. Az első meglepetés az új emberek voltak. Pofátlanul fiatalok! Úgy köszönnek nekem, hogy "Tiszteletem" meg "Jó napot". Legalább nem Csókolom. Már ennek is örülni kell.

Alig találni bárkit a régi arcok közül. Illetve, ahogy szétnézek, én lettem a régi arc. Üdvözölnek is:

- Te, hol vannak az izmaid?
- Ahol a fiatalságom - válaszolom rezignáltan. Most valahogy jobban el tudnám viselni, ha hazudnának.

Mások sem kíméletesebbek:
- Csá! Milyen rég is gyúrsz?
- Húsz éve.
- Akkor miért nem látszik?
- Lehet, hogy nem látszik, de ha fejbe csaplak, érezni fogod - de nem mondom ki hangosan. Bármilyen hetvenkedésből én kerülnék ki vesztesen.

A vasak a régiek. Van pár új gép, a termet is átrendezték. De a rudak, súlyok még a régiek. Bár hiányolok pár kopott, CCCP feliratú tömör vastárcsát, amit egy régi konditerem szanálásakor mentett ki az akkori tulaj. Mindegy is, úgysem bírnám el őket.

Nem ez az első újrakezdés, ismerem a protokollt. Csak nyugodtan csinálni minden gyakorlatot. Kevés súllyal, nem kapkodni. Még akkor sem, ha mellettem a pattanásos gimisek kétszer annyi tárcsát pakolnak fel.

Minden nehéz, minden lassan megy. De hiába vagyok óvatos, másnap beköszönt egy másik kedves ismerős: izomláz. Marad is pár napra, pedig senki nem hívta. A végtagok kezdenek felébredni egy hosszú álomból és két hét múlva már nem fáradok el annyira. Már négynél több húzódzkodás is megy. Aztán kilépünk önmagunk árnyékából. De addig még sok munka van vissza.

Végezetül álljon itt egy kép annak bizonyítására, miért is szereti egy magam fajta barkácsoló ezt a konditermet:

kondi.jpg

Mi mindenre nem jó egy biztonsági öv, mi?

Szólj hozzá!

Címkék: sport

Sok hűhó semmiért

2018.09.23. 09:50 Travis.CG

A hivatalos ügyek intézésénél egy rosszabb van: két országban intézni hivatalos ügyeket. A Sangerből való távozásom után kaptam egy levelet, amiben az angliai nyugdíj intézet tudatta velem, hogy nem dolgoztam három évet kint, ezért onnan nem vagyok jogosult nyugíjra. Természetesen ha máshol munkát vállalok az Egyesült Királyságban, akkor az eddigi megtakarításaim tovább gyarapodnak.

Alternatív lehetőségként áthozhatom a pénzt egy magyarországi önkéntes magánnyugdíj pénztárba. Jó, tegyük azt - gondoltam. Ki kell tölteni egy papírt az adataimmal, csatolni kell a HMRC által kiállított papírt, amiben elismerik, hogy az tényleg nyugdíj intézet, nem holmi balkáni pénzmosoda. Csatolni kellett egy papírt, amit az adott pénzintézet állít ki, hogy tényleg a tag vagyok, nyilatkozatokat, eredeti anyakönyvi kivonatot (vagy útlevelet) és még kitudja mennyi vackot.

Nekiláttam összeszedni a dokumentumokat. Írtam a magyar pénzintézetnek, hogy adják oda a HMRC által kiállított papírt. Eltelt egy hét, eltelt még egy hét. Először nem értették, mit akarok. Kaptam egy sablon választ. Még egyszer leírtam neki, mire van szükségem, közben írtam, hogy ez sok pénz és nagyon szeretném, ha náluk lenne. Gondoltam ez majd motiválja őket. Még két hét eltelt, majd írták, hogy ők nem felelnek meg ugyan az angol normáknak, de igazából egyetlen hazai magánnyugdíj intézet sem, szóval intézzem csak azt az átutalást.

Nos, ez így ebben a formában nem volt igaz, mert a HMRC weboldalán akkor még fel volt tűntetve két olyan intézmény is, akik megfeleltek. Ráadásul, ha nem mellékelek minden iratot, amit kérnek, nem lesz átutalás, ebben biztos voltam.

Úgyhogy megköszöntem a segítséget és pénztárt váltottam. Ez hihetetlen egyszerű volt, egy hét alatt meg is volt. Közben az idő is szorított, mert az angolok azt írták, hogy a papírjukban közölt átutalási díj csak egy bizonyos naptári napig jó.

Nem is volt meg minden papír, amit kértek, de azért ami volt, azt elpostáztam. Gondoltam a hiánypótlással ki tudom tolni a határidőt. Útlevelemet adtam fel, mert annyira nem őrültem meg, hogy az eredeti születési anyakönyvi kivonatot póstázzam el. Szépen vissza is küldték két hét múlva. (Ez egyébként teljesen általános ügyintézési módszer Angliában.)

Azután újabb levelet kaptam, hogy fizessem be az átutalási díjat. Az átutaláshoz kellett volna az angol telefonom, és hiába volt még rajta pénz, nem tudott se SMS-t küldeni, sem fogadni. Akkor azokkal leveleztem hetekig. Kiderült, inaktiválták a készüléket, mert nem volt rajta forgalom.

Végül sikerült életet lehelni a telefonba, elintéztem az átutalást, majd vártam, hogy átutazzon a tengeren öreg korom jól megérdemelt megtakarítása. Persze nem jött, mert kicsúsztam az időből. Az angolok elküldték újra az összes dokumentumot, hogy ismét töltsem ki az egész paksamétát. Nem értettem. Talán megváltozott a születésem ideje? Mindegy. Ismét kitöltöttem mindent, ismét elküldtem. Eltelt egy csomó idő. Már nem is számoltam mennyi.

Ismét válaszoltak. Két lapot rosszult töltöttem ki, mert azokat nem nekem kellett volna kitölteni, hanem a magyar nyugdíj pénztárnak. A másik kifogás, hogy amin a pénzintézet bankszámla száma szerepel, magyar szöveg van. Nem értem, hogy az "IBAN:" részt miért nem értették, de ezen a ponton már nem lepődtem meg semmin.

De már éreztem a vereség előszelét. Vigyek be egy angol papírt egy magyar cégnek, hogy írják alá? Biztos voltam benne, hogy hivatalos fordítást kérnek róla, megnézetik jogászokkal és még utána is cidriznek, hogy tényleg aláírhatják-e: A kisvezetők azért, mert nincs elég hatalmuk egy ilyen döntéshez, a nagyvezetők azért, mert nem foglalkoznak ilyen jelentéktelen dologgal.

Valószínűleg nem jártam messze a valóságtól, mert nem kaptam semmi választ. Már az angolok nekem írtak, hogy tényleg akarom-e ezt az átutalást, mert a magyarok nem válaszolnak nekik sem. Ekkor kicsit bekeményítettem. Írtam a pénztárnak, hogy vagy írják alá a papírt, vagy mondják meg, ha nem akarják aláírni. Utóbbi esetben keresek egy másik nyugdíjbiztosítót, akik nem akadékoskodnak ennyit.

Ekkor elküldték az összes papírt. Még azokat is, amelyeket korábban nem akartak odaadni és írtak valami ostoba levelet, hogy nem jöhetek át az angol biztosítótól a magyarba, csak átutalást kezdeményezhetek. Én meg voltam győződve róla, hogy egész végig ezt akartam elintézni, de másoknak ezek szerint nem volt ennyire tiszta. Mindegy, nem számít. Megvan minden, amit az angolok kértek. Még a bank adatai is angolul, a pénzintézet fejlécével. Összecsomagoltam mindent és elküldtem nekik.

Aztán jött egy levél, hogy igaz, hogy csatoltam egy levelet, amit a HMRC állított ki, de a HMRC listáján már nincs rajta a pénztár. Korábban mindig kinyomtattam a listát a weboldalról és elküldtem nekik. Most mi történt? Meghülyültek? Megnéztem én is a weboldalt. A szeptember 1 után frissített listán már egyetlen magyar pénzintézet sem szerepelt. Persze továbbra is átutalják, ha nagyon akarom, de annyi adót kell utána befizetnek, hogy nem marad semmi a pénzből.

Sakk-matt. Ha nem csináltam volna semmit, most pontosan ugyan itt tartanék.

Szólj hozzá!

Címkék: életmód

A tökéletes PhD hallgató

2018.09.19. 09:44 Travis.CG

Ismét hosszú várakozás előzte meg ennek a cikknek a megjelenését. Az egész úgy kezdődött, hogy még a Sangerben megkértek, hogy egy PhD hallgatónak segítsek az RNA-seq feldolgozásban. Természetesen a csoportomnak nyújtott támogatás mellett, amolyan extra munkaként. Mivel volt még szabad kapacitásom, belementem.

A hallgató az Egyesült Államokból érkezett, túl volt az orvos képzésen. Rendkívül szerény volt. Az első differenciál expressziós vizsgálatokat én csináltam, majd ő a minden lépést megismételt. R-ben dolgoztunk, még csak akkor ismerkedett a nyelvvel, minden féle programozói előképzettség nélkül, de a kódjai szépek és áttekinthetőek voltak.

RStudióban írt mindent, Markdown-al. Én úgy érzem, jegyzőkönyvként soha nem lehet elég szöveget írni (amire természetesen mindig utólag jövünk rá), de azt hiszem ő elég közel volt hozzá, hogy rácáfoljon erre. Mondta, hogy nagyon fél, hogy a vizsgálat végére nem fog emlékezni a kezdeti lépésekre.

Annyira felfejlődött R-ben, hogy még Patrick-ot is képes volt elcsábítani az Exceltől, ami igen csak nagy szó. Patrick ugyanis mindent Excelben csinált, még azt is, amit lehetetlen Excelben megcsinálni. Egy anekdota szerint rajzolt egy fehérje-fehérje interakciós térképet az említett programban. Egész éjjel fent volt és egérrel húzogatott minden egyes csomópontot, hogy egyenlő távolságra legyenek egymástól. (Kb. 2 perc lett volna Cytoscape-el).

Az előzetes ábrák, amiket készített, már cikk minőségűek voltak. Ehhez mondjuk a szerencsés téma is hozzájárult. Legtöbbször kell egy kicsit játszani az ábrákkal, hogy amit be szeretnénk mutatni, az kellően egyértelmű legyen. Itt nem volt rá szükség. Kérdeztem tőle, hogy alkamazott-e bármilyen skálázást, de nemmel felelt.

Később is gyakra visszajött és kérte, hogy nézzem át a kódot, mit írt, nem találok-e valami furcsát, de soha semmi probléma nem volt velük. Sőt, ahogy egyre jobban haladt a PhD-s bioinformatika kurzusokkal, a vége felé én tanultam a kódjából és nekem kellett kérdezgetni, hogy az egyes részeknek mi a feladata. Ő készségesen megmutatott mindent, nem éreztette velem, hogy egy hülye vagyok.

Mert az az igazság, hogy elég hamar túllépett rajtam. A cikk több szekvenálási technikát is felhasznált, amit különböző emberek vizsgáltak, de ő igyekezett mindegyik módszerben elég kompetenciát összeszedni, hogy átlássa a teljes vizsgálatot.

Fantasztikus dolgozni ilyen emberekkel, még akkor is, ha közben csúszó-mászónak érezzük magunkat mellettük. Csak annyit mondhatok, örülnék, ha ilyen lányom lenne.

Szólj hozzá!

Címkék: publikáció

Function 2018, avagy kúráljuk magunkat

2018.09.12. 23:45 Travis.CG

Beteg vagyok. Krónikus Function megvonásban szenvedek. 2015 óta csak weben követem az eseményeket. Ezért is tetszett, hogy az idei tematika arról szólt, hogy a party részvétel egyfajta kúra. Az nem teljesen tiszta, hogy mi ellen, de mindezt saját magamra vetítve egyértelmű: hiánypótlás.

Az teljesen világos volt, hogy valamit vinni kell. Először wildot akartam, valami teljesen szoktalan platformra, de azzal nem úgy haladtam, ahogy terveztem, ezért jött a B-terv: film. Volt néhány elfekvőben lévő time-lapse videóm, azokat gyúrtam egybe, közös koncepcióba helyezve őket. Majd meglátjuk, mire jutunk.

Az entryk feltöltése után Spenóttal vitattam meg az 1K-k világát. Nagyon örültem, hogy végre aktivizálta magát. Ebben az évben - ha jól emlékszem - három partyra is adott be intrót. Megmutatta őket, volt néhány igen jó. Azt mondta, már nem tud úgy elmenni partyra, hogy ne adna be valamit. Azt hiszem ráérzett a lényegre.

A kivetítőn Unreal harcol a telep töltöttséggel. Rajzol, de a laptopja nincs hálózati áramforrásra dugva. Kíváncsi vagyok mi fog előbb bekövetkezni: befejezi a rajzot, vagy lemerül a gép. A slussz poén, hogy két képet rajzol egyszerre, mint azok a szimultán sakk bajnokok, akiknek egy meccs már unalmas. Unreal győzött, még maradt pár csepp elektron az akkuban.

Első előadás egy Amigás játék bemutatója volt, a Legacy-é. Egy fantazy-szerepjáték, amit egy régi PDA-s játékból portoltak. Jó dolog látni, hogy aktívan foglalkoznak Amigával és nem csak beszélnek róla.

A zene kompó az elején jól indult, jobb és közepes zenékkel, majd vagy én fáradtam el, vagy tényleg a színvonal zuhant, de egyre fájdalmasabb volt hallgatni. A Giants például egymaga egy kompó volt, mert egyes részei, mintha 8 bitesek lettek volna, majd minden átmenet nélkül váltott valami teljesen másba. Két szám múlva felnézek a vászonra, még mindig a Giants megy. Kérem, kapcsolják már ki! Szerencsére a végére ismét javult a hallgathatóság, bár élek a gyanúperrel, hogy a hangosítás egy kicsit torzított.

Ezután jött a Kolmogorov Toolbox nevű formáció, ami igazi kocka-nyálcsorgató volt. Egy lány meg egy fiú ült két laptop előtt és amit kódoltak, az rögtön hallgató volt. Még egy igazi bug is ízesítette az előadást, amikor is egy elírás következtében recsegett a hangszóró. Feltételezem egy kliens-szerver architectura volt, mert a két művész gépelése valós időben, egyszerre volt látható.

koglomorov.jpg

 Közben pedig palancsinta kezelés Korgógyomritisz ellen.

A fotók szokás szerint széles sávot öleltek fel, mind mennyiségben, mind minőségben. Az én fotóm sem tűnt vállalhatatlannak a mezőnyben. A grafikák viszont nagyon jók voltak. A kézi rajzok kifejezetten kellemesek. Jó volt látni ennyi különböző gépre készült képeket egyben.

Az elmaradhatatlan DJ fellépés előtt rutinosan kimenekültem. Ahogy kint álldogáltam a kellemesen hűvös sötétben, feltűnt, hogy az épület nem akar szétesni a nagy hangzavarban. Óvatosan visszamerészkedtem, visszaültem a helyemre, és megállapítottam, hogy ezt a hangszintet elviselem. Ez is nagy pozitívum volt, úgyhogy kódoltam egy kicsit a zene hallgatása közben.

Végül jöttem a kompók sorban. Wildra rajtam kívül hárman adtak be prodot, ebből az egyik Maugli kétségbeesett harca volt. Egyik oldalon az agy, másik oldalon valami alkohol. Abban biztos voltam, hogy ennél jobb leszek. A másik oldalon egy Raspberry Pi hajtotta ledkocka volt, ami tuti nyertesnek tűnt, ezért csak az volt a kérdés számomra, hogy második vagy harmadik leszek-e?

A 256byteok eszméletlenül durvák voltak. Nem is tudtam, hogyan szavazzak rájuk. Az elején volt három kimagasló, de a végére még jobbak jöttek. Mit csináljak? Pontozzam le azt, ami az elején jónak tűnt? Végül mindenkinek 5-t adtam. Megérdemelték.

A demók is jók voltak. Archee a tavalyi lovat ülte meg, két daruskocsi győzött le különböző akadályokat, Gargaj pedig egy impresszionista demót készített, középpontban a magánnyal. Elég depressziós, de pozitív értelemben. Nem tudtam szabadulni a gondolattól, hogy valami személyes tapasztalás áll a háttérben. Slyspy gyárában a Rainbow Clash futószalagról újabb termék gördült le, immár cimke nélkül.

A Tesco Gazdaságos Demócsapatra viszont komolyan oda kell figyelni! Úgy készítenek vicces produkciókat, hogy közben nem igénytelen, amit kiadnak.

Az eredményhírdetés igazi meglepetést tartogatott: A fotóm harmadik lett. A videó második. Jó party volt.

Szólj hozzá!

Címkék: demoscene