HTML

Az élet kódjai

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

Friss topikok

  • 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
  • sdani: @Travis.CG: Egy kis szerencse sosem árt. :D (2024.03.01. 13:19) A bioinformatika helyzete 2024-ben

Sundown party riport 3. rész

2016.07.18. 06:48 Travis.CG

A közönség már nagyon bemelegedett. Megkezdődtek a bekiabálások, ment a látottak folyamatos kommentálása. A Wild compó már ennek fényében zajlott. A Remember the 80s, ami a nyolcvanas évek slágereit hozte el Sinclairre már folyamatos éneklésre késztetett egyeseket. A Road to Sundown egy természetfilm képi világával készült, miközben Priester KindBarend biciklivel jött Hollandiából Angliába.

A blokk záróakkordja egy igazi csapatépítő játék volt. Egy Super Mario klónnal kellett játszani két játékosnak. Az egyik csak ugrani tudott, a másik csak menni, de a játék kezdetén még senki nem tudta, mi lesz a feladata. Amint kudarcot vallottak, jött a következő két játékos. A közönség folyamatos kiabálással adta az instrukciókat, gyakran nyomdafestéket nem tűrő stílusban.

Négy intró volt. Az i feel tran to you-ban egy vonat szemszögéből láthattunk egy 8 alakú pályát. Amikor a vonat a másik vágányra kanyarodott, az maga volt a gyönyörűség a nézők számára, pedig a grafika nem volt egy nagy eresztés.

Elérkeztek a demók! Először egy pénisszel felszerelt robot szerelmi életét ismerhettük meg, majd jött a mi alkotásunk. Minden simán ment. Az egész pont úgy nézett ki, mint a gépemen. Igaz, teszteltem is eleget. Még Aha-t is megkértem a party előtt, nézze meg nekem a release-t Ati kártyán, mert eddig az volt a nagy mumus nekem. Már csak arra vagyok kíváncsi, utolsók vagy utolsó előttiek leszünk.

A régi platformok demói már nem voltak olyan jók. Sok scroller, újra felhasznált effekt. Némelyiken el is bóbiskoltam. De a vidámság kitartott, egyetlen fujjogás sem volt, mindennek nagyon tudtak örülni.

Volt egy fél órás csúszás, ami a Deathboy zenei előadásán csapódott le. Személy szerint nem bántam, hogy csak ennyi ideig hallgathattam a tuc-tuc zenét. Percre pontosan éjfélkor lekapcsoltak minden hangot és az emberek felkerekedtek, hogy lemenjenek a tengerpartra.

A Hold fényesen világított, nem volt szükség lámpára sem. Csak a partra verődő hullámok hangja tompította a lábunk alatt a kavicsok csikorgását. Tüzet raktak, ketten megmártóztak a habokban. Egy akkumulátor, egy háromlábú hangszóró-szerűség és egy laptop együttese zenét varázsolt körénk. Színes lézert vetítettek a triászi időkből származó homokfalra.

A party átalakult. A Variform és az 1995 zenéje szólt, az emberek legalább egy okos-kütyüvel voltak felszerelve, mégis, mintha egy pogány ünnep részese lettem volna. Egy lelki idő utazás volt, feltártunk valami ősit az agyunkban és meghívtuk a jelenbe.

A szervezők kis camping grillen szalonnát sütöttek és két szelet zsemle közé fogva osztogatták mindenkinek. Mi meg ettük, mintha semmit sem tudnánk a koleszterinről és a késői vacsora káros hatásairól. Volt aki aludt, volt aki csak nézte a tüzet. Mások édeskés illatú cigit szívtak. A fejünk felett, a tábortűz füstbe, zöld pókháló fonalakat rajzoltak a lézer sugarak.

Egy rakás technokrata voltunk, mégsem beszélt senki JavaScript keret rendszerekről, kliens-szerver architektúráról vagy bármiről, minek köze van a számítógépekhez. Egyszerűen csak élvezték a pillanatot. Éjjel kettőkor hagytam ott őket.

Másnap már pakolt mindenki. Volt még egy játék, ahol a feltett kérdésre hazudni kellett és a lehetséges válaszokból kitalálni, melyik az igazi. Akit több embert vert át, az nyert, ha az igazságot is megtalálta, plusz pontot kapott.

Az eredmény hirdetés rövid volt, mert a megrendelt nyeremények nem érkeztek meg. Másodikak lettünk, de a legfontosabb, hogy láttam egy ilyen partyt is.

Szólj hozzá!

Címkék: demoscene

Sundown party riport 2. rész

2016.07.17. 01:07 Travis.CG

Tegnap még nem élt a party szerver, ezért úgy mentem aludni, hogy nem adtam le release-t. Éjfélkor lelőtték a zenét és kis beszélgetés után ment mindenki aludni.

Délelőtt úgy döntöttem, megnézem a várost. Vettem valami reggelit, kiültem a tengerpartra, és próbáltam betelni a végtelen víz látványával. A hely szépségét az ragadhatná meg legjobban, hogy még a helyiek is, akik minden nap láthatják, ahogy a víz mossa a gömbölyű kavicsokat, még ők is megállnak kutyasétáltatás közben és csak nézik a határtalan kékséget.

A rutinosabbak még fürödtek is. Nekik ez a reggeli rutin része.

Tíz óra körül értem vissza. A rendszer addigra felállt és velem együtt hárman már regisztráltak is. Ismét nem volt semmi ellenőrzés, akár egy szervező nevét is beírhattam volna. Release-t mégsem töltöttem még fel, mert eszembe jutott, Grass javasolt egy effektet, amit tegnap elfelejtettem implementálni. Azt még megcsinálom. A leadási határidő délután négy óra, még van idő.

Negyed egykor kész volt a release. Közben a nagy kivetítőn a QuiPlash ment, amire mobilon lehetett jelentkezni. A lényege az volt, hogy feltettek valami ostoba kérdést (mi a legidegesítőbb dolog, ami ráeshet egy ember fejére, mi az, amit nem akarsz látni a születésnapi tortából előurgani, stb.), majd erre szavazás útján kiválasztották a legostobább választ. Aki a legtöbb szavazatot kapta, az nyert. Mivel sok kérdésre aktuálpolitikai vonatkozású válaszokat adtak, sokat nem értettem belőlük. Na, jó, egyet értettem: Mi lenne a Titanic 2 film alcíme: Brexit. Maximális szavazattal nyert.

Négy óráig még sok idő van, ezért visszamentem a tengerpartra. Ezzel tényleg nem lehet megunni. Rengeteg ember sétált a parton és nagyon kevesen fürödtek, amiből arra következtettem, most a turistáké volt a terep. Egy kis táblából azt is megtudtam, hogy a Triász idején ez a terület sivatag volt és az akkor ott élt növények gyökere megőrizte a homokban található anyagokat. Ettől vörös színű a homok. Most meg egy tenger partján van.

Indultam a floppy lemez hajító bajnokságon is. Mindenki kapott egy lemezt, elhajította a fákkal szegélyezett parkban, majd szemmel meghatározták, kié ment a legmesszebb. Jól éreztük magunkat. Talán hatodik lettem.

A fotó és egyéb grafikai kompók kellemesek voltak. Nem volt egyetlen kiemelkedő alkotás sem, de mentes volt a QBParty alibi produkcióitól. Illetve a 4k grafikák esetén a Coming Up hozta a színvonalat.

Egyetlen chipzene és egyetlen futtatható zene volt, tracked zenéből ellenben volt épp elég és elég hosszúak voltak. Nekem legjobban a Low tetszett. Streaming kategóriában pedig semmi olyan nem született, ami csengőhang lehetne a mobilomon.

A Shadertoy compó két indulója igen jó volt. Az egyik egy egyszerűbb naplementét mutatott be, a másik viszont egy igen összetett jelenet volt, ajtókkal, amelyek folyamatosan nyílottak és csukódtak. A kamera mozgása nem volt teljesen szinkronizálva az ajtók mozgásával, amitől előfordult, hogy a kamera átment rajtuk. Ilyenkor a közönség fájdalmasan felkiáltott és azon izgultak, a következő ajtón mi fog történni.

Szólj hozzá!

Címkék: demoscene

Sundown party riport 1. rész

2016.07.16. 00:38 Travis.CG

Két óra lement az öt órás vonatútból. Az intézet nyugodt, csendes világából belerohantam a londoni őrület közepébe. A képzeletbeli lista a városokkal, ahol nem akarok élni, most egy újabb taggal bővült. A metró full contact mérkőzését kiütés nélkül megúsztam és nem tévedtem el a Waterloo állomáson sem.

Aki azt építette, biztosan túl sok időt töltött Scooby-Doo nézéssel, mert az állomáson van egy középső folyosó, ahonnan oldal irányba, újabb, merőleges folyosókon lehet feljutni a peronokra. Az emberek meg hol itt, hol ott tűnnek fel, illetve el. Pont úgy, ahogy a rajzfilmekben is csinálják. Őrület.

De most már itt vagyok a vonaton, és ez az út elég hosszú, hogy néhány jeleneten még csiszoljak kicsit.

Egy korábbi shader hibát sikerült kijavítani. Illetve egy olyan hibát, amit én shader hibának gondoltam. Talán nem árulok el nagy titkot, ha elmondom, hogy a legtöbb jelenetben 2D textúrákat mozgatok. A textúrák ismétlése be volt kapcsolva, ami annyit jelent, hogy ha a kép véget ér, akkor újra kezdődik, mintha egy végtelenített film. (Vagy mint a tejeszacskó-korlát a régi rally versenyeken)

Amikor megjelenítettem a textúrákat, észrevettem, hogy a kép szélén 1 pixel fehér csík van, ami nagyon rondán mutatott. Mivel Gimp alatt a kép szélén nem láttam semmit, shader hibára gyanakodtam. Debuggoltam is ezerrel, keresve a hibát.

Semmit nem találtam. A hiba konzisztens volt Intelen, Nvidian is. Végül egy másik kép nézegetővel is megnéztem a textúrát és ott is ott volt a csík, de csak a kép bal szélén és tetején. Ah, Grass újabb design eleme! Szépen eltűntettem és a shader „hiba” is megszűnt. Később derült csak ki, hogy a design elem nem volt más, mint Grass Corel Draw-jának élsimítása, ami valami megmagyarázhatatlan okból kifolyólag a kép szépét is kisimította. A Gimp miért nem jelenítette meg, továbbra is rejtély. Nem baj.

A vonatról leszállva nem várt senki. Korábban az UK demoscene fórumon még fuvart ígértek a távolról érkezőknek. De ez csak ígéret maradt. Este tíz órakor egy tök ismeretlen városból kellett volna eljutnom egy másik tök ismeretlenbe. Végül kénytelen voltam taxit fogni.

Egy indiai fickót fogtam ki, aki még nálam is bénábban beszélt angolul. Egyikünk sem értette a másik akcentusát. A telefon képernyőjére írtam ki a város nevét, de még így sem tudta a taxis, hova akarok menni. Még szerencse, hogy volt a gépkocsiban GPS. Meg egy másik telefon. Meg egy harmadik kütyü, amit nem tudtam beazonosítani. Valahogy átkeveregtünk a célállomásra és még a party helyszínét is megtaláltuk, mert természetesen azt sem tudtam megmondani, azt is az okoscuccok segítségével próbáltuk meg kitalálni.

Szerencse, hogy nem vártam fogadóbizottságot, mert úgy jöttem be a partyra, hogy senki ember fia meg nem kérdezte, ugyan mit keresek itt. Se karperec, se kis papír a szavazókulccsal, semmi. Senki nem kérdezte, ugyan kifizettem-e a belépőt. A szervezőket semmi nem különbözteti meg a vendégektől. Bár gondolom az egyik arc az lehet, mert olyan számítógép előtt ül, aminek a képernyőjén a nagy kivetítő képe látszik. Ja, és van mellette egy böszme projektor.

Magyar partik után állandóan megy a kritika, hogy mit csináltak a szervezők rosszul. Mennek a nagy okoskodások pro és kontra. Itt meg senki nem foglalkozik még a legalapvetőbb szervezési feladatokkal sem, mégis mindenki jól érzi magát. Ki érti ezt? De tényleg. Most épp egy szemetest keresek. Sikertelenül.

Itt bent már minden olyan, mint egy demópartyn. Techno, VJ, effektek a képernyőkön, Amiga. Már csak a release-t kéne leadni és aludni, aludni, aludni.

Szólj hozzá!

Címkék: demoscene

Készülődés Sundownra

2016.07.11. 00:33 Travis.CG

Volt egy visszamaradt demó kezdeményem QBPartyról, amit elkezdtem formálni, hogy a következő Sundownra release-é alakuljon. Az első érdekes akadály egy bug formájában érkezett. A shader betöltő modul, ami hosszú ideje tette a dolgát, hirtelen nem működött Windows 10 alatt. A kód végén nem olvasható karakterek voltak, hiába zártam le a sztringet nullal. Végül a memória foglalást malloc-ról calloc-ra cseréltem és minden gondnak vége szakadt. A hiba oka nem hagy nyugodni, de most nem ez a prioritás.

Sokat szerencsétlenkedtem olyan rutinok megírásával is, amikre nem vagyok képes. Az egyik egy teljesen shader alapú részecske rendszer lett volna, ami egy pányva tulajdonságait igyekezett szimulálni. Miután rájöttem, hogy ebből sem lesz semmi és eltávolítottam a tervekből, máris könnyebben ment a munka.

Csak egy olyan effekt lesz benne, amit még nem programoztam le, mégsem nehéz: a bloom. Alapvetően arról van szó, hogy a fényes részeket egy külön textúrába renderelik, nyomnak rá egy Gaussian blurt, majd összemossák az eredeti képpel. A tutorial kódok legtöbbje 4 menetben állította elő. Először lerenderelik a normál képet, aztán vízszintesen elmossák a fényes részeket, majd ugyan ezt függőlegesen is elmossák, végül az egészet kirakják a képernyőre.

De én még post processinget is szeretnék! Az lesz az ötödik renderelés? Több problémám is volt a tutorialokkal. Először is, mindenki csak fehér fényt változtatott tündöklővé, amit az első menet végén egy határértékkel állapítottak meg. Csakhogy ez nekem nem jó, mert én egy narancssárga dolgot akartam felvillanyozni, ráadásul ez a szín olyan tárgyakon is megtalálható, amelyek nem fénylenek. Ezért a fix érték helyett én egy maszkot használtam. A maszk egy külön textúra volt, tehát egy renderelést megspóroltam.

