HTML

Az élet kódjai

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

Friss topikok

  • Travis.CG: Annyiban én is hibás vagyok, hogy könnyen előjönnek belőlem negatív posztok, ezt akartam ellensúly... (2025.05.22. 19:34) Ne csak a rosszat halljátok
  • sdani: Oh... néha eszembe jut, hogy az EBI után esetleg vissza kellene menni valamennyire az akadémiai vo... (2025.03.18. 16:58) Pontos, jól behatárolt célok
  • legyen úgy: Szia, Értem és köszönöm a válaszodat! T. (2025.02.24. 18:23) Expose CTF
  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF

A láthatatlan fotózása

2022.06.11. 09:09 Travis.CG

A fotózás azért is olyan jó hobbi, mert bármikor elverhetünk rá eszméletlen összegeket. Van egy géped? Kell objektív. Van objektíved? Kell még egy objektív, majd még egy szűrő, esetleg egy második fényképezőgép (nehogy már az objektív cserével értékes időt veszítsél), memória kártya, stb. Ha pedig valami csoda folytán mindegyik bigyó megvan, akkor jöhet az elvault rendszer cseréje.

Annak idején azért is döntöttem a Canon mellett, mert úgy tűnt, a cég nem cserélgeti sűrűn az objektív foglalatokat a gépeken. Majdnem 10 évembe került, mire minden lehetséges helyzetre sikerült megfelelő objektívet szerezni, erre bejöttek a MILC-ek. Egy ideig néztem magam elé, mint akiket egy felsőbb hatalom átvert, majd úgy döntöttem a középső ujjamat mutatom ennek a fene nagy megállíthatatlan fejlődésnek.

Miközben mindenki váltott Sony-ra és adta el a régi Canon-os cumókat, én szépen begyűjtöttem azt, amiről korábban csak álmodthattam. Így került hozzám egy Canon 5D mark II, egykoron felső kategóriás gép, de most olcsóbban hozzájutottam, mint egy új, belépő szintű tükörreflexeshez. Ráadásul ennek a gépnek volt egy plusz hozadéke: kiszerelték belőle az összes szűrőt. Tehát nem csak full frame, hanem full spektrum is. Lehet vele infrában és UV tartományban is fotózni. Merthát miért csak a látható tartományban fotózzunk?

Az elején kicsit ódzkodtam tőle, mert már volt benne 150 ezer expo, ami a gyári limit. Az eladó nyilván azt mondta, hogy "ennél háromszor többet is bír", ráadásul meg is volt bontva a konverzió miatt, ezért félő, hogy bemondja az unalmast, végül mégis győzött az irracionalitás és megvettem.

Az első teszt természetesen a TV távirányítója volt. Még a gyári fényképezőgépek szűrői sem képesek teljesen megakadályozni, hogy az infravörös fény az érzékelőre jusson. Halvány pislogásként látni fogjuk. Itt nem. Itt úgy világított, mint egy lámpa. (Gyakorlatilag a távvezérlőt vakunak lehet használni tök sötétben.) A belső szűrők eltávolítása hihetetlen fényerő növekedést produkált. Egy teliholdas éjszakán olyan képet lehet vele készíteni, mintha nappal lenne.

ejszakai.jpg

Az eladó azt mondta, hogy manuális fehéregyensúly állítással akár normál képet is lehet vele készíteni. Nos, való igaz, hogy lehet csökkenteni a vörös árnyalatot, de a kép inkább olyan lesz, mint egy öregedésnek indult színes fotó. A szaturáció nem lesz az igazi. Akármennyit is játszottam a nyers képekkel Gimp-ben, valahogy soha nem voltam elégedett az eredménnyel.

Az igazi kaland viszont akkor kezdődött, amikor megjöttek hozzá a speciális szűrők, amelyek csak bizonyos hullámhossz tartományt engednek át. Az első kiszűri az UV-t és az infrát is, vagyis a fehéregyensúly állítása nélkül is lehet megszokott képeket készíteni. Az így készült képeket összehasonlítottam a 350D-vel készült képekkel, és azt kell mondjam, hidegebbek. Az utólagos színkorrekciót nem lehet megúszni vele.

A második szűrő csak az UV-t engedi át. Emiatt a keresőből történő fényképezést el lehet felejteni. Nem csak azért, mert a veszélyes sugarakat a szemnünkbe juttatja, hanem azért is, mert látható fény híjján csak feketeséget lehet látni. Be kell kapcsolni az élő képet, ha fókuszálni akarunk.

A szűrő önmagában mégsem elég. Az UV fotósok nagy bánatára a legtöbb modern objektív tartalmaz UV elnyelő réteget. Ezért hatalmas vadászat van mindenféle világháborús lencsék után, ahol még erre nem fordítottak elegendő figyelmet. Én egy jó öreg 40mm-es objektívvel használtam, mert azt olvastam, ez még elég jó választás, ha nem akarunk adapterekkel játszani. UV-ban egyébként főleg virágokat érdemes fotózni.

virag.jpg

szulak.jpg

A második képen folyandár szulák van. Igen, az a semmike kis gaz UV-ban elég érdekesen néz ki.

Végezetül ott van az infra tartomány, amivel olyan képek készülhetnek, mintha új metafizikai síkokat akarnánk feltérképezni. Szóval aki le akar menni a Homály első szintjére, egy 850nm-es szűrővel megteheti. A színek itt már eltűnnek. Viszont sokkal izgalmasabb az infrafotó, ha a látható fény közelében fényképezünk. Itt lesznek színek, és egy egyszerű színcserével meglepő képek születnek. A fák levelei (illetve minden fotoszintetizáló élőlény) ugyanis fény hatására gerjesztett állapotba kerül és az infravörös tartományban világít. Ezért lesznek a növények fehérek.

infra.jpg

Ezért nagyon kíváncsi vagyok, milyen képek készülnének késő ősszel, amikor a klorofil kezd lebomlani. A fenti kép igazából nem sikerült jól, valószínűleg megint a fehéregyensúllyal lehetett gond. Ha jól csináljuk, akkor ugyanis az ég kék lesz, nem ilyen ronda vörös. Doomba jó lenne háttérképnek.

 

Szólj hozzá!

Címkék: életmód

Textúra tömbök

2022.05.18. 10:02 Travis.CG

Elkezdtem írni a QBParty-ra a demót. Egy régi ötletet valósítok meg, aminek a lényege, hogy egy csomó fényképet felhasználva animációt készítek. Az ötlet nem új keletű, például a 2003-as Heart Shaped Box is ezen alapult. A különbség az lenne, hogy míg ott a képek időben egymás után jöttek fel, nálam egy időpillanatban több kép egyszerre lenne látható, majd ezeket különböző módon kombinálnám, ahogy egy grafikus programban a rétegeket szokták.

A képek keverésére programozástechnikai szempontból két módszert használhatunk. Az egyikben a CPU-n keverjük össze a pixel adatokat eggyé, majd ezt adjuk át a fragment shadernek textúraként, vagy mindegyik képet betöltjük a shaderbe, és ott összegezzük az információt. Az első módszer egyszerű, csak lassú. A másodikban viszont a GPU-n kombináljuk a képeket, ami gyorsabb, de a megvalósítása nem egyszerű. Természetesen a második megoldást fogom választani. Azonban, mint látni fogjuk, itt is több lehetőségünk van.

Eddig a demóimban a shaderekben a textúrákra egyszerű sampler2D típusú változókként hivatkoztam. Tehát a shader deklarációs részében ilyen sorok szerepeltek:

uniform sampler2D img;
uniform sampler2D mask;

Mivel eddig egy shaderen belül kevés textúrával játszottam, nem is volt szükségem másra. Most viszont 116 textúra egyidejű kezelésére lenne szükségem. Száztizenhatszor beírni, hogy uniform sampler2D még büntetésnek sem utolsó, de nincs is rá szükség, mert használhatunk tömböket.

uniform sampler2D img[116];

 Ez a része egyszerű. A bonyolult, hogy miként mondjuk meg a shadernek, hogy hol találja az adatokat? CPU oldalon a következő kódra van szükség.

GLint starids[116];
for(int i = 0; i  < 116; i++){
  glActiveTexture(GL_TEXTURE0 + i);
  glBindTexture(GL_TEXTURE_2D, texid[i]);
  starids[i] = i;
}
GLint loc = glGetUniformLocation(prgid, "img");
glUniform1iv(loc, 116, starids);

Mennyi textúrát vihetünk át? Ez a GPU függvénye, de lekérdezhetjük a számát a GL_MAX_COMBINED_TEXTURE_IMAGE_UNIT segítségével. Nálam ez 192, szóval a 116-al még benne vagyok a limitben. De ez nem jelenti azt, hogy ezt mind korlátlanul fel is használhatom. A fragment shader ennek a töredékét tudja csak használni. A GL_MAX_TEXTURE_IMAGE_UNIT mutatja meg ezt a számot, ami már csak 32 az én esetemben. (Bár meg kell jegyezni, az NVidia kártyák liberálisabbak, ott következmények nélkül használhattam mind a 116 textúrát, igaz elég lassú lett a végére. Mikor egy Intel UHD 620-as laptopon futtattam ugyan azt a kódot, a hátár átlépése után szabványos hibaüzenetet kaptam.) De még ezt a 32-t sem használhatom tetszőleges programkörnyezetben! Egyes (régebbi) videokártyák nem engedik, hogy cikluson belül használjuk őket. Szerencsére ez nálam nem gond.

De 32 textúra még mindig nem 116. Persze lehet több menetben is renderelni. Először 32 textúrát feldolgozok, majd az eredményt egy másik texturába mentem. Ezt megismétlem pár alkalommal, majd végső lépésben az előzőleg létrehozott textúrákat kombinálom. Ez nyakatekert, lassú, és értelmetlen, különösen, hogy az OpenGL biztosít egy szokatlan 3D textúrát, ahol az egyes rétegek nem keverednek. Ez a tömbtextúra (array texture).

Ez annyival más, mint az előzőleg használt tömb, ahol 32 volt a limit, hogy ott igazából csak az azonosítók voltak tömbbe rendezve. Itt viszont az adatok is, tehát nem váltunk a textúrák között, hanem egy textúrán belül lépkedünk. Akár 2048 textúrát is összefűzhetünk ily módon egy OpenGL 4.5 képes kártyán. Lássuk, hogyan is készül.

glGenTextures(1, &texid);
glBindTexture(GL_TEXTURE_2D_ARRAY, texid);
glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, GL_RGBA8, width, height, maxindex);
for(i = 0; i < 116; i++){
  image = load_from_file(...);
  glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, width, height, 1, GL_RGB, GL_UNSIGNED_BYTE, image);
  free(image);
}

Mint látható, csak egy textúra készült, egyetlen azonosítóval. Az egyes rétegeket a glTexSubImage3D-vel töltöttem fel. A fragment shaderben a következő módon kell használni:

uniform sampler2DArray image;
...
FragColor = texture(image, vec3(texcoord, level));

Tehát a koordináta három dimenziós lett, kiegészült a tömbindex-el. A módszerrel gond nélkül használhattam az összes textúrát, ráadásul sokkal gyorsabban.

Szólj hozzá!

Címkék: programozás demoscene opengl

Minek vegyek körvakut?

2022.05.09. 22:59 Travis.CG

Azt hiszem, senki nem nevezheti magát csináld-magad fotósnak, ha nem készít saját kezűleg egy körvakut. Eszméletlen mennyiségű különböző megoldás létezik. Kezdve a fényalagút módszertől egészen a LED lámpa gyilkolásig. Elhatároztam, hogy én külön utat fogok járni.

Először is be kellett szerezni a legdrágább alapanyagot, a LEDeket. Egy méter LED szalagot vettem, mert rövidebbet nem akartak eladni. Egy ezrest kellett kipengetni érte. Ha már úgyis villamossági boltban voltam, vettem vezetéket is. Mikor a projektet kezdtem, még nem volt annyi szétszerelt elektromos játék a szekrényembe, mint most, ezért kénytelen voltam a szép vékony vezeték helyett egy telefonkábelt venni, mert csak ez volt az üzletben. Akkor már egy kapcsolót is hozzácsaptam a csomaghoz.

A körvaku váza egy szétbontott merevlemezből a műanyag félkör alakú alkatrészek voltak, amelyek elválasztották az adat tároló korongokat. Egyik végükön fülek voltak, a másik végükön egy lyuk. A lyukakat összecsavaroztam, a két fület egy rugóval fogtam össze, amit a bigyóim között találtam.

A vázra ráragasztottam a LED szalagból levágott darabokat, majd a végeket a vezetékekkel összeforrasztottam. A tápegységből átalakított labortáppal ki is próbáltam.

korvaku1.jpg

Természetesen az első verzión a polaritásokat elrontottam, ezért nem világít minden egység. Némi utómunka után már mind a 12 világított. Még szerencse, hogy ezeket a LED szalagokat bolondbiztosra tervezték, mert még ez sem okozott kárt benne.

Utána jött a neheze, ugyanis szükségem volt áramforrásra. Már a szalag megvásárlásánál próbáltam alkudozni az eladóval, hogy olyat adjon, amelyiknek nem kell 12V, de nagyon furcsán nézett rám (ez van, ha az ember zéró tudással nekilát vásárolgatni). Végül úgy döntöttem, hogy majd később aggódok az áramellátás miatt, és megvettem a szalagot.

Egy másik boltban, szintén előzetes utánaolvasás nélkül, kértem 12V-os elemet. Nem tudtam, hogy van-e ilyen, de kiderült, hogy bizonyos riasztók 12V-os elemmel mennek. Az elem viszont olyan kicsi méretű volt, hogy attól féltem, nem lesz elég nafta benne, hogy 2 percnél tovább világítson. Végül próba-szerencse alapon hármat vettem, és párhuzamosan kötöttem őket.

korvaku2.jpg

Működött! Egy használt monitorból (vagy rizspapírból) még a diffúzort is lehetne rakni rá, hogy egy kis szórt fényt kapjak, de így is elégedett voltam a munkával. Lássunk egy tesztet.

Vaku nélkül:

noflash.jpg

Vakuval:

flash.jpg

A kép természetes napfény mellett készült, itt a vaku szerepe elhanyagolható volt. A záridő 1/160-ról 1/200-ra csökkenhetett 13-as rekesznél, ami nem egy nagy különbség. Rosszabb fényviszonyok mellett biztos nagyobb hasznát veszem majd.

Szólj hozzá!

Címkék: barkácsolás

Új élet a régi tápegységnek

2022.05.06. 22:15 Travis.CG

Habár a gépem régi tápegysége már nem tud ellátni egy számítógépet árammal, azért még nem teljesen használhatatlan. Arra gondoltam, jó lenne egyfajta labortápnak. Moduláris volta miatt könnyen lehetne használni több feladatra is, csak építeni kellene neki átalakítókat.

Azt tudtam, hogy az alaplapra csatlakozó 24 pin-es konnektor zöld vezetékét kell összekötni a fekete vezetékkel, és akkor bekapcsol. Egy dróttal ki is próbáltam, és örömmel láttam, hogy a hűtő ventillátor felpörög. Első nekifutásra le is vágtam a csatlakozót, kidobtam a kukába, majd összeforrasztottam a két vezetéket és vártam a csodát.

A csoda viszont elmaradt. A tápegység meg sem nyikkant. Én meg nem értettem, mi változott meg? Az előbb még működött! Kénytelen voltam kukázni egyet, és megnézni a csatlakozót még egyszer. Észrevettem, hogy néhány esetben két vezeték megy egy végpontba. Egy vastagabb és egy vékonyabb, mindkettő ugyan olyan színű.

tapveg.jpg

Bizonyára ez lehet a ludas! Kikerestem a vékonyabb vezetékeket, majd azokat is összeforrasztottam a vastagabb párjukkal. Most már ment! Először utána kellett volna olvasnom a modernebb tápegységeknek. Utólag meg is tettem, amiből megtudtam, hogy még egy dolog visszavan. Kell némi terhelést is adni neki, hogy leadja a megfelelő feszültséget.

Az első funkciója a telefon töltés lett. Az 5V-os ágra ráforrasztottam egy hibás telefon töltő microUSB csatlakozóját. A családban sajnos szaporodnak a hibás telefon töltők, de így azokat sem kell kidobni.

telotoltes.jpg

Elméletileg laptopot is lehetne tölteni, mert a legtöbb 12V-ot igényel. Mivel nincs hibás laptop töltőm, jót meg nem akartam szétbarmolni, ezért ezzel nem foglalkoztam, de a lehetőség megvan rá. Helyette két krokodil csipeszt illesztettem a VGA kártya 12 voltos ágára, mert ez egy olyan feszültség, amire gyakran van szükségem.