Maradt három: vízszintes Gauss, függőleges Gauss, post processing. A vízszintes Gausst beraktam az első renderelésbe, mert hála az OpenGL 3.3-nak, egy pixel shaderből akár két kimenetre is tudok írni. A második Gauss elmosást pedig betettem a post processzingbe. Úgyis ott kell összemosni a két végső textúrát. Nem tudom, mennyit javít a teljesítményen (elképzelhető, hogy semmit), de a kód átláthatóbb. Legalábbis nekem.

Írtam Shamennek, hogy kell zene. Röviden vázoltam a kocepciót: szomorú, monoton demó a reménytelenségről. Nagyon ráérzett a témára, mert mindjárt 8 zenét is kaptam két nap elteltével. Ezzel már lehet dolgozni! Miután kiválasztottam a megfelelő zenét, a jelenetek szinte maguktól kezdtek a megfelelő helyre vánszorogni. Már tudtam, hogy mit hova szeretnék tenni.

Mivel 2D demó lesz, Gimp segítségével összedobtam néhány textúrát, majd összeállítottam, hogyan is képzelem el a jeleneteket egymás után. A vázlatot elküldtem Grassnak, aki kicsit aggódott, hogy csak egy héttel a határidő előtt szóltam neki (úgy látszik túl jól ismer), mégis hamar elkészítette a végleges textúrákat. Illetve a textúrák egy részét, mert két jelenethez még nincs semmi.

Most, kevesebb, mint egy héttel a határidő előtt, úgy gondolom, 80%-on állunk. Ez optimizmusra ad okot. Nagy effektek nincsenek benne, akár be is tudom fejezni az elkövetkező pár napban.

Szólj hozzá!

Címkék: demoscene

Demók a fiatalabb korosztálynak

2016.07.04. 21:38 Travis.CG

Őszinte leszek. A kislányom lassan három éves lesz. A szobatisztaság nem megy. Ha kanállal eszünk, több falat landol a földön, mint a szájába. Elég nehezen megy a szocializáció.

Ezért ahelyett, hogy ezekre gyúrnánk, inkább demókat kezdtem mutatni neki.

Az egész elég spontán jött. Egy délutáni alvás során, mikor a Revision releaseit nézegettem, arra lettem figyelmes, hogy a lányom felébredt és az ölembe ült, kíváncsian, hogy mit is nézek én a YouTube-on. (Tudom, tudom! Eredeti vason kellett volna néznem minden release-t. De az eredeti vason a GPU hűtője úgy zúg, hogy mellette nincs délutáni szunyóka.)

Arra gondolva, hogy ezek a releasek talán nem neki valók, egy hirtelen ötlettől vezérelve lejátszottam a .the .productot. Érdemes tudni erről az intróról, hogy nem a mostani türelmetlen nézőknek készült, akik 3 perc felett már nyavajognak, hogy "túl hosszú". Ez kérem kemény 11 perc.

Végignézte, még a végső feliratokat is, ahol a készítők arról panaszkodnak, hogy nem tudják mivel kitölteni a helyet. Utána csak ennyit mondott: Még egyszer. A következő fél órában párszor visszanéztük. A kezdeti sikereken felbuzdulva elkeztem vadászni a gyerekbarát alkotásokat. Második próbálkozás a Circus Extreme volt. Igyekeztem még a biztonságos zónán belül maradni. A release ugyanis gyerekrajzokból készült, számítottam rá, hogy tetszeni fog neki. Így is történt.

Aztán itt megszakadt a sikersorozat. A hasonló egyszerűséggel felépített Sandbox Punks már nem tetszett. Próbálkoztam néhány United Force demóval, mert ezek dallamosak, színesek, de ezek sem tetszettek. Az Ix talán túl absztrakt volt. A Rove-ot végignézte, de nem került bele a "még egyszer" kategóriába. A Masagin mosolygó csillagocskái tetszettek, de más nem. A Popular Demo nem lett népszerű.

Már kezdtem feladni a reményt, hogy találok mást is, amikor egy olyan naphoz érkeztünk, amikor a gondolatolvasó képességem épp csődöt mondott. A lányom ugyanis el tudja mondani, mit szeretne, de csak azokat a jellemzőket tudja megragadni, amik felkeltették az érdeklődését. Nekem meg a mondat töredékekből kell kitalálni, mit is szeretne. Az esetek többségében ez működik is, de néha kudarcot vallok.

Ez történt a "nagy hold" esetén is. Ugyanis mutattam neki régebben pár time-lapse videót a teliholdról, és ez megint eszébe jutott. Végig is mentünk a kedvenceken, de mindegyikre csak azt mondta: Nem ezt, a nagy holdat. Mikor már a teleszkópos felvételeknél tartottunk, ahol az egész képernyőt a Hold töltötte be, elfogyott a türelme, nekiállt ordítani és csak ezt hajtogatta: a nagy holdat, nagy holdat.

Mivel a racionális megoldásokból kifogytam, jöhettek az irracionálisak. Mercury: Fermi Paradox. A sírás rögtön megszűnt.

Ezt is megnéztük pár százszor. A végére azt hiszem rájöttem, miről is szól: Egy civilizáció jelet küldött a világűrbe, de mire az űrhajó megtalálja őket, addigra elpusztulnak, sőt a bolygó is lakhatatlanná vált.

Szólj hozzá!

Címkék: demoscene

Murphy oktat

2016.07.01. 07:53 Travis.CG

Mindig lenyűgöztek Frederick Forsyth regényei, ahol a főhős aprólékos és gondos tervezéssel félelmetes tetteket hajtott végre. Ahogy olvasta az ember a történeteket, olyan érzése támadt, hogy ezeknek az embereknek semmi nem állhat útjába. Ha csak a Sakál napjára gondolok, ott is csak az akadályozta meg a merényletet, hogy a másik oldalon is egy hasonlóan felkészült ember volt.

Micsoda szemenszedett hazugság.

Mikor felkértek, hogy oktassak az RNA-seq kurzuson, azt is a nagy előd nyomdokait követve terveztem meg. Felmértem, milyen számítógépes erőforrásokat használhatnak majd a tanulók. A szervezők azt mondták, kb. egy laptop erejével gazdálkodhatok, ezért ennek megfelelően kezdtem el a munkát. A második lépés a gyakorlat felépítése volt. Tudtam, hogy egy differenciál expressziót és egy fúziós gén keresést akarok megcsináltatni velük, ezért olyan eszközöket választottam, amelyek elég sok közös lépést tartalmaznak, hogy ezzel is időt spóroljak meg. Így esett a választás a STAR-ra és a STAR-Fusion-re. Mivel a legtöbb expressziót feldolgozó Bioconductor csomag nyers readszámokat tartalmazó táblázatot vár, ezért a BAM fájlokat HTSeq-el terveztem átalakítani.

Az első bökkenő a STAR memória igénye volt. Lefuttattam a teljes adatszetten a programot, kiválasztottam a legmarkánsabb fúziós gént, majd a készítettem egy kisebb adatszettet, ami csak két kromoszómát tartalmazott a rájuk illeszkedő readekkel együtt. Ez vígan elfért 6GB-ban, a tárhely szükséglete 4GB volt.

Az EBI-osok egy hónappal a kurzus előtt bekérték a szükséges programok listáját, amit egy VMWare virtuális gépre telepitettek, klónoztak, hogy minden résztvevő ugyan azokat a beállításokat lássa. Én az elsők között töltöttem ki az igénylésemet, sőt, mivel attól tartottam, hogy az indexelés tetemes időt fog igénybe venni, azt is megcsináltam előre.

A kurzus előtt egy héttel újra végigmentem a lépéseken, beírtam őket az előadás diái közé. Aztán arra gondolva, hátha a vetítőt nem fogják jól látni, készítettem egy GitHub-os wiki oldalt is az összes lépéssel. Végső esetben innen is kimásolhatják a paramétereket.

Az előadásomat is több napon keresztül gyakoroltam, hiszen nem vagyok tökéletes angolból, nem akartam, hogy ne értsenek semmit. Apró megjegyzéseket tettem a diák mellé, hogy ha nem jut eszembe valami, végső esetben fel tudjam olvasni.

Feltöltöttem a laptopom akkumulátorát, nehogy az előadás felénél fogyjon el a szufla belőle. Előadás kezdés előtt egy órával megjelentem a helyszínen. Kétszer lefuttattam a teljes diasort, a hátsó asztalokból ellenőriztem, hogy minden jól látható-e.

A szervezők adtak lézer pointert, mikrofont, tartalék elemeket mindkét eszközhöz. Megmutatták a gépet, amit ugyan azzal a virtuális Linuxal szereltek fel, mint a hallgatók gépét, hogy velük együtt tudjam csinálni a lépéseket. Megmutatták a megosztott könyvtárat, ahova úgy tuduk fájlokat elhelyezni, hogy mindenki hozzáférjen,

Ellenőriztem, hogy a használni kívánt programok az elérési útban vannak-e, működnek-e. Egyedül a STAR-Fusion panaszkodott egy hiányzó Perl modulra, de csak azért, mert a program munkakönyvtára az /usr/local/bin volt. Feljegyeztem a program abszolút elérési útját, hogy majd ha ehhez a lépéshez érünk, innen futtassuk.

Még negyed óra volt kezdésig. Minden készen állt.

Beléptek a hallgatók. A legkülönbözőbb égtájakról, a legkülönbözőbb életkorú emberek jöttek. Mindenki valami csodára várt, azt hitték, majd elmondom nekik az egy igaz RNA-seq feldolgozási módszert. Ennek ellenére én minden lépésre legalább három alternatívát mutattam be és egyikre sem mondtam, hogy jobb a másiknál. Helyette azt mondtam, teljesen mindegy, mit használnak, mert minden programnak van valami hibája.

Több kérdést is feltettem előadás közben, de mindegyik az épp aktuális projektjükre vonatkozott, hogy azt miként dolgozzák fel. Például hogyan futtassák a GATK-t RNA-seq adaton? Mit csináljanak, ha kontrolból nincs ismétlés, de a tumorból három is? Mi az az FPKM érték, ami alatt ne foglalkozzanak az expresszióval?

Ennek ellenére is sikerült fél óra alatt elmondani az egy órára tervezett előadást. Legalább nem aludt el senki.

Azután következett a gyakorlat. Az első hiba, amit észrevettem, hogy a szimlink nem volt jó a STAR-Fusion index könyvtárában, Azt viszonylag gyorsan orvosoltuk. Bemutattam, milyen lépéseket követtem el az index elkészítésénél, de nem mondtam elég egyértelműen, hogy ezt nem kell megcsinálniuk, úgyhogy néhányan nekiláttak, hogy letöltsék a teljes egér genomot.

Azután megkérdeztem, hogy mindenki hozzáfér-e az előadáshoz, hogy onnan ki tudja másolni a parancsokat, de néhányan valahogy nem fértek hozzá. Akkor megmutattam a GitHub oldalt. A káosz valahol itt kezdődött.

Mondtam nekik, hogy akkor illesszék a szekvenciákat a szkript részlet alapján, és én is elkezdtem csinálni velük együtt, a nagy kivetítőn. Néhányan elkezdték kicsomagolni a read fájlokat, pedig ezt nem is mondtam. Mások a közös mappában találtam valami fájlt, amin elkezdtek dolgozni, de ezt sem mondta senki.

Ekkor az egyik szervező odajött, hogy mi lenne, ha az illesztő szkriptet csak bemásolnám a közös mappába, hogy azt futtassák. Gondoltam, rendben. Korábban a rendszergazda, aki elkészítette a VMWare lemezképet, büszkén mondta, hogy 12 processzor van, 24GB RAM, a tárhellyel pedig "nem kell törödni". De a valóság valahogy más volt.

Az történt ugyanis, hogy valaki gondolkodás nélkül a közös mappában elindította a szkriptet, amiben én naívan 12 szálat adtam meg. Ekkor az összes gép a teremben lefagyott.

Szerencsére ez a kávészünet közelébe történt, ezért mindenki kiment, a rendszergazda meg rohangászott gépről gépre és újra indított mindent. Utána jött a nagy tanácskozás és végül megállapodtunk, hogy 4 magon indítjuk a szkriptet. De ez is lelassított minden gépet, még az egér sem mozgott. Végül megkérdezték, le tudnám-e futtatni a gyakorlatot a saját laptopomon, a többiek meg nézik.

Végül is ebben maradtunk. Moziztak végig. Nem tudom, mennyire volt hasznos számukra ez a bemutató, egy ember nagyon örült, hogy láthatott egy downstream analízist. Elmondása szerint mindig az volt a problémája, hogy nem tudott mit kezdeni a génlistákkal. Legalább egy embernek hasznos volt a bohóckodásom.

Szólj hozzá!

Ez itt a reklám helye

2016.06.26. 22:31 Travis.CG

reklam.png

Már eddig is voltak eszközök, hogy a megtalált SNP-khez, indelekhez biológiai hatást rendeljenek, de ezek legtöbbje kimerült a szinoním, nem-szinoním mutációk elkülönítésében. Más eszközök, mint amilyen az Annovar is, csak a modell organizmusokra koncentrálnak és tetemes energia befektetésre van szükség, ha más élőlényt is vizsgálni akarunk.

Variációk nem csak kódoló szakaszokban lehetnek. Ezek fontosságát egyre több publikáció hangoztatja, mégsem találni eszközöket, hogy egyszerűen kiterjesszük a vizsgálatainkat rájuk. A hiba nem az annotációs adatbázisok hiánya. Megszámlálhatatlanul sok van, és a nagyobb genom adatbázisok mindent elkövetnek, hogy még több adatot gyűjtsenek be.

Ennek most vége! Itt a szomszédban (EBI) készítettek egy olyan eszközt, ami a teljes EnsEMBL tudásbázisára építve képes annotálni szinte bármit. Mindezt egy egyszerű, de rugalmasan konfigurálható eszközzel. Ingyen. Visz'lát Annovar, helló VEP.

Aki idegenkedik a parancssortól, az  használhatja a weboldalt. Aki saját szolgáltatásba építené, használhatja a REST API-t. De az igazi ínyenceknek van parancssoros program is, Perl nyelven írva.. A poszt további részében erre koncentrálok.

Az egyetlen komoly döntés, amit meg kell hozni, hogy a program netet használjon vagy tárhelyet? Ha netet használ, akkor egyfajta felhő szolgáltatásként működit, ha a gépünk tárhelyét, akkor lassú netkapcsolat esetén is gyorsan lesz eredmény.

A telepítés egyszerű, leszedi a szükséges Perl modulokat és még azt a szívességet is megteszi, hogy nem akarja rendszer könyvtárba elhelyezni őket:

perl INSTALL.pl

Ez az esetek többségében teszi a dolgát, de érdemes figyelmet fordítani a -c kapcsolóra. Alapesetben ugyanis a felhasználó könyvtárába helyezi az egyes organizmusokhoz tartozó adatokat, ami komoly gond olyan nagygépes környezetben, ahol ez limitált. Viszonylag sok élőlényekhez már van előre elkészített adatbázis is. Ebben az esetben csak egyszer használjuk a sávszélességet, letöltésnél.

Használata rendkívül egyszerű. A --cache opció nélkül a szkript haza telefonál.

perl variant_effect_predictor.pl --vcf -i input.vcf --cache -o output.vcf

Az eredmény a VCF fájl INFO oszlopában lesz CSQ taggal jelölve. Ha az adott variáció több gént is érint, a gének vesszővel lesznek elválasztva. Apró figyelmesség, hogy más annotáló programoktól eltérően, nem a szinoním/nem-szinoním szavakat, használja az aminosav cserével járó variációk jelölésére, hanem a missense/synonimous-t. Bárki, aki próbálta már grep-el szétválasztani a kategóriákat, csak örülni tud ennek.

3 komment

Címkék: bioinformatika

Csővezeték fektetés

2016.06.13. 00:36 Travis.CG

Bioinformatikai munkafolyamatok (szaknyelven pipeline-ok) fejlesztésére a legegyszerűbb módszer még mindig a parancssori szkriptek írása. Az irányítás végig a kezünkben van, minden lépést aprólékosan felépíthetünk. Az adatok sokszínűsége viszont olyan potenciális hibaforrásokat hordozhat, ami a feldolgozást megakasztja.

Vegyük például a következő nagyon egyszerű munkafolyamatot:

bowtie-build reference.fasta refindex
bowtie -S refindex reads.fastq >out.sam
samtools view -b out.sam >out.bam

Már egy ilyen egyszerű folyamat is rengeteg hibát hordozhat. A teljesség igénye nélkül: a referencia fájl egy Word dokumentum, nincs írási jogunk az adott könyvtárra, a telepített samtools régi és kell neki a -S kapcsoló is. Ezek a hibák a folyamat különböző lépéseiben jelentkezhetnek és kijavításuk után mindent előről kell kezdeni, sőt mivel nincs hibakezelés, a hibás sort követő parancsok is megpróbálnak lefutni.

Profi Bash hekkerek persze képesek kitolni a határokat és ilyen szörnyetegeket hozhatnak létre:

if [ ! -f refindex.1.ebwt ]
then
bowtie-build reference.fasta refindex
fi
if [ ! -f out.sam ]
then
bowtie -S refindex reads.fastq >out.sam
fi
if [ ! -f out.bam ]
then
samtools view -b out.sam >out.bam
fi

De minden egyes lépést sok ugyan olyan sor vesz körbe, amit még a subrutinok használatával sem lehet csökkenteni. Arról nem is beszélve, hogy ez a szkript csak azt nézi, hogy bizonyos fájlok léteznek-e, azt nem, hogy a formátumuk helyes-e, illetve a program generalt-e hibát. Ha ezeket is beleépítenénk, igen áttekinthetetlen kódot kapnánk.

Makefile, a jobb megoldás

A fenti megoldásnál a make használata sokkal jobb. A make egy program, ami megkeresi az adott könyvtárban a Makefile nevű fájlt és végrehajtja azt. Eredetileg a C programok fordítására kezdték el fejleszteni, de mivel nagyon könnyű benne hierarchikus folyamatokat felépíteni, ezért elég sok helyen használják bioinformatikusok például prototípus folyamatok fejlesztésére. Az iRAP alapját is Makefileok tömeget képezi.

Az alapötlet, hogy amit már hibamentesen lefuttattunk, és létrejött belőle egy fájl, azt másodszor ne kelljen elindítani. Ezért a fenti példa esetén, ha az indexelés lefutott, akkor nincs szükség ezen időigényes lépés megismétlésére. A parancsok visszatérési értékét is ellenőrzi a program, hiba esetén nem megy tovább.

all: out.sam
   samtools view -b out.sam >out.bam
out.sam: refindex.4.ebwt
   bowtie -S refindex reads.fastq >out.sam
refindex.4.ebwt:
   bowtie-index reference.fasta refindex

A szkript úgy néz ki, mintha fordítva írtuk volna le a lépéseket, ami igaz is. Minden függőséget az adott lépés után kell definiálni. A szerkezet is egyszerű. Először az adott lépés azonosítóját adjuk meg, majd felsoroljuk, milyen más lépések szükségesek a cél eléréséhez. A trükk, hogy ha a lépés neve megegyezik egy fájl nevével, ami létezi, akkor azt a lépést már nem futtatja le a make. A definíció után egy tabulátorral kezdődően jönnek azok a sorok, amiket ténylegesen végre kell hajtani. Itt fontos megjegyezni, hogy tabulárot karakter helyett semmi más nem használható. Ha tehát olyan szövegszerkesztőt használunk, ami szóközzel helyettesíti a tabulátort, az eredmény használhatatlan lesz.

Természetesen ez sem tökéletes. Először is, csak egy szálon fut. Ha tehát egy lépésnek több függősége van, amelyek egymással párhuzamosan is futhatnak, ezt nem tudjuk definiálni. Ugyancsak tehetetlenek vagyunk azokkal a hibákkal szemben, amelyek futás közben lépnek fel. Képzeljük el például azt az esetet, hogy elfogy a tárhely a bowtie futása során. Hibával megszakad a futás, de egy csonka out.sam fájl már létrejött. Ezért ha némi tárhely felszabadítása után újra indítjuk a folyamatot, az illesztés nem fog ismét lefutni. Ez ellen lehet úgy védekezni, hogy a touch parancs segítségével hozzuk létre a fájlokat, amelyek összeköttetést jelentenek a lépések között, de ezzel megint csak azt érjük el, hogy bonyolítjuk a kódot. Kérdés, tudunk-e ennél jobbat?

bpipe, a tökéletes megoldás

Igen tudunk: bpipe. A bpipe az összes fenti problémára megoldást jelent. Szintaxisa egyszerű, figyeli a hibákat, többszálú. A Sangerben is ennek egy módosított verziója képezi a feldolgozó programok alapját. A fenti példa így néz ki:

index = {
   exec "bowtie-index reference.fasta refindex"
}
align = {
   exec "bowtie refindex reads.fastq >out.sam"
}
convert = {
   exec "samtools view -b out.sam >out.bam"
}
Bpipe.run {
   index + align + convert
}

Először minden lépést külön definiálunk. A lépések sorrendje nem kötött, mint a Makefile-ok esetén. Végül a Bpipe.run résznél megmondjuk, milyen sorrendben kell a lépéseket végrehajtani. Itt igen bonyolult összefüggéseket is definiálhatunk.

Szólj hozzá!

Címkék: bioinformatika

A bizalom drága kincs

2016.06.10. 07:55 Travis.CG

Jobb ha van, de ha nincs, akár egy cikk is születhet belőle. Pontosan ez történt ugyanis a legújabb publikációnknál. A búza mikroRNS szekvenáláshoz a könyvtár előkészítést egy PhD hallgatónak kellett volna csinálni, de az egyik szenior kutató úgy gondolta, bölcsebb, ha nem tesz fel mindent egy lapra és a szekvenálás sikerét nem egy olyan emberre bízza, akinek ez az első ilyen munkája.

Ezért a két párhuzamos könyvtár előkészítés történt. Az egyiket a PhD hallgató végezte, a másikat a szekvenáló cég. Mikor meghaptam a szekvenciákat, rögtön láttam, hogy a két jól elhatárolható csoportra bonthatóak, de akkor még nem tudtam semmit az előkészítésről.

Közben történt még egy kis malőr a szekvenálás körül és néhány mintát újra kellett futtatni. Itt akaratomon kívül hozzájárultam a szekvenáló cég hatékonyabb működéséhez. Ugyan is az volt a szokás, hogy a szekvenciák a szerver egy bizonyos könyvtárában gyűltek, majd minden féle minőség ellenőrzés után egy FTP-n elérhetővé tették a megrendelőknek. Nekem viszont a volt főmököm révén volt hozzáférésem a szerverhez. Mivel az intézet szinte valamenyi szekvenálásának elemzésébe ilyen-olyan módon belefolytam,  nem bajlódtam azzal, hogy elkérem minden kutató felhasználó nevét és jelszavát, majd a roppant lassú FTP-n keresztül letöltöttem az adatokat, hanem feltérképeztem a szerver tárhelyét és SCP-vel lehúztam, ami kellett.

Akkor kezdődött a bibi, amikor megkértek, töltsem le a búza kisRNS szekvenálásokat, mert már elkészültek. Én szépen le is szedtem, még mielőtt a cég hivatalosan értesített volna minket. Csináltam egy gyors ellenőrzést, találtam néhány hibás könyvtárat és jeleztem felfelé. Aztán a kutatók jelezték a cég felé, hogy gond van. Gondolom ők meg pislogtak nagyokat, hogy mi ezt honnan tudjuk?

Miután szépen elmeséltem nekik a munkamódszeremet, akkor megkaptam a magamét. Elmondtak minden féle etikátlan barbának, aki aláássa a céget, szabotálja a szolgáltatást, stb. Egy órán belül rendes csoport jogosultságokat állítottak be, ahogy annak lennie kell. Mivel akkor még a főnököm is rendszergazda volt azon a szerveren, két nappal később már megint tagja voltam az összes csoportnak, ami ahhoz kellett, hogy normálisan tudjam végezni a munkámat.

Visszatérve a könyvtár előkészítésre: a különbség olyan feltűnő volt, hogy egy kicsit utána néztünk, mi lehet a hátterében. Kiderült, hogy a két alkalmazott módszer nem volt teljesen egyforma. Míg a PhD hallgató az agarból a kisRNS mérettartománynak megfelelő részt kivágta és azzal dolgozott tovább, addig a szekvenáló cégnél totál RNS-t használtak.

Elméletileg nem kellene, hogy nagy különbség legyen, de mégis volt. Végül úgy döntöttünk, hogy ez egy elég érdekes összehasonlítás, az irodalomban senki nem csinált ehhez hasonlót, a publikáció meg mindig jól jön.

Talán nem ez lesz a legimpozánsabb cikkem, de ezt a projektet nagyon szerettem, mert teljesen olyan volt, ahogy a nagy könyvben meg van írva. Elindultunk az elején, összeszedtük az adatokat, majd levontuk a következtetéseket. Nem voltak hatalmas hurkok, zsákutcák. Minden a helyén volt.

Szólj hozzá!

Címkék: publikáció

A hazugság halála

2016.06.06. 00:33 Travis.CG

– Professzor úr, mit csinál!? – kérdezte Gergő, a tanítványa. Még meg sem itta a reggeli kávéját, el sem olvasta a levelezést, de mestere már a laborban ugrált a Petri csészék között.

– Egy szép új világot! – hangzott a cseppet sem szerény válasz. – Most végre meg tudom csinálni!

– Mit? – kérdezte Gergő fájdalmasan. A Professzor mindig valami hatalmas tervet tűzött ki maga elé. Hetente változtatta a nézeteit. Kifogyhatatlan volt hajmeresztő ötletekből. De ezek legtöbbjét egy kávé után kellett végighallgatni egy kényelmes irodában, aminek az ablakából látni lehetett az előadásokra várakozó diáklányokat.

– A hazugság gén! Emlékszel a hazugság génre?

Gergő emlékezett rá. A Professzor talán legjelentősebb felfedezése...lesz. Ha a független kísérletek megerősítik. De eddig senki nem tudta reprodukálni az eredményeket.

– Kiütjük és nem lesz több hazugság a világon. Kinek kell?

– Megismételjük az egeres teszteket? – kérdezte értetlenül Gergő.

– Én arra gondoltam, embereken kéne kipróbálni. Mit embereken! Az egész emberiségen!

– Ez nem etikátlan?

– Egy jó tett nem lehet etikátlan. Mennyi emberen segíthetnénk. A hazugság és képmutatás segítségével nyomjuk el embertársainkat. Ha nincs hazugság, nincs több elnyomás, nincs több hamis ideológia, csak béke és harmónia. Mindez egy kicsi vírus segítségével. Az általa hordozott CRISPR-Cas9 rendszert a hazugság génre állítottam be. Akit megfertőz a vírus, annak a hazugság génje kikapcsol és őszinte lesz. Sőt, még az utódaira is örökíti!

– Honnan tudja, hogy működik?

– Kiket nézel az ablakomból a reggeli megbeszélések ideje alatt?

– A másodéves hallgatólányokat – hallotta meglepetten saját hangját Gergő.

– Én úgy látom remekül működik – mondta cinkos mosollyal a Professzor. A vírus talán húsz év alatt fertőz meg mindenkit a Földön. Meg akarom nézni a szép jövőt. Látni akarom az őszinteség hogyan virágoztatja fel az emberiséget. Ezért lefagyasztom magamat. Téged kérlek meg, hogy ébressz fel húsz év múlva.

Gergő hirtelen nem is tudta, mitől kellene jobban megijedni: attól, hogy vírussal fertőzték meg, belenyúltak a génjeibe, leskelődésen kapták vagy attól, hogy a bimbódzó tudományos karrierjének egyetlen támogatója eltűnik húsz évre. Mindezt a reggeli kávé nélkül.

 