Egy diavetítő volt a második áldozat, amit sikeresen működtettem vele. A diavetítő egyszer csak megadta magát, és mivel nem találtam benne érintkezési hibát, a trafójára gyanakodtam. Mivel az égőnek csak 12V kellett, a krokodil csipeszes megoldásnak köszönhetően működtetni tudtam. (Az csak egy plusz poén, hogy a trafó hibátlan volt, a gondot egy oxidálódott vezető lemez okozta, ami úgy megnővelte az ellenállást, hogy a vetítő lámpája nem világított, de a multiméter nem jelzett érintkezési hibát.)

A jövőbeni terveim egyike, hogy két tűcsatlakozót is kap majd az egyik ág, hogy a próbapanelem is el tudjam látni árammal. Lehetne még USB A aljzatot is szerelni rá, hogy még több eszközt kapcsolhassak rá.

Az Amiga 1200-es meghajtására már eddig is voltak PC tápegység módosítások, ha tudnék szerezni egy Amiga csatlakozót, akkor azt is rá lehetne szerelni.

Az igazi viszont az lehetne, ha a moduláris kábeleket készíthetnék. Úgy értem, ahogy a moduláris tápegységhez is van merevlemez tápkábelek vagy VGA adapter kábelek, úgy én is készíthetnék USB-s kábeleket, krokodilcsipeszes kábeleket és mindig azt csatlakoztatnám rá, amire épp szükségem van.

Szólj hozzá!

Címkék: barkácsolás

Revision 2022, pályára állunk

2022.05.01. 22:32 Travis.CG

Mivel idén is az online térbe került a Revision, a szervezők csavartak egyet az eseményen, és helyi szatellit partik szervezésére bíztatták az embereket, hogy a semminél több legyen a party feeling. Magyarországon két helyszínen szerveztek buli pótlékot: Budapesten a Vault 51-ben és Gombán. Akit érdekel, itt elolvashatja Vickey élménybeszámolóját.

Idén nem készültem semmivel. A magyar indulókat Gargaj gyűjtötte össze ebben a cikkben.

Zenék

Gargaj első lett procedurális zenében. Ezt leszámítva számomra az összes zenei kompó teljesen felejtős volt. Próbáltam többször visszahallgatni őket, hátha valamelyik mégis megragad bennem, de nem volt eredménye. Furcsa módon még az oldscool zenék voltak azok, amelyek a legkevésbé borítottak ki, pedig hosszú távon nehezen szoktam elviselni a sok pittyegést.

Grafikák

Bármelyik grafikai kompót is néztem, egyik sem tetszett. A 3D rém primitív volt. A sok animált GIF unalmas. A fotók egy-két érdekes képtől eltekintve sablonosak voltak. Két fotó ráadásul jobban illett volna a grafikai kompókba, mert kizártnak tartom, hogy azokat a lézer-szerű vonalakat számítógép nélkül csinálták. Az egyiknél nem is mellékeltek eredeti képet (a szabályok szerint kellene), a másiknál meg olyan képeket mellékeltek, amelyik nem is hasonlít a végeredményre.

Animációk

Két produkciót érdemes csak megemlíteni. Ebből a Desert Dream 2022-be rengeteg energiát öltek, de egy elég szerencsétlen időszakban adták le. Most, hogy minden médiumon a háború szörnyűségei vannak, elég nehéz jól szórakozni egy idegen invázión. A második helyezett Dystopic Nightmare viszont minden ízében eltalált alkotás.

Intrók

Az Amigás intrók közül a Software Failure Antelogiumja olyan volt, mint egy mini demó. Annyi rész volt benne, hogy az ember azon gondolkodott, hogyan fértek el egy intróban? A másik kedvencem a LogicOS volt. A grafika nagyon egyszerűnek hatott, de ez ne tévesszen meg senkit. A hangüzenet biztos megnehezítette a méretkorlát fenntartását.

A PC4k. Ezen bealudtam. Ötletesek voltak, de nem volt semmi világmegváltó. A legjobban az Addict intrója tetszett, mert volt a legjobb a zene. Az első három helyezett zenéje elég szegényes lett. A győztes intró ráadásul olyan volt, mint egy procedurális grafika nyolc kameraállásból.

A 256b intrók tetszettek. A forgó Föld nagyon ötletes volt, de a Linerider volt az, ami belopta magát a szívembe.

Demók

Az idei Amiga demók rém gyengék voltak. A győztes Soul Strain nagyon repetitív volt. A demó fele szövegből állt. Egy intró szintjét ütötte csak meg. Mentségére legyen mondva, hogy kezdő Amigás csapatról van szó. Szerencsére az oldskool demók hozták a szintet. Nem kell nagy dologra gondolni, viszont korrekt munkák voltak. Kiemelném a Quantum Leap demót, mert KC 85-re írták, ami - kis utánanézést követően - kivívta nálam a legrondább számítógép díját. A Videoton ehhez képest iparművészeti alkotás.

Nem hittem volna, hogy valaha ilyet írok, de a PC-s demók mentették meg a napot. Tizennyolc alkotást adtak be, akadtak töltelék demók is közöttük, de egyharmada teljesen rendben volt. Kevin, a Spacepigs visszatérő főszereplője kezd kicsit megkopni, már fele annyira sem vicces, mint régen. A Futuris viszont nagyon magára talált az Unreal Engine-el. Egyre színvonalasabb alkotásokat láthatunk tőlük. Idén például ők nyerték a compót. Igaz, egyetlen erős csapat sem indult.

Szólj hozzá!

Címkék: demoscene

Búcsú a Tom Clancy-regényektől

2022.04.27. 20:30 Travis.CG

Kamaszkoromban elég sok Tom Clancy-regényt olvastam. Akkoriban a Hidegháború a vége felé közeledett, az internet gyerekcipőben járt, a CNN-ből meg nem értettem semmit, ezért ezek a regények egyfajta információ forrást jelentettek nekem, hogyan is működhet az amerikai vezetés. A világról sokkal kevesebbet tudtam, ezért az ott leírtakat el is hittem.

Ezekben a regényekben a világ azért működik, mert Amerika azt teszi, ami helyes. Amerika pedig azért teszi azt, ami helyes, mert olyan fehér férfiak irányítják, akik egy magasabb erkölcsi normának engedelmeskednek. Ez a küldetéstudatuk annyira erős, hogy egyes emberi törvényeket is áthághatnak érte.

A regények főhősei ezek az erkölcsileg megingathatatlan férfiak. Szakmájukban abszolút profik, keveset beszélnek, érzelmeiket elnyomják. Ha hasonszőrű férfival találkoznak, csak a szemébe néznek, és máris látják, hogy azok is ugyan olyan profik, mint ők. Miután végigmérték egymást, már csak apró biccentésekkel és kimondatlan szavakkal kommunikálnak. Ha mégis felbukkan egy női főszereplő, az csak egészségügyi dolgozó lehet. Ez alól csak Mary Pat Foley és Andrea Price a kivétel, de az ő karaktereik is inkább szoknyába bújtatott férfiak, mint nők.

Minden regényben az Egyesült Államoknak van egy dedikált ellensége, aki elkövet valami szemétséget, de végül egy hathatós katonai művelettel lerendezik azt. Az államnak nincsenek belső konfliktusai. Egy-két áruló azért akad, hogy a feszültséget fenntartsák, de őket csendben, bármilyen tárgyalás vagy vádemelés nélkül elteszik láb alól.

Minden annyira tökéletes ebben az Amerikai Álomban, hogy amikor a szerző mégis valami konfliktust próbál belecsempészni, az nagyon erőltetettnek hat. Például, mikor Jack Ryan elnők ellen merényletet szervez két fickó. Ez egy mellékszál a regényben, de végül nem vezet sehova. Egy rendőr szó szerint kiszagolja a robbanóanyagot és lekapcsolja a bajkeverőket.

Az első fekete elnök ellehetetlenítése is frucsa vargabetű volt, hiszen a regényekben nincs rasszizmus. (Ebben a világban ugyanis az FBI elfogta az összes Ku-Klux-Klán tagot, ami megszűntette az egész generációkon átívelő társadalmi problémát.) Ezért kellett egy öreg klán tag, akit elkerült a letartóztatás és ezért végrehajthatta a merényletet.

Az egészségügyi rendszerrel sincs semmi probléma. Amikor a terroristák Ebolával fertőzték meg az egész országot, az orvosoknak hála még csírájában elfolytották a járványt. Nem voltak Ebola-szkeptikusok, nem voltak szegények, akik rosszabb orvosi ellátást kaptak (esetleg olyanok, akiknek nincs egészségügyi biztosítása, ezért köztük a járvány erőteljesen tombolna.)

Aztán voltak a szerzőnek olyan megnyilvánulásai, ami után viszakozni kényszerült. Jack Ryan elnök ugyanis megoldotta a közel-keleti konfliktust is! Ez már tényleg annyira meseszerű lett, hogy a következő regényben volt egy lábjegyzet-szerű megjegyzés, hogy mégsem sikerült.

Az egész lufi számomra akkor pukkant ki, amikor a Tigris és Sárkány című regényben az Egyesült Államok pár nap alatt lealázta a Kínai Népköztársaság haderejét (igaz, ott volt az orosz hadsereg is, de csak mutatóban). Már a konfliktus eszkalálása is nagyon furcsa volt. A különböző diplomáciai manőverek ugyanis számtalan kiugrási pontot nyújtottak Kínának, akik ezzel egyszerűen nem éltek. A szerző meg elintézte annyival a kínai vezetés logikátlan lépéseit, hogy "ezek Klingonok". A kínaiak nem értették azokat az erkölcsi normákat, amelyek egy Clancy-regény főhősét mozgatják, míg a főhősök nem értették, a kínaiak mit nem értenek. A kínaiak még azt is figyelmen kívül hagyták, hogy Oroszországot felvették a NATO-ba.

Eközben az amerikai elnököt olyan dolgok foglalkoztatták, hogyan tudná megoldani, hogy a nők és férfiak ne éljenek szexuális életet a házasság előtt.

Végül kitört a háború, ami olyan lett, mint egy GI Joe rajzfilm, ahol a katonák mindig ki tudnak ugrani a szétlőtt járművekből. Az Egyesült Államok vesztesége 0(!) volt a teljes konfliktus ideje alatt. Az egyetlen izgalmas esemény, hogy majdnem megközelítettek vadászgépek egy AWACS-et. Az oroszok bezzeg tömegével halltak meg országukért. De azért nekik is kijutott a hősi cselekedetekből. Egy második világháborús veteránnak a hadsereg katonái megengedték, hogy lelőjön egy kínai tábornokot, mert ez a trófea még hiányzott az öreg listájáról.

Egyértelművé vált számomra, hogy Tom Clancy már nem tudja tartani a lépést a modern világgal. Át is adta a cselekmények vezetését először Grant Blackwoodnak, majd Mark Greaney-nek. A regény szereplői is kezdtek elöregedni, ezért ők is szép lassan lecserélődtek. Az események során ugyanis a karakterek elkezdtek egymás között házasodni, gyerekek születtek, mint valami telenovellában.

A cselekményformálás is szakított a régi formulával. Korábban ugyanis a szereplők oldalakon keresztül dumáltak egymással, terjedelmes belső monológok voltak, amelyen keresztül az olvasó megértette, mi miért történik. Az újabb regényekben több a csihi-puhi, amitől az regények kerete egy akciófilmre kezdett hasonlítani. Mintha egy forgatókönyvet olvasnánk. Az akciók is erősen emlékeztettek moziban látott jelenetekre. Például az egyik során a szuper titkos árnyék ügynökség teljes csapata háztetőkön keresztül menekült a rendőrség elől.

Az új regények egyik kellemes hozadéka volt, hogy megpróbálták az aktuálpolitikai eseményeket a narratíva részévé tenni. Itt is volt polónium-mérgezés, Donyecki-megszállás, kínai terheléses támadás kormányzati szervek ellen. Viszont az elképzelhetetlen elemek is megszaporodtak. Az egyik ilyen az volt, amikor az egyik főszereplőnek átadták a telje orosz haderő vezetését, mert ők nem tudták kezelni a krízist. (Pontosan az után, hogy egy áruló FSZB ügynök majdnem halálra kínozta.) De arra is felhúztam a szemöldököm, hogy ennek a szuper titkos ügynökségnek a tagja az elnök fia is, akit többen ismernek fel Hong-Kongban, mint hazájában. Ez a tény viszont egyáltalán nem megy a titkos műveletek rovására.

Talán nem is az a bajom, hogy a regények nem reálisak. Elvégre ha teljesen reális lenne, olvashatatlan volna. Inkább az a baj, hogy az internet segítségével olyan részletességgel kapunk információkat valódi konfliktusokról, hogy ezek a regények már bohózatnak tűnnek mellettük. Esetleg mégsem. Néha a valóság tűnik bohózatnak. Ha Ryan elnök robbanó fákról beszélne, a könyvet azonnal a falhoz csaptam volna. Akár mi is az igazság, a háború már nem tűnik szórakoztatónak.

Szólj hozzá!

Címkék: életmód

Megkövesedett tudás

2022.04.05. 10:10 Travis.CG

Pontosan nem emlékszem, hol hallottam, hogy a cikkek leírják, amit két évvel ezelőtt tudtunk. A könyv leírja, amit 5-10 évvel ezelőtt tudtunk, az egyetemi oktatásban pedig megjelenik, amit 20 évvel ezelőtt tudtunk. Habár az itt leírt számok változhatnak, az tény, hogy az oktatott anyagban mindig van egy késleltetés.

Ez egyrészt szükségszerű, mert mint a koronavírus-járvány kapcsán is láttuk, minden információnak szüksége van egy kis pihentetésre, ami alatt vagy megcáfolják, vagy megerősítik azt. Másrészt óhatatlanul maradnak a tananyagban olyan részek, amelyeknek inkább történeti érdekessége van, mint aktualitása.

Apám is sokszor mesélte, hogy a főiskolán még mindig a logarléc használatát verték beléjük, pedig akkor már látszott, hogy az elektronikus számológépek sokkal pontosabban és gyorsabban kiszámolják ugyan azt. Ennek ellenére, amit ott megtanult anyagismeretben, azt mind a mai napig hasznosítja.

Ezzel szemben én, mikor végeztem az egyetemen, és elhelyezkedtem az első kutatóintézetben, mindenki a mikroRNS-ekről beszélt, amiről azt sem tudtam, hogy micsodák, mert a genetika oktatás még a junk DNA koncepciónál tartott. A PhD védésemen is szembesültem az információ elavulás mértékével, amikor megkérdezték, miért nem használtam Chip-seq eredményeket a hipotézis igazolására. Azt válaszoltam, mikor elkezdtem a PhD-t, azok a módszerek még nem léteztek. (Igen, kicsit hosszúra sikeredett az eljárás.)

De már a PhD-m alatt is voltak jelek, hogy nem mindig azt kell megtanulni, amit tanítani akarnak. Például a témavezetőm bioinformatika kapcsán a GCG programcsomagot tanította, pedig akkor már látszott, hogy a liszenszelés miatt nem sok jövője lesz. Akkor javasoltam neki, hogy mi is térjünk át az EMBOSS tanítására, mert a hazai kutatócsoportok mind ezt teszik.

Végül mégsem tértünk át, mert a témavezetőm szerint a GCG-ben a szekvencia beírásnál át lehet definiálni a billentyűket, tehát az ATGC nukleotidokat a QWER billetyűkkel lehet beírni. Ha pedig kapunk egy autoradiográfot, akkor ezzel a módszerrel nagyon gyorsan bepötyöghetjük a nukleotidokat. Természetesen, miután elég gyakorlatot szereztünk, hogy az autoragiográf megfelelő oszlopait agyban összepárosítsuk az egymás melletti billentyűkkel.

Csupán egyetlen gond volt ezzel a ragyogó módszerrel. Soha nem kaptunk autoradiográfot, mert a szekvenáló gépek akkor már floureszcens festéket használt jelölésre, és a szekvenáló cégek az eredményt elküldték e-mailen, tehát gépelni sem kellett.

Most újabb dilemma elé kerültem. Ismét oktatnom kellett, ezért a főnököm elküldte az előadás anyagát, hogy abból válasszuk ki a nekünk tetsző témakört, amit megtartunk. Megpróbáltam olyan fejjel végignézni a tematikát, hogy mi az az információ, ami az eddigi munkámhoz releváns. Akkor megláttam, hogy két teljes óra anyaga az EMBOSS-ról szólt. Arról a programcsomagról, amiért 20 évvel ezelőtt kardoskodtam, hogy oktatni kell, mert az a jövő.

Gondolkodtam, mikor is használtam utoljára. Már 5 éve. Tizenegy éve nem fejlesztik. A legtöbb rá mutató link döglött. Kérdeztem a munkatársaimat is, ők mikor használták, de nem emlékeztek rá. Úgy néz ki, kicsi az esélye, hogy a jövőben használni kell, ezért azt javasoltam, vegyük ki a tanagyagból.

De mi legyen helyette? Valami olyasminek kellene lennie, aminek biztos nagyobb lesz a jelentősége a jövőben, és nem árt hallani róla. Például a gépi tanulásról. Szerintem már túljutottunk a deep learning hype-on, és már kezdjük csak azokra a feladatokra használni, amire ténylegesen való. Az AlphaFold kapcsán pedig láthattuk, hogy komoly eszközök alapja lehet. (Persze a szakmai féltékenység oldalát sem szabad elhanyagolni. Láttam egy nálunk kevésbé felkészült csoport tematikáját, akik büszkén hírdetik a deep learninget a bioinformatika tárgyukban. Mire én: nehogy már ők oktassák, mi meg nem!)

Végül kiegyeztük a főnökömmel egy kompromisszumban. Az EMBOSS-os óra helyett legyen egy algortimusos óra, ahol érintjük a gépi tanulást is, az EMBOSS pedig be lesz sűrítve máshova. Ezután már tényleg nem volt más dolgom az előadásokkal, csak kitörölni azokat az örök becsű diákat, amelyek megörökítették a hallgatóknak, hogyan is nézett ki az EBI honlapja 2011-ben, 2014-ben és 2019-ben. Eltávolítani olyan hivatkozásokat, ahol például a program helyett már csak a fejlesztő nekrológja található. Kicserélni néhány diát, ahol a weboldal működését Netscape Navigatorral mutatják be. Sajnos ezzel annyi idő elment, hogy nem tudtam a Windows XP-s Blast futtatás lépéseit aktualizálni. Sebaj, jövőre is kell hagyni valami munkát.

Szólj hozzá!

Címkék: bioinformatika

Ez most nem vicc: teljes humán genom

2022.04.01. 07:55 Travis.CG

Ami évekkel ezelőtt még április 1 ugratásnak indult, ma már valóság. Megvan a teljes humán genom minden egyes nukleotidja. Úgy is mondhatnánk, hogy idén az a poén, hogy volt régen egy poén, ami többé nem poén.

A Science egy teljes számot szentelt a témának, de akit érdekel a dolgok háttere, annak a Nature Methods bemutat egy variáció szűrő eljárást, és egy genom polírozást is.

Amit külön is ki szeretnék emelni a konzorcium munkájából, hogy rengeteg fájlt adtak közzé, amivel segítik az egyszerű halandók átállását az új genomra. Liftoff fájlok, hogy a régi adatokat át lehessen konvertálni az új genomra, ClinVar annotáció, dbSNP, stb. Az összes információ egy helyen megtalálható.

Szóval bárki bármit csinált eddig a humán genom felhasználásával, most törölje le, és kezdje újra! Az élet szép!

2 komment

Címkék: bioinformatika

Sun élesztés

2022.03.27. 22:18 Travis.CG

Az intézetünkben a régi gépeket elkezdték kiszórni. Mint megtudtam, köztük van néhány Sun is. Elhatároztam, hogy ezeket megmentem, hogy ne végezzék egy szeméttelepen. Az egyik gép egy Sun Ultra Enterprise 2 munkaállomás.

A karrierem elején még dolgoztam Sun szerverekkel, de ez a gép még annál is régebbi. Olyan, mint egy Hidegháborús maradvány. Vastag, erős háza van. Majdnem negyven kilós monitora. A kábelek fél centi átmérőjűek. Még a billentyűzet is olyan vastag műanyaggal van burkolva, hogy egy kisebb kocsmai csete-patéban fegyverként lehetne használni.

sunbill.jpg

A gépben két processzor van, 1Gb memória, SCSII CD-ROM. Utóbbinak a tálcája nem nyílik és furcsa zörgő hangot ad, amikor felpörög.

Már a gép bekapcsolása is tartogatott meglepetéseket. Mikor fél perc után sem adott semmilyen képet, levontam a következtetést, hogy ez bizony kimúlt. Viszont ezt nem akartam elhinni. Egy ilyen gép nem múlik csak úgy ki! A második vagy harmadik kísérletnél viszont valami miatt el kellett mennem, mert máshol volt dolgom. Mikor tíz perc múlva visszamentem, a gép élt. Szóval csak ki kellett várni az időt!

Később kiderült, hogy boot előtt egy hosszabb ellenőrzési folyamat van, aminek az állapotát a Caps Lock, Num Lock, stb gombok kis ledjei jeleznek. Ezt a gép dokumentációjából lehet megtudni. Az Oracle-t lehet szidni az üzleti lépései miatt, de azért nem, hogy nem teszi elérhetővé a doksikat. Rengeteg részletes leírást találtam a gép felépítéséről és a különböző hibákról.

A gépek másik jellegzetessége, hogy az alaplapi akkumulátor nem egy gombelem, mint a PC-k esetén, hanem egy tokozott IC. Ha lemerül, nemcsak a rendszer óra törlődik, de a hálózati kártya MAC címe is. Ettől az egész rendszer pánikba esik az ellenőrzések során, és megtagadja a boot-ot.

Viszont az OpenBoot (ez a gép firmware-je) segítségével el lehet érni minden eszközt. Egy Forth nevű programozási nyelvet is tartalmaz, amivel kisebb programokat is írhatunk. Ez ma már elképzelhetetlen lenne. Jelenleg az a trend, hogy a felhasználók a gép minél kevesebb eleméhez férhessenek hozzá a manapság uralkodó paranoia miatt, hogy valaki kártékony kódot ír benne. Annak idején a viszont a használhatóság volt az elsődleges prioritás.

A neten találtam némi anyagot, hogyan lehet beírni a MAC címet a memória megfelelő részébe. Sajnos bármilyen értéket nem írhatunk be. A MAC cím bizonyos pozícióira a gép típusának megfelelő értéket kell beállítani. A neten talált leírás persze nem felelt meg a birtokomban lévő a gépnek.

Egy rövid ideig random hex kódokat vittem be, reménykedve, hogy elindul a masina, de természetesen nem volt szerencsém. Végül egy videó képkockáit elemezve találtam egy olyan értéket, amit a gép elfogadott. Itt a teljes lista.

setenv diag-switch? false
1  0 mkp
80 1 mkp
8  2 mkp
0  3 mkp
20 4 mkp
1b 5 mkp
ad 6 mkp
b7 7 mkp
0  8 mkp
0  9 mkp
0  a mkp
0  b mkp
8f c mkp
ce d mkp
e5 e mkp
0 f 0 do i idprom@ xor loop f mkp
reset

Eljutottam arra a szintre, hogy tudtam bootolni! Sajnos az értékek beírását minden egyes bekapcsoláskor meg kell ismételni. Az operációs rendszer még nem indul el, mert a gép valamit nagyon keres a neten, de persze már nem találja. Még messze vagyok attól, hogy egy új wild demót kódoljak a gépen, de legalább már az látszik, hogy érdemes energiát vesztegetni rá.

Szólj hozzá!

Címkék: barkácsolás Sun

Differenciál expresszió felülvizsgálva

2022.03.22. 10:53 Travis.CG

A tudományban nem sok helye van a berögzült szokásoknak. Már csak azért sem, mert jöhet egy olyan új vizsgálat, ami fenekestül felforgatja az eddigi ismereteinket. Például eddig sem rejtettem véka alá ellenszenvemet a Wilcoxon-teszttel szemben, ezért is ért meglepetésként, hogy az egyik cikk egyenesen azt javasolja, hogy csakis ezt használjuk, ha differenciál expressziót akarunk számolni nagy ismétlésszámmal.

De mielőtt leborulnánk bizonyos kutatócsoportok lába előtt, akik már évek óta mindenre a Wilcoxon-tesztet használnak, nézzük meg alaposabban is a problémát.

Kezdjük azzal, hogy minden döntéshozatal téved. Szándékosan nem a statisztikai próbákat említettem, mert azok csak számokat adnak vissza eredményül. A számok alapján viszont mi, emberek döntünk, és ez a döntés nem minden esetben pontos. Ezeket a tévedéseket szintén számszerűsítjük, ez a fals pozitív és fals negatív.

Az is köztudott, hogy a különböző döntési kritériumok, különböző módon tévednek. A szakértők ezeken szoktak vitázni, hogy melyik döntés a jobb. A lehetséges döntések száma pedig nagy.

Nincs ez másként a differenciál expressziós elemzéseknél sem. Itt azt kell eldönteni, hogy melyik gén mutat megnövekedett, vagy csökkent expressziót válaszul egy hatásra. Génből pedig sok van. Korábban már erről is írtam.

A fent említett cikk is azzal indít, hogy két programmal is megnézték az expressziós különbségeket, és nagyon kevés gén volt az, amelyik mindkét módszerrel feljött. Ezért elkezdtek utána menni, hogy miért látják ezeket a különbségeket. Mivel manapság nem ritkák a nagyon sok ismétlést tartalmazó kísérletek, kiválasztottak egyet és random összekeverték a csoportokat, meghatározták az eltérő expressziót mutató géneket, majd az egész folyamatot megismételték ezerszer.

Ez egy rendkívül okos megközelítés. A cikkben azt mondták, hogy az így kapott gének mindegyike fals pozitív. Ez nem teljesen igaz. Ha a véletlen csoport bontás jórészt átfed a valódi csoportokkal (nagyszámú permutációs ismétlésnél előfordulhat), akkor feljöhetnek valódi pozitív eredmények is. Szerencsére a cikkben azokat a géneket emelték ki, amelyek a permutációs vizsgálatok 50%-ban feljöttek. Ezeket tényleg nehéz lenne nem fals találatoknak tekinteni.

Ezek alapján pedig a DESeq2, edgeR sokkal több fals pozitív eredményt ad vissza, mint amennyit beállítottunk, míg a Wilcoxon-teszt sokkal kevesebbet.

Azért azt hozzá kell tenni, hogy nem kell kidobni a kukába az összes DESeq2-es számítást. Ha az ismétlések száma kevesebb, mint 8, a Wilkoxon nem ad vissza értékelhető eredményt. Nyolc ismétlés felett viszont a cikk szerint statisztikai erőben nincs különbség a két módszer között, miközben a fals pozitív a Wilkoxon teszt felé billenti a mérleget.

Amit viszont nem értettem a cikkben, hogy miért hagyták ki a t-próbát az összehasonlításokból. A felsorolt indokok meghaladták az én statisztikai ismereteimet, de az is lehet, hogy nem volt kedvük megcsinálni, mikor kérte tőlük egy bíráló. A normalizált adatok logaritmikus transzformációjával elméletileg a t-próbát is lehetne használni.

Mint minden eredménynél, természetesen itt is van ellenvélemény. Röviden arról van szó, hogy nem a statisztikai tesztet kell kicserélni egy kisebb erejűre, hanem a null hipotézist kell megfelelően megválasztani.

Szólj hozzá!

Címkék: bioinformatika

Ki bírálja a bírálót?

2022.03.07. 00:01 Travis.CG

A kutatók az egyes közösségi platformokon rendszeresen szoktak siránkozni, hogy miért vannak a publikációknak bírálói, hiszen ők mennyire jól tudják az összes módszertant, milyen kiválóan terveznek kísérletet. Számukra a bírálók azért vannak, hogy az életüket megkeserítsék és a jogos dicsőséget elodázzák.

Talán ezek a kutatók tényleg olyan kiválóak, ahogy állítják magukról. De bárki, aki hosszabb ideje bírál bármilyen folyóiratnak, az tudja, hogy ezek a sztárok (már amennyiben igazuk van) vannak kisebbségben. A beküldött cikkek nagy számban szemetek. Merem ezt kijelenteni pár éves bírálói tapasztalattal. Sőt, minél alacsonyabb presztizsű egy lap, a hulladék cikkek aránya annál nagyobb (mivel az elutasított kéziratokat senki sem látja, ezért ezt a kijelentést lehetetlen ellenőrizni).

Ezért úgy gondolom, hogy a cikkek bírálóira igenis szükség van. Még akkor is, ha ezen a rostán átjuthatnak elég furcsa, cikkeknek tűnő irományok is.

A bírálók nevét nem ismerik a kézirat szerzői. Rejtve vannak a sötétben, onnan böffentik ki bölcsességeiket, vagy hatalmas baromságaikat. Az anonimitás miatt akár sekélyes bosszújukat is véghez vihetik.

Annak ellenére, hogy igazából semmilyen hátrányos megkülönböztetés nem érheti a bírálót, az mégsem egy népszerű munka. A legtöbb kutató nem akarja a munkaidejét mások munkájára pazarolni. Itt is olyan érvek szoktak elhangzani, hogy ezt a tevékenységet meg kellene fizetni.

Ezzel csak az az egy probléma, hogy pontosan mit is kellene megfizetni? A bírálatot? Én már kaptam egy mondatos bírálatot. Ez az ember kapjon ugyan annyi pénzt, mint az, aki sorról-sorra átnézte a kéziratot és sorszámmal kigyűjtötte az összes elírást is? Az a baj az emberekkel, hogy azt csinálják, amiért jutalmazzuk őket. Ha a hosszú bírálatért több pénzt lehet kapni, mindenki könyveket fog írni. Ha a pozitív bírálatokat előnybe részesítik, akkor mindent el fognak fogadni. Előbb-utóbb megjelennek a megélhetési bírálók, akik akkor is bírálni fognak, ha nem kell.

Arról nem is beszélve, hogy állítólag olyan témavezetők is vannak, akik PhD hallgatóknak adják ki a bírálatot. Ezek az emberek vajon a pénzt is kiadnák a kezükből?

Továbbá ott van a tévedés lehetősége. Mi van, ha egy bíráló téved? Egyes cikkeket tizenöten is írhatnak, mégis elég két (egyes esetekben három) ember, hogy elbírálja. Nem biztos, hogy ez a két ember a kézirat minden egyes részével annyira tisztában van, mint annak a szeletnek a szerzője. Bevallom, nekem is gondot okoz, mikor kísérletes validálások eredményeit kell értelmeznem. (Most jön az a rész, hogy bezzeg az én időmben, még a PCR sem volt RT. Legalábbis a labornak nem volt rá pénze.)

Egy dolgot viszont meg lehetne tenni, és ezt meg is szoktam. A névtelenséget el kellene törölni. Tudom magamról, hogy kétszer is meggondolom, mit írok le, ha tudom, hogy a nevem is ott lesz mellette. Igaz, hogy bírálónak hívjuk azokat, akik a cikket átnézik, de igazából nem bírálnak semmit. A véleményüket mondják el, ami alapján az editor dönt. A jobb editorok pedig tudják, mi az, amit a bírálatból érdemes megtartani, és mi az, aminek semmi értelme.

Az más kérdés, hogy a legtöbb editor megelégszik azzal, hogy papagáj módjára visszamondja, amit a bírálók leírnak. De igazából nekik lenne a dolguk, hogy az egymással gyakran ellentétes véleményeket összefogják.

Szerencsére egyre több újságnál a bírálat nem egy egyirányú folyamat. A szerzők reflektálhatnak a bírálatokra, megvédhetik a döntéseiket. Gyakran egyfajta párbeszéd is kialakul a bírálók és a szerzők között. Ezekből én is sokat szoktam tanulni (meg a többi bíráló véleményét is hasznosnak szoktam találni, mert másfajta nézőpontot képviselnek.)

Szólj hozzá!

Címkék: filozofálás

Egy kiberfegyver anatómiája

2022.02.27. 23:31 Travis.CG

Mint az közismert, Ukrajnát a kibertéren keresztül is támadják. Az elsők között azonosított ilyen jellegű kiberfegyver a HermeticWiper volt. Ezért elhatároztam, hogy letöltöm, és kipróbálom egy igazi gépen.

Először is, előkészítettem egy gépet. Telepítettem rá egy teljesen új Windows 7-t. A gép házán van egy Windows 7 matrica, de valami miatt nem tudtam azzal a kóddal aktiválni az operációs rendszert. Előtte meg Linux volt rajta, ezért nem tűnt fel, hogy a matricán lévő kóddal gond lenne. Mindegy, ahhoz, hogy elpusztítsam a rajta lévő adatokat, a 30 napos türelmi időszak is elég.