A Professzor számára a húsz év átalvása csak egy pillanatnak tűnt, de az ébredés egy örökkévalóságnak. Szeme nehezen fókuszált. Bőre még nyirkos volt a folyadéktól, ami megakadályozta, hogy sejtjeiben jégkristályok képződjenek. Fázott.

– Ezt igya meg – mondta egy karcos, de ismerős hang.

– Gergő?

– Igen, de most pihenjen. Még szükség van néhány vizsgálatra.

 

Másnap a Professzor már távolabbi tárgyakat is élesen látott. Ahogy hormonrendszere újra felvette a régi ritmust, egyre türelmetlenebbül vágyott rá, hogy lássa művének betetőzését. Mikor Gergő, illetve már Mozsai professzor belépett, nehezen mozgó izületei ellenére azonnal elé állt.

– Menjünk ki a városba!

– Túl korai. Az EKG apró kilengéseket mutat. Fennáll a komplikáció esélye. További megerősítő vizsgálatokra van szükség!

– Pontosan tudom, milyen kockázata van azoknak a kilengéseknek. Ez a sok vizsgálat csak időhúzás. Menjünk most!

Gergő végül beleegyezett, de vitt magával egy táskát, amibe gyógyszereket rakott, hátha bekövetkezik, amitől fél. A professzor kilépett és szeme-szája tátva maradt a csodálkozástól. Gergő komótos léptekkel haladt mögötte.

– Milyen tiszta minden!

– Igen, az emberek már nem tudják letagadni, ha szemetelnek.

– Háborúk, vannak még háborúk?

– Mikor a vírus még csak kevés országot fertőzött meg, voltak konfliktusok az őszinték és a nem fertőzöttek között. Senki nem értette, mi történt az emberekkel. Szerencsére az Ön vírusát nem fedezték fel, így az emberiség nem szerzett tudomást tettéről. Végül ahogy egyre több ember lett őszinte, a titkos szolgálatokra és más szervezetekre egyre kevesebb szükség lett. A diplomácia szerepe is visszaszorult és a konfliktusokat is egyszerűbb lett megoldani.

– Ez nagyszerű!

– Azért akadnak véres kofliktusok a világban. Az őszinteség nem jelenti azt, hogy ne lenne a népeknek saját igazuk. De a hamis ideológiáknak vége.

– Gondolom már rendőrség sincs!

– De van, az emberek továbbra is bűnöznek, de a kézre kerítésük kevesebb erőforrást igényel.

– Csodálatos, csodálatos!

A város alaposan megváltozott az eltelt idő alatt. Szép tisztaság volt mindenütt. Nyoma sem volt a régi idegességnek és kapkodásnak, amire a Professzor emlékezett. Az emberek egykedvűnek tűntek, viszont senki nem nézett ki borúsnak vagy szomorúnak. A Professzor titokban abban reménykedett, csupa mosolygós embert fog látni, mintha egy utópiába csöppent volna, mésem érzett csalódottságot. Talán húsz év kevés, hogy az emberek teljesen feldolgozzák ezt a hatalmas változást. De határozottan úgy érezte, jól döntött.

– Mintha az emberek jobban élnének – állapította meg a Professzor a sok drágának tűnő ruha és autó láttán.

– Igen, sokat segít, hogy kevesebb erőforrást kell pazarolni vizsgálóbizottságokra, nem kell arra időt pazarolni, hogy ki mit és miért mondott. Az ügyeket könnyebb elintézni és ez pénzbeni megtakarításban is mérhető, amiből több jut az embereknek is.

– Tudtam, tudtam, hogy van értelme a munkámnak! Látod! Érdemes volt megcsinálni.

– Ne vonjon le messzemenő következtetéseket, amíg nem ismeri az összes tényt – mondta Gergő sokat sejtetően.

Épp egy óriás kivetitő alatt álltak meg, ahol a választási kampány részeként az egyik jelölt beszélt a programjáról. Felirat nem volt, amitől a tátogás kissé komikusan hatott.

– Meg lehet hallgatni, mit mond?

– Igen, csak irányítsa a mobilját a kivetítő felé...Bocsánat, magának 20 éves lehet a mobilja. Használja az enyémet.

Ahogy a Professzor megfogta a készüléket, rögtön meg is hallotta a politikus beszédét. Nem volt szükség fülhallgatóra. Micsoda fejlődés!

– Elismerem, hogy az ellenzék külpolitikai programja sokkal átgondoltabb, és mezőgazdasági kérdésekben is sokkal komptensebb, mint én. Ennek ellenére szavazzanak rám, nekem fiatalos kabinettem lesz, szemben az ellenzék sok aszott, öreg miniszter-jelöltjeivel.

A Professzor Gergő felé fordult.

– Ez meg miféle kampány?

– Őszinte – hangzott a lakonikus válasz.

– Ezek alapján számítanak bármilyen győzelemre?

– Igen, jó eséllyel ők fogják megnyerni a választásokat.

– Hogyan? Hiszen beismerte, hogy a programja semmit nem ér.

– Így van, de régen is és most is a szavazókat az érzelmeik vezérlik. Erre próbál hatni a jelölt is. Azért, mert az emberek őszinték lettek, még a régi beidegződések megmaradnak, sőt felszínre kerültek. Nem kell ideológia mögé bújtatni.

– De az emberek nem gondolkodnak racionálisan?

– Dehogynem. Pont annyira racionálisak, mint az Ön idejében. Az érzelmek nem változtak szemernyit sem és pontosan úgy befolyásolják döntéseinket, mint azelőtt.

A professzor csalódottnak tűnt. Visszaadta a telefont Gergőnek. Egykori tanítványa megsajnálta.

– Jöjjön, Professzor, menjünk el egy moziba. Az majd felvidítja.

A Professzor arca felderült, mint egy gyereknek, akine csokit ígérnek. A mozi egy nagy üres terem volt. Nem voltak sem székek, sem vászon. A nézők a terem középen őgyelegtek. Először reklámok jöttek, mint a régi időkben, csupán a látvány változott. A levegőben, szinte a semmiből jelentek meg a térbeli képek. Az emberek különböző nézőpontokat választottak maguknak és onnan nézték az üdítőt, ami mellé egy kellemes búgó női hang objektíven felsorolta annak jellemzőit.

– Nincsenek reklámszínészek? – csodálkozott a professzor.

– Nincsenek. Nincs ember a világon, aki azt állítaná, hogy ez a legjobb ital a világon.

– Miért látom a többi nézőt? Nem zavarja ez a műsor élvezetét?

– Kezdetben úgy csinálták meg, hogy ne lehessen látni a többi embert, de nem vált népszerűvé. A mozizás társas esemény, ezért látszik a többi ember is.

– Psszt! – szólt rájuk egy nő.

A reklámok után bemutatók következtek. Egy férfi jelent meg és arról kezdett beszélni, milyen nehéz volt megbírkóznia felesége halálával. A mozi nézői együttérzően felsóhajtottak. A Professzor kissé türelmetlenül várta, mikor jön valami izgalmas. A második bemutató már vidámabbnak ígérkezett. Egy fiatal pár osztotta meg a nyaralásuk vicces pillanatait. A pikánsabb eseteknél a közönség egy emberként nevetett. Kivéve a Professzort, aki szórakozásra vágyott, nem idegen emberek élménybeszámolójára.

– Lesz bármi, ami nem emlékeztet egy valóság showra?

– Úgy érti bármi, ami nem igaz? – kérdezett vissza Gergő.

A Professzor nem tett fel több kérdést, hanem a műsort kezdte nézni. Most már azt is értette, miért nincsenek rekonstruált jelenetek. Elkezdődött a film. Archív felvételeken és szemtanúk beszámolóin keresztül mutatták be az utolsó háború egyik kevésbé közismert csatáját. A Professzor többször elfordította a fejét. Gyűlölte a háborúkat. Azt akarta, ne legyen többé ilyen borzalom a Földön, és megcsinálta! Igaz, ezt rajta és egykori tanítványán kívül senki nem tudta, de ez nem számított. Sikert aratott, talán az egyik legnagyobbat a világon. Akkor miért érzi mégis magát rosszul? Bár már rég nem voltak háborúk, a professzor mégis gyilkosnak érezte magát.

A lehangoló film után némán mentek az éjszakai utcán. Gergő húsz évig ábrándozott erről a pillanatról, milyen lesz egykori mentorát újra látni. Elképzelte, hogyan vágja az arcába az igazságot a tettéről. Most mégsem szólt egy szót sem. A bölcsesség, mint egy színházi súgó türelemre intette. Amit annak idején ordítva mondott volna ki, most a csend erejével találtak célba.

– Gergő, mit tűntettem még el? – kérdezte nagy sokára a Professzor. – Minden művészet odaveszett? Nem akarnak már alkotni az emberek?

– Nem, nem veszett oda minden művészet. A zene például virágzik, habár dalszöveget egyre ritkábban hallani. A vizuális kultúra minden eddiginél erősebb. Feltámadt például a festészet. De – az egykori kutató érezte, most jön a végső ítélet. – Professzor, maga megölte az irodalmat!

Szólj hozzá!

Címkék: irodalom

Organoid big data, avagy trendi vagyok, bébi

2016.06.04. 23:07 Travis.CG

Most már tényleg le kellene állni a projekt harácsolásról. Az egyik PhD hallgató megkeresett, hogy van 105 RNA-seq adata organoidokból.

Az organoidok olyan ős sejtekből differenciáltatott szövet kezdemények, melyek hordozzák a végső szövet lényeges tulajdonságait. Miért érdekes ez? Amíg egy embert nem lehet karcinogénekkel kezelni, hogy lássuk, milyen rák fejlődik ki belőle, nem lehet genetikailag módosítani, hogy jobban megértsük a gének működését, addig egy organoidra nem vonatkoznak ilyen szigorú etikai előírások.

Bár azért érdemes megjegyezni, hogy nemrég engedélyeztek egy embrió genetikai módosítására vonatkozó kísérletet.

Mivel az adatok nagy része klónokból származik, lesz lehetőségem arra is, hogy összehasonlítsam, mennyire konzekvensek az RNA-seq adatok és ezzel talán jobban megérthetem, az eltérő feldolgozási módszerek mennyire adnak konzekvens eredményeket.

Talán kicsit túloztam a címmel, mert ez még nem igazi nagy adat, de már itt is érezhető, hogy más módon kell megírni a szkripteket, mint ahogy korábban tettem. Előszeretettel használom ugyanis a hasheket. De míg régebben két táblázat összehasonlításánál minden gond nélkül használhattam hash-be ágyazott hash-eket, ahol az első kulcs a gén azonosítója (vagy ha így jobban tetszik, a táblázat sora), a második pedig a minta azonosítója (oszlop név), addig most ezekről le kell mondanom. A fent említett adatstruktúrának ugyanis akkora lett a memória igény, hogy a legizmosabb gépen sem fért el.

Természetesen itt még könnyen megoldottam a problémát, mert a második hash-t kicseréltem közönséges tömbre, hiszen az oszlopok sorrendje nem változik. Ez az egyszerű változtatás elég volt, hogy a szkript már lefusson.

Egy másik egyszerű változtatás, hogy amennyiben több táblázattal dolgozom, amelyek ugyan abból az adatszettből származnak, akkor  a táblázatok sorait és oszlopait szinkronizálom. Így már nem kell megjegyezni, hogy a táblázat cellái hogyan feleltethetőek meg egymásnak. Korábban ez sem volt érdekes, a számítógépek megbírkóztak mindennel, még akkor is, ha nem volt optimálisan megírva a szkript.

Talán meg kellene győzni a hallgatót, hogy egy Crisp/Cas rendszerrel módosított organoidot szekvenáljon (szigorúan egy sejteset), amit én GPU alapú Hadoop klaszteren dolgoznék fel, miután noSQL-be töltöttem mindent. Ekkor igazán trendi lennék. És ha mindez a felhőben volna...

Szólj hozzá!

Címkék: életmód

Világítsunk a lényegre

2016.05.28. 00:35 Travis.CG

GPU? FPGA? Virtuális valóság? Kegyetlen nagy szerver, amivel 47 másodperc alatt összeraksz egy humán genomot? Azt hiszed már a spektrum teljes palettáját ismered, amivel a cégek a bioinformatikusokat vakítják? Gondolod semmi újat nem tudnak neked mutatni?

Nem tudsz semmit! Csak sötétben tapogatózol. De majd az optikai számítástechnika felvilágosít.

Azt mindenki tudja, hogy sok adatunk van, a számítógépek egyre többet fogyasztanak és nincs mindenkinek szuperszámítógép a farzsebében, hogy feldolgozza mindezt. Az Optalysys ezért elhozza a hatalmas teljesítményt egy asztali számítógépre, miközben az energiafogyasztás minimális lesz. Mintha bekapnál egy Tic-Tac-ot, és lefutnád a Maratont.

A trükk, hogy nem elektronokat és tranzisztorokat használnak az adatok feldolgozására, hanem lézert és SLM-ket. Az előadó szerint az optikai feldolgozás nem termel hőt, ezért nem kell hűteni, és mintakeresési problémákra sokkal jobb, mint a hagyományos elektronika. A terv, hogy egy PCIe foglalatba illő kártyát készítsenek, nekünk viszont csak egy prototípust mutattak be, ami így nézett ki:

A fejlesztést nyílt API fogja támogatni, a következő teszt fázisban 4K szenzorokat fognak beépíteni, hogy még több adatot tudjanak feldolgozni. Az, hogy az illesztés mennyire hatékony, arról nem mondtak semmit, nem tudni mennyibe fog kerülni, de egy videokártya árával fog versenyezni.

Tipikus parasztvakítás volt. Futott az orrunk előtt valami, amiről nem is tudtuk, mi az, az előadáson hajmeresztő grafikonokat láttunk az egyre növekvő adatmennyiségről, miközben ez az eszköz USB 3.0-n keresztül kommunikált egy laptoppal.

A bioinformatikában még mindig nem a CPU a szűk keresztmetszet, hanem az I/O. Erre valahogy nem világított rá az előadás.

Szólj hozzá!

Címkék: bioinformatika

Cseppet sem objektíven: QBParty 2016

2016.05.22. 23:34 Travis.CG

Amikor a QBParty eszembe jut, olyan fiziológiai képtelenségek történnek velem, mint a mesebeli királyokkal: egyik szemem sír, a másik nevet. Talán egy féloldali agyvérzés mégis produkálhat ilyen tüneteket... Inkább térjünk vissza a demoscenéhez! Nemrég ismét party volt Magyarországon. Ez örömteli, hiszen még egy hely, ahol bemutathatjuk, min is szöszmötölünk unalmas perceinkben.

Eredetileg úgy gondoltam, adok be valamit, de olyan kevés információ jutott el hozzám, hogy azt hittem, a party el fog maradni. Régen, mikor Murphy vitte egyedül a Scene.hu-t, akkor kapott egy kritikát, hogy miért nem tette ki az akkori Function-t fő hírnek. Most sem tette ki senki fő hírnek a QBPartyt, de az is igaz, senki nem is sírt miatta.

Az indulók számából úgy tűnik, mások sokkal optimistább módon álltak a dologhoz, vagy egyszerűen csak túl elavultnak tartják a fórumon és e-mailen történő kapcsolat tartást. A hozzám eljutott információ morzsák alapján a partyt egy szóval lehet jellemezni: őskáosz. A résztvevők idén is igyekeztek egyszerűen megoldani a releaselést, de mint látni fogjuk, ennek több szintje van.

1. Egyszerűen primitív

Ebbe a kategóriába azok az alkotások kerültek, amelyeket nagyon gyorsan összecsaptak, nem alkalmaztak semmilyen minőségi korlátot. Elég csak a grafikai kompók utolsó pár helyezettjét megnézni, hogy lehessen érteni, miről beszélek.

2. Egyszerű, mert már kész

Itt már van minőségi szint, de a hozzáadott érték minimális. Főleg az animációknál lelhető fel, amikor például játék videót adtak be, vagy a már kész effekteket használják fel ugyan arra a témára (nevezetesen a szervezők hiányos angol tudására). Sok szót ezekre sem érdemes fektetni.

3. Egyszerűen nagyszerű

Itt csillan meg a kreativitás. Például a Rebels Desktop demójában. Az effektek nem valami látványosak vagy érdekesek. A jelenetek a szokásos régi sémát követik, de azzal, hogy mindezt egy számítógép képernyőjére tették, az egész teljesen új színben tündököl. Egy hibát véltem csak felfedezni, a telefon képernyőjén a tükröződés kicsit pixelesre sikerült. De nagyon ötletes.

4. Egyszerűen zseniális

 Ide csak egy demó került, a Median az Ümlaut Designtól. Egyszerű, de mégis folyamatosan változó, dinamikus. Egy percre sem áll le. Iskolapéldája annak, nem kell feltétlenül GPU izzasztó shader alkotásokat írni, hogy érdekes demók készítsünk.

Szólj hozzá!

Címkék: demoscene

Cseppet sem objektíven: Revision2016 2.rész

2016.05.17. 00:51 Travis.CG

Az eddigi statikus tartalmakról most térjünk át mozgó képek világába.

Animált GIF

Őszintén szólva nem tudom, miért érdemes ezt a kategóriát választani, hogy kifejezzük magunkat. A méret nem teszi lehetővé, hogy bármi komolyat bemutassunk, az elérhető eszközök elég okosak hogy bármilyen technológiai analfabéta sorozatba gyártsa őket. Az internet tele van velük. Ennek megfelelően csak két entry-t emelnék ki, mert ők saját progival hozták létre az eredményt:

Animáció

Most már hangos produkciók jönnek. Az idei animációktól nem estem hanyatt. Először is nem volt fraktál, másodszor nem volt vicces videó. Nem, a tojásos szerintem nem volt vicces. Slyspy pszichedelikus AfterEffect kaleidoszkópja joggal nyert:

Technikailag a Media Facade is ide tartozik. Röviden, ez egy szoba, amit projektorokkal ügyesen megvilágítanak, mintha a jelenetek a szoba belsejében lennének. Ez igazán sok teret enged a kreativitásnak. Bár nem volt sok induló, a résztvevők kitettek magukért. Gaspod alkotása talán nem volt olyan látványos, mint az első helyezett, de a sztori és ahogy a történetet összhangba hozta a megjelenítés adta lehetőséggel, az mindenképp példa értékű:

 Wild

Német kollégák megirigyelték a Schönherz kollégium sikereit és ők is átalakítottak egy épületet demó platformmá. Az nem volt világos számomra, hogy hang is van-e, de azért jól néz ki.

Oldschool intrók

Önkényesen az Amiga intrókat is ide veszem. A régi gépeken az intrók nagy többsége a scroller valamilyen formája. Ami elég unalmas, még akkor is, ha az ember a szöveget elolvassa. Szerencsére azért voltak csapatok, akik igyekeztek elkerülni a bevett formulát és megmutatták, hogy mi mindent lehet belepréselni pár kilobájtba. Éppen ezért a Harder, Better, Manic, Miner sokkal jobban tetszett, mint a veterán Razor1911 szösszenete. Amiga szinten pedig igazán impozáns volt a felhozatal. A nah-kolor annyira nem bírt magával, hogy egyből két intrót is beadott. Jó látni a lelkesedést. A csúcs viszont a Dekadence volt. Elég sok jelenetet pakoltak be intrójukba, keveset ismételtek és ügyesek voltak az átvezetések. Nem hiába nyertek.

Oldschool demók

Itt már igazán kitettek a csapatok magukért. Viszonylag kevés kompofiller volt, az indulók beleadtak apait-anyait. A Visual Novel például nekem nagyon bejött, annak ellenére, hogy csak harmadik lett. Neo-geora nem sok alkotás jelenik meg, volt egy kevéssé koherens történeti szál, ennek ellenére üdítő színfolt a sok twiste-scroller-plazma között. A We are demo kicsit hullámzó sebességű volt, de nagyön ügyes és újszerű elemeket vonultatott fel. Nem csoda, hogy nyert. Captain Panda Atariba oltott kalandjai első megtekintéskor még tetszettek, de másodszor már unalmasnak hatott.

Az Amigás demók történetében pedig igazi áttörés történt. A Lorem Impsum demót nézve kicsit felemás érzésem volt. A gyalogló ember láttán azt gondoltam ennél Kieró biztos jobb kódot írna. A zene alapvetően tetszett, de úgy éreztem, ha Chaser komponálta volna, biztosan jobban szólna. Azután megjelentek a készítők: Kiero, Chaser, Ubik. Bakker, az Elude álruhában! És megnyerték! Az örökös második helyezettek végre elnyerték méltó jutalmukat. Én személy szerint nagyon örültem a sikerüknek.

PC intrók

Nagyon változatos alkotásokat láthattunk. Ráadásul ez az egyetlen verseny, ahol 8K kategória is van. A Loonies ki is adta a Nexus 8 8K-s változatát. A retro hangulat nem volt elég, hogy megnyerjék a kompót, de így is a második helyen végeztek. A 4k-k közül a Collapse remek fény játéka vitte a pálmát. A legnagyobb harc mégis 64k-ban volt, ahol a Conspiracy alternatív intrója csapott össze a Mercury jóval kommerszebb nevezésével. Még így, hetekkel a party után is fej-fej mellett versenyeznek a közösség kommentjeiért. A Fermi paradoxon nagyon szép, a Hubble legszebb pillanatait megörökítő képeket mutat be, elég statikus módon. A zene kellemes, de bennem motoszkált a gyanú, hogy talán kisebb méretben is meg lehetett volna oldani. Hiszen pont a Conspiracytól láttunk már ilyet és még az idő távolából is azt mondom, az jobb. A Darkness lay yours eye upon me viszont kicsit felemás érzést keltett bennem. Egyfelől a látvány páratlan. Gyönyörű tűz, szép atmoszférikus hatások. Ez is statikus, de a rendezést és a mondanivalót támogatja, ezért indokolt. Viszont három helyen megtörik a ritmus. Az első a nagyváros. Míg a korábbi helyszíneken érezhető feszültség volt, ami a néző kíváncsiságát ébren tartja, addig az éjszakai város teljesen normálisnak tűnik. Ha New Yorkról csinálok egy fényképet a víz felől, pont ilyen lenne. A második az alagútban az emberalak. Itt már van feszültség, mert nem tudjuk, hogy mit látunk. Egy megfáradt kisnyugdíjast, vagy egy emberi alakba öltöztetett démont? A B kategóriás játék trailerekben itt szokott megfordulni az alak, és kiderül, hogy egy zombi áldozata, vagy maga a zombi, akit látunk. Itt ez elmarad, de gondolom 64k-ban nehéz megvalósítani ilyesmit. (De egy vakuvillanás utáni eltűnés belefért volna)

A legnagyobb hiba mégis a csattanó. Az egész felvezetés olyan, mintha a baj, a katasztrófa már megtörtént volna. Mi, nézők még nem tudjuk, mi az, de a karakterek igen. Azután a kihalt autópályán megnyílik a Föld. Miért? Ez már érzelmileg nem visel meg minket, hiszen nincsenek emberek, állatok, semmi, amiért vagy akiért aggódhatunk. Ez a fajta csattanó jól működött a Signal Lostban, mert ott legalább volt egy mozgó kamera, akinek szurkolhattunk. Itt nem volt semmi. De ez tényleg csak kötözködés. Ahogy Gargaj szokta mondani: a királyokat királyi mércével kell nézni. Az alkotás ettől még egyedülálló és méltán megérdemelte volna az első helyet is.

PC demó

A demókat nézve elég vegyes érzéseim voltak. Először is csak tátottam a aszámat, mert a vizuális tartalomra panasz nem lehet. Slyspy készített színes demót, a Still készített fekete-fehéret, a Nuance pedig egy WTF demót. Az Instant God-on kicsit meglepődtem. Két megtekintés után is úgy tűnik számomra, semmit olyat nem láttunk, amit Smash már le ne programozott volna korábban, csak most több részecske van, mert az újabb hardver elbírja. A Cocoon demó viszont nagyon ütött. Kár, hogy az impresszív város jelenetet nem a végére rakták. Ilyen demók után jogosan érzi úgy az ember, hogy csak replika pisztolyokkal játszik.

Szólj hozzá!

Címkék: demoscene

És ezért hiszik, hogy értek az RNA-seq-hez.

2016.05.13. 00:25 Travis.CG

Igazából nem értek hozzá. Illetve volt idő, amikor azt gondoltam, hogy értek hozzá, de aztán a Sangerben kezdtem dolgozni. Talán kezdjük az elejéről.

Még a hírhedt benthamiana projekt idején érezhettem először testközelből a nyers RNA-seq adatot. Túl sokat nem töprengtem rajta, olvastam pár cikket, de csak olyanokat, ahol adatokat dolgoztak fel. Végül a főnököm kezembe nyomta ezt, amivel el is dőlt, hogy mivel dolgozom fel az adatokat. Néha futtattuk a Trinityt, de az esetek többségében teljesen jól elvoltunk a Cufflinks-el. Annyira, hogy unalmas óráimban a a SeqAnswer-en osztottam az észt.

Mikor csatlakoztam az itteni csoporthoz, akkor kezdtek el az RNA-seq felé kacsingatni és nagyon boldogok voltak, hogy én is itt vagyok, hiszen én már láttam ilyet. Rajtam kívül csak Angela foglalkozott expressziós adatokkal, de ő anyai örömök elé néz, így a saját projektjeit szépen lezárta és nem kezdett újakat.

Közben én egyre több előadást hallgattam, ahol más csoportok osztották meg tapasztalataikat és cikkeket kezdtem olvasgatni, ahol a módszereket hasonlították össze. Az eredmény az lett, hogy teljesen elbizonytalanodtam saját tudásomban, de azt is láttam, hogy mások sem ismerik az egy és igaz ösvényt. Illetve mindenki a saját ösvényét tartja az igazinak.

Mit lehet ilyenkor tenni? Elfogadni a tényt, hogy nem tudunk semmit, és megkeresni a saját ösvényünket. Az első és legfontosabb, hogy keressünk valami kapaszkodót, valami kiindulási pontot. Mint oly sok esetben, nálunk is a korábbi eredmények reprodukálása volt ez a pont. Ugyanis van itt az egyik kutatónak 1096 sejtvonala, amiből mind csináltak RNA-seq-t. De több, mint négyszáz sejtvonalból van microarray is.

Még 2008 környékén jelentek meg nyakra-főre az összehasonlító cikkek, nem tettünk mást, mint ezek alapján mi is összevetettük a két technológiát. Mi is korrelációkat számoltunk. Először egy sejtvonalon belül néztük a gének expresszióját, mennyire feleltethetőek meg a két módszerrel. Mint az várható volt, semmi korrelációt nem kaptunk.

Több módszert is kipróbáltam. Először Spearman korrelációval számoltam, mert a microarray expressziós értékek normál eloszlást követtek, míg az RNA-seq exponenciálist. Később Box-Cox transzformációval is próbálkoztam, de így sem tudtam az értékeket feltornázni. Nem számított. hogy miként normalizáltam. Milyen illesztő programot használtam.

Már kezdtem kifogyni az ötletekből és úgy látszott, a két technológia teljesen összevethetetlen eredményeket produkál, ami túlzottan nem is állt messze a cikkekben olvasottaktól.

A fordulat akkor következett be, amikor csupán néhány gént néztem, amelyeket más kísérletes módszerekkel validáltak és az expressziós profiljuk ismert volt. Egy hirtelen ötlettettől vezérelve azt kezdtem nézni, hogy egy gén hogyan változik a különböző sejttípusok között. Ez viszont nagyon szépen korrelálta két eljárás között! Kiterjesztettem a vizsgálatot sok génre és az eredmény megmaradt.

Tehát ha a géneket expressziójuk alapján sorba rendezem, teljesen más sorrendet kapok, ha RNA-seq vagy microarray adatokból indulok ki. De ha differenciál expressziót nézek, az adatok összevágnak. Látszólag ez ellentmondás, de nem az. Arról van szó (ez feltételezés, nem tudom bizonyítani), hogy a technológiából eredő zaj elég nagy, hogy az egyes gén szintjén megnehezítse a korrekt detektálást, de kisebb, mint a gének expressziós változása. A másik, számomra megdöbbentő eredmény, hogy a korreláció már a nyers, normalizálástól mentes readeszám esetén is kimutatható! Ez persze nem azt jelenti, hogy nem kell normalizálni.