Az első meglepetés számomra, hogy egy alap Windows 7 - ma már - mennyire használhatatlan. A böngésző (ami itt még Internet Explorer) minden második weboldalra azt mondta, hogy nem tudja megjeleníteni. Sikerült nagy nehezen egy Firefoxot letölteni, de az meg nem jelenítette meg a betűket rendesen, csak amolyan pontokat láttam, mintha miniatürizálva lenne a szöveg. Ezek után úgy döntöttem, driverek sem kellenek.

Biztonsági intézkedésként leválasztottam a gépet a netről, majd rámásoltam a HermeticWiper-t és egy malwert, amit állítólag vele együtt telepítenek az áldozat gépére és elindítottam.

A program nem csinált semmit. Ez nem is meglepő, mert a nálam részletesebb elemzések szerint a program egy kereskedelmi forgalomban kapható partíció manager driverét használja. Ha nincs a gépen ez a program, akkor a kiberfegyver használhatatlan.

Bevallom, ez nekem, mint kibicnek, nagyon furcsa. Elvégre, mi az esélye annak, hogy a partícionáló program megtalálható az áldozat gépén? A cég weboldala szerint 530 millió felhasználójuk van, az ESET szerint pedig több száz gépen találták meg a kártevőt.

A meghajtó a program eltávolítása után is a gépen marad, tehát aki egyszer telepítette a fent említett partícionáló programot, az az operációs rendszer cseréjéig támadható marad. Bármilyen szervezeti egységnél a rendszergazdák nem engedik, hogy az alkalmazottak programokat telepítsenek a gépükre. Azt gondolom, elég kicsi az esélye, hogy ez a program kifejthesse kártékony hatását.

Ha mégis működésbe lép, akkor letörli az MBR-t (vagy ha GPT partíciós táblát használnak, akkor azt). Ez elsőre elég ijesztőnek tűnik, de fiatalabb koromban, mikor még nem voltam ennyire rutinos, gyakran felülírtam az MBR-t, mikor Linux után telepítettem a Windowst. Ez viszont viszonylag egyszerűen helyreállítható. Persze rendszergazdaként biztos nem az lenne az álmom, hogy 20-30 gépen visszaállítsam az MBR-t, de elméletben nem lehetetlen.

Összegezve tehát van egy nagyon összetett program, ami a gépek viszonylag kis százalékát meg tudja támadni, és ott okoz egy nem túl nagy problémát. Hangsúlyozom, lehet, hogy a felületes ismereteim miatt nem tudok mindent. Talán az a partíció manager program olyan Ukrajnában, mint nálunk annak idején a Total Commander volt, ki tudja? De ha nekem kellene kártékony kódot írni, ami mindent elpusztít, akkor abból indulnék ki, hogy a célgépen nincs semmi, ami segítene.

A malware szerencsére nem okozott csalódást. Pillanatok alatt végigment az összes elérhető fájlon, és titkosította azokat. Az asztalon hagyott egy üzenetet, hogy melyik e-mail címre kell írnom, ha ki vissza akarom kapni a fájlokat. Ez már valami. De ezt is a felhasználónak kell elindítania.

Tehát a régi bölcsességek továbbra is érvényesek: idegen futtatható állományt ne indíts el, csinálj biztonsági mentést.

Szólj hozzá!

Címkék: biztonság

Mert a kmer az jó

2022.02.13. 22:43 Travis.CG

Bevallom, a teljesen egyszerű ötletek, amelyekre önmagukon jóval túlmutató dolgok épülhetnek, lenyűgöznek. Ettől olyan érzésem lesz, hogy a világban némi rend is uralkodik.

Például vegyük a kmereket. A kmer egy hulla egyszerű ötlet. A DNS szekvenciát ugyan olyan hosszú darabokra vágjuk és megszámoljuk, melyikből mennyi van. Faék egyszerűségű ötlet. Mire lehet használni?

  1. Meghatározhatjuk, hogy van-e kontamináció a mintánkban.
  2. Két szekvenciát összehasonlíthatunk (pl. azonos fajból vannak-e)
  3. Referencia nélkül megmondhatjuk, hogy diploid vagy haploid a szekvencia
  4. Megnézhetjük, van-e adaptor szennyezés
  5. Metagenomikai taxonómia meghatározást végezhetünk
  6. Expressziós különbségeket számolhatunk
  7. Trió adatokban SNP-ket kereshetünk (referencia használata nélkül)
  8. Azonosíthatjuk a repeat elemeket
  9. Megbecsülhetjük a genom méretet
  10. Genomokat szerelhetünk össze

Izgalmasan hangzik? Meghiszem azt! Ráadásul van egy adatstruktúra, amit mintha pont erre a módszerre szabtak volna: a hasítótábla. Mintha csak azt akarta volna valaki, hogy a bioinformatikusoknak legyen egy jó napja.

A kmer alapú vizsgálódás annyira népszerű, hogy külön eszközök vannak rá. Az egyik a KAT. Segítségével készíthetünk hisztogrammot, amivel megtudhatjuk, hogy a különböző gyakoriságú kmerekből mennyi van. Ennek egy szebb módja, amikor a kmer gyakoriságot a GC arány függvényében ábrázolják (kat gcp parancs). Ennek segítségével megmondhatjuk, van-e kontamináció a mintánkban. Ez hasznos lehet egy de-novo összeszerelés előtt.

Minták összehasonlítására használható a kat comp parancs. Például a readek és a belőlük készült genom kmeres összehasonlítása megmutathatja, mennyire teljes az összeszerelés. Ha ugyanis a kettő különböző, akkor a genom építés során nem használtunk fel minden readet.

A program számos ábrát is el tud készíteni, erre nem térnék ki külön. Arra viszont igen, hogy a memória használat tetemes lehet. A program egyik gyengesége, hogy minden egyes alkalommal, ha elfogy a rendelkezésre álló memória, akkor a korábban használt memória mennyiség kétszeresét foglalja le. Ez egyrészt gyorsítja a programot, viszont elég hamar feléli a gép erőforrásait, akár csak a mesebeli sakktábla a király vagyonát.

Ha ilyesmivel van dolgunk, megpróbálkozhatunk a jellyfish használatával, ami szintén egy kmer alapú eszköz, a KAT is ezen alapul. Nem olyan gyors, viszont tapasztalatom alapján kevesebb memóriával is beéri, az általa elkészített kmer táblázatot pedig a KAT is képes olvasni.

Szólj hozzá!

Címkék: bioinformatika

Szellem a múltból

2022.02.08. 18:22 Travis.CG

Nemrég egy olyan ritka alkalom történt, hogy egy nagyon régi barátommal több, mint egy órát tudtam beszélgetni. Minden szóba került, de a legérdekesebb az volt, hogy megemlítette az egyik programomat, amit sokat használta, de mostanában nem működik.

Annak idején (ezt egy 12 éves távlatban kell érteni) írtam neki egy programot, ami képes volt röpdolgozatokhoz feladatlapokat generálni, a hozzájuk tartozó válaszokkal együtt. Az összes kérdés a válaszokkal együtt megvolt egy Word dokumentumban, témakörökre lebontva. Ebből kellett véletlenszerűen témakört és feladatot választani. Azért, hogy a hallgatók ne tudjanak leskelődni, több feladatsort is kellett készíteni, ráadásul három nyelven is oktattak, ezért három ilyen Word dokumentumuk volt. Plusz mindegyik generált feladatlapnak egyedi sorszám is kellett a dokumentálás végett.

A régi verzió ezért beolvasta a Word fájlból kovertált RTF-et, majd a vágólap segítségével új RTF dokumentumokat hozott létre, úgy, hogy kiimásolta a kérdéseket, egy sorral alatta a válaszokat, majd a kész RTF doksikat elmentett, kinyomtatott, ahogy a felhasználó óhajtotta.

Mikor a barátom említette, hogy "mostanság" nem működik (ami kb. 5-6 évet jelenthetett), akkor arra gondoltam, talán elég lehet újra fordítani, mert ezt még Delphiben írtam. Abból is talán a 3-as verzióval.

Ahogy böngésztem a régi kódomat, ezt a ősrégi szellemet, arra kellett jutnom, hogy ezt nem érdemes újból lefordítani. Az egész elavult megoldásokat tartalmazott. Három RTF dokumentum, mint bemenet, mindegyik nyelvnek egy. Mindegyik másik karakter kódolással, hogy a nyelvek speciális betűit is tartalmazza. Végül egy negyedik fájl is volt, aminek csak az volt a szerepe, hogy tárolja a legutolsó feladatlap egyedi sorszámát, hogy onnan lehessen folytatni a számozást.

Miért ne lehetne egyetlen fájlban minden? Egy UTF-8 kódolású fájlban, hogy az egyes nyelvek karakterei szépen jelenjenek meg. Adatbázist nem akartam, mert egyrészt nem volt olyan sok kérdés, másrészt akkor kell írni még egy adminisztrációs programot is, hogy a felhasználók módosíthassák azt. Valami egyszerűbbre lenne szükség.

Így jutottam el az XML-hez. Egy XML-ben tárolhatnám a kérdéseket, válaszokat, nyelveket, és a sorszámot. Sajnos már Delphi fordítom sincs, régen is használtam a nyelvet, ezért arra gondoltam C#-ban írom újra.

Volt viszont egy probléma. Nem tudtam új RTF dokumentumot készíteni. Illetve tudtam, de nem tudtam, hogyan formázzam meg a nyers szöveget. Az egész kegyetlenül bonyolultnak tűnt, én meg nem akartam túl sok időt rászánni.

Ha már XML-ben vannak az adatok, miért ne lehetne a kész feladatlap HTML-ben? Talán még XST-vel fordíthatnám az adatokat. Ez jó döntésnek tűnt, könnyen tudtam formázni, könnyen tudtam összeállítani a feladatlapokat. Böngésző minden gépen van, ezért, amit elment a felhasználó, egyszerűen megtekintheti.

Viszont maradt még egy probléma, a nyomtatás. Eredetileg azt akartam, hogy egy gomb megnyomásával történjen a generálás, mentés és a nyomtatás is. Viszont nem tudtam a teljes oldalt úgy kinyomtatni, ahogy szerettem volna. Oda nem illő fejlécek jelentek meg, oldalszámozás, stb. Erre nekem nem volt szükségem. Mint kiderült, a C# WebBroswer modulja nem más, mint egy Internet Explorer. Mindent tud, amit az, és pontosan ugyan úgy működik. Egy másik szellem a múltból.

Ha szeretnék nyomtatási beállításokat megjeleníteni, akkor meghívhatom a ShowPrintDialog() metódust, ami megjeleníti az Internet Explorer nyomtatási beállításait. Igaz, hogy van PrintDialog verzérlő elem a Visual Studioban, de ez csak PrintDocument típusú objektumokkal működik. Természetesen a WebBroswer nem konvertálható PrintDocument-é.

Volt egy másik problémám is a WebBrowser ShowPrintDialog() metódusával. Ez egy nem modális dialógusablak, tehát mikor egy cikluson keresztül generáltam a feladatlapokat, és a ciklusban megjelenítettem a dialógus ablakot, akkor a ciklus tovább futott, kinyomtatott mindent a rossz beállításokkal, miközben a felhasználó még be sem fejezte a klikkelést a dialógus ablakban.

Egy másik nehézség az volt, hogy a nyomtatási beállításokat csak azután lehet megjeleníteni, hogy elkészült volna a dokumentum, amit ki szeretnék nyomtatni. Ez egyrészt logikus, mert akkor jeleníthető meg releváns információ a dialógus ablakban, ha tudjuk, mit szeretnénk kinyomtatni. Másrészt ha a felhasználó spórolni szeretne a papír mennyiségén, és két oldalt szeretne egy oldalon látni, akkor lehetőséget kell biztosítani, hogy felülbírálhassa az dokumentum oldalbeállításait.

Én viszont több dokumentumot állítok elő egyszerre, nem dobhatom fel a dialógus ablakot minden alkalommal, és pont emiatt az első feladatlap generálása előtt sem. Hacsak nem fűzöm össze az összes feladatlapot egyetlen dokumentummá, vagy nem állítom át a Registry-ben az Internet Explorer nyomtatási beállításait.

Végül utóbbi mellett döntöttem. De ez sem ment zökkenőmentesen. A Registry beállításait pontosan a nyomtatás előtt állítottam át. A feladatlap generáló ciklus legelső dokumentuma még a régi beállításokkal jelent meg, csak a másodiktól látszott az, amit szerettem volna.

Aki kíváncsi a programra, az megnézheti itt.

Szólj hozzá!

Címkék: programozás

Minden, amit az Illumina programokról tudni akartál

2022.02.01. 08:57 Travis.CG

Az utóbbi időben játszottam egy keveset az Illumina saját fejlesztésű programjaival. Ez idő alatt sokszor eszembe jutott a régi vicc, csak Szadlacsek helyett az Illumina nevével.

Az Illumina a TSO 500 paneljéhez egy saját alkalmazást is fejlesztett, ami a felhős körnezetében, a BaseSpace-en fut. Ez egy nagyon jó panel, hiszen egyben csinál DNS és RNS szekvenálást, keres mutációkat, fúziós proteineket, kópiaszám változásokat. Mivel egy targetált szekvenálásról van szó, ezért a futási idő is baráti, egy 24 processzorral 10 óra alatt eredményeket kaphatunk.

A BaseSpace viszont nem ingyenes. Miért kellene azt használnunk, ha eleve van egy nagy, VMWare-el felszerelt szerverünk? Szerencsére nem is kell, mert van Local App, amivel ott, és akkor futtatunk, amikor csak akarunk.

Ezzel nem is volt addig gond, míg a gyártó által használt programokat, a gyártó által használt szekvenáló kitekkel, és szekvenáló berendezéssel használták. Hanem, amikor kitalálták, hogy a szekvenáló gép nagyobb áteresztő képességű legyen, akkor az egész munkafolyamat megnyekkent. Az Illumina support széttárta a kezét, a csoport a problémájával magára maradt.

Ekkora kaptam meg a feladatot: TSO 500 Local App elemzés nem támogatott szekvenálási platformon. A Local App nem más, mint egy Docker konténer, amibe az összes szükséges program megtalálható. A telepítő nem csak a programokat, hanem a referencia genomokat és indexeket is tartalmazza.

Az Illumina szekvenáló gép nem FASTQ-t ad eredményül, hanem egy BCL formátumú fájlt, millió egy körítéssel, amiből a legfontosabb a SampleSheet nevű CSV állomány. Ha a Base Space-ről letöltjük a szekvenálás eredményét, ezt fogjuk megkapni.

A BCL egy tömörített formátum, ami nem csak a nukleotidot és a hozzá tartozó minőségi pontszámot tartalmazza, hanem egyéb információkat is, például, hogy mekkora a valószínűsége az alernatív nukleotidok előfordulásának, leolvashatóak a különböző index szekvenciák is, stb. A mindennapi munka során ezekre az információkra nincs szükség.

A Local App alapértelmezetten a BCL fájlokkal dolgozik. Eredményül pedig VCF-eket, táblázatokat és egyéb eredmény fájlokat ad vissza. Viszont lehetőség van arra is, hogy a FASTQ fájlokon végezzük el az elemzéseket. A feladatot ezért két részre lehetett bontani. Először a BCL fájlokat kell FASTQ-vá konvertálnom, majd ezeken a fájlokon kell lefuttatni az elemzéseket.

A BCL fájlok konvertálását a bcl2fastq vagy a bcl-converter nevű program végzi. Előbbi egy régebbi verzió, ha csak tehetjük, kerüljük el a használatát. A Local App is a bcl-convertert tartalmazza. Ha külön akarjuk telepíteni, akkor egy rpm csomagot tudunk csak letölteni. Szerencsére Ubuntu alatt az alien csomag megoldja az rpm telepítését. A bcl-converternek csak a szekvenálás során keletkezett könyvtár halmaz belépési pontját kell megadni, a többit elvégzi ő maga. Megkeresi a SampleSheet.csv-t, majd ez alapján szétbontja a szekvenciákat a mintákra.

Itt kezdődtek a bajok. Mivel a szerverre a bcl2fastq volt telepítve, azt kezdtem el használni. De az nem ismerte fel a SampleSheet.csv-t.

A SampleSheet.csv egy olyan fájl, amit a Windows-os INI fájlok és a CSV szerelem gyerekének is tekinthetjük. Alapvetően egy vesszővel tagolt  táblázat, de szekciókra van tagolva. Minden szekció egy szögletes zárójelbe írt névvel kezdődik. A két legfontosabb szekció a Settings és a Data. Természetesen azoknál a szekvenciáknál, amikkel én dolgoztam, ezek a szekciók nem léteztek. Volt helyette Cloud_Data és BCL_Settings.

A SampleSheet.csv-nek is van verziója. A Data és Settings az 1-es verzióban van, a 2-ben ilyenek nincsenek. Talán két napom is ráment, mire egy doksiban ráakadtam, hogy a bcl2fastq-t nem érdemes használni, mert régi. A bcl-convertert kell, mert az megeszi a régi és az új SampleSheet.csv formátumot is. A vicces az volt, hogy a bcl2fastq-val nem kaptam hibaüzenetet, csupán az összes read egy Uncategorized nevű fájlba ment, jelezve, hogy az indexek leolvasása hibás volt.

A SampleSheet-ben ugyanis fel van sorolva az összes minta neve, valamint az index szekvenciák, ami alapján el lehet különíteni őket. Tetszőleges szekvenciát nem írhatunk bele, mert a Local App ellenőrzi az erőforrásai között, hogy érvényes-e a nukleotid sorrend.

A konvertálás után viszont nem futott le az analízis, mert nem találták az elemző programok az UMI szekvenciákat. Ezekről az egyedi molekula azonosítóktól már korábban írtam. Ahhoz, hogy az elemzés korrekt módon lefusson, meg kell adni ezeknek a szekvenciáknak a helyét a read-en belül. Erre szolgál az OverrideCycles beállítás a SampleSheet-en belül.

A paraméterek elég kriptikusak. Egy I, Y, U betű plusz szám kombinációk vannak felsorolva pontosvesszővel elválasztva. Valami miatt az újabb keletű dokumentációkban nincs leírva róla semmi, én is egy korábbi PDF-ben bukkantam rá. Ezzel lehet megadni az UMI szekvenciák és a minta szekvenciák hosszát és egymáshoz viszonyított helyzetét.

Valamint kell még a TrimUMI,0 beállítás is, amivel megtartjuk az UMI szekvenciákat, mert hiába nélkülözhetetlen ez a szekvencia minden elemzéshez, a program alapértelmezetten levágja.

Valami miatt a fenti beállítások csak az 1-es verziójú SampleSheet-ben működnek. Erre a rejtélyre nem tudtam rájönni, miért van, de tényleg csak így megy.

Az elemzés futtatásához pontosan ugyan az a SampleSheet kell, mint amivel a FASTQ fájlokat előállítottuk, mert ha nem így van, akkor minden lépés gond nélkül lefut, de az eredmény fájl üres lesz. A szekvenciáknak a minta nevét viselő alkonyvtárakban kell lennie. Elméletileg a bcl-converter ezt el tudja készíteni, de csak akkor, ha egy újabb oszlopot felveszünk a SampleSheet Data szekciójába. Nekem ehhez nem volt kedvem, helyette a következő bash paranccsal láttam el a baját:

for i in `ls *R1*`
do
  export j=`echo $i | sed 's/_S[0-9]\+_L001_R1_001.fastq.gz//'`
  mkdir $j
  mv $i ${i/_R1_/_R2_} $j
done

Ezek után minden készen áll, hogy lefuttassuk az elemzést.

sudo /opt/LocalApp/TruSight_Oncology_500_RUO.sh --fastqFolder /path/to/fastq --analysisFolder /path/o/results  --resourcesFolder /path/to/resource --sampleSheet /path/to/samplesheet.csv --isNovaSeq

A munka során végül hozzájutottunk a Local App 2.2-es verziójához, ami jelentősen leegyszerűsíti a futtatást, mert a FASTQ-k előállításához is használhatjuk a docker képet. Valahogy így:

sudo /opt/LocalApp/TruSight_Oncology_500_RUO.sh --runFolder ./fastq --analysisFolder /path/to/fastq  --resourcesFolder /path/to/resource --sampleSheet /path/to/samplesheet.csv --demultiplexOnly --isNovaSeq

Amennyiben valami gond történt, megnézhetjük a napló fájlokat. Az eredmény könyvtárban minden egyes lépéshez tartozik egy alkönyvtár, amiben megtaláljuk a log fájlokat. Mint korábban írtam, a legtöbb esetben a hibák ellenére is lefut a teljes elemzés. A másik gond, hogy a hibaüzenetek nem mindig takarják az igazi okot. Például én sokáig nem tudtam mit kezdeni azzal a hibaüzenettel, ami arról szólt, hogy a fastq könyvtár nem található. Kiderült, hogy csak jogosultság problémáról van szó, és nem rosszul megadott elérési útról.

Egy másik alkalommal a SampleSheet fájl formátuma nem volt megfelelő. Egy sorban elfelejtettem kitenni a vesszőt. A program a SampleSheet összes sorát hibásnak jelölte.

Ha röviden kellene összefoglalnom, akkor az Illumina programjainál mindig használjuk a legújabb verziót, és az eggyel régebbi dokumentációt.

Szólj hozzá!

Címkék: bioinformatika

A könnyű munka ára

2022.01.17. 00:15 Travis.CG

A szerver adminisztráció nagyon megváltozott a régi időkhöz képest, amikor az ember beült a szerver terembe a rengeteg süvítő, zuzogó gép közé és nyomkodta a gombokat. Esetleg kihozták neki a gépet a szerver teremből és ott visított a fülébe az az átkozott ventillátor.

A távoli felügyelet, ahol a virtuálizáció segítségével a teljes boot folyamat egy laptop képernyője előtt nyomon követhető, könnyen elfeledteti az emberrel, milyen is volt a múlt. Egy VMWare-el felszerelt szerver üzemeltetése az egész torúrát könnyed böngészéssé redukálja. Ha különböző pillanatképeket készítek a rendszer állapotáról, még attól sem kell tartani, hogy a figyelmetlenségemmel helyrehozhatatlan kárt okozok.

Annak idején a VMWare nagy durranás volt. Egy időben lehetett különböző operációs rendszereket futtatni, ami azelőtt soha nem látott dolog volt. Akkor még nem volt minden processzorban virtualizációs utasítás készlet.

Természetesen az édes élet elég sok kompromisszummal jár. Először is, a VMWare is kér enni a rendszer erőforrásaiból. Nem is keveset. Nem használhatjuk a teljes memóriát. A CPU minden ideje sem lesza miénk. De talán, ami egy bioinformatikusnak a legjobban fáj, hogy a lemezterület is jelentősen csökken.

Egy 80T-s tárhelyre először kell egy partíciós tábla. Arra egy VMFS fájlrendszer, arra egy virtuális lemezkép. A virtuális számítógép a virtuális lemezképen szintén létrehoz egy partíciós táblát, azon van egy újabb fájlrendszer. Végül marad 62T tárhelye. Húszonnyolc terabyte csökkenés azért elég mellbevágó volt.

Az erőforrások terén a liszenszelés is erősen beleszól, mit használhatunk. Ha olcsón akarjuk megúszni és alacsony árkategóriás liszenszet vásárolunk, még az összes CPU-t és memóriát sem használhatjuk!

Még nem is beszéltünk a virtuális gép kezelő virtuális gépről, a VSphere-ről. Mert ha van két külön host, akkor azokon a munkát össze kell fogni egy harmadik számítógéppel, amin egy VSphere fut. A VSphere-nek külön liszenszelése van, ami szintén korlátozza a vezérelhető virtuális gép-hadsereg létszámát.

Ezekkel a liszenszekkel az a baj, hogy a megvett gép árára ráfizetünk egy összeget, aminek hatására kisebb teljesítményt kapunk, mintha nem vennénk pluszba semmit. Igaz, azt a kisebb teljesítményt nagyon könnyen kezelhetjük.

Ráadásul a klikkelés sem feltétlen könnyíti meg a munkát. Képzeljünk el egy 20 gépből álló szerver parkot. Nem valószínű, hogy valaki nekiáll egyenként végigklikkelni, csak az indítást. Szerencsére van egyfajta paranccssor. Erről nincs közvetlen tapasztalatom, de a doksikat, amiket olvastam, nem tűnik méltó ellenfelének az OpenStack-nek a felhasználhatóság terén.

Tehát a bioinformatikában nem látom létjogosultságát, ahol a teljesítmény fontosabb szempont a rendszergazda kényelem felett. Ahol viszont látom értelmét, az az oktatás. Az egyetemi oktatás mindig is limitált erőforrásokkal küszködött. Egy hallgatói számítógép labornak meg kell felelni a legkülönbözőbb karok igényeinek, úgy, hogy közben évről-évre a tanterv is változik.

Az oktatói igények kiszolgálásánál nem a teljesítmény a legfontosabb, hanem az, hogy gyorsan rendelkezésre álljon az egész terem. Ehhez viszont gyors és kényelmes adminisztrációs eszközök kellenek, amit a VMWare képes biztosítani.

Szólj hozzá!

Címkék: rendszergazda

Dinka, degenerált Dexter

2022.01.03. 10:47 Travis.CG

Hétfő volt. Első látásra teljesen szokványos bűnügyhöz hívtak minket. A házban két hulla hevert, közvetlen közelről lőtték le őket egy kilenc milliméteres fegyverrel. Deborah, a húgom kapta az ügyet. Telefonon beszélt valakivel, közben hevesen gesztikulált kezével, mintha ez bármit is jelentene a vonal túlsó felén lévőnek.

A tetthely nem tetszett. Hiányzott belőle minden művésziesség, elegancia. Színtiszta pragmatizmus volt a két ember megölése. Mint, amikor valaki érzi az éhséget, de ahelyett, hogy megterítene, főzés közben ügyelne az étel állagára, színére, csak proteint, zsírt és szénhidrátot turmixolna össze a szervezet számára szükséges arányban, és egy húzásra meginná. Hol marad a fűszer, az öntet és a díszítés? A bennem élő Sötét Utas csak mély sóhajjal vette tudomásul a látottakat. Kifinomult Dexter soha nem tenne ilyet. Neki szükséges van a Holdra, kedvenc filéző késére és a játékszerére. Ez itt nem volt több, mint egy pipa a bevásárló listán.

- Francba, az FBI volt - jelent meg mellettem Deborah. Befejezte a telefonálást és elég zaklatottnak tűnt.

- Idejönnek segíteni nekünk? Kedves tőlük.

- Nem. Az áldozatok magas rangú katonai vezetők voltak. Az FBI szerint hadititkokat akartak átadni egy ellenséges kormánynak jó pénzzért.

- Miért osztották meg veled ezt az információt?

- Gondolom, nem akarják erre pazarolni az adófizetők pénzét. Azt mondták, egy Jack Reacher nevű ex katonai rendőr kérdezősködött korábban az áldozatok utánuk.

A fejemben a sötét utas jelezte, hogy ez fontos információ.

- Hol van most ez a Reacher?

- Senki nem tudja. Felszívódott. Az FBI azt is mondta, hogy több, gyanús haláleset kapcsán is felmerült már a neve, de bizonyítani nem tudtak semmit.

- Milyen bűnesetekről van szó?

- A legkülönbözőbb, de többnyire a hadsereghez köthető bűnügyekről van szó. Reacher kérdezősködni kezd, majd a bűnösök eltűnnek, vagy meghalnak. Végül Reacher is eltűnik.

- Érdekes. Egy jött-ment, aki hobbiból bűnözőket gyilkol.

Ez akár rám is igaz lehetne. Persze én nem vagyok jött-ment. Impozáns Dexter jó családapa, megbízható munkatárs, a társadalom hasznos tagja. Látszólag a legártalmatlanabb emberi lény a világon. Legalábbis a felszínen. De Dexternek van egy sötét oldala, amit jól elrejtve őríz. Imád embereket ölni hideg acéllal. Harry, a nevelőapám erkölcsi kódexének hála, csak azokat ölöm meg, akik rászolgáltak. Tehát sorozatgyilkosokat.

De itt van Reacher, aki szintén embereket öl. Olyanokat, akik megérdemlik. Ő nem saját maga szórakoztatására teszi, hanem valami magasztos pátosz, az Igazság Keresése címszóval. Ha lennének érzelmeim, most biztos elmorzsolnék egy könnycseppet. Nincs igazság. Ha lenne, egy hozzám hasonló szörnyeteget elkapnának és halálra ítélnének. De hosszú évek óta űzöm hobbim a gyanú legkisebb árnyéka nélkül.

Reacher méltó trófea lenne, ebben a Sötét Utas is egyetértett. Olyan izgalom jött rám, hogy alig bírtam kivárni, hogy végezzünk a helyszíneléssel. Az irodában aztán elkezdtem kutakodni Reacher után. Tényleg kemény diónak ígérkezett. Nem volt lakcíme, nem voltak élő rokonai, nem volt jogosítványa. Míg én mindent elkövettem, hogy teljesen átlagosnak tűnjek, ő pont az ellenkező stratégiát alkalmazta. Annyira abnormális volt, amennyire csak lehet.

Átnézve a rendőrségi nyilvántartást, ugyan azt találtam, amit Deborah-tól megtudtam. Neve a legkülönbözőbb bűnesetek kapcsán merült fel, de valahogy soha sem elkövetőként. Ahol viszont megjelent, komoly katonai kiképzésen átesett emberek hullottak. Tálibok, terroristák, a maffia nehézfiúi. Ez adott egy ötletet, és megnéztem, mit találok a hadsereg nyilvántartásában. Az első találat meglepő volt. Reacher katonai rendőrként szerelt le. Ez sok mindent megmagyaráz. A parancs teljesítést viszont nem ment neki, legalábbis erre utalt a számtalan lefokozás.

De vajon hol fog legközelebb lecsapni? A nyilvános eseteket egy térképre rajzoltam, és próbáltam kitalálni, merre mehet. Mozgásában alig volt valami rendszer. Hol itt volt, hol ott. Ezzel nem jutottam előbbre. Miként lehet egy céltalanul bolyongó ember úti célját megtalálni?

Pénzre biztosan szüksége van. Az egyetlen biztos pont az életében a bankszámla. A banknak tudnia kell, honnan vesz fel pénzt.

Most kifizetődő volt a rendőrségi adatbázishoz való hozzáférésem. Pillanatok alatt megvolt a bank neve. Még korábban megszereztem a rendőrfőnök számítógépes hozzáférését, ezért a nevében információkat kértem a banktól Reacherről. A válasz talán holnapra, holnaputánra fog megérkezni. Addig nincs mit tenni, várni kell.

Összességében jó kedvem volt. A munkaidő lejárta után vígan kocsikáztam haza. A forgalom a szokásosnál csendesebb volt, csak három sofőr mutatta a középső ujját, és kettő dudált eszeveszetten. Nevettem rajtuk.

Hazaérve, az ajtóban megcsapott Rita főztjének illata. A testemnek energiára van szüksége, de az ehhez vezető út során végig kell hallgatnom Drága Egyetlenem napjának történetét. Végighallgattam, de közben Reacherre gondoltam. Az árnyékként suhanó célra, amit fűrészes élű késpengém fog megállítani. A katonai aktája szerint 196 cm magas, 120 kg. Mennyi vér ömlik ki egy ekkora testből? Az én fizikumom sem átlagos, de vajon képes leszek felemelni, hogy egy hordó savban változtassam felismerhetetlenné a holttestet?

Rita tovább mesélt valamit egy elromlott fénymásolóról, ami valami miatt teljesen kiborította. Az én gondolataim a holttest eltűntetése körül forogtak. Ha feldarabolom egy fűrésszel, akkor könnyedén mozgathatom, csak többet kell fordulni a hordóig. Ez viszont azt jelenti, hogy a szokásos időnél többet kell a nyomok eltűntetésére fordítanom. Nem megoldhatatlan! Rita is a mondandója végére ért! Nagyszerű, akkor mindjárt eszünk!

Másnap a rendőrfőnök egész nap a városházán volt, nem kellett attól tartanom, hogy meglátja a választ az el nem küldött emailjére. Foglalkozhattam a saját munkámmal, hiszen azt sem hanyagolhattam el. A csapatom jól dolgozott, ezért könnyű volt őket koordinálni. Nem léptem ki a rendőrfőnök levelezéséből, hogy azonnal reagálhassak, ha válasz érkezik.

Deborah délután keresett fel. Megakadt a nyomozással, és ilyenkor át szokta beszélni velem, hol tartanak. Valami miatt inspiráló hatással vagyok rá. Csak fél füllel hallgattam, amit mondott. Az agyam Jack Reacher körül forgott. Amikor Deborah nem nézett rám, lopva a montorra sandítottam, a válaszra várva.