Aztán Angela újabb kéréssel keresett meg. Felkérték még korábban, hogy tartson előadást és gyakorlatot az egyik EBI kurzuson, ami sajnos a gyerek születésével esik egybe. Megkérdezte, átvállalnám-e? El nem bírtam képzelni, mit mondhatnék a tanulni vágyó embereknek, amikor még én magam is tanulom az egészet, de a kíváncsiság legyőzte az aggodalmaimat.

Mikor beszéltem a szervezővel, kérdeztem, miért a Sangerből importálják az oktatókat, hiszen az EBI-ban is van elég bioinformatikus. Azt mondták, a tavalyi oktatók még életükben nem dolgoztak rákos RNA-seq-el, és nem tudtak válaszolni a kérdésekre. Ezért idén nem akarják elkövetni ezt a hibát.

Közben az eredményeimet bemutatták az egyik labor beszámolón, ahol a kutató olyan lelkesen beszélt arról a pár ábráról, amit készítettem, hogy hirtelen hárman is megkerestek, hogy az ő adataikat is fel tudnám-e dolgozni? A főnököm csak annyit mondott, mikor elmondtam mindezeket, hogy azért tartsam észben, hogy ő fizeti a béremet, nem a többi csoport.

Még el sem igazodtam a számtalan feldolgozási módszer között, amikor megint megkerestek, mert úgy hallották, hogy én az egy sejtes módszerekhez is értek (pedig csak egy konferencián voltam), bevennének az egy sejtes RNA-seq munkacsoportba. Talán itt kellett volna azt mondanom, hogy nem. De nem bírtam ellenállni az új technológia csábításának.

Szólj hozzá!

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

SCB 2016 (2. rész)

2016.04.25. 00:51 Travis.CG

Dirk Busch: In vivo T-cell fate mapping at the single cell level
A CD8 T-sejtek száma fertőzés után megnő. Egy részük memória sejtté alakul, hogy egy újabb fertőzés esetén az immunrendszer gyorsabban reagálhasson. A jelenlegi ismereteink szerint a memória sejtek egy asszimmetrikus osztódás segítségével jönnek létre, amikor az egyik sejt effektor sejt lesz, a másik memória sejt. Mikor válik el a két útvonal? A probléma, hogy a sejtosztódás után nem tudni, melyik sejtet szekvenálják meg? Ezért szükséges volt valahogy megjósolni, hogy melyik utód sejt lesz a memória sejt. Készítettek egy matematikai modellt, de sajnos gyenge asszociációt mutatott a valósággal. Végül egy speciális kísérleti elrendezéssel rájöttek, hogyan tolhatják el az osztódást a memória sejt irányába, valamint valós idejű mikroszkópi technikák segítségével választották ki a potenciális memória sejteket. Végső következtetésük, hogy az asszimmetrikus osztódás elmélete nem tartható.

Tapio Lonnberg: Single-cell RNA-sequencing resolves bifurcation of T-helper cell fates
A T-sejtek a fejlődés során lehetnek Th1 sejtek és Tfh sejtek. Kérdés, mi szabályozza a kialakulásukat? Ha az RNA-seq adatokat főkomponens analízisnek vetik alá, két csoportot kapnak, amelyek megfeleltethetőek a két fenti sejttípusnak. Egy Gauss látens változó modellt használva (Gaussian process latent variable model) a 15 ezer gént 2 változóra és egy látens változóra térképezték, majd az adatok további vizsgálata egy biofurkációt tárt fel, ami a sejtek differenciációjával van kapcsolatban. Négyszáznyolc egy sejtes adat alapján a Cyclone algoritmus kihozta, hogy a bifurkációban a Tcf7 és ID2 géne játszák a központi szerepet. Természetesen ezek a gének önmagukban kevesek, hogy kialakítsák egyik vagy másik sejttípust, a többi gén azonosítása még folyamatban van.

Lianne Kok: Symmetry in daughter cell fate upon in vivo T-cell activation
A csoport szintén a Dirk Busch-féle problémán dolgozott, de merőben eltérő technikákat használtak. Több energiát fektettek a laboratóriumi munkába. Az osztódó sejteket barcode-al jelölték. Ennek lényege, hogy ezt a barcode-ot csak az egyik utódsejt örökli, hogy melyik, az a szekvenálás után kiderül. Ők is úgy gondolják, hogy az asszimmetrikus osztódás elmélete téves.

Leïla Perie: Deciphering the hematopoietic pathway at the single cell level: results from cellular barcoding
Ebből az előadásból kiderült számomra, mi a barcode. Ez egy 100 nukleotid hosszú egyedi szekvencia, amit egy Lenti-vírusba építenek és megfertőzik vele a sejteket. Kétezer-hatszáz egyedi szekvenciát állítottak elő, majd egy egyszerű PCR-al követték nyomon a sejtek fejlődését. Legnagyobb meglepetésükre az őssejtek legtöbbje nem produkált eritroblasztot és mieloid sejtet. A hipotézisük az volt, hogy minden progenitor minden sejttípust elő tud állítani, de világossá vált számukra, hogy ez nem igaz. Kérdés, mi dönti el, hogy melyik leszármazási vonal lép életbe? A vizsgálatok több új útvonalat is feltártak, de ezek szabályozása sok esetben sztohasztikus, mert például az Eponak már a mennyiségi változása is hat a differenciációra. Azt hiszem jó ideig fogják még bogarászni az adatokat.

Quin Wills: Nature, Nietzsche and Nurture: the existential crises of 500 gene edited macrophages when prevented from signalling each other
Az előadás a makrofák sejt-sejt kommunikációt próbálta feltérképezni. A kísérlet során megpróbálták a makrofágokat elválasztani a többi sejttípustól, amihez egy gyöngy szűrőt használtak. Az elválasztás egészen jól sikerült, még akkor is, ha egyes makrofágok kajának nézték a gyöngyöket. Az elválasztás után 1 és 8 órával megnézték a gén expressziót, és az érdekesebb géneket kiütötték, hogy ellenőrizzék a feltevéseiket. A munkához fejlesztettek egy Bioconductor csomagot is Scater néven. De erre nem sikerült ráakadnom.

Olivier Stegle: Disentangling the transcriptome and epigenome diversity between single cells
A populáció genetika sok hasonlóságot mutat az egy sejtes szekvenálásokkal. Legalábbis a feldolgozás szempontjából. A sejt-sejt eltérések modellezése nehéz, mert a sejtek nem egyformák, különböző állapotokban lehetnek, ezért célszerű kovariancia mátrixot használni, hogy az azonos állapotban lévő sejteket azonosítani lehessen. A főkomponens analízis önmagában erre nem elég, kell a sejtciklus állapota is, mint prior adat. A technikai zaj újabb forrása lehet a különbségeknek. Megpróbálják az összes változót beleszuszakolni egy egyenletbe és még egy rejtett változót is hagytak az ismeretlen hatásoknak. Az eredmények azt mutatták, hogy a rejtett hatások játszák a legnagyobb szerepet. Ebből is látszik, ha valaki a tudás határán táncol, válaszok helyett csak még több kérdést talál.

Fabian Theis: Decoding temporal order and lineage choice of asynchronously differentiating cells from single cell gene expression data
A sejt osztódás kimenetének jóslása elég nehéz feladat. Jelenleg egy méy tanulásos algoritmus segítségével három generációra előre meg tudják mondani, merre fog a sejt fejlődése tovább menni. A módszer alapja egy több dimenziós manifold, amit véletlen bejárással térképeznek fel. Az eredményekből készítenek egy Markovi állapotváltozás mátrixot, ami a jóslás alapja lesz. Dimenzió csökkentésre t-SNE-t használtak. Röpködtek még durvább kifejezések is, de már ez is jócskán meghaladja a tudásomat. De készítettek egy Bioconductor csomagot destiny néven.

Benjamin Simons: Global oscillations in DNA methylation of primed embryonic stem cells
Az embrióban az őssejtek osztódásuk során dinamikus egyensúlyban vannak, de az osztódás szimmetriája egy idő után megtörik és elkezdődik a differenciáció. Ennek hátterében epigenetikai változások állnak. Mivel már egy sejten is tudnak BS-seq-et végezni, a jelenség vizsgálata egyszerűbbé vált. A naív őssejtekben a metiláció szintje alacsony, de ez az idő előrehaladtával egyre nő. Kis lépétékben osszcillációt is tapasztaltak, ami arra utal, hogy a metiláció egy ciklikus folyamat. Megpróbáltak egy matematikai modellt is készíteni, amit különböző gén kiütéses mutánsokkal ellenőriztek. Az eredmények alapján a modell jól teljesített. Vizsgálták, hogy az oszcilláció mutat-e összefüggést transzkripciós változással, de nem találtak korrelációt. Úgy tűnik a metiláció az egyetlen szabályozó tényező.

Szólj hozzá!

Címkék: bioinformatika

Catherine varázslatos genom böngészője

2016.04.22. 01:31 Travis.CG

Időm és energiám újból a kutatók megsegítésére fordítottam, amikor elfoglaltam helyemet a helpdesk irodában. Már nem egy kis lyukban kellett bámulni a DVI-s monitor képét, ahol csak a falaknak lehet köszönni, hanem egy világos irodában, ahonnan egyenesen rálátni a kis mesterséges tóra, ahol naphosszat vadludak tanyáznak.

Mikor megnéztem a kéréseket, az egyik mellett ott virított a "stagnál" embléma, ami azt jelezte, hogy a kérés jó ideje húzódik, nincs megoldva. A kutató - nevezzük Samnek az egyszerűség kedvéért - szerette volna, ha Catherine genom nézegetőjét kicsit feltupíroznánk, hogy tetszőleges struktúrális variációt tudjon megjeleníteni.

Rendben, nem probléma. De ki az a Catherine és miféle böngészője van? Lassan már fél éve itt vagyok, de egyikről sem hallottam. Rákerestem az intézeti wiki oldalakon, de egyikre sem jött találat. Lementem a nagyágyúkhoz. A legtöbb vén róka valami konferencián volt Barcelonában, akik maradtak, azok nem tudtak segíteni. Ők sem tudták miféle böngészőről van szó.

A legjobb lesz, ha felkutatjuk Samet és megkérdezzük személyesen. Mivel nem ismertem, a Sanger weboldalán megkerestem Sam fényképét. Hű, de ismerős! Aztán jobbra fordultam, és ott ült kettővel mellettem. Megkértem, mutassa meg Catherine genom böngészőjét. Beírt valami címet, amiben csak úgy hemzsegett a web01, local, dev és egyéb kulcsszavak.

A böngésző egy sima weboldal volt, ami egymás alá a kromoszómáknak számának megfelelően kirajzolta a Manhattan plotokat. Minden kép ugyan olyan széles volt, csak a vízszintes tengely beosztása jelezte, hogy azért méretben ezek eltérnek. Az oldal csiga lassan töltődött, ahogy egy teljes humán genom kópiaszám variációit próbálta kirajzolni. A böngésző izzadva próbálta futtatni a JavaScriptet, miközben Sam türelmetlenül rángatta a gördítő sávot. Közben az egekig magasztalta a proramot:

- Erre nem képes az IGV. Itt látom az összes kromoszómát egyben. Ha pedig akarom, akkor egyetlen pontra is rá tudok nagyítani.

Buzgón nagyítani kezdett. Szinte hallottam a böngésző jajveszékelését, ahogy igyekezett végrehajtani a kapkodó egérmozgásokat. Végül sikerült. Az egész képernyő fehérré változott és csupán egyetlen türkíz pötty virított. Sam megnyugodott. Egy végtelennek tűnő pillanatig mindketten csak azt az egy pontot bámultuk. Közben azt kérdeztem magamtól: ez mire jó? Miért jó, hogy egyetlen pöttyöt bámul? Így akarja végignézni mind a kétmillió adatot?

Megköszöntem a felvilágosítást. Miután véget ért a Barcelonai konferencia, előhozakodtam Sam furcsa kérésével. A rangidős bioinformatikus végighallgatta, majd elmagyarázta, hogy a web01/local/dev-hez nincs hozzáférésünk, azt valami másik csoport kezeli. Egy embernek egyébként sem fejlesztünk egy teljes weboldalt, ráadásul ha az adatait BigWig-be konvertálja, akkor az IGV is ugyan úgy megjeleníti.

- De Sam az összes kromoszómát látni akarja egyszerre

- Az IGV is tudja.

Betöltött a szemem előtt egy fájlt. Amíg nem választotta ki a kromoszómát, az összes adat egymás mellett ott virított a képernyő tetején.

- De Sam egy pöttyre is rá akar nagyítani.

- Az IGV azt is tudja.

Ránagyított egy pontra. Csinált a két állapotról egy-egy képernyő képet, egyetlen komment nélkül csatolta Sam hetek óta húzódó kéréséhez, majd ráklikkelt a "Megoldva" gombra.

Szólj hozzá!

Címkék: életmód bioinformatika

Cseppet sem objektíven: Revision2016 1. rész

2016.04.13. 00:45 Travis.CG

Az idei Revision fotelscener szemmel igen impozánsnak tűnt. A kompók sok indulót felvonultattak és a megtekintésük után ki merem jelenteni: ilyennek kell lennie a scene-nek 2016-ban. Vegyük végig az egyes kategóriákat és nézzük, miből csemegézhetünk.

Zenék

A zenéket munka közben hallgattam, ami egyfajta szűrőként működik. Összességében az oldschool zenék jobban bejöttek. Magam is meglepődtem ezen, mert egyes régi gépek csipogását egyszerűen nem bírom elviselni. Pedig még akapella is volt. De ha mégis ki kell emelni egyet, akkor a Mesopotamiat tennem:

A régi gépek zenéi közül az Orch-OR egészen remek volt. C64 vonalon a Club Revision vitte a prímet. Az Electric Donkey Muscles pedig megmutatta számomra, hogy a NES hangja igen kellemes. Eddig ez valahogy elkerülte a figyelmemet.

Grafikák, Fotók

A fotók száma viszonylag alacsony volt, de a szokásos kategóriák képviseltették magukat. Úgy mint természet:

Csak scenerek által értett poénos:

Kevés ruhás nős:

Modern grafikában kevés jó kép volt, de az a kevés kárpótolt mindenért. Példának okáért itt van a második helyezett kép, aminek magyar vonatkozása is van, mert Unreal készítette.

A hozzám hasonló avatatlan szeműeknek javaslom a kompó megtekintését, mert ott az alkotás fázisait is bemutatják, ami például a fenti kép esetében nagyon tanúságos.

Oldschool vonalon nem meglepő módon a gépek tudása erősen befolyásolta a sorrendet. Slayer képe mégis több, mint a színes pixelek összessége. Van benne kompozíció és elég absztrakt, hogy mögöttes tartalmat sugalljon:

Paintover kategória azért volt érdekes számomra, mert felért egy pszichológiai tanulmánnyal. A résztvevők kaptak egy kriksz-krakszot és abból alkottak képet 24 óra alatt. Itt is javaslom a YouTube verzió megtekintését, mert sokkal érdekesebb, mint a végeredmények megtekintése. Éppen ezért nem is emelném ki egyiket sem. A maga nemében az összes tetszett (na jó, a Sharp Eyes tényleg elég egyszerű a többihez képest).

Az ANSI/ASCII képek a maguk limitált lehetőségeivel kihozzák a résztvevőlből a maximális kreatív potenciált. Így láthattunk például egy egész kalóz történetet karakterekbe sűrítve, vagy egy szegeny kiscicát, aki megpróbált elmenni Revisionre.

A procedurális 4k grafikákkal zárnám. Ez egy elég nehéz műfaj, mert nem csak a képnek kell szépnek lennie, de a megjelenítést le is kell programozni. Ebben pedig a Loonies vitte a pálmát. Nekem egy béna monitorom van, de mikor megjelent, azt hittem valami fotót látok. Avatottab szeműek szerint nem éri el a fotorealizmus szintjét, de ők csak irígyek.

Szólj hozzá!

Címkék: demoscene

A valaha készült legjobb demó

2016.04.01. 11:09 Travis.CG

Nem hittem volna, hogy még az én életemben elkészül az a demó, ami az őrületbe kergeti a teljes scene közösséget. A fórumok orrba-szájba csak ezzel vannak tele. Smash a demó megtekintése után úgy döntött, többet nem fog kódolni, csak 3D Studioval készít rendereket. A Cocoon, Still és más neves csapatok letörölték az összes kódot, amit eddig GitHub-ra feltettek. Iq már csak színes négyzeteket pakol egymás mellé:

Szegény ördög még a dátumot is rosszul írta! Döbbenet, mit hoz ki ez az alkotás még a legnagyobbakból is!

A készítől állítólag a legújabb Vulcan API-t használták, amivel a videókártyák teljesítményét új dimenziókba emelték, de úgy, hogy erről még a videokártya gyártók sem álmodtak. Az NVidia és az ILM egymással versengve próbálja elcsábítani a kódert. A zenét 10 másodperces darabokban értékesítik különböző reklámügynökségeknek, mert ha csak egy cég kapja meg a jogokat, akkor az monopóliumnak számítana.

Én eddig kétszer próbáltam megnézni, de mindkét alkalommal már az első négy másodperc elteltével epilepsziás rohamot kaptam. A feleségem annyira aggódott miattam, hogy végül letörölte a gépről a demót és egy harapófogóval elvágta az UTP kábelt, nehogy az éjszaka közepén titokban nekiálljak nézi és valami maradandó bajom legyen.

A megfelelő óvintézkedések közepette belinkeltem a YouTube verziót, de mindenki csak saját felelősségére tekintse meg. Javaslom megtekintés előtt egy pánk gomb alkalmazás letöltését okostelefonra. Vagy legyen jelen egy másik ember, aki füldugóval háttal ül a képernyőnek. Erről a demóról van szó:

Más scenerek így vélekednek az alkotásról.

Szólj hozzá!

Nyulak

2016.03.27. 22:00 Travis.CG

Kellemes Húsvéti Ünnepeket minden olvasómnak.

img_8800.JPG

img_8801.JPG

Szólj hozzá!

SCB 2016 (1. rész)

2016.03.20. 15:45 Travis.CG

Ismét egy konferenciára mentem. A Single Cell Biology egy három napos konferencia volt, ahol az egy sejtes technikáké volt a főszerep. Igen megdöbbentő volt számomra látni, hol tart a biotechnológia és ezek miként formálják át tudásunkat. Immár nem csak az a kérdés, hogy tudunk-e szekvenálni egy sejtből, hanem tudunk-e többféle szeknvenáláshoz is elég mintát izolálni. A mikroszkópoknak már nem jelent gondot, hogy feltérképezzék a sejtek helyzetét egy szövetben, hanem tudjuk-e mindezt élő szöveten végrehajtani.

A céges kiállításokat is végignéztem. Egyrészt, mert olyan eszközöket láttam, ami tíz éve még a tudományos-fantasztikus könyvekben sem fordult volna elő. Kedvencem az a nanocseppes készülék volt, ami a folyadék mintákat ultrahanggal megrezegteti. Ettől nanoliteres cseppek válnak ki és tapadnak egy fejjel lefelé fordított edénybe. A felületi feszültség miatt ott maradnak és PCR-t, szekvenálást vagy egyéb vizsgálatokra alkalmas. Biztos az üzletkötő agyára mentem, mert egyfolytában kérdeztem, hogy ezt vagy azt a lépést hogy csinálják? Kipróbáltam egy mikro manipulátort is. Előtte megkérdeztem, nem tudom-e elrontani. Szerencsére bioinformatikus biztos volt.

Alexander van Oudenaarden: Revealing novel cell types and cell-cell interactions using single-cell transcriptomics
A sejt-sejt kapcsolatok vizsgálata egy konvergencia eredménye, ami egyrészt az új generációs szekvenálási technikák, másrészt az immunokémiai kutatások eredménye. A vizsgálatuk tárgya a csont volt, amit sejtekre szedtek. Ha a sejtek mégis együtt maradtak, akkor közöttük egy nagyon erős interakció lehet. Ezeket utána mikropipettával szétszedték és meghatározták a transzkriptómukat. Meghatározták a transzkriptómok távolságát, ami a gének nagy száma miatt több dimenziós volt, majd két dimenzióra vetítették azt. Az így kapott interakciós térképet tovább vizsgálták és klasztereket kerestek. A kapott hipotéziseket mikroszkóppal és randomizált modellezéssel is ellenőrizték. Az előadás második részében az 5 hidroxycitozin metilációs (5hmc) vizsgálatokról volt szó. A citozin a Dnmt hatására 5 metil citozin lesz. A Tet enzim segítségével alakulhat tovább 5hmc-vé, de passzív módon válhat ismét citozinná. A szekvenáláshoz a sejtet lizálták, glikolizálták, AbaSI-vel emésztették, majd T7 promótert ligáltak rá, amivel a DNS szálirányt is meghatározták. A rendszer specificitása elég jó. Azt vették észre, hogy az utód sejtek öröklik a szülő szálakra specifikus 5hmc mintázatát. Ebből arra következtetnek, hogy az epigenetikus memóriához lehet köze.

Timm Schroeder: Long-term single cell quantification: New tools for old questions
Ebből az előadásból inkább a csoport munkáját ismerhettük meg, mint az eredményeiket. Olyan képfeldolgozó rendszereket fejlesztenek, amelyek segítenek a sejtek populációban betöltött szerepét nyomon követni. Elsődlegesen C++-ban QT-vel és OpenCV-vel dolgoznak. Kiemelte még, mennyire fontos az interdiszciplináris hozzáállás, amiben még a kávéautómata elhelyezése is fontos szerephez jutott. Igyekeznek mindent automatizálni, de elengedhetetlen, hogy egyes lépéseket még emberek hajtsanak végre kézzel. Bemutattak még egy rendszert, ami morfometria alapján az őssejt sorstérképét meghatározza, valamint egy igen impresszív animációt egy lábszár csontról egy sejtes felbontásban, 10 sejttípust színezve egyszerre.

Lacramioara Bintu: Dynamics of Epigenetic Regulation at the Single-Cell Level
A kromatin szabályozása lehetővé teszi, hogy a gén expressziós állapot fennmaradjon a traszkripciós komplexek távozása után is. Ennek az epigenetikus memóriának a jobb megértésére az egy sejtes vizsgálatok a legalkalmasabbak. Dox és Tet mutánsok expressziós változásait követték nyomon mikroszkópos eljárásokkal, hogy meghatározzák a folyamatok dinamikáját. Négy kromatin regulátort is vizsgáltak. Megállapították, hogy az egyes regulátorok más-más hosszúságú memóriát alakítanak ki. A HDAC4 rövidet, a DNMT3B hosszút, míg az EED és a KRAB változó hosszúságút.

Inge Nathke: Placement of daughter cells after mitosis regulates exit from the stem cell niche in intestinal crypts
A bélbolyhok alapját képező őssejtek nem tudni, mi alapján differenciálódnak. Annak eldöntésére, hogy a sejt helyzete fontos szerepet játszik-e ebben a folyamatban, különböző képfeldolgozó módszereket vetettek be: kezdetben F-aktint jelöltek fluoreszcens festékkel, de ez csak síkban ábrázolta a sejteket. Később 2 foton mikroszkópiát használtak, ami már megmutatta a struktúrát, de még mindig halott szövetet vizsgáltak. Így jutottak el az organoid vizsgálatokhoz. Itt a nukleusz mozgását követték nyomon a sejten belül. Azt vették észre, hogy kétféle mitózis van. Az egyiknél mindkét utódsejt tovább osztódik, míg a másiknál csak egy egyik. A kétféle mitózis előfordulásának aránya 1:3. Az APC mutánsok esetén az utódsejtek közel maradnak a szülőkhöz, nehezen mozognak. Azok az utódsejtek, melyek többet mozognak, elhagyják eredeti helyüket és differenciálódhatnak.

Xiaoyan Qian: Studying intratumour heterogeneity by in situ sequencing
A tumor heterogenitása nem csak a tumor fejlődést befolyásolja, de a terápiában is fontos szerepet tölt be. A csoport ezért kidolgozott egy módszert, amivel kis számú gén expressziós változását tudják nyomon követni élő sejtben. A fluoreszcens jelölésen és mikroszkópos nyomon követésen alapuló módszer segít jobban megérteni a sejtek lokalizációja és expressziója közötti összefüggéseket. A módszert használva a tumor populációk is elkülöníthetőek. Ehhez egy ACCENSE nevű sejt klasszifikációs algoritmust is felhasználtak.

Ido Amit: Shaping the blood: Lessons from Chromatin and single cell RNA dynamics
A haematopoetikus őssejtek differenciációja koránt sem olyan egyértelmű, mint ahogy azt az egyetemistáknak magyarázzák és a sejtek leszármazási fáját bizonyos csoportok máshogy definiálják. A csoport ezért egy erősen párhuzamosított egy sejtes RNA-seq-el igyekszik a kérdés végére járni. A szekvenáláshoz robotokat használnak, így érik el a hihetetlen 1000 szekvenálás/nap arányt. Tizenkilenc szubpopulációt azonosítottak és próbálták meghatározni, mi a közös az egyes csoportokban. A sejtfelszíni markerek nem egyértelműen jelzik az egyes csoportokat. A transzkripciós állapot hasonló, de szintén nem azonos a klaszterekkel. A kromatin állapot viszont összevág a transzkripciós eredményekkel. Eredményül egy új mieloid leszármazási elmélet született. Az egyik konklúzió, hogy a kromatin térkép egy sejtes RNA-seq-el kombinálva igen hatékony eredményt ad.

John Marioni: Using single-cell genomics to study early development
A gasztruláció vizsgálata eddig igen nehéz volt, de hála az új egy sejtes szekvenálásoknak ez már könnyebb. Sajnos sok technikai zaj van, ezért a csoport új normalizálási eljáráson is dolgozik. A nagy variabilitást mutató géneket vették tüzetesebben szemügyre. Hierarchikus klaszterezés és dinamikus csoportbontás után 10 gén klasztert sikerült elkülöníteni. Ezen gének expresszióját felhasználva megpróbálták a sejteket is csoportosítani SNE módszerrel. Ezután arra próbáltak rájönni, hogy a klaszterek milyen biológiai hasonlósággal bírnak. Az eredmények elég inkonzisztensek voltak, és én végre láthattam a világ legrondább boxplotjait.

Szólj hozzá!

Címkék: bioinformatika

Point sprite-ok OpenGL-el

2016.03.16. 00:50 Travis.CG

Ha a háromszög túl sok, ha a vonal túl unalmas, ha a jelszavunk: zéró poligon, akkor a pontok segítségével kápráztathatjuk el a nézőket. Már a korai OpenGL verziókban is használhattuk a glBegin(GL_POINTS) hívást, de a pontok koordinátáit kénytelenek voltunk CPU-n számolni.

Ahogy fejlődtek a grafikus kártyák és nőtt az OpenGL verziószám, úgy tudtunk egyre több kódot átpakolni GPU-ra. Most egy olyan technikát akarok bemutatni, ami az összes logikát shaderekből valósítja meg. Miért jó ez? Már korábban is törekedtem arra, hogy a shadereket egyfajta szkript nyelvként használjam és úgy tudjak változtatni a jeleneteken, hogy ne kelljen újra fordítani a kódot. Ez remélhetőleg el fog vezetni egy viszonylag egyszerű demo toolhoz.

Az ötlet nem a sajátom, a vertexshaderart.com az alapja. Nagy vonalakban úgy néz ki, hogy a CPU-n lefoglaljuk a memóriát a csúcsoknak, de nem állítunk be semmit, betöltjük a shadereket, majd kirajzolunk mindent pontként. A koordinátákat a vertex shader határozza meg a csúcsok sorszáma alapján. A fragment shaderrel még játszunk a megjelenítésen, és kész.

Lássuk a kódot! Az ablaknyitástól és egyéb "unalmas" lépésektől most eltekintek. Ha hatalmas komment áradat követeli, akkor beteszem a teljes kódot, de ettől jelenleg nem tartok.

glEnable(GL_TEXTURE_2D);
glEnable(GL_PROGRAM_POINT_SIZE);

glGenVertexArrays(1, &pointsprite);
glBindVertexArray(pointsprite);