Deborah épp arról beszélt, hogy két gyanúsított is van, de nincs elég nyomozója, hogy mindkettőt szemmel tarthassa. Húgom szerint a valódi tettes még rejtegethet tárgyi bizonyítékokat, és ha nem lépnek időben, az illető eltűntetheti azokat.

- Mi van, ha rossz fickót kezdünk el figyelni? - kezdte Deb. - Rémes lenne, ha emiatt elszalasztanánk az igazi elkövetőt. A kollégáim azonnal elkezdenének fúrni. Nem engedhetek meg egy ilyen malőrt.

Egyetértően bólogattam. Deborah kemény munkával küzdötte fel magát a ranglétrán. Magasról pedig könnyen leeshet az ember. Pláne, ha ezt a létrát alulról rángatják. Ekkor vettem észre a folyosón a rendőrfőnököt. Időt előtt visszajött! Bizonyára első dolga az lesz, hogy az irodájába menjen és bekapcsolja a számítógépet. Ki kellene lépnem a levelezéséből, de Deb nem nézné jó szemmel, ha hirtelen a billentyűzeten matatnék. Most úgy kell viselkednem, mint egy odaadó testvér, aki mélyen átérzi a másik problémáját.

Ebben a pillanatban új levél érkezett. A bank elküldte a válaszát. Ebből baj lesz, ha csak ki nem találunk valamit.

- Kérj telefon lehallgatást - mondtam Debnek. - Az majdnem olyan, mint egy megfigyelés.

- Szerintem semmi értelme - kezdte. Vajon kimegy a mosdóba a rendőrfőnök? Ha igen, azzal nyerek pár percet. Lehet, hogy már volt kint a városházán. Minél gyorsabban el kell távolítanom a számítógépétől. - A bíróság is legalább egy hetet ülne, amíg megkapjuk az engedélyt.

- Beszélj a rendőrfőnökkel - javasoltam neki. - Most láttam a folyosón. Ha támogatja az ötletet, biztos el tudja intézni, hogy rövidebb legyen az elbírálás.

- Most biztos nem ér rá ezzel foglalkozni.

Legszívesebben magam előtt rugdaltam volna egészen a rendőrfőnök irodájáig, de nem tehettem.

- Szerintem most próbáld meg, mielőtt belemerülne a munkájába. Tudod, akkor nem szereti, ha zavarják.

Deb bólintott, majd az ajtó felé indult. Még ki sem lépett az ajtón, én máris a levélre klikkeltem, és továbbítottam a saját címemre. Az eredetit kitöröltem, majd ürítettem a lomtárat is. Nyomok eltűntetve.

Este tovább maradtam, mintha az adminisztrációval lenne elmaradásom. Elolvastam a levelet, majd ismételten a rendőrfőnök hozzáférését használva válaszoltam. Szépen megköszöntem a segítséget, és azt írtam, hogy amennyiben további információi lennének, azt Dexter Morgan beosztottnak küldjék. Így elejét vehetem, hogy további gyanús üzenetek jelenjenek meg a nagyfőnök levelezésében.

Az örs elcsendesedett. Már csak én voltam bent. Tudom, mert úgy tettem, mintha a kávéautómata felé mennék, de közben meggyőződtem, hogy senki nem fog váratlanul az irodámba léni, hogy leleplezzen. Most volt itt az ideje, hogy megnézzem a levelet. Reacher Clewistonban volt. Egy kis város az Okeechobee tó partján.

Micsoda ostoba nevű tó, mintha egy gyerek adta volna neki. Viszont nincs messze, és lehet horgászni benne. Talán álcázhatnám egy hétvégi pecázásnak Reacher megölését. Úgy is mondhatnám, ő fog horogra akadni. Dexter csak elmegy pihenni egy kicsit. A tó remek helye, ha holtestet akarok eltűntetni. Már csak a családnak kellene beadni valahogy a dolgot.

De még soha nem voltam horgászni, nincs felszerelésem sem. Nem hihető, hogy hirtelen el akarok menni, ráadásul egyedül. Még azt sem tudom, milyen idő lesz a hétvégén. Egy jó kis vihar, és Dextert mindjárt arról faggatják, hol is volt valójában.

A másik probléma, hogy Reacher nem marad sokáig egy helyen. Lehet, hogy hétvégére továbbáll. Sokkal messzebbre, ahol nem érem el ilyen könnyen.

Végül egy kissé kockázatos terv kezdett körvonalazódni benne, de a Sötét Utasom megnyugtatott, hogy könnyedén kivitelezhető. Szabadságot vettem ki a következő két napra, majd hazamentem.

Rita még ébren volt, a gyerekek már aludtak.

- Milyen napod volt? - kérdezte Rita.

- Ah, rettenetes. Holnapra elküldtek egy továbbképzésre. Egy új diagnosztikai eljárást tervez bevezetni az osztályunk, és ehhez három főt várnak. Két napos lesz a továbbképzés. Már korábban el kellett volna mondanom. Azért is maradtam ilyen sokáig, hogy ne halmozódjon fel túl sok munka.

- Semmi baj, menj nyugodtan. Majd azért esténként hívj fel. Összepakoljak neked?

- Nem kell, majd reggel összepakolok.

Úgy tértem nyugovóra, hogy minden rendben lesz. Ez volt az első hiba. A hamis biztonságérzet.

Reggel, mikor Rita elvitte a gyerekeket az iskolába, a szekrényem titkos rekeszéből elővettem a játékszereimet. Penge éles késeket, vízhatlan nylon ruhát, hogy megvédjem magam a szerteszét spriccelő vértől, és természetesen a trófea gyűjteményemet: egy-egy tárgylemezt egyetlen csepp vérrel, mindegyik áldozatomból. Reacher tárgylemezét meg is írtam.

Természetesen más eszközöket is elraktam. Erős fényű elemlámpát, térképet, készpénzt (kártyát nem akartam vinni), zárrezegtetőt. A kocsimat egy parkoló házba vittem, majd bérelt autóval mentem tovább. Clewiston csupán két órányira volt, de maga a készülődés is rengeteg időt elvett.

Nyugodt voltam, élveztem a vezetést. Nem éreztem semmi veszélyt. Kora déltuán érkeztem meg, kelet felől, a 27-es úton értem el a várost.  Meg kellett találnom Reachert, de nem tudtam, hol kezdjem. Amiben biztos voltam, hogy valahol meg kell szállnia, és valahol ennie kell. Ezért először lassú tempóban áthajtottam a városon, hogy némi képet kapjak a hely hangulatáról.

Közben próbáltam elképzelni, hogyan élhet Reacher. Hivatalos lakhelye nincs, sokat utazik, viszont kocsi nélkül. Bizonyára kevés csomagja van. Talán egy vagy két bőrönd. Nincs munkahelye, sem állandó bevétele. Kénytelen minimális pénzt költeni. Olcsó helyeken fog megszállni, olcsó éttermekben fog enni. Ez pedig leszűkíti a mozgásterét.

Ahogy egyre nyugatabbra haladtam a városban, úgy tűnt minden egyre drágábbnak, legalábbis Reacher nézőpontjából. Valószínűleg az autópálya lehajtó melletti kamionos pihenőben szállt meg. Pár száz méterre van tőle egy étterem. Ideális hely egy vándornak. Sötét Utasom is helyeselt.

Visszafordultam keletre, amerről jöttem. Kissé távolabb lekanyarodtam a főútról és megálltam egy kifőzde előtt. Viszonylag sok autó parkolt itt, nem feltűnő még egy. Bementem és megnéztem az étlapot. Hamburgert rendeltem, mint mindenki más. Csak a szemem sarkából néztem a vendégekre. Legtöbbjük nagydarab kamionsofőr. Testalkatuk alapján bármelyik lehet Reacher.

Leültem egy szabad asztalhoz és enni kezdtem. Egy alak suhant el mögöttem. Kilépett az ajtón. Utána néztem, de csak a kabátját láttam egy pillanatra. Ő az! A Sötét Utas szimatot fogott. Felhúzta ínyét, mint egy farkas, és sürgetett, hogy menjek utána, mert ő volt az. Egészen biztos, hogy ő volt az.

Vártam két percet, csak aztán álltam fel. Pénzt tettem az asztalra és én is kiléptem a friss levegőre. Nincs kocsija - gondoltam. Jobbra fordultam, és az út mellett elindultam. Erre kellett mennie. De nem láttam, tehár nem erre ment. Ellenkező irányba fordultam, és meggyorsítottam a lépteimet. Észrevettem, de csak egy pillanatra. Bekanyarodott egy saroknál és eltűnt a szemem elől.

Utána mentem. A sarok előtt lelassítottam. Kilestem, és csak akkor fordultam be én is, mikor megbizonyosodtam, hogy nem fog észrevenni. Világosbarna kabátban volt, fekete farmerben és nagy, ormótlan bakancsban. Csak a tarkóját láttam, de ennyi is elég volt nekem. A ruhája alapján meg fogom ismerni, hiszen nem valószínű, hogy átöltözik.

Nem akartam lebuktatni magamat azzal, hogy tovább követem. Biztos voltam benne, hogy vissza fog menni a szállásához. Megfordultam, visszamentem a kocsimhoz és a panzióhoz hajtottam. Vártam és figyeltem. Egyre sötétebb lett, egyre több ember fordult meg az apartmannál. Nem kapcsoltam lámpát, nehogy felhívjam magamra a figyelmet. Már tizenegy is elmúlt, mire Reacher megjelent. A hatos ajtóhoz ment. Mintha egy kicsit lassan nyitotta volna ki az ajtót, de nem fordult meg, nem nézett körül, így engem sem láthatott.

Miután belépett, az ajtó melletti kis ablakon fény szűrődött ki. A függönyt behúzta, ezért nem lehetett látni Reachert. Tovább vártam. Bizonyára levetkőzött, zuhanyzott, készülődött a lefekvéshez. Miután kialudtak a fények, még fél órát vártam. Ennyi biztos elég, hogy elaludjon.

A mellettem lévő ülésről felvettem a kézipoggyászomat, amibe minden szükséges felszerelést beraktam. A zárrezegtető és a kábító injekció a zsebemben pihent. Gyors, határozott léptekkel az ajtóhoz mentem, mintha csak itt szálltam volna meg. A szerkezet segítségével majdnem olyan gyorsan nyitottam ki az ajtót, mintha csak kulcsom lett volna. Beléptem, és behúztam magam mögött az ajtót, nehogy a kintről beszűrődő zaj felébressze Reachert. Vártam. A kinti fény, bármilyen gyér is volt, ahhoz elég volt, hogy most a teljesen sötét szobában ne lássak semmit. Hozzászoktattam a szemem a sötéthez. Elővettem az altató injekciót, majd az ágyhoz léptem. Semmi kedvem nem volt egy ekkora pasassal birkózni.

Valami viszont hiányzott! Először nem értettem, hogy mi. Mikor az ágyhoz léptem, már tudtam. Elhúztam a takarót, de az ágyban nem volt senki. Igen, ha valaki alszik, akkor a légzését hallani kell egy ilyen kis szobában, de mikor beléptem, nem hallottam semmit.

Csalódottak voltunk. Reacher valahogy megneszelte, hogy követem, és lelépett. A fürdőszobába léptem. Igen, az ablak nyitva volt. Nem tudom, egy ekkora ember, miként préselte át magát azon a kicsi ablakon, de megtette. Most pedig lelépett. Ideje lelépnem nekem is, gyorsan.

Az ajtóhoz léptem, kinyitottam. Mielőtt elsötétült volna előttem a kép, egy felém száguldó öklöt láttam.

A Sötét Utasom vinnyogott, mint egy csapdába esett kiskutya. A karomat, lábamat nem tudtam mozdítani. A számat kipeckelték. A hátamon feküdtem, miközben a fejem lelógott az ágyról. Reacher ott guggolt előttem, látszólag fejjel lefelé. A földön a táskám tartalma kipakolva. Haragot és dühöt éreztünk, mintha megtalálták volna azokat az újságjainkat, amiket jól eldugtunk.

- Kíváncsi voltam, ki követ - kezdte Reacher. - Már az étterembe belépve feltűnt, hogy maga nem lehet sem hétvégi pecás, sem kamionsofőr. Mereven mozgott, körül sem nézett. Mikor elhagytam az éttermet, követett. Láttam a tükröződő kirakatokban. Egy órát sétáltam a városban, de nem jött utánam. Mikor visszajöttem ide, a parkoló felől jöttem, ezért rögtön kiszúrtam magát. Gondolkodtam, hogy ott támadjam meg, vagy csaljam ide. Mivel egyedül volt, ki akartam kérdezni, ezért visszamentem, amerről jöttem, és úgy tettem, mintha az út felől jönnék a bejárathoz. A többit már tudja.

Tudtam.

- Ha csak meg akarna ölni, egyetlen pisztoly is elég lenne. Nem lenne szükség öt különböző késre. És erre sem.

Reacher felmutatta a tárgylemezeket. Az egyiknél hosszabban is elidőzött. Az ő neve volt ráírva. Már csak a vércsepp hiányzott.

- Maga egy sorozatgyilkos és engem szemelt ki - hangja tárgyilagos volt, nem hallottam benne semmi érzelmet. - Csak így van értelme ennek az egésznek. Úgy néz ki, ez egy vagy-maga-vagy-én szituáció, igaz?

Álltam a tekintetét. Beszélni úgysem tudtam volna. Reacher bólintott.

- Rendben, akkor maga - felkapta a fecskendőt, majd a karomba döfte.

A bérelt autóm hátsó ülésén fekve tértem magamhoz. Reacher vezetett. A kezemet a hátam mögé kötözte a saját ragasztó szalagommal, de a becket kivette. Mivel feküdtem, a tükörből nem áthatott. Óvatosan a bokám felé kezdtem tapogatózni. Ha szerencsém van, nem vette el a vékony pengét, amit oda rejtettem. A fém érintése megnyugtatott. Ha ki tudom szabadítani magam, a pengét a nyakába szúrhatom. Nem hallna meg azonnal, de elég vért vesztene, hogy legyőzzem. Reacher egy folyamatban lévő bűnügy egyik gyanúsítottja, ráadásul mondhatnám a rendőrökek, hogy elrabolt, ami jelenleg igaz is. Önvédelemből öltem meg. Még a nyomok eltűntetésével sem kellene bajlódnom.

Először viszont magamat kell kiszabadítanom. A pengével óvatosan elkezdtem átvágni a szalagot. Könnyen és gyorsan vitte. Mikor végeztem, egy ideig mozdulatlan maradtam. Vártam a megfelelő pillanatot, hogy gyorsan felüljek és végrehajtsam a végzetes mozdulatot.

Most! - gondoltam, de mielőtt megmozdulhattam volna, a kocsi megállt. Talán kiráncigál, majd akkor támadok. Reacher leengedte az ablakot, kiszállt, majd becsukta az ajtót. Mindjárt kinyitja a hátsó ajtót. Amikor lábra állít, akkor kell támadnom.

Három másodperc is eltelt, de az ajtó nem nyílott. Csak most tudatosult bennem, hogy nem húzta be a kéziféket. Nem éreztem, mikor indult el az autó, de mikor felültem, már gurult egyre sebesebben le, egy lejtőn. A szélvédőn keresztül a tó sötét vizét láttam. Előre nyúltam a kézifékért, de mire meghúzhattam volna, az autó a vízbe csapódott. Az ütközés ereje meglepett. A lehúzott ablakon keresztül az autó pillanatok alatt megtelt vízzel, hínárral. Sötétség borult rám. Éjszaka a tóban, egy autóba zárva még a csillagok sem látszanak az égen.

Megvártam, még teljesen megtelik az autó vízzel. Igyekeztem nyugodtan lélegezni, kivárni az utolsó pillanatot. Reacher biztosan a parton vár. Meg akar győződni, hogy nem bukkanok fel. Lassan elhagytam az autót. A víz alatt a tó feltételezett közepe felé úsztam. Reacher valószínűleg egy-két méterre láthat el, ebben a sötétségben. Hallani viszont biztosan könnyen meghallhat, ha karjaimmal csapkodva kiemelkedem. A víz jól vezeti a hangot.

Nem csapkodtam a karjaimmal, nem lihegtem. Lassan vettem a levegőt, még ha a tüdőm zihálásra akart is ösztönözni. Olyan érzés volt, mintha úgy akartam volna öngyilkos lenni, hogy visszatartom a lélegzetem. Csak lebegtem a vízen és éreztem, ahogy a szívem kalapálása alább hagy. Nem tudom, mennyi idő telhetett el, de végül a part felé evickéltem. A füvön a hátamra feküdtem, és néztem a csillagokat. Reachernek nyoma sem volt.