GLfloat *spritecoords;
spritecoords = (GLfloat*)malloc(POINTNUM * sizeof(GL_FLOAT));
glGenBuffers(1, &pointsprites_vba);
glBindBuffer(GL_ARRAY_BUFFER, pointsprites_vba);
glBufferData(GL_ARRAY_BUFFER, POINTNUM * sizeof(GL_FLOAT), spritecoords, GL_STATIC_DRAW);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, NULL);
glEnableVertexAttribArray(0);
free(spritecoords);

Létre hozunk egy vertex arrayt, abban egy buffert, lefoglaljuk a memóriát, átmásoljuk a GPU-ra, majd a CPU-n mindent felszabadítunk. Még arra sem vesztegetjuk a drága erőforrásokat, hogy a pointjainknak textúra koordinátát tartsunk fenn. Pedig fogunk textúrázni is! A GL_PROGRAM_POINT_SPRITE bekapcsolása fontos lépés, mert a pontunk méretét is meg akarjuk változtatni a shaderben.

A kirajzolás szintén semmi újat nem tartalmaz:

glUseProgram(textsprite);
glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_2D, index);
GLint loc = glGetUniformLocation(textsprite, "img");
glUniform1i(loc, 0);

glBindVertexArray(pointsprite);
glDrawArrays(GL_POINTS, 0, POINTNUM / 2);

Természetesen további uniform változókat is használhatunk, hogy további érdekes effekteket hozzunk létre. Például átadhatnánk az időt, mint paramétert. A képernyő felbontást, egér pozíciót, stb. Továbbá mellőzöm a shader betöltő kódot is.

Térjünk rá a móka részére! Vertex shaderünk bemeneti változói közül így csak a gl_VertexID-t tudjuk használni. Ez nem más, mint egy egész szám 0-tól POINTNUM-ig (csak, hogy konzekvens legyek a kóddal). Ebből határozhatjuk meg a sprite-ok helyzetét. Például ha van 8000 pontunk, akkor a következő kóddal színusz hullám formájában rajzolhatjuk ki őket:

#version 410

void main(){
   float x = gl_VertexID / 8000.0 - 1.0;
   float y = sin(x) * 200.0);
   vec2 vertex = vec2(x,y);
   gl_Position = vec4(vertex, 0.0, 1.0);
}

Ez elég érdekes, de tudunk ennél jobbat is! Például textúrát húzhatunk rájuk. Egy pontra nem sok értelme van textúrát húzni, de a pontjaink méretét tudjuk változtatni a gl_PointSize változóval. Meglepő módon pixelben kell megadni a méretet, ami (legalábbis nekem) szokatlan, hiszen minden más értéket 0-1 közötti számmal kell definiálni. Ezt a felbontás független kód írásánál érdemes észben tartani.

#version 410

out vec4 FragColor;
uniform sampler2D img;

void main(){
   FragColor = texture(img, vec2(1.0, -1.0) * gl_PointCoord);
}

A fenti fragment shader használatával sprite-jaink mindegyike ugyan azzal a textúrával lesz bevonva. A gl_PointCoord változó kiszámítja nekünk a megfelelő textúra koordinátákat. Azért sok, egyforma alakzat unalmas. Adjunk egyéniséget spritejainknak! Például pozíciótól függően változtassuk a textúrát. Vertex shaderünk egy kicsit átalakul:

#version 410

out vec2 textcoord;

void main(){
  float x = gl_VertexID / 8000.0 - 1.0;
  float y = sin(x) * 200.0);
  vec2 vertex = vec2(x,y);
  textcoord = vertex;
  gl_Position = vec4(vertex, 0.0, 1.0);
}

A fragment shader is módosul, de nem sokat:

#version 410

out vec4 FragColor;
in vec2 textcoord;
uniform sampler2D img;

void main(){
  FragColor = texture(img, vec2(1.0, -1.0) * textcoord);
}

Ez már sokkal érdekesebb hatás. Kísérletezzünk bátran. Próbáljunk ki őrült ötleteket, hátha valamelyik megtetszik.

Szólj hozzá!

Címkék: programozás demoscene opengl

Dragen, feltámad az FPGA

2016.02.29. 23:13 Travis.CG

Még 2008-körül az FPGA tűnt egy igen ígéretes megoldásnak a bioinformatikát uraló feldolgozási krízisnek. Senkinek nem volt elég a CPU adta teljesítmény. Egyre másra jelentek meg a Blastok, Bowtie-ok és más alkalmazások FPGA verziói. Később kiderült, hogy hiába a gyors feldolgozás, a I/O műveletek jelentik a szűk keresztmetszetet és még a legnagyobb fanatikus is kénytelen volt elismerni, hogy azért az FPGA sem jó mindenre.

Nemrég az Edico Genome jött hozzánk előadást tartani, ahol bemutatták a Dragen Cancer Pipeline nevű csodájukat. Habár mindenhol csak a PCI foglalatba illeszthető kártyát lehet látni, az előadás során világossá vált, hogy önmagában ezt nem lehet megvenni, hanem a hozzá adott PC körítés is a csomag része.

A gép mai szemmel nézve elég impozáns jellemzőkkel bír. Tizenkét mag, 128GB memória és sok terabyte tárhely (RAID-be kötött SSD-k). A kártyán is található 32GB dedikált memória. Az előadó szerint ez olyan specifikáció, amit nem kell hardver szinten fejleszteni. Azért egy ilyen mondatot bedobni egy bioinformatikus hallgatóságnak nagy bátorság. De ezért csodáljuk az üzletkötőket.

Az is elhangzott, hogy nem akarnak minden lépést FPGA-ra implementálni. A pipeline egyes részei a CPU-n futnak, és a kártyához adott hardverrel garantálni lehet teljesítményt, míg egy más forrásból beszerzett számítógépnél léphetnek fel gondok. Ez a lépés nekem szimpatikus.

Természetesen láttunk teljesítmény görbéket, de nem is érdemes szót ejteni róluk, úgyis mindenki tudja, mit tartalmaz: ők a legjobbak, pont. Az előadás szerint egy 30x lefedettségű humán genomot 1 óra alatt teljesen feldolgoz. Ez BWA + GATK konbinációval napokban mérhető. Legalábbis az üzletkötő szerint. Biztos sokat futtatta, azért tudja ilyen jól.

Az illesztőprogram egy saját fejlesztésű hash-alapú algoritmus, egyenesen FPGA-ra tervezve. A variációk keresése már CPU-n megy, erősen párhuzamosítva. Van liszenszük a GATK-ra, egyfajta viszonteladókként működik a cég. Ha viszont a megrendelő más programra esküszik, azt is megkaphatja előtelepítve.

Ami viszont nem tetszett, az az üzleti modell. A gépet nem lehet fix összegért megvenni, hanem a feldolgozott adattal arányos pénzt kell fizetni. Ha tehát kijön egy új referencia és az összegyűjtött adatokat újrafuttatják, akkor újra lehet fizetni. Mert ez a másik oka, amiért kell a számítógép. Az FPGA önmagában nem tud hazatelefonálni, hogy megmondja, aznap mennyi adaton rágta magát keresztül.

A rendszer egyébként kellően flexibilis. Egyrészt neten keresztül tudja frissíteni magát, másrészt van lehetőség egyedi pipeline-al kérni a gépet. Nálunk valószínűleg nem rakják ki a bioinformatikusokat, hogy FPGA-s gépekre cseréljék őket, de talán a klinikai diagnosztikában több létjogosultsága lesz.

Szólj hozzá!

Címkék: bioinformatika

Amikor a p-érték arcon köp

2016.02.28. 00:42 Travis.CG

Egy bevezető kísérlet kapcsán egér oesophagus exome szekvenciákat kellett feldolgoznom. Meghatázotam a mutációkat, annotáltam mindegyiket, majd elkezdtem a mintákat különböző módszerekkel csoportosítani, hátha kirajzolódik valami szabályszerűség.

Készítettem egy bináris mátrixot is, ahol a sorok a géneket jelölték, az oszlopok a minták voltak, majd egy egyszerű binomiális teszttel megpróbáltam meghatározni a feldúsulásokat. A szignifikáns találatokat összegyűjtöttem, majd egy ki-a-fasza-gyerek mosollyal átnyújtottam.

A lista tetején ott virított a Ttn gén. A mosoly gyorsan lehervadt az arcomról, mikor ezt a cikket kaptam válaszul. Már az absztraktban arra hívják fel a figyelmet, hogy a Titin gén a legtöbb elemzésben feljön, mert nagyon hosszú és ezért statisztikusan több mutáció található benne. Sajnos a cikkben egy Matlan szkript jelenti a megoldást. Én inkább normalizáltam a találatokat a gének hosszával. A Titin eltűnt, de azért maradtak így is szaglással kapcsolatos gének.

A másik vicces eset egy RNA-seq feldolgozás során jött elő. Mutagénnel kezeltek egereket, majd RNS-t izáláltak bizonyos idő elteltével. A jól bevált TopHat/Cufflinks/cummeRbund mesterhármassal könnyen meg is lehetett határozni azokat a géneket, amelyek expressziója szignifikánsan eltér a kontrollhoz képest. A qPCR validáláshoz olyan géneket akartunk kiválasztani, amelyek szép nagy változást mutatnak, ezért a log fold change alapján sorba rendeztem a táblázatot, és visszaküldtem az eredményt, hogy kedvükre szemezgessenek belőle.

Jött is a válasz, hogy nem tudni miért, de a qPCR-el nem lehet expressziót kimutatni. Ez meg hogy lehet? Rövid keresgélés után meg is találtam a választ. A kontrollban a normalizált expresszió 0.0001, a kezelés hatására felment 0.01-re, ami szép százszoros változás. A statisztikai tesztek teljesen elégedettek voltak, csak épp az egésznek semmi értelme nem volt. Végül kiszűrtem az összes gént, aminek az expressziója 1 alatti minden mintában (elég önkényes, de mivel kevés gént akartak ellenőrizni, szerintem megbocsátható).

Nem olyan nehéz ebbe a hibába esni. Mi sem bizonyítja jobban, hogy az egyik csoportbeszámolón a bioinformatikus mutatta a táblázatokat mindenféle FDR értékekkel. Mikor az egyik vezető kutató firtatni kezdte, hogy milyen furcsa, hogy az egyik gén benne van a listában, amikor csak egy mintából lehet kimutatni, az előadó azzal védekezett, hogy az FDR alacsony, annak jónak kell lenni. 

Én szeretem a p értéket. Sokat segít, ha az adatok el akarnak borítani minket. De nem szabad csak rájuk hagyatkozni. Mindig van valami extra információ, ami támogatja a döntéseket. Használni kell azokat is.

Szólj hozzá!

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

Nem készülődés QB Partyra

2016.02.14. 23:59 Travis.CG

Idén is lesz QB Party. Van szép weboldal és érdekes szabályok. Az egyik például, hogy a készülő demóról semmilyen információ nem kerülhet fel az internetre.

Tehát nem készítek demót. A nem készülő produkciónak nem lesz története, ami kicsit kifejezné a tavalyi évben átélt megpróbáltatásokat. Mivel a költözéssel sok idő elment, ezért az el nem készülő produkcióval nem akarom visszaszerezni az utóbbi időben megcsappanó demós motivációmat.

Ha vissza akarnám szerezni, valószínűleg egy minimalista demót készítenék, ahol igen erősen támaszkodnék az OpenCV-s ismereteimre. Talán még az is megfordulna a fejemben, hogy igen erős absztrakt motívumokkal dolgozzak, mert így a grafikának nem kell tökéletesnek lennie, elég, ha felismerhető. Sokkl nagyobb kreatív szabadságot ad, mintha mindent a néző arcába akarnék tolni.

Mivel nem lesz release, nem kell aggódnom, hogy milyen gépen fejlesszek. Nem kell például Visual Studiot telepíteni a céges laptopra (amire egyébként sincs adminisztatív jogosultságom) és nem kell az egész koncepciót úgy felépíteni, hogy fusson egy Intel GMA platformon. Kár, mert felfedeztem, hogy már itt is támogatott az OpenGL 4. Nem baj, majd máskor. Pedig ha készítenék demót, ki tudnám használni a buszon eltöltött fél órát, amíg elérem a kampuszt.

Jó is, hogy nem csinálok demót, mert a tabletem kameráját kellett volna használni a tartalmak elkészítéséhez. Kellett volna írni egy OpenCV programot, ami egy videót bináris textúrák halmazává alakít. Mivel nem akarnék sok időt fektetni a demóba, talán a TGA formátumot választom, mert azt viszonylag egyszerű kóddal is be lehet olvasni.

Bizonyára lennének hátráltató tényezők. Mivel már régen írtam OpenGL programot, lehet, hogy már az elején problémákba ütköznék. Olyan problémába, mint amilyen a GLFW és a GLEW inicializálásából adódna. Egészen pontosan az inicializálás sorrendjéből. Tegyük fel, írnék egy ilyen kódot (amit természetesen nem teszek meg és nem teszek bele a nem létező demóba):

    glewExperimental = GL_TRUE;
    glfwInit();
    glewInit();
    monitor = glfwGetPrimaryMonitor();
    mode    = glfwGetVideoMode(monitor);
   
    window = glfwCreateWindow(mode->width, mode->height, "Compofiller", monitor, NULL);

    if (window) {
        glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
        glfwMakeContextCurrent(window);
        glfwSetKeyCallback(window, key);
        Demo *demo = new Demo("", mode->width, mode->height);
        while (!glfwWindowShouldClose(window)) {
            demo->update();
            glfwSwapBuffers(window);
            glfwPollEvents();
        }
        glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
        delete demo;
    }

    glfwDestroyWindow(window);
    glfwTerminate();

A kód hiba nélkül lefordulna, de az újabb OpenGL hívásoknál, mint amilyen a glGenVertexArray, access violationnal elszállna. Feltételezem sok időt töltenék egy ilyen hiba felderítésével. Reménytelenül olvasnám az OpenGL fórumokat, míg végül kiderülne számomra is, hogy a glewInit() függvényt glfwMakeContextCurrent() után kellene meghívni, hogy minden rendben fusson.

Többek között ezektől is megóvom magamat azzal, hogy nem fecsérlem az időmet arra, hogy QB Partyra írjak demót.

Szólj hozzá!

Címkék: demoscene

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