Végül felálltam, és az úton elindultam hazafelé. Fáztam, megalázottnak éreztem magam. Még egyszer sem fordult elő, hogy egy áldozatom meglógott, sőt, majdnem megölt volna. Dexter eszén nem szoktak túljárni. Ezt most elfelejtjük - döntöttem el. A Sötét Utas lelkesen egyet értett.

Szólj hozzá!

Címkék: irodalom

Az ökológusok módszereitől ments meg, Uram, minket!

2021.12.24. 23:19 Travis.CG

A metagenomika sosem látott perspektívákat nyitott meg a környezeti mikrobiológiában. A tény, hogy egy kis környezeti mintából képet kaphatok az ott élő mikroszkópikus élőlényekről, fantasztikus.

Készítettem is egy kisebb webszolgáltatást az intézetben dolgozóknak, hogy minél kevesebb időráfordítással tudják elemezni a mintáikat. Tényleg semmi extrát nem csinál. A kutatóknak fel kell tölteni a szerverre a szekvenciákat, és kész. Minden éjfélkor elindul a munkafolyamat, és lefuttatja a FASTQC-t, Kraken2-t, Braken-t, majd a munkaidő megkezdése után az eredmények letölthetőek.

Felmerült, hogy a mintákat normalizálni kellene, amire az egyik kutató a rarefy módszert javasolta mondván, hogy "mindenki azt használja". Bevallom, még életemben nem hallottam róla, ezért elkezdtem kiművelni magam. Ahogy a mögötte álló elméletet elkezdtem olvasni, rájöttem, hogy a tudománynak van hová fejlődnie.

Miről is szól mindez? Képzeljük el, hogy van 10 mintánk. Mindegyikben azonosítunk különböző számú fajt. Mindegyik faj eltérő számú egyedből áll. Eztután kiválasztjuk a legbénább mintát, tehát azt, ahol a legkisebb az egyedek száma, majd random mintavétellel a többi mitából addig dobálgatjuk ki az egyedeket, amíg el nem jutunk a legbénább minta szintjére.

Mikor ezt először elolvastam, azt hittem elfelejtettem angolul, és valamit nem értettem meg. Más cikkeket is elkezdtem olvasni, mire kiderült számomra, hogy ez egy általánosan elfogadott módszer. Mindenki tudja, hogy rossz. Mindenki tudja, hogy az eredmények megismételhetetlenek, csak éppen senki nem foglalkozik vele, hanem használják, hiszen mindenki más használja. Néha megjelennek cikkek, amelyek a módszert kritizálják, de úgy tűnik, ezeknek valahogy nincs hatása a kutatók gondolkodására.

A másik védekezés az volt, hogy az "ökológusok régóta használják". Ez mindent megmagyarázott. Korábban már volt egy vitám egy ökológussal, aki elmagyarázta nekem, hogyan kell differenciál expressziót számolni, azóta kezd kialakulni bennem egyfajta óvatos távolságtartás.

Mikor mondtam, hogy ezt a "módszert" nem implementálom, akkor még ők támadtak nekem, hogy én nem akarok normalizálni. Mondtam nekik, hogy nem a normalizálás ellen van kifogásom, hanem ez ellen a módszer ellen. A kommunikáció eléggé megrekedt, mert én nem értettem, miért nem látják, hogy ez egy hülye módszer, ők meg nem értették, miért nem fogadom el ezt a "kicsi rosszat", szemben a "nagyobb rosszal", ami a normalizáció teljes hiánya lenne.

De ez nem kicsi rossz. A normalizálás a legalapvetőbb elemzési lépés. Ha ez hibás, minden rá épülő lépés hibás eredményt ad. Nem azért kell végrehajtani bizonyos elemzéseket, mert "mindenki ezt csinálja". (Bár bevallom, én is szoktam élni ezzel az érvelési módszerrel, ha nem tudom megértetni magamat.) Azért kell ezeket a lépéseket megcsinálni, mert eddigi ismereteink alapján ez adja a legjobb eredményt.

A kettő között kellene lennie némi átfedésnek. Tehát azért kellene elterjedtnek lennie egy módszernek, mert jó eredményt ad, nem azért kapni rossz eredményt, mert elterjedt a módszer.

Szólj hozzá!

Címkék: bioinformatika

Tokyo Demo Fest 2021

2021.12.12. 19:25 Travis.CG

Mivel a Function kihagyása miatt a "nyakamon maradt" egy videó, ezért elkezdtem keresni, melyik partin tudom elsütni, lehetőleg még az idén. Magyar partiból az Experience volt az utolsó, de ott nem lehetett videót beadni, ezért egy olyan külföldi partit kellett találni, ahol fogadnak remote entry-t. Így esett a választás a Tokyo Demo Festre.

Csak a videó szövegezésén kellett változtatni, meg a leírásban módosítani pár dolgot, és már készen is állt a megmérettetésre. Ez nagy szerencse volt, mert viszonylag kevés idő állt rendelkezésre a regisztráció megnyitása és az entry beküldése között.

Az időeltolódás miatt itthon délelőtt lehetett megnézni a streamet. Lássuk milyen gyöngyszemeket tartogat nekünk a Felkelő Nap országának partija.

Grafika

A grafikák bemutatásánál nagyon zavart, hogy jelentéktelen részletekbe nagyítottak bele. Az indulók minden elképzelhető állóképet beadtak. Volt fotó, hosszú záirdővel, Amigás rajz, C64 petscii, kézirajz (Sharko), Blender render (Hot night in Singapore). Valamint három procedurális grafika. A kedvencem a ToyDuck volt, mert nagyon szépek voltak a textúrák.

Zene

 Zenei stílusból is kaptunk egy nagy csokorral. Még procedurális zene is volt (Deep Space, bár hallgatni nem volt akkora élvezet).

Wild

Kaptunk egy GBA demót, de nem sok minden volt benne a színes négyzeteken kívül. Láttunk egy Shadow Party invitációt is. Optimus és Ham jóvoltából láthattunk egy 3DO demót, és megtudtuk, hogy nagyon sok release kellene erre az általam tök ismeretlen platformra. Az igazán jó alkotás a kategóriában a Santaz Triptro volt. Ami nagyon tetszett benne, milyen kreatívan oldották meg, hogy a látszólag össze-vissza katakterek mégis értelmezhető látványt adjanak vissza. Az én videóm a negyedik lett.

GLSL demó

Ezt a fajta compót még nem láttam. Egyetlen fragment shaderből kellett demót készíteni. A deep learning bullshit ide is betört. A Dnn_gold_skull a népszerű buzzword technológián alapuló valami, ami kirajzol egy koponyát. Túl sokat nem láttam belőlük, mert pont akkor kezdtek el az otthoniak nyafogni a fülembe.

Demo

A demó kompó inkább 4k volt, mert az indulók fele ebben a mérettartományban maradt. Akadt egy 64k is, úgyhogy igazi demóból csak 3 volt. Technikailag kétség kívül a Domain volt a legjobb, egy webGL-es 64k, bár elég unalmas volt, ahogy különböző típusú kockákat mutattak. Talán nem vagyok elég kocka, hogy értékeljem a sok kockát? Az A.L. pedig totál érthetetlen volt. Szerepelt benne egy elég részletes anime karakter, és egy csomó textúra nélküli platóni test kontúrja, amik csináltak valamit. Mindez Unitybe oltva. Nekem talán a Spikes von Aldi 4k intró tetszett a legjobban, bár a kód nem volt erős. A Folded garden egy jó kis fraktál intró volt, de a színei nagyon szokatlanok voltak a szememnek. A klasszikus demót kedvelők bizonyára a H.A.L.T. III-ra tennék a voksukat. Itt 3D objektek forogtak egy csatornában.

Összességében nem volt nagy eresztés. Minden kommunikáció japánul ment. Még amikor angolul beszéltek, azt is japánnak hallottam. A szemináriumok, amelyeket megpróbáltam végignézni, az is rettenetes volt, mert minden dián szöveg volt. Csak a beszúrt angol szavakból tudtam kitalálni, milyen témakörről beszéltek. A live coding viszont nagyon jó volt. Megjött a kedvem, hogy jobban elmélyedjek a fragment shaderek világában.

Szólj hozzá!

Címkék: demoscene

Experience 2021

2021.12.07. 13:00 Travis.CG

Function-re videóval készültem volna. Végül nem jutottam el a partira, de szerettem volna bemutatni az alkotásomat, ráadásul a témája miatt mindenképp magyar rendezvényen, ezért az Experience-re esett a választásom. Ott viszont csak futtatható dolgokat lehet beadni. Mivel nem volt egy különösen összetett produkció, gondoltam, még én is képes vagyok demót készíteni belőle. Sikerült is, határidő előtt, ami nem kis teljesítmény tőlem, de mint mondottam is, bonyolult sem volt.

Elmentem a partira, ami szokás szerint visszafogottabb volt egy több napos rendezvényhez képest, amit én a nézők elfogyasztott alkohol mennyiségéből állapítottam meg.

A demóm persze Linux alatt futott, ezért előrelátó módon vittem egy laptopot is, hogy legyen min bemutatni azt. Látszik, hogy fejlődik a technika, mert csak rádugtam a HDMI-t a keverőre, és már ment is a hang, kép, minden. Hol vannak már azok az idők, amikor X11 konfigot szerkesztettem a compó gépen! Brrr, remélem soha nem jönnek vissza!

Először az év legjobbjait mutatták be, ahol lehetett, még némi háttér információt is csepegtettek az alkotásokról, amit én mindíg nagyon szeretek. A második bemutató blokk után Archee odaült mellém, ami plusz élményfaktor volt. Tudni kell, hogy a veterán scenerek legtöbbjét (plána, ha nyertek egy-két Assembly-t) elég nehéz lenyűgözni. Például én enyhén fátyolos szemmel néztem a kivetítőt a katarzis határán lebegve, mire Archee megszólal mellettem: "Egész jó fát csináltak háromszög levelekkel." Onnantól én is csak a háromszög alakú leveleket láttam. Majd elgondolkodtam: miért ne csinálhatnék én is háromszög levelű fákat?

A demó compó blokk velem kezdődött. Néhány embert megnevettettem, ezzel a célomat el is értem. Közben Archee nagyon kíváncsi lett, miért az én laptopomról megy a demóm. Mikor megtudta, hogy Linuxon nyomom, mindjárt jöttek a "miért nem Windows", miért nem fordítok Linuxról Windows binárist, stb. Mondtam neki, hogy a Linuxos entry az imázsom része.

A következő demó ZX Spectrum volt, ez videóról ment le. A kommentek alapján egy matematikus beállítottságú scener írta, ami meg is látszott, mert kelta mintázatokat genrált. Majd jött a Lunaticats, amiből megtudtuk, hogy jövőre is lesz QBParty. Tifeco Demojoe-ja újabb kalandban vett részt, ezúttal party szervező lett. A poénok legtöbbje a külső szemlélőnek valószínűleg nem jön át, de mi a vetítésen nagyon jól szórakoztunk rajta. Az Ümlaüt Design is könnyed 64k-s ujjgyakorlattal járult hozzá a compóhoz. Végül a Der Trabantot láttuk. Szerintem a cím mindent elmond.

Összességében egy könnyed demó nézegetős este volt, amin jót szórakoztunk.

Szólj hozzá!

Címkék: demoscene

Tegyüke bele a kvantum-izét

2021.12.03. 00:18 Travis.CG

A kvantum szó a tudományban olyan, mint a szép nők a reklámokban. Velük mindent el lehet adni. Így van ez a következő workshoppal is, aminek a címe: Az élettudományok jövője: a kvantumbiológia. A cím kétségtelenül figyelemfelkeltő, majdnem el is mentem rá, mert el nem tudtam képzelni, hogyan kapcsolódhat össze a két tudományterület.

Végül azért hiúsult meg a dolog, mert kicsit utána néztem az előadóknak. Az első előadó ugyanis tényleg orvos, de már évek óta nem praktizál, hanem politikusnak állt, legalábbis a wikipédia szerint. Biztos remek rálátása van a tudomány új trendjeire.

Aztán ott van Szacsky Mihály, akiről kiderült, hogy tényleg egy igazi kvantumbiológus. Hőkamerával bámulja az embert, de nem ezt mondja nekik, hanem azt, hogy szomatoinfra vizsgálatot végez, amitől mindjárt másképp hangzik az egész. Egyébként ez a fickó egy külön posztot érdemelne, annyira hihetetlen, amit művel. Csak röviden: Létrehozott egy egyesületet, ami a Műegyetemi Természet és Sporttudományi Egyesület nevet viseli, ami alapján úgy adja elő magát, mintha a "Műegyetemen" oktatna/dolgozna. Publikációit a Pannon Palatinus weboldalon mutatja be, amit ő alapított.

Hajtó János a kiírások szerint az Edinbrugh-i Egyetemen dolgozik, de egy rövidített önéletrajz szerint csak 2006-ig volt ott. Ez nem akadályozza meg, hogy továbbra is az egyetem színeiben parádézzon. Azóta inkább ügyvezető igazgatóként dolgozik, tudományos munkát manapság nem végez.

Szatmáry Zoltán tényleg ért a kvantum folyamatokhoz, mert a BME Nukleáris Technikai Intézetében dolgozott, de jelenleg nyugdíjas. Elképzelhetőnek tartom, hogy ő egy aktív nyugdíjas, aki a rászakadt szabadidejét a kvantumbiológia művelésére fordítja, de ez a rendelkezésére álló lehetőségeket figyelembe véve ez valószínűleg kimerül az irodalom olvasásában, esetleg egy-két számításban.

Ábrahám György tudományosan is aktív az előadók közül. Nemzetközi és hazai folyóiratokban is megtaláltam a nevét. Nem tudom, hogyan érezhette magát ebben a társaságban.

Tóth Miklóst nem tudtam egyértelműen beazonosítani, de hajlok arra a véleményre, hogy ő is inkább a tudományos vonalat erősíti, mivel az összes általam megtalált MTA doktora címet viselő Tóth Miklós aktív, publikációs listájuk szépen gyarapszik.

A workshop biztosan nagyon sikeres lehetett, mert a rendezvény alapján megállapították, hogy az egyetem a kvantumbiológiában is kimagasló. Ez a rendezvény a Magyar Tudomány Ünnepe programsorozat része volt! Ezzel ünnepeljük a magyar tudományt. Úgy gondolom, ha fel akarjuk venni a harcot az áltudományok ellen, akkor először a tudományt kellene rendbe tenni.

Minden esetre én nem tudom, mi az a kvantumbiológia, de úgy tűnik az előadók többsége sem.

Szólj hozzá!

Címkék: életmód

Az a fránya karantén

2021.11.30. 19:58 Travis.CG

Akármennyire is óvatos voltam, a negyedik hullám elkapott. A feleségem szervezete egy ideig ellenállt, de mire kezdtem meggyógyulni, ő lett beteg. Kis családunk ismét elszakadt a külvilágtól. Melóhelyen bejelentettem annak rendje és módja szerint, mire a munkahelyi COVID felelős megnyugtatott, hogy bizalmasan kezeli a helyzetemet.

Ez azután történt, hogy kiderült volna, hogy akinek először írtam, csak a második hullám idején volt COVID felelős, most már semmi köze az egész procedúrához. Azért segítőkész módon továbbította a levelemet. A szolgálatos felelős megkért, hogy szóljak mindenkinek, akivel kapcsolatba kerültem. Szóltam mindenkinek. Aztán egyik munkatársamnak eszébe jutott, hogy a hallgatóknak is szólni kéne, mert mégis csak bent voltam a teremben, ha nem is tanítottam őket. Végül valakinek az is eszébe jutott, hogy Manci nénit is figyelmeztetni kell, hiszen veszélyeztetett (az igazi neve nem Manci, megváltoztattam.) Ez már kicsit sok volt nekem. Ki az a Manci? Egyetlen munkatársamat sem hívják Mancinak.

Kiderült, hogy egy nyugdíjas kutatóról van szó, aki az ominózus időszakban egyszer belépett az irodába, mikor én már nem tartózkodtam bent. Gondoltam, egye meg a fene a személyiségi jogaimat, szóljanak Manci néninek is.

Az otthon maradással annyira nem is lett volna baj, viszont a lakás kezdett tönkremenni. Túlélő üzemmódra kapcsoltunk, mint Phileas Fogg a Henrietta fedélzetén. Először a gyerek szobájában ment ki a villany. Mivel világításnak lennie kell, átcsoportosítottam az egyik körtét egy másik helyiségből. Ezzel némi időt nyertünk.

Aztán jött a konyhai csaptelep. Már eddig is elég vízköves volt, amitől ha elfordítottuk a csapot, pár csepp víz folyt ki belőle az illesztések mentén. Csakhogy a szigetelés nem volt tökéletes a mosogató és a csaptelep között sem, ezért a víz elkezdett gyűlni alul, a szekrényben. Elkezdtem kajtatni a lakást gumiszerű anyagok után, amivel szigetelést tudok csinálni. Végül ráakadtam a gyerek lufigyűjteményére. Nem akartam még nagyobb traumát okozni neki, ezért olyan színt választottam, amiből több egyforma is volt. A lufi meglepően jó választás volt, mert a száját levágva pont egy gyűrű alakot kaptam, amit a csaptelep megfelelő részére húzhattam, még rá is feszült a fémre.

csaptelep.jpg

A harmadik csapás lustaságom miatt volt. A gyerek hazahozta még a karantén előtt két tankönyvét, ami olyan állapotban volt, mint egy saláta. A boritó elszakadt, ezért csemetém begyűrte azt az iskolatáskába és rápakolt mindent, hátha nem tűnik fel. A fedőlap leszakadt, a széle pedig feltekeredett valahogy, mint egy palacsinta. Mikor megláttam a könyvet és a hasonló állapotban lévő munkafüzetet, komolyan felmerült bennem a szándékos szabotázs gondolata.

Akkor még arra gondoltam, majd lesz időm megcsinálni mindkettőt, hiszen nemrég kezdődött az őszi szünet. A karantén alatt időm volt is rá, csak alapanyagom nem. Két napig préseltem a fedlapot, hogy eltüntessem a szamárfület, de nem akart visszasimulni. Gondoltam egy karton segítségével merevebbé tehetném a lapot, de nem volt otthon karton. Legalábbis nem a hagyományos értelemben.

Találtam egy papír táskát, ami sokkal erősebbnek tűnt egy átlagos kartonlapnál. Szétvágtam, majd a fedlap belső oldalára ragasztottam. Ez sem fog többet bepöndörödni.

konyv.jpg

Szólj hozzá!

Címkék: barkácsolás

Textúrák és a bájt határ esete

2021.11.15. 22:38 Travis.CG

A demó motoromat, ami technikailag egy API, új tulajdonsággal vérteztem fel. Immár képes JPEG fájlokat is használni textúrának. A libJPEGTurbót használtam, mert elég egyszerűnek tűnt a használata, és az Ubuntunak része a könyvtár.

Első használat alkalmával meglepődtem, hogy a kép fejjel lefelé jelent meg, de ezzel nem törődtem sokat. Képet forgatni a világon a legegyszerűbb. Csupán örültem, hogy a kód működik. El is kezdtem készíteni egy demót Experience-re. Szépen haladtam, amikor az egyik textúra betöltésénél core dump-olt a program.

Rögtön észrevettem, mi a baj. Szürke árnyalatos volt a kép, miközben a kód RGB-t várt. A homlokom akkor szaladt csak igazán ráncba, amikor kiderült, hogy a kép RGB verziója is elszáll. Ráadásul a hiába kerestem a hibát, a backtrace szerint a hiba a videó driverben egyik moduljára mutatott, amihez már nem értem gdb-vel. Az én kódomban a glTexImage2D volt az utolsó utasítás.

Nem értettem, hogy két kép közül, amelyek csak a dimenzióban térnek el, az egyik miért működik, miközben a másik lefagy. Elkezdtem különböző méretű textúrákat gyártani, de azok is fagytak. Átkonvertáltam PNG-be, akkor működött.

Ráadásul volt egy nagyon furcsa jelenség is. A "hibás" képpel nem minden esetben szállt el a program. Ritka esetben betöltődött, de el volt csúszva, mintha a kép pixeleit egy kisebb szélességű helyre akarnám betölteni, amitől a következő sor jobbra mozdul. Egy eredetileg függőleges vonal a képen átlóssá vált.

Úgy tűnt, a kép több helyet foglal a memóriában, mint amennyit én allokáltam. Ezzel csak az volt a baj, hogy az összes fellelhető példaprogram szerint mindent megfelelő módon csináltam. Illetve mégsem egészen. Kiderült, van egy paraméter, amivel úgy is be lehet olvasni a JPEG-et, hogy ne legyen fejjel lefelé.

Végül kiderült a turpisság. A kép szélességének 4-el osztható bájtnak kell lennie, különben a glTexImage2D elhasalhat. A PNG-nél nem volt gond, mert ott mindig 4-el osztható volt a szélesség, mert a PNG-ben RGBA-ban tároltam a kép információt. A megoldás csupán annyi, hogy meghívjuk a glPixelStorei-t, és elmagyarázzuk a drivernek, hogy ettől legyen szíves eltekinteni.

Szólj hozzá!

Címkék: programozás demoscene opengl

FROGS: ebből se lesz királylány

2021.11.08. 13:27 Travis.CG

Vannak jó bioinformatikai pipeline-ok. Vannak tűrhető bioinformatikai pipeline-ok. És van a FROGS.

A FROGS rettenetes, de ez valami miatt senkit nem gátolt meg abban, hogy a Galaxyba integrálják, mert így el lehet fedni az összes hiányosságát. De kezdjük az elején.

A FROGS-ban semmi egyedi ötlet nincs. Az összes funkció, amit nyújt, más programok végzik, de ezt nem látjuk az ezeket elfedő Python szkriptek halmazától. Adaptor eltávolítás? Van egy szkript, ami meghívja a cutadaptot. Szekvencia klaszterezés? Van egy szkript, ami meghívja a swarm-ot. Taxonómiai meghatározás? Van egy szkript, ami meghívja a BLAST-ot. Kérdem én, miért ne futtathatnám ezeket a programokat egy Snakemake-ben magam?

Azt gondolhatnánk, hogy talán van egy egységes telepítő, ami ezt a sok, mások által megírt programot feltelepíti, de nem. Bár a pearl kivételével mindegyik teljesen ingyenes, még akkor sem kerül fel a gépünkre, ha conda-n keresztük installáljuk a FROGS-ot (például a cutadapt benne van a conda-ban is, csak be kellett volna írni a függőségek közé). Ráadásul, ha kézzel telepítjük, még csak arra sem vették a fejlesztők a fáradságot, hogy legalább kiírja a program, ha egy komponens hiányzik.

Ha valami hiányzik, az futás időben derül ki. A program szép logokba írja őket, amiket a futás végeztével letöröl. Minek vannak ezek a logok, ha utána nem lehet elolvasni őket? Persze, ilyenkor kell a --debug opció, de miért kell kétszer lefuttatnom valamit?

Mondhatják nekem, hogy "talán a sok szkriptet összefogja egy mester szkript, és csak azt kell elindítani". Rossz hírem van. Minden egyes szkriptet a felhasználónak kell elindítania. Itt kerül elő a FROGS másik nagy hiányossága. Ugyanis nincs leírva, mi a nevük a nyomorult szkripteknek, és mi a javasolt futtatási sorrend. Az egyetlen fogódzkodó ez. Csupán elavult, más baja nincs. Például a tény, miszerint nincs filters.py egy GitHub-os issue-ból derül ki, amit lezártak, mert megoldották a problémát.

A program rengeteg adatbázist használ, ami csak itt van. Melyik mire való? Találd ki! Esetleg használd a Galaxyban, hogy ész nélkül lehessen klikkelgetni.

Esetleg úgy gondolod, hogy a program teljesítménye kárpótol mindenért? Nem. Tíz processzort használva három napig futott egy hibás szekvenálási soron (az egy külön sztori lenne, hogy mitől hibás, de elég az hozzá, hogy a gép áteresztő képességének csupán töredékét kaptuk vissza). Kíváncsiságból ugyan ezt az adatot beadtam a Kraken alapú helyi elemző apparátusomba, ami egy ősrégi HP szerveren fut 4 maggal. Kb. fél óra alatt megvolt minden eredmény.

Szóval, ha valaki arra kér, hogy elemezzünk metagenomot FROGS-al, csak egy válaszunk lehet.

Közben rájöttem a Docker és Conda alkalmazásának egy új lehetőségén. Ezek az eszközök nem abban segítenek, hogy könnyű legyen a telepítés, netán megismételhető legyen az elemzés. Ez úgysem érdekel senkit. Ezek az eszközök arra jók, hogy a FROGS-hoz hasonló förtelmeket nyom nélkül eltakaríthassuk, és azt is elfelejtsük, hogy valaha használtuk. Ne maradjon utánuk SEMMI.

Szólj hozzá!

Címkék: bioinformatika

Ragyogj, ragyogj kicsi Spark

2021.10.24. 18:20 Travis.CG

Annyi kihasználatlan PC van a lakásomban, hogy akár Hadoopot is telepíthetek rájuk. De egy Hadoop önmagában nem sok mindenre jó (azon kívül, hogy a családot ne csak egy, hanem három gép folyamatos zúgásával idegesítsem), ezért úgy gondoltam, kipróbálom a Sparkot.

Korábban már volt egy ilyen fellángolásom, de ott csak egy gépre akartam mindent felrakni. Mostani próbálkozásom alkalmával mindent binárisból telepítettem, hogy az időm nagy részét ne a fordítás vegye el, hanem a konfigurálás. Az egyszerűség kedvéért minden számítógépen ugyan azzal az elérési úttal helyeztem el a programokat, hogy csak egy Hadoop konfigurációt kelljen beállítani, és azt másolhassam a többi gépre.

Ez nem teljesen sikerült, mert a CentOS-es gépen a Java csomag verziószáma egy ici-picit eltér az Ubuntus gépeken lévőtől, ami a rendszerfrissítéssel is változik, de ettől az apróságtól eltekintve a konfiguráció hordozható volt.

Ezután minden gépnek meg kellett adni, hogy az összes többi gépet ugyan olyan néven lássa, tehát az /etc/hosts fájt is legyen ugyan az mindegyik vason. Ha nem így van, akkor olyan furcsa anomáliák lesznek, hogy a master gép látja a worker node-okat, de azok nem tudnak visszaszólni a master-nek. Még annyit csináltam, hogy az otthoni routert is beállítottam, hogy a Hadoopos gépeknek mindig fix IP-t adjon.

A felhasználó név is legyen ugyan az mindegyik gépen és ssh kulcsos hitelesítést kell beállítani. Mivel ez egy otthoni teszt környezet, a biztonságra nem helyeztem külön hangsúlyt, tehát nincs szeparált hadoop user, valamint a master gép egyben worker is volt.

Ezután a master gépen, ha elindítom a start-all.sh parancsot, akkor minden szükséges komponens elindul az összes gépen.

Ezután jön a Spark telepítése, szintén binárisból. Itt is ugyan az az elv érvényesül, mint a Hadoop esetén. Az összes gépre telepíteni kell. A konfigurációs állományok viszont alapból nem aktívak, mindegyik egy .template kiterjesztést kap, amit el kell távolítani, ha használni akarjuk. A slaves fájlba fel kell venni az összes gépet, amelyeket be akarunk fogni a munkába. Itt is az sbin könyvtárban van egy start-all.sh, amivel minden gépen elindíthatjuk a Sparkot.

A Spark egy táblázatos adatok feldolgozását segítő rendszer. Gyorsaságát az adja, hogy amit lehet, memóriában végez, de a műveleteket el tudja osztani több gép között is, ha kell. A Spark ezen felül lusta kiértékelést végez, ami azt jelenti, hogy addig nem hajtja végre a feladatot, amíg nem szükséges. (Ami azért érdekes, mert a való életben ezt az attitűdöt nem a gyorsasággal azonosítják.) Többféle nyelven is lehet használni a rendszert, én a Pythont választottam.

Először egy könnyed bemelegítéssel kezdtem, végigcsináltam  ezt a tutorialt. Erről nem érdemes többet írni, hacsak azt nem, hogy az adatok betöltése elsőre nekem nem sikerült, mert én helyi adatot akartam betölteni, de a PySpark a HDFS-en kereste a fájlt, mikor erre rájöttem, és elhelyeztem a fájlokat a Hadoop fájlrendszerére, már könnyű volt a munka.

A próba adat elég kicsi volt. igazából a Spark a master node-on megoldott mindent. Kíváncsi voltam, meg tudom-e izzasztani a rendszert. Az egyik munkahelyi projekthez egy 19GB-os táblázatot kellett készítettem ebből az adatbázisból, gondoltam megetetem az otthoni rendszerrel. Ez már elég nagy, hogy a master ne tudja a teljes adatszettet memóriába tárolni.

Amikor elkezdtem felmásolni az adatokat HDFS-re, rögtön kaptam egy hibaüzenetet, hogy az egyik datanode-ra nem fog másolni, mert nincs rajta elég hely. Kár, mert az volt a legerősebb gép a csapatban. (Persze, ez is a CentOS-es gép volt, ahol a home kapja a legnagyobb partíciót, az összes többi adat meg pár száz gigán tömörül. Végül a HDFS adatoknak egy symlinket hoztam létre, ami a home-ra mutatott.) Az adatokról annyit érdemes tudni, hogy peak információk vannak benne pár ezer Chip-seq kísérletből.

./hdfs dfs -put ~/peaksfromchipseq.tsv /peak.tsv

Ezután indítottam a PySparkot, és betöltöttem az adatokat.

import pyspark
from pyspark.sql import SQLContext
from pyspark import SparkFiles

sql = SQLContext(sc)
peak = sql.read.option("delimiter", "\t").csv("/peak.tsv", header = True, inferSchema = True)

Ezen már elszüttyögött.

peak.filter(peak.antibody == "CTCF").groupBy("expID").count().show()

De ez is csak egy gépen futott. Úgy látszik a rendszer elég jól bírja a gyűrődést. Úgy gondoltam, itt az ideje, hogy tényleg megizzasszam a rendszert.

A következő fájl még nagyobb volt. Tíz teljes genome szekvenálásból szedtem ki a lefedettség értékeket (samtools depth), ami elérte a 143 GB-ot. Ebből akartam átlagos lefedettségeket számolni, ami egy szálon egy erősebb szerveren 3 órát vett igénybe (saját Python kód, nuku optimalizáció, azért tartott ilyen sokáig).

Először felmásoltam a fájlt a HDFS-re, külön ügyelve rá, hogy a replikációt 3-ra állítsam, hogy minden gépen legyen egy kópia az adatokból. Arra gondoltam, az a node biztosan nem fog dolgozni, amelyik tárhelyén nincs meg az adat. A CentOS ismét rakoncátlankodott, mert nem volt hajlandó fogadni az adatokat. A master egy ilyen semmitmondó hibaüzenetet adott:

java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.0.4:9866

A logok szintén nem voltak túl hasznosak, ellenben észrevettem, hogy a webes felületen keresztül sem érem el a CentOS adatnodot. Rövid netes keresgélés után azt találtam, hogy a tűzfal blokkolhatja az adatforgalmat. Ezért a 9864-es portot megnyitottam.

sudo firewall-cmd --zone=public --add-port=9864/tcp --premanent
sudo firewall-cmd --reload

Mindjárt megszűntek a hibaüzenetek, és a másolás megindult. Majdnem 8 órán át másolt, több, mint 130 GB került a HDFS-re, majd az otthoni rouer újraindult, és amit addig másolt, az enyészeté lett. A másolás egyébként azért tartott ilyen sokáig, mert csapat leggyengébb tagja egyik ősrégi gép (Athlon X2-es procival) lassú IDE-s vinyókkal, a hálózati csatolója pedig egy USB2-es wifi adapter.

Második másolásra már okosabban csináltam. Először csak a master gép HDFS-ére másoltam. Ebben SSD volt, ezért viszonylag gyorsan ment a művelet. Utána állítottam be a replikációt 3-ra. Ezzel a módszerrel 5 óra alatt megvolt mindhárom gépen az adat (persze a CentOS-en néhány blokk hiányzott, hogy azért ne legyen meg az örömöm, de ezzel már nem foglalkoztam).

Hatalmas adat, a master mégsem vont be senkit a feldolgozásba, ezért kezdtem arra gyanakodni, hogy egy konfiguráció nem megfelelő. Mivel a replikációk működtek, ezért a HDFS megfelelően kellett, hogy működjön. De mi a helyzet a Yarn-al, ami a számítási feladatok elosztását végzi?

Először egy pi számoló példaprogramot futtattam. A program lefutott, de úgy tűnt, a többi node csak malmozott. Úgy tűnik, ezen még dolgozni kell, de magával a Sparkkal már lehet játszani.

Szólj hozzá!

Címkék: programozás hadoop

süti beállítások módosítása