HTML

Az élet kódjai

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

Friss topikok

  • grungi: KJK rulez! :) (2017.07.03. 22:47) Kalandod itt véget ér...
  • Anakin Solo (a.k.a. Ape): Jó öreg Winamp... mai napig azt használom, persza a 2.95 verziót :D Az még szinte tökéletes volt. (2016.11.09. 15:54) Túlprogramozás
  • Szedlák Ádám: Ha nem is egy hirdetést, de egy jó keresztrejtvényt! www.telegraph.co.uk/history/world-war-two/111... (2016.10.20. 11:34) Rejtett bioinformatikusok
  • Kalle: @Travis.CG: Jogos a felvetés, itt egy undorító c-szerű saját nyelven fejlesztenek, aminek köszönhe... (2016.08.05. 10:40) Ez itt a reklám helye
  • Travis.CG: Ez egy teljesen kitalált történet. Bármi kapcsolata a Virgin Mediaval vagy a BT-vel csak a paranoi... (2015.11.23. 00:11) Internet

Cseppet sem objektíven: Function 2017

2017.09.18. 21:56 Travis.CG

Az idei Function is kimaradt. Jó lett volna eljutni, de mégsem sikerült. A releaseket viszont megnéztem. Lássuk mit kapott az, aki ellátogatott a partyra.

Fotó

A fotó kompó kifejezetten rossz volt idén. A legtöbb képnek az ég világon semmi értelme nem volt. Szerencsére azért akadtak, akik komolyabban vették fényképezést, kiemelkedő alkotás mégsem született.

Grafika

A grafikáktól sem voltam hanyatt esve. A dobogósok persze egy laza csukló mozdulattal nyertek, de a munkásságukat ismerve ők tudnak ennél jobbat is. Úgy tűnt számomra, hogy rutinból nyomták. Azért álljon itt Unreal kézi rajzos képe:

Zene

Ha nem számoljuk a demók zenéit külön beadva, akkor teljesen átlagos zene kompót kapunk. Kellően sokféle zene volt, amitől nem volt unalmas végighallgatni, de egyik sem dobogtatta meg a szívemet.

Wild

Ettől a ponttól kezdve mászunk ki a gödörből. Először egy igen furcsa videóról beszélnék, ez pedig a Vörös Szaturnusz megnevezhetetlen alkotása (Trityiputty, de csak a Ctrl-C és V segítségével tudtam leírni). Csodálom, hogy a videó elkészült. Miért nem kérdezte meg senki az alkotókat, hogy mit keresnek éjnek évadján baltával a kezükben egy repülőtér közelében? A gázálarcról nem is beszélve. Talán valaki el is indult, hogy megkérdezze, de a produkciót látva sóbálvánnyá dermedt.

Az igazán nagy dobás a Singular Crew 4 darab C64 összteljesítményét használó Quad Core volt. Ennek az alkotásnak az igazi értéke nem a látványban, hanem a részletekben rejlik, amiről nekem elég kevés információm van. Elég csak végiggondolni, mi kell négy gép összekötéséhez, amiket alapvetően nem hálózatra terveztek. Na, ugye!

Demo

A demók elég vérszegények voltak. Az utolsó helyezett demót annyira untam, hogy még az Esc gombot is lusta voltam megnyomni. Inkább kimentem a konyhába inni egyet. Közben a feleségem is elment vásárolni, őt is kikísértem. Mikor visszaértem, a demó még mindig ment! Fényképekre valami Parkinson-shadert raktak, amitől mindegyik remegett.

Slyspy Rainbow Clash sorozata újabb állomáshoz érkezett, de mostani produkciója csak a látható fény spektrumának 60%-át használta, szemben a korábbi 90%-al. A The Adjective mindig is egy avantgárd utat járt, de amit most készítettek, az mintha direkt arra ment volna ki, hogy elüldözze a nézőt vagy szándékosan sötétbe tartsa. Eddigi munkáikban mindig volt valami halvány narratíva. Itt teljesen elhagyták azt. Semmi nem elég hangsúlyos, pedig néhány textúrán szöveg van és egyszer mintha egy ember körvonalai bontakoznának ki. De aztán Mégse. Igazából a Nafplio jobban tetszett, mert az olyan demó szerű volt.

Ami viszont megmentette a kompót a totál kudarctól, az a poén faktor. A Super First Demo 2 például remekül bemutatja, hogyan reagálnak a veterán scenerek egy-egy újonc próbálkozásaira. Bár meg kell hagyni, Gargaj ennyire nem szőrös szívű.

Ha létezik burleszk a demók között, akkor a Foo2 Island az! Eredeti vason még viccesebb, mert nálam a targonca két kereke kitörött és csonkán teljesítette feladatát. (A YouTube verzióban strapabíróbb.)

256b intró

Nem tudom, hogy csinálják, de a 256 byte intrók egyre színvonalasabbak. Ha az első tíz alkotás bármelyike nyert volna, nem éreztem volna csalódást. Jó volt látni mindegyiket. Nagyon ötletes és változatos produkciók voltak. Túl sokat nem lehet írni róluk, meg kell nézni mindet:

Összegzés

A beadott releasek idén gyengébbek voltak, mint amit egy európai szintű demoparty nyújtani szokott. Nem tudom, ennek mi volt az oka, de remélem, hogy ez nem egy trend kezdete.

Szólj hozzá!

Címkék: demoscene

Kalandod most már tényleg véget ér

2017.09.10. 00:26 Travis.CG

Ismét Angliába készültem. Egyrészt le kellett adnom a nyakamon maradt lakást, ahol a bérleti szerződést nem lehetett felmondani, másrészt közeledett a távmunka próbaidejének a vége.

Kicsit olyan volt, mintha fedett ügynök lennék. Volt angol telefon, angol lakáskulcs, de a táskám egy másik rekeszében magyar telefon és magyar lakáskulcs.

Nem indult zökkenő mentesen az út. Eleve késve indult a gép és mire megérkezett, már egyetlen vonat sem közlekedett. Kénytelen voltam taxival menni. Az angliai otthonunk, illetve ex-otthonunk nagyon üres volt bútorok nélkül, de már nem számított. Úgyis egy hétig leszek csak itt.

Angliában nagyon kevés munkaszüneti nap van, de nekem sikerült úgy mennem, hogy az egyik belecsúszott az ott tartózkodásba. Legalább lesz egy nap pihenő, mielőtt meglátogatom a Sangert.

A Campus busz a szokásos útvonalon, szokásos időben jött, de alig láttam ismerős arcot rajta. Ismét megállapítottam, milyen gyorsan cserélődnek az emberek. Az épületbe már nem is tudtam bemenni. A kártya nem működött. Be kell surranni. Mint egy kémnek. Már csak egy csokornyakkendőbe rejtett fényképező gép hiányzott.

Megvártam, míg a kávéra megindulnak az emberek, majd, mielőtt becsukódott volna az ajtó, elkaptam azt. Bent vagyok! A laborban mindenki nagyon kedves volt, de a főnököt két hete nem látta senki. Ennek ellenére a munka feszített tempóban folyt. Én is leültem és nekiláttam dolgozni. Később elintéztem magamnak egy ideiglenes kártyát, úgyhogy nem kellett a 47-es ügynököt megszégyenítő technikákhoz folyamodni.

Másnap a lakással kapcsolatos ügyeket intéztem és vonattal mentem be. Az északi kapunál akartam bemenni, ahol csak kártyával lehet belépni. Itt derült ki, hogy az ideiglenes kártya csak egy napig működik. Szerencsére a természetvédelmi terült irányából be lehet slisszolni. Akár a Nyúllábat is ellophatnám.

Aznap volt egy megbeszélés is a szerződésemről, ahová a HR-es kisasszony mellett még két másik ember is eljött. Rossz előérzetem volt. Egy sima meghosszabbításhoz elég lenne csak a HR is. A balsejtelmem be is igazolódott. Nem kaptam szerződés hosszabbítást.

Mikor elmeséltem a munkatársaimnak, mi történt, ők azt mondták, nem tudtak semmit erről. Azért a hátralévő két napban titokban összedobtak egy búcsú partit. Kaptam egy Cambridge pólót. Majd abban fogok menőzni a demópartikon.

A búcsú után mindenki gőzerővel folytatta a munkát. Látszólag a gépezet nem fog megakadni. Mikor eljöttem Magyarországról, még hónapok múlva is kaptam leveleket, hogy ez vagy az a fájl hol van. Az egyik levélre nem válaszoltam elég gyorsan, mire valami olyasmit vágtak a fejemhez, hogy majd ha innen kell eljönnöm, akkor is ilyen hozzáállásom lesz-e.

Itt nincsenek levelek. Nincsenek elvarratlan szálak. Ha a paraszt legurul a sakktábláról, majd egy másik átveszi a helyét. Senki sem pótolhatatlan. Én meg ismét munkanélküli vagyok.

Szólj hozzá!

Címkék: életmód

Távmunka praktikák

2017.09.04. 00:33 Travis.CG

Eleinte féltem a távmunkától, mert úgy éreztem, a magánéletem és a munka végérvényesen összekeveredik és egy olyan masszát alkot, amiből a végén se nem munka, se nem magánélet nem lesz. A veszély valós, de néhány egyszerű trükkel az ember képes produktív lenni otthon is.

Szeparáció

separation.jpg

Ez talán a legfontosabb az összes közül. A szeparáció lehet térbeli (bemegyek a dolgozószobámba) vagy időbeli (mostantól délután ötig ne szólj hozzám). Nálam az időbeli szeparáció nem megoldható, mert ha a lányom meglátja, hogy a gép előtt ülök, rögtön rám szól: Apa, ne laptopozz! Kíváncsi vagyok, mit fog mondani, ha ugyan ezt kérem tőle tinédzser korában.

A térbeli szeparációt választottam, de azt is a lakáson kívül. Elmentem a könyvtárba. Jobb a net, mint sok internet kávézóban és ingyen van. Sajnos a nyári nyitvatartás nem kedvezett nekem, délután egykor el kellett hagyni az olvasó termet. Ezután kimentem a főtérre, mert ott is van ingyen wi-fi. Amikor jó volt az idő, akkor nem volt gond, de egyik nap olyan meleg volt, hogy a laptop hűtője nem tudott megbírkózni feladatával. Az egér akadozva mozgott. Nagyon érdekes volt.

Koncentráció

concentration.jpg

Hatékonyan akkor lehet dolgozni, ha a munkára koncentrálunk. Nem szabad YouTube-ot nézni, blogot írni, bevásárolni.

Ilyen szempontból a főtér nem volt ideális választás. Először is, minden féle ember dumált hozzám. A fiatal hittérítők, akik Istenhez akartak vezetni, koldusok, akik ocsmányságokat vágtak a fejemhez, ha nem adtam elég pénzt nekik. (Ilyenkor vissza szoktam kérni tőlük a pénzt, mondván, én ennyit is értékelek.). De szimplán már azért is beszóltak, hogy miért nem dolgozom. (Tudjátok, olyan félhangos beszólás, nem is neked intézve, de elég hangosan, hogy halld.) Ez nem volt gyakori, de előfordul.

A koncentrációban segíthetnek bizonyos böngésző bővítmények is. Nekem az volt a legjobb, hogy a Sangeres laptopot használtam VPN-en keresztül, tehát a Mindenható Rendszergazdák látják minden eltévelyedésemet. Más esetben egy asztalra helyezett kép a főnökről is megteszi.

Felszerelés

equipment.jpg

A melóhoz melós cucc kell. Ez egyrészt segít a szeparálásban, másrészt a koncentrációban. Ha a munkafelszerelés van nálam, akkor dolgozni akarok. A felszerelésnek pedig hibamentesnek kell lennie. Amíg a saját gépemen egy Slackware Linux van, ahol kézzel kell elindítani a grafikus felületet és egy olyan egér csatlakozik hozzá, ahol a bal gomb elég gyakran kihagy (de átállítottam bal kezesre, hogy ne okozzon gondot), addig ez megengedhetetlen a munkára használt gépen. Ott Kubuntu van és Windows. A munkára kell koncentrálni nem a felszerelésre.

Kapcsolat

connection.jpg

Senki nem dolgozik egyedül, mindig vannak munkatársak, akikkel együtt kell működni. A velük való kapcsolattartás nélkülözhetetlen. Ez első sorban az interneten keresztül valósul meg, a stabil kapcsolat elengedhetetlen.

Redundancia

ateam.png

Mi nem az A-csapat vagyunk, nekünk kell a B-terv. Ha elmegy a net, a főnöködet nem fogja érdekelni, hogy miért nem dolgozol. Nekem konkrétan a villany ment el az egyik vihar után. A laptop három órán keresztül bírta, de aztán áramért kiáltott. Szerencsére már évekkel ezelőtt vettem egy szünetmentes tápegységet és ezzel további két órát tudtam dolgozni. Utána már volt áram megint.

Ha ezt a pár dolgot szem előtt tartjuk, az otthonunkban ugyan olyan hatékonyak lehetünk, mint a munkahelyen.

Szólj hozzá!

Címkék: életmód

Azok a fránya paraméterek

2017.08.20. 23:23 Travis.CG

A paraméter miatt az alignment elveszett,
Az alignment miatt az ismétlés elveszett,
Az ismétlés miatt a kísérlet elveszett,
A kísérlet miatt a cikk elveszett,
A cikk miatt a kutatócsoport elveszett,
Máskor gondosan válaszd meg a paramétered!

Szerencsére a való életben nem ilyen sarkallatos a helyzet, de a paraméter választás sok mindent meghatároz. Ez különösen igaz azokra a paraméterekre, amelyeket a felhasználó be sem állíthat. Például olyan népszerű programokban, mint a MACS2.

A történet egy Chip-seq kísérlettel kezdődött. Mivel a Sangerben a rák genomikai csoportok nem sűrűn szekvenálnak chip-seq-et, a teljes pipeline-tt mellőznöm kellett, amit nem is bántam. Az illesztést minden mintára BWA-mem-el végeztem, ezért elég váratlanul ért, mikor az alignmenten futtatott MACS2 egyetlen egy fájlnál azt jelezte, hogy a BAM fájl érvénytelen.

Azért tudnak furcsa dolgok történni az LFS-ben (ez a közös tárterület, amit minden node elér), főleg ha több szál akarja írni ugyan azt a fájlt, vagy a fejlesztők épp frissítettek a kliensen, amiben maradt egy túlcsordulás hiba vagy időtúllépés keletkezett. Ugyancsak meglepő dolgokat képes produkálni egy több száz nodos szuperszámítógép is. Az egyik gép kiesik, nem tudja olvasni a megosztott fájlrendszert. Mindez rengeteg teret ad Bitmumusnak, hogy kiélje magát.

Az ellenőrzés viszont azt mutatta, hogy a BAM fájl teljesen korrekt, olvasható, a szükséges elemek benne voltak. Gyorsan megnéztem, találkozott-e már más is hasonló problémával, de egyik eset sem illett az én esetemre.

A gyors kacsás keresés viszont kiadta a MACS2 forráskódját, ahol a hiba keletkezett. Elkezdtem böngészni a kódot egyszerűen weben keresztül, amitől olyan érzésem lett, mint a koca dohányosnak, aki nem tüdőzi le a füstöt. Ég a cigi, ég a cigi, de hiányzik az érzés.

A hiba oka viszont megvolt. A kód beolvas 10 readet minden BAM fájlnál és az alapján kiszámolja, mennyi a readek távolsága a fragmenten. Ha az első 10 read értékelhetetlen, mert más kromoszómán vannak, 0 a távolságuk, stb. A program dob egy kivételt, hogy érvénytelen a BAM fájl. A tíz read vizsgálat pedig bele van égetve a rendszerbe.

Gyorsan megnéztem a BAM fájlomat. Valóban, értékelhető read a 30. sortól volt.

Először megnéztem, explicite be tudom-e állítani a fragment méretet. Igen, be lehet a --extsize kapcsolóval, de a BAM ellenérzés továbbra is lefut. Eljátszottam a gondolattal, hogy fordítok egy MACS2-t, ahol átírom a kérdéses sort 100-ra, de ez is csak félmegoldás, arról nem is beszélve, hogy ez további problémák forrása lehet, amire nem is gondoltam.

Ehelyett kitöröltem az első 29 BAM rekordot. A program varázslatos módon lefutott. Az ismétlés mindenképp megmenekült.

Szólj hozzá!

Címkék: bioinformatika

Ágyrács

2017.08.13. 16:47 Travis.CG

Ahogy gyermekem növekszik, úgy változnak az igényei is. Mióta lecseréltük a kiságyat heverőre, az átmeneti időszakban, amíg megtanulja, hogy ne essen le az ágyról, szükség volt valami védelemre.

Angliában, ahol az ágyak és a matracok két külön entitást képeznek, lehet kapni egy egyszerű eszközt, amit az ágy és a matrac közé kell bedugni. Itthon is kapni hasonló felszerelést, de egyik sem illeszthető heverőre, mert nem lehet megoldani a rögzítést, ha az ágy felnyitható.

Szerintem két székkel is simán boldogultunk volna, de egy túlvédő anyának, akit még a családja is támogat különféle rémtörténetekkel, ezt nehéz elmagyarázni. Helyette szükség van egy asztalosra vagy más mester emberre, akik majd megcsinálják.

Mikor jeleztem, hogy én is szívesen megcsinálnám és talán olcsóbb is lenne, csupán megvető megjegyzéseket kaptam és indokokat, miért is vagyok képtelen néhány fát összecsavarozni. Igen, ilyen egy jó, támogató család. Többször hallani, hogy a piramisokat képtelenség felépíteni az akkori technológiával. Ez is biztos hasonló mentalitású feleségekől származik. Mert ha valami nincs az IKEA-ban, akkor az vagy nem létezik vagy lehetetlen előállítani egyszerű halandónak.

Mint azt sejthetitek, ilyen könnyen nem adtam meg magamat. Mikor egy hétvégén egyedül maradtam, elmentem faanyagot vásárolni. Két darab két méteres léccel és két L alakú vassal tértem haza. Az egesz került talán 3000Ft-ba. A korábbi felújításokból marad még laminált parketta otthon, azt is felhasználtam.

A terv az volt, hogy készítek egy ágy alá csúsztatható korlátot. A koncepció megegyezett a matrac alá illeszthető változattal, csak ez magasabb volt.

agyracs1.jpg

Már az összeszerelés során láttam, hogy az eredmény nem lesz jó. A csavarok menték a lécek elfordultak. A parkettára való illesztés után pedig az egész láb rész az L alakú fém mentén nagyon kicsit rugózott. De ami csak egy kis kilengés volt a lábnál, a korlát tetejénél 5 cm-re növekedett. Egy másik probléma magával a parkettával volt. Ha csak kicsi erőhatás érte, szép lassan kicsúszott az ágy alól.

Ez nem lesz jó. A feleségem bele fog kötni a stabilitásába és még igaza is lesz. Széttörni nem volt erőm, így a tákolmányt a pince egy eldugott zugába száműztem. Nem is szóltam róla senkinek.

A kudarc eléggé frusztrált. Nem hiszem el, hogy ne lehetne ezt az elég egyszerű feladatot megoldani! Aztán rájöttem, hogy semmi nem akadályoz meg abban, hogy építsek egy újat. Most már tudom az összes gyenge pontot, csak annyit kell tennem, hogy kiküszöbölöm azokat.

Már csak egyetlen probléma volt: nem volt több magányos hétvége. A következő műveletetbe a feleségemet is be kellett vonni.

Mikor legközelebb szóba került az ágyrács, megint előhozakodtam, hogy én is megcsinálhatnám. Megint jöttek a szokásos érvek, hogy úgysem tudom elkészíteni. Ekkor elővettem a tákolmányt.

- Nézd, építettem egy prototípust. Ez nem jó, de ha vastagabb fát használnák, megerősítenénk ott, meg ott, akkor jó lenne.

- Vastagabb fa kell.

- Gyere el velem és válaszd ki, melyik lenne jó.

Innentől sínen volt a projekt. A feleségem kiválasztott egy 5x3-as gerendát, én összeszedtem a vastagabb vasakat, választottunk bútor lakkot, majd az egészet hazavittük. A projekt összköltsége így háromszorosára ugrott, ha a prototípust nem számítom, de nem bántam.

Talpnak a laminált parketta helyett lambériát választottam, mert a pincében fellelhető hulladák fák közül ez tűnt a legmerevebbnek. Az illesztési pontokat epoxi gyantával kentem be, majd szépen lelakkoztam bútorlakkal. A talp részre csúszásgátló gumikat ragasztottam.

agyracs2.jpg

A végeredmény sokkal jobb lett, mint a prototípus. Olyan erős volt, hogy még engem is kibírt. Igaz, amikor teljes erővel nekifeszültem, recsegett itt-ott. Ha harmadszorra csinálnám meg, akkor nem csak egy csavarral rögzíteném a darabokat, mert ahogy a képen is látszik, az epoxi gyanta ellenére egy kicsit elfordulnak a fák az illesztések mentén. A gyakorlatban ez nem olyan zavaró, mert az ágy alá csúsztatva nem tud elfordulni, de a végeredmény precízebb lenne.

Szólj hozzá!

Címkék: barkácsolás

Majdnem mindent az RNA-seq-ről (6. rész)

2017.08.06. 06:43 Travis.CG

A normalizálás után el kell döntenünk, hogy a gének expressziós különbségei közül melyek szignifikánsak és melyek tulajdoníthatóak csupán a véletlen művének. Ebben segít a differenciál expresszió.

Alapvetően kétféle modell létezik. Az egyik még a microarray időkből származik és lineáris regresszión alapul. A másik módszer a negatív binomiális regressziót használja. Korábban bemutattam mindkettőt és bár elég egyszerű példát használtam, egy dolgot igyekeztem kiemelni: mindkét módszer jó eredményt adhat, de érzékenységük különböző.

A szakirodalomban többször összehasonlították a két módszert és úgy tűnik a negatív binomiális regresszió pontosabb eredményt ad.

De mint az összes többi lépésnél, itt sem technikát, hanem programcsomagot választunk, amelyek képességeikben eltérnek. A leglényegesebb kérdés, hogyan tudjuk a különböző összehasonlítandó csoportokat definiálni? A differenciál expresszió meghatározásakor két csoportot jelölünk ki. Az egyik kontroll, amihez képest látni szeretnénk a változást, a másik a kezelés, ami hordozza a változást. A két csoport elnevezése a kísérlet szempontjából lényeges csak. Matematikailag ha felcseréljük őket, csupán a változás előjele változik, nagysága nem.

Az eredmény legtöbb esetben egy táblázat, ahol megtaláljuk a gének/transzkriptek nevét, használt statisztikai teszt értékeit, p-értékét és a változás mértékét (fold change). Ez utóbbit általában logaritmikus skálán.

Egyszerűbb kísérleti elrendezésnél eleve csak két csoport van, de amint a faktorok (összehasonlítási szempontok) száma növekszik, úgy lesz egyre bonyolultabb a dolgunk.

Rengeteg szoftver implementáció létezik, én most csak azokat szedtem össze, amelyeket az utóbbi két évben használtam.

Limma

Ez a csomag eredetileg microarray kiértékelésre készült. A csoportok definiálására egy matrixot kell létrehozni, ahol a sorok a minták, az oszlopok a faktorok. Ha a minta az adott kategóriába beletartozik, a cellába egy 1 kerül, ellenkező esetben 0. Az összehasonlításokat egy másik mátrix, az úgynevezett constrast mátrix definiálja. Itt megadhatjuk az összes párt. Az utolsó lépésben, ahol az eredményeket íratjuk ki (topTable), a coef paraméterrel mondjuk meg, melyik összehasonlításból szeretnénk táblázatot készíteni.

header <- c(rep("case1", 3), rep("case2", 3), rep("control", 3))
design <- model.matrix(~0 + factor(header))
colnames(design) <- levels(factor(header))
fit <- lmFit(norm, design)
contrasts <- makeContrasts(case1 - control, case2 - control, levels = design)
fit <- contrasts.fit(fit, contrasts)
fit <- eBayes(fit)
topTable(fit, coef = 1)

DESeq2

A DESeq2 egy rendkívül elterjedt program. Az általa használt negatív binomiális regresszió igen érzékeny. A használni kívánt modell mátrix felépítése eltér a Limmánál bemutatotttól. Az oszlopok különböző kategóriák lehetnek és a felvehető értékek egy kategorikus változóban vannak. Az összetartozó minták azonos értéket kapnak. A sorok továbbra is a minták. A példa kódban ez a conditions nevű változó.

raw <- as.matrix(read.table("matrix.tsv", check.names = F, sep = "\t"))
conditions <- data.frame("Day" = c(rep("D5", 3), rep("D7", 3), rep("D9", 3)))
rownames(conditions) <- colnames(raw)
des <- DESeqDataSetFromMatrix(raw,colData = conditions, design = ~Day)
des <- DESeq(des)
result1 <- results(des, contrast=c("Day", "D5", "D7"))
result2 <- results(des, contrast=c("Day", "D5", "D9"))

A program egyszerre csak egy oszlop alapján képes elkészíteni a modellt, ha tehát több faktort kell összehasonlítani, mindegyiket szerepeltetni kell az adott oszlopban. A fenti példánál maradva, ha a Day faktor mellé felveszünk egy Tissue-t is és szeretnénk a szöveteket különböző időpillanatban összehasonlítani, akkor a következő módszert használhatjuk:

cond2 <- data.frame("DayAndTissue" = c(rep("D5Blood", 3), rep("D5Bone", 3), rep("D7Blood", 3), rep("D7Bone")))

Ballgown

A Ballgown a cummeRBund leváltására tervezett program sajnos mind funkcionalitásban, mind stabilitásban elmarad a nagy elődtől. Frissítés is csak ritkán jön hozzá. A program szó nélkül olvassa a Stringtie kimenetet, más szoftverből származó adatoknál hibák felléphetnek. Csak két mintát tud összehasonlítani, többet lehetetlen kívánni tőle. Bár a dokumentáció említi, hogy saját modell mátrixot is lehet beadni neki, tudtommal ez még a jövő zenéje, nincs implementálva. A Limmához hasonlóan lineáris modellen alapul.

conditions <- read.table("conditions.tsv", check.names = F, sep = "\t")
bg <- ballgown(dataDir = "ballgown/", samplePattern = "MR", bamfiles = "ballgown", meas = "all", pData=conditions)
res <- stattest(bg, meas = "FPKM", covariate = "treatment", feature = "gene")

M3Drop

Egy sejtes RNA-seq esetén sokkal nehezebb a differenciálódó gének meghatározása. Az egyik lehetséges implementáció az M3Drop, ami Michaelis-Menten kinetikát alkalmaz annak meghatározására, hogy melyik gének expresszálódnak. A pontosságáról nehéz véleményt alkotnom, mert egy igen zajos adatszettet elemeztem csak vele. A legszoktalanabb tulajdonsága, hogy faktorok definiálása nélkül állapítja meg, mely gének expressziós változása szignifikáns. Ez viszont nagyon hasznos egy sejtes vizsgálatoknál, ahol a begyűjtött sejtek különböző fejlődési fázisban vannak és sok esetben semmilyen információnk nincs arra nézve, melyik minta hova tartozik.

raw <- as.matrix(read.table("count.tsv"))
norm <- M3DropCleanData(raw, is.count = T, min_detected_genes = 2000)
de_genes <- M3DropDifferentialExpression(norm$data, mt_method="fdr", mt_threshold=0.05)
sampleclust <- M3DropGetHeatmapCellClusters(heatm, k = 2)
marker_genes <- M3DropGetMarkers(norm$data, sampleclust)

SCDE

A másik egy sejtes adatok feldolgozására kifejlesztett program, az SCDE. Mivel a korábban említett zajos adatot dolgoztam fel vele, ennek pontosságáról sincs információm, de sokkal konzervatívabb az M3Drop-nál. Történetesen egyetlen gént sem kaptam vele eredményül. A másik szokatlan dolog vele kapcsolatban, hogy míg a legtöbb program kimenetében p-érték, log2 fold change és más megszokott elemek vannak, az SCDE z-score-t, maximum likelihoodot és más egyéb értéket tartalmaz. A fórumot böngeszve persze megtalálhatjuk az átváltáshoz szükséges összefüggéseket.

raw <- as.matrix(read.table("count.tsv"))
gr <- c(rep("control", 3), rep("condition1", 3), rep("condition2", 3))
names(gr) <- colnames(raw)
cc <- clean.counts(raw, min.lib.size = 2000, min.reads = 5, min.detected = 5)
error.model <- scde.error.models(cc, groups = gr, n.core = 1, threshold.segmentation = T, save.crossfit.plots = T, save.model.plots = T, verbose = 0)
prior <- scde.expression.prior(models = error.model, counts = cc, length.out = 400, show.plot = T)
diff <- scde.expression.difference(error.model, cc, prior, groups = gr, n.randomizations = 200, n.cores = 1, verbose = 0)

Zárszó

A differenciál expresszió nagyszerű módszer, de ha nem ismerjük pontosan a kísérlet hátterét, nagyon furcsa eredményeket is kaphatunk. Egyszer például olyan adatokkal dolgoztam, ahol az UV hatását vizsgálták egérre. Két csoport volt: Az első csoportot kis dózissal sugározták be, a másik csoportot nagy dózissal. Természetesen mindkét csoportnak volt sugárzás nélküli kontroll verziója is. Először mindkét csoportot a saját kontrolljával hasonlítottam össze, majd végeztem egy második vizsgálatot is, ahol az összes kontroll egy csoportban volt, hiszen a besugárzás nélküli állatok között minimális különbséget vártunk. Ennek ellenére drasztikus eltérés volt a két eredmény között.

Egy sejtes mintáknál még jobban kell figyelni. Hiába definiálunk csoportokat, minden egyes sejt a sejtciklus másik állapotában lesz. Ha szöveti differenciációt vizsgálunk, akkor a sejtek a feljődés különböző szakaszaiban lesznek. A szekvenálás előkészítésénél a kezdeti DNS mennyiségétől függően bizonyos gének hiányozhtnak. A káosz nem elég kifejező szó arra, amit kaphatunk.

Szólj hozzá!

Címkék: bioinformatika

QT + OpenCV

2017.07.24. 00:05 Travis.CG

Az OpenCV remek képelemző API, de a képeket meg is kell jeleníteni, sőt az sem nagy elvárás, hogy interaktívan változtassuk az elemzés során alkalmazott paramétereket. Szükség van tehát egy grafikus könyvtárra, ami biztosítja számunkra az elemeket. A highgui.h fejléc állomány biztosít számunkra egy igen limitált kereszt platformos elemgyűjteményt, de ha komoly alkalmazásokat akarunk fejleszteni, akkor sokkal több grafikai elemre lesz szükségünk.

Itt jön képbe a QT, ami egy remek kereszt platformos GUI keretrendszer. Jó lenne a kettőt együtt használni.

Alapvetően, ha mindkét könyvtárat linkeljük alkalmazásunkhoz, már használhatjuk is őket. Például készítünk egy ablakot, menükkel, majd a kép megjelenítésnél átváltunk a highgui-ra és azt használjuk. A módszer működik, nagyon ronda és kényelmetlen. Jobb lenne a két API-t közelebb hozni egymáshoz.

Alapvetően két olyan terület van, ahol adatokat kell átadni egyik könyvtárból a másikba. Az egyik a szöveges adatok, másik a képi információk.

Sztringek

Mint minden valamire való C++ könyvtárnak, úgy a QT-nek is és az OpenCV-nek is saját sztring osztálya van és egyik sem kompatibilis a másikkal. A QT QString osztályából könnyen csinálhatunk cv::string-et a következő módon:

void load(QString filename){
   Mat raw = imread(filename.toStdString());
}

Képek

Az OpenCV alapvetően a cv::Mat osztályt használja a képek tárolására. QT esetén több, különböző osztály tárolhat képet, attól függően, mi a célunk. Ha rajzolni akarunk, a QGraphicsScene osztályt használhatjuk. Ez csupán egy felület, ahová rajzolhatunk. Ha meg is akarjuk jeleníteni, szükségünk van egy felhasználói felületre is. Ez a QGraphicsView. Az OpenCV viszont csak bitképekkel dolgozik, ehhez az adatstruktúrához a QImage áll legközelebb.

Tehát ha az alkalmazásunk meg akarja jeleníteni a képeket, a következőt kell tennünk: Az OpenCV Mat osztályából a byte adatot át kell másolnunk egy QImage-be, amit elhelyezünk egy QGraphicsScene-ben, amit megjelenítünk a QGraphicsView-val. Lássuk az implementációt!

Size s = raw.size();
QImage qtimage(raw.data, s.width, s.height, QImage::Format_ARGB32);

Az adat formátuma a legkényesebb lépés. Ha rosszul választjuk meg, jó esetben hibás színeket kapunk, rossz esetben lefagy az alkalmazás. Sajnos nem minden OpenCV képformátumhoz találunk QT megfelelőt. A legkevesebb probléma a szürke árnyalatos képeknél van, azokat QImage::Format_Grayscale8 opcióval használhatjuk.

Van még egy rossz hírem. QImage nem adható QGraphicsScene-hez. Szükség van egy közvetítő osztályra a QPixmap személyében:

QGraphicsScene scene;
scene.addPixmap(QPixmap::fromImage(qtimage));

Végezetül jöhet a megjelenítés:

ui->graphicsView->setScene(&scene);
ui->graphicsView->show();

A neten található más megoldások byte-onként másolják az adatot, ami jó megoldás lehet, ha nem támogatott képformátumot használunk. Ellenkező esetben a fenti megoldás gyorsabb eredményt ad.

Szólj hozzá!

Címkék: programozás opencv

Újra itthon

2017.07.09. 23:34 Travis.CG

Sokan kérdezték tőle, milyen érzés újra itthon lenni. Többnyire röviden válaszoltam nekik, mert nem tudom összefoglalni egyszerűen.

Először is, jó újra túró rudit enni. És az is jó, hogy a felvágott, nem csak sonkából áll. De tényleg, rengeteget gondolkodtam azon, mit csinálnak az állatok többi részével az angolok, mert úgy tűnik, csak sztékből és sonkából állnak.

Az esőhöz való viszonyom is más lett. Azelőtt minden cseppnél már kapucnit húztam, most meg simán elmegyek esernyő nélkül, ha szemerkél. Látom, hogy hülyének néznek, csak nem érdekel.

Angliában érdekes módon többet mosolyognak. Még rám is. Próbálom ezt importálni, több-kevesebb sikerrel. Néha bizony lehervad az arcomról a mosoly. Például mikor valamit megpróbálok elintézni.

Épp csak leszálltam a repülőről, már hárman kunyeráltak tőlem pénzt. Egyikük nem is rejtette véka alá, hogy űrhajóra gyűjt. Elon Musk fellélegezhetsz, kereszbe tettem a konkurenciádnak.

A távolsági buszon megkérdezték, kérek-e számlát. Mivel nem vagyok papír-fetisiszta, mondtam, hogy nem kell. Ekkor hirtelen fele annyiba került a jegy. A sofőr hozzá is tette:

- Üljön ide mögém, az első sorba. Ha majd jön az ellenőr, az az én gondom lesz.

Szerencsére a sofőrnek gondtalan útja volt, leszámítva, hogy mások igenis kérték azt a fránya papír fecnit. Meg is kapták néhány keresetlen szóval együtt.

Hazaérve sem könnyebbültem meg. Az albérlőknek azért sikerült leamortizálni a lakást. Nem mondanám olyan vészesnek a helyzetet, mintha három egyetemista férfi lakott volna ott, de a falakon sötétlett a penész, a hűtő totál káros lett, két helységből eltűnt az áram. Nem is próbálták megkeresni, mi lehet a hiba oka, inkább ütöttek egy szép lyukat az egyik konnektorba és vezettek ki belőle egy hosszú kábelt végig a gázcsövek mentén a konyha másik szegletébe. A világítást pedig egy falra szerelt fénycsővel oldották meg. Azzal indokolták mindezt, hogy így legalább nem tettek tönkre semmit. Igazán megható ez a figyelmesség. De miért nem mondták korábban? Miért akkor kellett megtudnom, mikor már eljöttek?

Az elektromos rendszerrel már korábban is voltak problémák. Egy régi, a hatvanas évekből származó társasházban élek, aminek az elektromos rendszerét még alumínium vezetékekkel oldották meg. Az előző lakó ezért kábel csatornákban megpróbált bevezetni egy új, sokkal terhelhetőbb rendszert, miközben a régi, falba ágyazott rész is megmaradt.

Egy korábbi probléma kapcsán már hívtunk szerelőt, aki felhívta a figyelmemet, hogy itt kellene egy alaposabb felülvizsgálat, mert sok házi barkács megoldás van. Akkoriban a munka mennyisége és a pénztelenség miatt elvetettem a javaslatot. Gondoltam, most eljött az idő, hogy mindent rendbe tegyünk. A villanyszerelő még két év távlatából is emlékezett rám. Felmérte ismét a terepet, majd azt mondta, ez egy egész napos kemény munka lesz. Reggel kilenckor kezd többed magával, de délután négyig végezni fognak. Kicsivel több pénzt kért, mint amennyit annak idején egy hónap alatt kerestem. Gondoltam, csinálják.

A reggel 9 órás kezdés nem indult simán. 10:30-kor hívott, hogy egy órát késni fog. Fél egyre meg is érkeztek. Bizonyára a fény sebességének 10%-val közlekedhettek és ezért az ő órájuk lelassult. Addig bioinformatikai problémákon dolgoztam. Mikor megérkeztek, le kellett kapcsolni az áramot.

Az emberiségbe vetett végtelen hitem alapján úgy gondoltam, hagyhatom őket dolgozni és én is tudnék haladni a saját feladataimmal a könyvtárban. Ez utóbbi nem ment valami jól, mert az internet kapcsolat folyton megszakadt. De szerencsére nem is kellett sokat várni, mert már fél háromkor telefonáltak, hogy készen vannak.

Ez igen! Ezek tényleg fény sebességgel dolgoznak. Mire hazaértem, addigra kiderült, mégsem végeztek. Kifelejtettek egy konnektort. Azt még megvártam.

Mit mondjak? Nem voltam elragadtatva. A helységekben újra volt áram, tehát az elsődleges problémát megoldották. A fürdőszobában az egyik hibás konnektorba egy másik helyről vezették át az áramot, de a felrakott kábelcsatorna így néz ki:

kabelcsatorna.jpg

Valami miatt az egyik villanykapcsolóból kellett egy fázist vezetni a tőle 10 cm-re lévő konnektorba. Ez a drót csak úgy ott volt. Kérdeztem, ez biztonságos?

- Persze, le van szigetelve. Szeretné, hogy bevéssük?

- Igen.

- Nincs az a festő, aki azt lejavítaná.

Azért én bevésettem, és itt követtem el a következő hibát. Hagytam, hogy elmenjenek, mielőtt, mindent ellenőriztem volna. Csak azt néztem meg, ahol korábban nem volt áram. A villanyszerelő még megígérte, hogy egy év garanciát ad a munkájára. Este kilenckor vettem észre, hogy másik két helységben viszont nincs áram. Egészen pontosan csak a régi konnektorokban.

Másnap reggel telefonáltam neki, amit nem vett fel. Türelmes ember révén óránként megismételtem a telefonálást, csak, hogy érezze a törődést. Harmadszorra vette fel. Elmondtam neki a panaszomat. Azt ígérte, hogy este bejön, megnézi a problémát. Igazából én már tudtam, mi a gond, mert korábbi szerelgetéseimnél már felfedeztem, hogy a fürdőszobában van egy kötésdoboz, amiből megy a két említett szobába az áram. Ott van a bibi.

Este bizonyára elfelejtette, hogy elígérkezett, ezért másnap megint óránként elkezdtem hívogatni. Azóta nem láttam.

Tudtam, ezt is nekem kell megoldani. Összesen három konnektorból hiányzott az áram és ebből az egyik egy működő konnektor mellett van. Végül is az én szempontomból elegáns megoldást választottam, ami viszont nem biztonságos, nem szakszerű és senki nem csinálja utánam. Egy háromerű vezeték két végére raktam egy-egy villásdugót és bedugtam a két konnektorba. Ha valaki rossz végé húzza ki, akkor igen csúnya áramütést kaphat, ezért megismétlem: ne csináljatok ilyet.

Ami miatt én mégis ezt választottam, az az, hogy ha mégis sikerül visszacsalni a villanyszerelőt, nem mondhatja, hogy én belekontárkodtam a munkájába, hiszen egyetlen kötést sem módosítottam. Nekem van áramom ott, ahol kell és mivel az egész veszélyes megoldás egy szekrénysor mögött van, esély sincs rá, hogy valaki az kihúzza.

 konnektor.jpg

Komolyan elgondolkodtam egy OKJ-s villanyszerelő képzésen. Csak kétszer annyiba kerül, mint ennek a kóklernek a munkadíja! Életem során kettőnél biztos többször lesz szükségem villanyszerelésre és gány megoldásokat, mint látjátok, én is tudok csinálni.

Szólj hozzá!

Címkék: életmód filozofálás barkácsolás

A jutalom

2017.07.02. 21:24 Travis.CG

A kutatói munka nem olyasmi, mint a versenysport vagy a katonai szolgálat, ahol folyamatosan plecsnikkel adják az ember tudtára, hogy jó munkát végzett. Ez nem jelenti azt, hogy ne lenne szükség visszajelzésre. Van is visszajelzés. Minden publikáció egyfajta elismerés, hiszen más kutatók átnézik a munkánkat és azt mondják, az eredmények érdemesek a közlésre.

Ha pedig sikerül egy igazán jó lapba publikálni, az tovább növeli az elégedettség érzését. De mi a "jó" lap? Van ugye ez az impakt faktor, amit mindenki előszeretettel kritizál és nem is állítom, hogy a legtöbb kifogás nem jogos. Valóban egy mesterséges rendszer és nem mentes a hibáktól. De szerintem nem is annyira rossz, mint ahogy állítják.

Szokták mondani, hogy az idézettség többet ér. Lehet. De kérdem én, mire van nagyobb esély: idéznek egy lapot, amit mindenki olvas, vagy idéznek valamit, amit senki sem? Mit fognak inkább olvasni? Egy lapot, aminek - még ha mesterségesen is - magasan tartják a fontosságát vagy egy lapot, amibe minden szemét megjelenik?

Ezek az események hatnak egymásra és trendeket alkotnak, ahol mindig akad kivétel és mindig akad valaki, aki a rendszer gyengeségeit kihasználva jogosulatlan előnyre tesz szert. Ilyenek az emberek, akik kamu PDF fájlok segítségével eltérítették a Google indexet, mások valódi kutatók nevét felhasználva hamis cikkeket generáltak. Végezetül létezik az a legenda is, hogy egy kutató szándékosan írt egy hibás következtetést tartalmazó cikket, amit utána mindenki idézett és megcáfolt.

Az impakt faktor azért nem minden. Nekem is vannak impakt faktor nélküli cikkeim, amikre büszke vagyok. De ezek olyan újságban jelentek meg, amiket azért olvasnak. Ha jelentéktelen lapban tudunk csak leközölni valamit, az az eredményekre is rányomja a bélyegét. Senki nem mondja: nem baj, majd az idézettség bebizonyítja, milyen kiváló munkát végeztél. Hanem azt mondják: Csak ott közölték le?

Ezért is éreztem keserűséget, amikor hosszas huza-vona után végül megjelent ez a cikk. Alapvetően nem dolgoztam túl sokat vele. A szőlő fajták hierarchikus klaszterezésén és egy szimulált gélkép elkészítésén kívül nem sokat tettem. De az Acta Biologica Szegediensis... Ezt nem olvassa senki. Nem fogja citálni senki. Még hamis cikkekhez sem fogják felhasználni egyetlen betűjét sem.

Természetesen nem ez volt a célunk. A publikálás során tényleg rengeteg újságba elküldtük. Végigpróbáltunk mindent, amit lehet és senki nem kért belőle, csak az Acta Biologica Szegediensis. Ez a mi jutalmunk.

Szólj hozzá!

Címkék: publikáció

Rendszergazdák gyöngye

2017.06.18. 20:47 Travis.CG

Két év után újra meglátogattam a régi melóhelyemet és ismét találkoztam Pannal. Bizonyára ő is nagyon hiányolt, mert csak az én kedvemért előadott egy egyszemélyes performance-t.

Épp egy volt kolléganővel beszélgettem, akinek a gépére R-t kellett volna telepíteni. A beszélgetést folyamatosan hatalmas sóhajok kísérték Pan részéről, innen tudhattam, mennyire nehéz is ez a folyamat. Épp a családtagokról volt szó, amikor Pan hangosan közbevágott.

- Nem megy a telepítés. Hibát ír ki.

- Mi a hibaüzenet? - tudakoltam megértően.

- Nem tudom, nagyon sok hibát ír ki.

Teljesen korrekt. Ha nagyon sok hibaüzenetünk van, egyiket sem olvassuk el, hiszen az időpocsékolás. A legtöbb hülye fejlesztő úgyis csak viccből rakja ezeket a programokba.

- Mi az utolsó hibaüzenet? - kérdeztem ártatlanul. Nem kaptam választ. Pan ujjai erősebben koppantak a billentyűzeten. Talán azt remélte tőle, hogy a számítógép megérti, az így begépelt parancsokat komolyabban kell venni.

Közben másra terelődött a szó, mivel Pan tovább dolgozott. De mikor ismét elkezdődtek a sóhajok, sejtettem, hogy újabb nehézséggel találta szembe magát.

- Nincs hálózat - kommentálta hangosan.

- Az egész intézetben vagy csak a gépen? - tudakoltam. Elvégre, ha tönkre vágjuk a hálózatot, akkor csináljuk rendesen, ne álljunk meg egy gépnél.

A helyzet tovább eszkalálódott. A hálózat elvesztése után egyszer csak felkiáltott:

- Semmi sem működik!

- Kapcsold ki a gépet, mielőtt rászabadul a világra! - javasoltam. Nem volt vevő a megjegyzésemre. Kérte a rendszergazdai jelszót. Mikor megkapta, rögtön be is gépelte.

- Nem működik.

- Próbáld meg num lock nélkül - javasolta neki kolléganőm. A dolog működhetett, mert Pan nem szólalt meg.

- Csináljak biztonsági mentést? - kérdezte viccesen a gép tulajdonosa. Akkor még nem gondolta, hogy ez később komoly lesz.

Pan tovább folytatta azt, amit abba kellett volna hagynia. Vannak, akiket néha meglátogat Bitmumus, de rájöttem, egyesek szimbiózisban élnek vele. Talán ő súgja rendszeresen Pan fülébe, hogy belégzés-kilégzés. Nem tudom, de abban a pillanatban biztos voltam benne, hogy Pan képtelen Bitmumus nélkül élni.

- Nem merem újraindítani a rendszert, mert félek, hogy nem tud bebootolni. Kéne csinálni egy biztonsági mentést.

- Nincs annyi tárhelyem.

- A rendszer frissítése félúton elakard, elment a hálózat. Be kellene fejezni a csomagok telepítést egy CD-ről, de azt nem tudom, hogyan kell - azzal Pan otthagyta a gépet és elment erősítésért.

Én is jobbnak láttam, ha elmegyek. Később megtudtam, még két napig dolgoztak a gépen, hogy használható legyen. Most kellene írnom valami tanúságot, valami pozitív dolgot, amiből mások tanulhatnak. Legalább annyit: gyerekek, ne drogozzatok, mert ilyenek lesztek. De még ez sem adatott meg nekem. Pan teljesen tiszta.

Szólj hozzá!

Címkék: rendszergazda

Lehet, de minek: CNV targetált szekvenálásból

2017.06.11. 22:15 Travis.CG

A kópiaszám változások azonosítása teljes genom szekvenálásból nem különösebben bonyolult. Rengeteg eszközt találni rá és elég jól működik. Többségében a lefedettség változását veszik alapul. Targetált szekvenálásnál (ide értve mindent, ami nem teljes genom szekvenálás) viszont a lefedettsége önmagában nem elég. A kívánt genomi terület kiválasztására alkalmazott protokoltól függően különböző hibákat vihetünk be a rendszerbe, aminek hatása van a lefedettségre.

Mit jelent mindez? Először is, más metodológiát kell használni, másrészt az eredmény sokkal megbízhatatlanabb. Mennyire? Nagyon.

Az intézetben a CNVKit-et használják a legtöbben, de az egyik kutató megkért, hogy használjam a CopywriteR-t, mert a kooperáló partnerek szerint az a legjobb. A projekt vezetője viszont - teljesen jogosan - tudni szerette volna, melyik módszer ad megbízhatóbb eredményt.

Az összehasonlítás alapjául egy korábbi, megközelítőleg 500 sejtvonalon elvégzett microarray szolgált, amit később megszekvenáltak. Egy egyszerű Pearson korrelációval megnéztük, melyik módszer ad jobb megoldást. A CopywriteR esetén az együttható értéke 0,1 volt, de a CNVKit sem teljesített fényesebben a maga 0,3-jával.

Az eredmény nem ért teljesen váratlanul, mert olvastam ezt a cikket. Ebben található a következő ábra:

Vegyük észre, hogy az ábrán a 0,5 a legmagasabb érték, amit egyetlen eszköz sem képes elérni. Mit jelent mindez? A megtalált CNV variációk több, mint fele fals pozitív! Ez egy őszinte cikk. Sokszor látni publikációkat csupa ragyogó értékkel, de mikor az ember maga kipróbálja az adott programot, csak szemetet kap vissza. Még az Excavator korábbi verziójának leírása is ilyen. Itt viszont nyoma sincs semmi ilyesminek. Az eredmények tükrözik a saját tapasztalatot.

Ezek alapján azt javaslom mindenkinek, aki valóban tudni szeretné, milyen kópiaszám változások vannak a mintáiban, futtasson egy alacsony lefedettségű teljes genom szekvenálást is.

Szólj hozzá!

Címkék: bioinformatika

Kalandod itt véget ér...

2017.06.05. 02:58 Travis.CG

Az interaktivitás hajnalán, még a szerepjátékok elterjedése előtt voltak a Kaland Játék Kockázat könyvek. A történetet olvasva időről időre kérdéseket tettek fel, hogyan folytatódjon a sztori és a megfelelő oldalra lapozva olvashattuk döntésünk következményét. Elméletileg a harcjeleneteknél dobókockával kellett volna némi bizonytalanságot (és ezzel együtt izgalmat) csempészni az események folyásába, de senkit nem ismertem, aki betartotta volna ezt a szabályt.

Személy szerint én utáltam ezeket a könyveket, mert a döntésnek csak az illúzióját adták. Emlékszem például, hogy az egyik kaland során valami titkos szektát fedeztem fel egy régi, elhagyatott ház pincéjében. A csuhás nézők közé elvegyülve egy ember áldozatnak voltam a szemtanúja. A könyv fel is tette a kérdést: ha meg akarod menteni a lányt, lapozz X oldalra, ha végignézed a halálát, lapozz Y-ra. Természetesen a megmentést választottam. A mentő akció abból állt, hogy ordítva az oltárra ugrottam, felfedve magamat. A túlerő legyűrt és végül egy döntést hozhattam: álló vagy ülő ketrecbe zárjanak halálomig. A könyv még nagyképűen oda is írta nekem: "mégis, hogy képzelted, hogy megmentheted?". Biztosan nem úgy, hogy ordítva odaugrok. Le akartam kapcsolni a villanyt, hogy a sötét megzavarja a ceremóniát. Be akartam indítani a tűzjelzőt vagy én magam tüzet gyújtani. Kihívni a rendőrséget, katasztrófa védelmet. Túszul ejteni a szekta vezetőjét.

Minden ilyen zsákuca után leírták az ikonikus mondatot: kalandod itt véget ér. Ez volt a legtöbbet olvasott mondat, könyvtől függetlenül.

Most nekem is véget ér egy kalandom. Mikor ezt olvassátok, már nem leszek a Sanger alkalmzásában, hanem utazom vissza Magyarországra. A családom már egy ideje nincs itt, csak én varrom el a szálakat. Próbálom eladni az ocsmány bútorokat, amiket már én is használtan vettem, javítom a bérelt lakásban általunk okozott károkat.

Azt hiszem, az egyik legjobb döntésem ebben az életben, hogy eljöttem ide. Az időjárás kiszámíthatatlan, a kaja förtelmes. Nem lehet egy jót kirándulni, mert minden nyomorult zöld terület körbe van kerítve, legfeljebb másfél méteres ösvényeken lehet csak közlekedni. A legtöbb beszélgetés a helyiekkel felületes és semmit mondó, kimerül az időjárásban. De a meló kárpótolt mindenért. Nem azt éreztem, hogy bármi is visszafog, hogy közém és az eredmény közé állna. Gyakorlatilag a limitáló tényezők saját korlátaim voltak, hogy nem ismerek elég matematikai modellt, amivel az adatokat kiértékelhetem, nem látom át az összefüggést vagy nincs meg az a programozói tudásom, hogy hatékonyabb kódot írjak és ne kelljen 200 évet várni az eredményre.

Nem is tudom, hol olvastam, hogy a kommandósok brutális kiképzésének nem az a célja, hogy a kiképzők kiélhessék szadista hajlamaikat, hanem, hogy az egyén megismerje saját korlátait. Mi az, amit meg tud csinálni és mi az, amit nem. Ez pedig szerintem fontos lenne mindenkinek. Nem egy bioinformatikust/programozót láttam, akik visszajelzés vagy komoly kihívás hiányában azt hitték, hogy ők a szakma csúcsa.

A másik hasznos dolog, amit itt láttam, az információ akadály nélküli áramlása. A sok idegesítő meeting egyik kellemes mellékhatása, hogy nyugodtan fel lehetett vetni bármilyen problémát, rögtön mondtak rá megoldási javaslatot. Nem láttam olyan titkolózást, mint máshol, ahol szintén eljöttek segítséget kérni, de közben nem mondták el az igazi problémát, csak úgy körülírták azt. Mint amikor úgy beszélünk az orvossal, hogy "a barátomnak van egy olyan baja...". Nonszensz, felesleges és nem hatékony.

Természetesen a tudomány élvonalában maradni nem lehet áldozatok nélkül. Ha egy csoport probléma felvetése, módszerei nem voltak elég előre mutatóak, szívbaj nélkül kigyomlálták őket. Mikor a rák genom projekt vezetője kijelentette, hogy megtalálták az összes gént, ami a tumorok 50%-ban előfordul, az egész program átalakult. Néhány klinikai onkológus el is kezdett szállingózni innen.

A másik véglet, amit az egyetemen láttam. Egyes tanszékek tökéletesen elvoltak saját világukban. Konkurencia, elvárások nem voltak. Aki oda bekerült, onnan ment nyugdíjba, akkor is, ha csak a kötelező oktatást csinálta meg. A publikálás pedig kimerült néhány konferencia kiadványban megjelent összefoglalónál. Lehet szidni az elitizmust, de ez utóbbi szerintem sokkal rosszabb.

Lehet szomorkodni a múlton, de minden kaland vége egyben egy újnak a kezdete. Közhely, de ettől még igaz. A kötelék az intézettel még nem szakadt meg, mostantól konzultáns leszek és távmunkában folytatom, amit elkezdtem. Időről-időre visszatérek és beszélek az emberekkel. A konzultáns egyébként is egy remek név. Kellően titokzatos és úgy hangzik, mintha értenék is valamihez.

1 komment

Címkék: életmód

Állatok a Sangerben

2017.05.29. 21:55 Travis.CG

Ha nem számoljuk az egereket (modell organizmus), szúnyogokat (malária csoportok kedvenc állata), különböző élősködőket (parazitológia csoportok), akkor is sokféle állattal találkozhatunk az intézet területén.

A képet Stefancsik Raymond készítette a COSMIC csoportból. Ez a sas komoly munkát végez. Hetente egyszer látogatja az intézetet és röpköd egyet az épületek körül. A cél, hogy a galambok és varjúk kártevő munkáját megszűntessék. Ha végzett, visszarepül a gazdájához.

Az intézethez tartozik egy természetvédelmi terület is, aminek az állományát rendszeresen felmérik. Megtalálhatóak itt a vizisiklók, békák, különböző madarak és pillangók. Én a pillangók megfigyelésében veszek részt. Ez abból áll, hogy keddenként, ha az idő megfelelő, ebédidőben kimegyünk a területre és összeszámoljuk a pillangókat. A többiek már nagyon profik, néha a repülési stílusból tudják, hogy milyen lepkéről van szó. Én csak néhányat ismerek fel, a többinél meg az "ott van valami" felkiáltással másokra hagyom a beazonosítást.

comma.jpg

Egy C betűs lepke (comma). A következő képen egy kis rókalepke (small tortoiseshell) van.

tortershell.jpg

A Sulston épület néhány ablakából rá lehet látni egy mesterséges tóra, ahol vadkacsák és szürke lúdak úszkálnak. Szép látvány, de mikor kimennek a gyepre, akkor elaknásítják azt.

goose.jpg

Van még egy élőlény, aki nagyon szeret az intézet területén lenni, de jelenléte néha problémás. Ő Qiuncy, a macska. Quincy a közeli faluban él, de képtelen ellenállni a tudománynak, igaz csak az ebédlő teraszán és más naptól felhevített területen műveli azt. Fekve. Rendszeresen megpróbál belógni valamelyik épületbe. A biztonságiakat szerencsére alaposan kiképezték, így időben fellépnek, ha Tom Cruise-t megszégyenítő módon belóg. A potenciális humán kollaboránsokat köremailben térítik jobb belátásra.

 quincy.jpg

Quincy újabb beszivárgási kísérlete a Morgan épületbe.

Szólj hozzá!

Címkék: életmód

Cseppet sem objektíven: QBParty 2017

2017.05.25. 08:53 Travis.CG

Még egyetlen QBPartyn sem voltam, de követem az eseményeket. A beszámolók és releasek alapján számomra is úgy tűnik, a QBParty egyre jobb lesz. Szemezgessünk minden kategóriából egy kicsit.

Grafika

A Retro Time című kép enyhe deja-vu érzést váltott ki belőlem. Nem azért, mert a szobámat idézte, hanem mert hasonló témájú képet mintha láttam volna, csak Amigaval. Valljuk be, a C64 joystick ide jobban illik, mint egy PC mellé. Természetesen nem mehetek el szó nélkül a hím Saturnia pyri mellett. Egészen gyönyörű.

Intrók

A Paradyze 20 egy retro PC-s hangulatot idéző intro, ahol greetingeltek minket. Igaz, le kellett lassítanom YouTube-on a demót, hogy lássam, de tényleg ott vagyunk. The specificationról nehéz eldönteni, hogy egy kijavítatlan bugot vagy absztrakt látványvilágot látunk. Nem tudom eldönteni. A Crystalline lord pedig határozottan hangulatos, ahogy a hasábok emberré állnak össze.

A legjobb produkciókat mégis 256b-ban kell keresni. A Torus inside a nagyobb méretkorlátos intrók világát hozza el. Logót és két jelenetet mutat be, ami igen impozáns ebben a kategóriában. A Mind evolves fraktál és zenél egyszerre, nálam nagyon bejött.

Demók

Az oldschool kategória csupán jelképesen képviseltette magát. A vicces vonalat ismét a Tesco Gazdaságos Demócsapat vitte a Kacsák és kockák demójukkal. A Minden Gargaj 2-nek is beillő Gargaj 9001-t teljes értetlenséggel fogadtam. Ez az a fajta humor, ami sör nélkül nem vicces. Manapság divatos emlegetni, hogy az AI elveszi (vagy el fogja venni) ennek vagy annak az embercsoportnak a munkáját. A Los Angeles Lamers már most eljutott arra a szintre, hogy egy nem túl okos mesterséges intelligenciával hasonló stílusú releaseket lehetne gyártani. A Too wierd to Die egy színpadi produkció volt, amit a SceneSat felvételéről néztem meg, de nem tudom megmondani, mit is láttam. Olyan volt, mint egy David Lynch film: többféle értelmezése is lehet és nem biztos, hogy a látott kép bármit is jelent. Amit láttam, az egy világító szemű druida, aki maga tákolta elektronikus hangszeren játszott. Az Abstr'One lézershowja már egy más dimenziót képviselt. Xerxes zenéjével igen kellemesre sikeredett.

Ha pedig a technikai felkészültségnél tartunk, akkor nem mehetünk el szó nélkül a Rebels impozáns demója, a Dark Side mellett sem. Environment mappelt golyók ezrei vagy tízezrei mozogtak részecske rendszerként és alkottak felületeket, formákat.

Szólj hozzá!

Címkék: demoscene

Majdnem mindent az RNA-seq-ről (5. rész)

2017.05.15. 00:28 Travis.CG

Nincs két egyforma szekvenálás. A kapott read mennyiség futásról-futásra változik. Ha csupán összeszámoljuk a vizsgált egységre (génre, transzkriptre, exonra) eső readeket, nem tudjuk összehasonlítani az expressziót más szekvenálásokkal. Szükség van olyan eljárásokra, ahol a szekvenálásból eredő, technikai jellegű különbségeket eltűntetjük. Ez a normalizálás.

Normalizálás után minden különbség, amit találunk, feltételezhetően a biológiai rendszerek különbségeiből adódik. Mint oly sok problémára a bioinformatikában, a normalizálásra is többféle megoldás létezik. Szerencsére nem kell választanunk a különféle eljárások közül. A legtöbb alkalmazás eleve elkötelezi magát egyik vagy másik módszer mellett, tehát ha programot választunk, azzal eleve meghatározzuk, milyen normalizálást fogunk használni.

A legjobb szándék ellenére sem tudom összeszedni az összes létező eljárást, de megpróbálok annyit leírni, amennyivel csak találkoztam. A másik fontos megjegyzés, hogy egy-egy módszer fejlődik az idők során, nem biztos, hogy úgy implementálták azt az alkalmazott programokban, ahogy én itt leírom, de az elv nagyon hasonló.

CPM

Ez a legegyszerűbb eljárás, miRNS-ek esetén ezt használják. A génre (transzkriptre, exonra) eső readszámot elosztják a teljes readszámmal, majd megszorozzák egymillióval, hogy ne kelljen túl kicsi számokkal dolgozni. Innen ered a neve is (count per million).

FPKM/RPKM

Ez nem egy eljárás, hanem egy eljárás család. A kiszámítás módja úgy kezdődik, mint a CPM esetén, tehát egymillió readre normalizálnak, de a teljes readszám mellett a gén hosszára és a read hosszára is normalizálnak. A különbség, hogy miként határozzák meg a read hosszát (a read pár mindkét tagját, vagy csak egyik tagját számolják) és a gén hosszát (teljes gén hossz, effektív hosszúság). A kezdetek kezdetén nem foglalkoztak a readek méretével, csak a gén teljes hosszával osztottak. Később rájöttek, hogy a hosszabb readekből kevesebb illeszkedhet a vizsgált egységre, ezért gén hosszából levonták a readek hosszát. (Úgy is mondhatnánk, a gén hossza helyett azzal számoltak, hogy hány pozícióra illeszkedhet egy read, anélkül, hogy lelógna.) Később tovább módosították a metódust, mert a PacBio szekvenálás miatt a readek hosszabbak lehetnek, mint egy gén.

TPM

A TPM esetén a számolás nagyon hasonló az FPKM-hez, de számolás sorrendje fordított. Először normalizálnak a gén hosszára és csak másodsorban a readek mennyiségére. Miért teszik ezt? Bármilyen szekvenálást is veszünk, a gének TPM normalizált értékének összege azonos lesz. Ha például sejtvonalakat szekvenálunk nagy mennyiségben, akkor nem tudunk hagyományos differenciál expressziót számolni (nincs kontroll, kezelés, a mindent-mindennel összehasonlítást pedig nehéz kiértékelni), de tudunk klaszterezni és kereshetünk mintázatokat. Ezen analízis pontossága szerintem kérdéses, de kivitelezhető és a TPM normalizálás a legjobb választás ilyen esetben.

TMM

Ezen eljárás során abból a feltételezésből indulunk ki, hogy a gének nagy tömege nem mutat differenciál expressziót. Tehát ha vesszük az összes gén expressziójának mediánját, akkor attól magasabb vagy alacsonyabb értékek egy bizonyos százalékáról kijelenthetjük, hogy nem mutat expressziós változást. Ezen gének expresszióját felhasználva kiszámolhatunk egy szorzó faktort, amivel az expressziókat átválthatjuk egy másik minta expressziós értékére. Mivel egy kisérlet több mintát is tartalmazhat, önkényesen kijelölnek egy referencia mintát, majd ehhez számolják ki a szorzó faktort. A módszer nagyon hatékony, de mint említettem akkor, ha a gének egy része nem mutat differenciál expressziót. Ha tehát egy normál egeret akarunk hasonlítani egy genetikailag módosított, mutagénnek kezelt, stresszelt állattal, akkor számíthatunk rá, hogy kevésbé lesz hatékony. A másik potenciális vagy inkább filozófiai eredetű probléma, hogy a referencia nem esik át semmilyen módosításon. Tehát ha a módszerből bármilyen eltérés adódik, akkor ez a minta mentes lesz tőle.

DESeq

Ennek a normalizálásnak nincs külön neve, de mivel a DESeq és a DESeq2 ezt használja, rendszerint így hivatkoznak rá. Nagyon hasonlít a TMM-hez, de ahelyett, hogy önkényesen jelölne ki egy mintát referenciának, mesterségesen kreál egyet. Vagyis minden minta kap szorzó faktort.

TC/UQ/Med

Ez a három módszer nagyon hasonló. Az egy génre eső readszámot elosztják egy számmal, majd megszorozzák az összes minta teljes readszámának átlagával. Hogy mi ez a szám, az a módszertől függ. TC (total count) esetén ez az adott minta teljes readszáma. UQ (upper quartile) esetén a nullától különböző readszámok felső kvartilise, míg Med (median) esetén ez a közép érték lesz (ugyan csak a nullánál nagyobb read számokat véve alapul).

SCRAN

Ez szintén nem egy módszer neve, hanem egy programcsomag egy sejtes RNA-seq elemzéshez, de tartalmaz egy normalizálási eljárást is, direkt ehhez a fajta szekvenáláshoz. A fenti módszerek legtöbbje nem használható egy sejtes adatok esetén, mert sok génről egyszerűen nem keletkezik read. (Bár nekem egy EBI-os fickó azt mondta, nyugodtan használjam a CPM-t) Ez a módszer az úgynevezett spike-in kontrollok használatával igyekszik orvosolni a problémát. A spike-in egy mesterséges RNS szekvencia, amit ismert koncentrációban keverünk a mintákhoz. Mivel mesterséges, a róla képződő readek csak ide illeszkednek és mivel ismert koncentrációban adjuk hozzá, a különbség csak is technikai lehet. Ezzel természetesen még nem oldódott meg a probléma teljesen, mert egy sejtes szekvenálásnál a sejt ciklust szabályozó gének különböző mértékben aktívak, de ez a csomag ezt is megpróbálja orvosolni.

Összefoglalás

Megpróbáltam minél több normalizálási módszert összeszedni, de a lista nem teljes. Újabb és újabb (és bonyolultabb) módszerek jelennek meg, rengeteg cikk hasonlítgatja a különböző módszereket, különböző eredménnyel. Egy dologban minden cikk egyetért: normalizálni kell. Nem tudom, melyik a legjobb, az egyetlen tanács, amit adhatok: elsősorban programcsomagot kell választani. Ha olyan programot választunk, ami a legtöbb igényünket kielégíti, támogatott, sokan használják, akkor nem kapunk túl rossz eredményeket és a kéziratba nem fognak belekötni a bírálók (legalábbis a módszerekbe nem. Vagy nem nagyon.)

Szólj hozzá!

Címkék: bioinformatika

Mitózis detektálás idősoros képeken

2017.05.08. 00:23 Travis.CG

A csoportunkban igen intenzív mikroszkópos munka folyik. A szekvenálás, amit elemzek, csak egy része a kísérleteknek. A másik része a szövetek vagy sejtek időbeli változásának nyomon követése mikroszkópos képeken.

A legtöbb munkát a kutatók meg tudják oldani maguk is, de néha elkél nekik a segítség. Csak röviden említem, hogy sejtosztódásnál az utódsejtek nem azokos arányban osztódnak tovább. Az egyik utód sejt nem fog tovább osztódni. Ez biztosítja, hogy a szövet képes legyen fenntartani egy állandó állapotot. Ha viszont felborul ez az egyensúly, - márpedig ráknál pont ez történik - akkor a szövet burjánzásnak indul.

Az egyik projekt tehát, hogy figyelik, hogyan, miként változik a sejtosztódás. Ezt úgy csinálják, hogy egy ember ül a képernyő elött, nézi a képeket és klikkel. Úgyhogy egy csoport megbeszélésen a kutató nekünk szegezte a kérdést, tudunk-e valami módszert, amivel meggyorsíthatjuk a mitózis keresést.

Természetesen azt mondtam, hogy tudok. Az ötletem az volt, hogy betanítok egy neurális hálót, hogy ismerje fel a sejt osztódást.

Első lépésben szükségem volt egy tréning adatszettre. Mivel a munkatársam már végigszenvedte ezt, örömmel megosztotta velem az eredményt. Sajnos elég volt rá egy rövid pillantást vetni, hogy kiderüljön, nekem ez nem lesz jó. Maga a mitózis elég szépen felismerhető. Az egyik képen még egy sejt van, a következőn pedig kettő (sőt, néhány kivételes alkalommal három!). A kapott adatban viszont munkatársam néha a mitózis elejét jelölte be, néha a végét. Néha az egyik utód sejtet jelölte meg, mint pozíciót, náha a szülő sejtet. Ezek különböző kombinációiból állt az adat.

A másik dolog, ami miatt ez nem volt megfelelő tréning adatnak, az a negatív adatok hiánya. A hatékony tanításhoz nem csak azt kell beadni a neurális hálónak, mi a tényleges mitózis, hanem azt is, mi az, ami biztosan nem az.

Ezt rendbe kellett szedni. Először írtam egy elég primitív programot, amivel a kurzor billetyűkkel a képkockák között tudtam váltani, jobb egérgombbal pozitív adatot, ballal a negatív adatot definiálhattam. Kis kör jelölte, amit a kollégám azonotított. Esc-re kilépett, mint egy demo :-) Ezzel elég gyorsan újra definiálhattam az adatokat.

A második lépés a neurális háló tanítása volt. Először is a mikroszkópos képeket be kellett olvasni:

vector<Mat> frames;
imreadmulti("pic.tif", frames);

Létre kellett hozni a mátrixokat. Összesen négy mátrixra volt szükségem. Kettő a tréning adatnak, kettő a teszt adatnak. OpenCV-ben egy mátrix az értékeket tartalmazza, amivel tanítjuk a neurális hálónkat, egy pedig az eredményt, amit kapni szeretnénk. A teszt adat pontosan ugyan ilyen felépítésű lesz, de azzal más terveim voltak.

Mit fognak tartalmazni a mátrixok? Először is, a pixelek intenzitását. A vizsgált kép 40x40-es, ami nem tűnik nagynak, de 1600 pixelt tartalmaz. Ez még csak egy kép. Ha a mitózis előtti állapotot is bele akarjuk rakni, az újabb 1600 pixel lesz. Ha van 600 adatsorunk, a mátrix 3200x600 méretű lesz (vagy 600x3200, ízlés kérdése, az OpenCV mindkettőt elfogadja).

Az eredmény az én esetemben egy oszlop volt, 600 sorral (minden tréning adathoz egy). Az érték pedig -1, ha nem történt mitózis, 1, ha történt. A neten sok példaprogram a 0-1 számokat használja. Én úgy tapasztaltam, a -1 - 1 jobb eredményt ad.

Mat train_data(600, 3200, CV_32FC1);
Mat train_label(600, 1, CV_32FC1);

Ezeket a mátrixokat feltöltöttem adattal. A teszt adatszettet ugyan így készítettem elő. Kellett még néhány paraméter, például meddig tanuljon az algoritmus, mikor álljon le.

TermCriteria termCrit = TermCriteria(
        TermCriteria::Type::MAX_ITER,
        500,
        0.0001
        );

Ez azt jelenti, hogy max 500 ciklus fog lefutni vagy akkor áll meg, ha az újabb adatsor tanulásával az eredmény csak picit változik. Ezt a két értéket nyugodtan lehet változtatni. Javaslat: amíg a program a hibakeresés, tesztelés fázsban van, érdemes a ezeket az értékeket használni, mert a program gyorsan le fog futni. De amint készen vagyunk és a háló hatékonyságát nézzük, az 500-t akár 10 millióra is emelhetjük, a másik paraméter meg még alacsonyabb lehet.

Mat layers = Mat(4, 1, CV_16U);
layers.row(0) = Scalar(3200);
layers.row(1) = Scalar(800);
layers.row(2) = Scalar(800);
layers.row(3) = Scalar(1);

Ez lesz a hálózatunk topológiája. 3200 bemeneti neuron, két rejtett réteg egyenként 800 neuronnal, majd 1 kimeneti réteg. Igazából nincs arra egzakt szabály, mennyi köztes réteg legyen és azok mennyi neuront tartalmazzanak. Ami szabály van, azok sokkal több matematikai tudást igényelnek, mint ami nekem van. A próba-szerencse módszer sokkal célravezetőbb volt.

Ptr<TrainData> td = TrainData::create(train_data, SampleTypes::ROW_SAMPLE, train_label);

Itt csak összepárosítottam az adatot és az elvárt eredményt, valamint megmondtam a rendszernek, hogyan értelmezze a mátrixokat. Jelen esetben soronként.

Ptr<ANN_MLP> mlp = ANN_MLP::create();
mlp->setTrainMethod(ANN_MLP::TrainingMethods::BACKPROP, 0.1, 0.1);
mlp->setTermCriteria(termCrit);
mlp->setLayerSizes(layers);
mlp->setActivationFunction(ANN_MLP::ActivationFunctions::SIGMOID_SYM, 1, 1);
mlp->train(td);

Végül összeállítottam a neurális hálót és betanítottam. Ezen a ponton pár dolgot kiemelnék. A setActivationFunction-t érdemes a setLayerSizes után meghívni, különben értelmezhetetlen lesz az eredmény. Ha a setActivationFunction-t SIGMOID_SYM-re állítjuk, az utána lévő két paramétert is állítsuk be, mert alapértelmezetten 0-k és szintén furcsa, nehezen felderíthető hibát okoznak. (Egy teljes hétvégém erre ment rá, hogy rájöjjek.)

Kész a tanítás, mennyire jó a rendszer? Most volt szükségem a teszt adatszettre.

Mat response;
mlp->predict(test_data, response);

A response változó pont olyan dimenziójú, mint a train_label. Csupán össze kell hasonlítani a test_data-hoz tartozó eredménnyel és máris megtudjuk. Ne várjunk teljes hasonlóságot! Én -1 és 1-t adtam meg, de e két érték között bármilyen értéket kaphatunk, attól függően, a rendszer mennyire "biztos" az eredményben. Ha egynél nagyobb vagy -1-nél kisebb számot kapunk, valószínűleg a neurális hálónk nem tanult jól. Adjunk neki több adatot, ha tudunk, vagy játszunk a paraméterekkel.

Nekem sokáig nem adott rendes eredményt a program. Már ott tartottam, hogy előadást tartok a módszerről, de a program még mindig nem működött. (Prediktálás után nan-t kaptam. nan=not a number) Végül az előadás után egy héttel jöttem rá, hogy a tréning adat teljesen rossz. Egy nagyon amatőr kasztolási hibát ejtettem, amitől csupa szeméttel tanítottam a hálót. Természetes, hogy hülyeséget adott vissza.

A poszt írásának pillanatában 72%-os hatékonysággal működik, amivel nem fogok gépi tanulás versenyeket nyerni, de arra jó lesz, hogy lerövidítse a klikkelések számát.

Szólj hozzá!

Címkék: opencv machine learning

A cambridge-i számítógép múzeum

2017.04.30. 22:13 Travis.CG

Már régen tervbe vettem, hogy elmegyek a cambridge-i számítógép múzeumba. Most végre lehetőségem is nyílt rá. Nem volt könnyű megtalálni, mert egy raktár bázis szélén volt és csak annyit mutattak a táblák, hogy menjek be a sok bádog épület közé, azon belül nem sok jelző tábla volt.

Azért aki nem adja fel, megtalálja. A legérdekesebb része az egész múzeumnak, hogy a gépek működnek és kipróbálhatóak. A legtöbb gép előtt szék van, már betöltöttek egy játékot, amivel azonnal beszippanthat a retró hangulat. Aki pedig emlékszik még a használatukra, további lemezeket, kazettákat talál a gépek mellett.

Az első teremben volt kiállítva a Megaprocesszor. Természetesen erre is írtak játékot, egy tetriszt, amit hatalmas bumfordi gombokkal lehetett vezérelni. Bevallom, ez volt a legunalmasabb játék, amit valaha játszottam. A processzor olyan lassú, hogy képtelenség rendesen irányítani a blokkokat. De nem is ezért építették.

A második teremben telepedtek le a gamerek. Nem tudom, mivel játszottak, csak a lövéseket és puffanásokat hallottam. Ugyancsak ebben a teremben voltak kiállítva az Acorn modelljei. Két sorban csak BBC Microk voltak, felhasználói kézikönyvekkel. Nagyjából 10 percig tanulmányoztam a könyvet, majd nekiláttam kódolni az egyiken. Az első gépen nem működött az O betű, ezért nem tudtam begépelni a gonosz GOTO utasítást. Átültem egy másikhoz, ahol már nem volt ilyen problémám. Ez lett az eredmény:

bbcmicro.jpg

A régi szép idők, mikor még StackOverflow nélkül is lehetett kódolni, csupán egy kézikönyv segítségével.

A harmadik terem volt az igazi kánaán. Itt volt kiállítva a C64, C+4, Atarik, egy Amiga 500 (James Pondal). Felsorolni is reménytelen, mennyi gép volt ott. Olyan gépekkel játszottam, amiről nem is hallottam korábban, pedig a demoscenén belül találkoztam pár antik darabbal. (Tatung Einstein demóról még nem hallottam, nem találtam. Úgyhogy itt a nagy lehetőség!)

A kiállított C64-en egyébként egy crackelt International Karate futott, megcsodálhattam egy régi introt is, miután betöltődött a játék.

c64.jpg

Egyébként az Acorn hasonló utat járt be, mint a Commodore, legalábbis, ha a számítógép generációk fejlődését nézzük. Először ők is egy 64k-s modellt adtak ki, majd jött a "mindent egybeépítünk" modellek, amint az Amiga 500, végül a PC dobozok majmolása. Viszont nem maradt utána akkora felhasználói bázis, akik életbe tartották volna. Ha csak a demoscenét nézem, még az Amstrad CPC-nek is nagyobb tábora van, mint az Acornak.

Itt is voltak kiállítva konzolok, időrendben. Nem vagyok egy játékos típus, ezért ez a vonal kimaradt az életemből. Meglepő látni, hogyan fejlődött a technika, miközben az irányítás szinte semmit nem változott. Ennek ellenére mikor újra kellett indítani egy játékot, nem tudtam, hogy az X, A, O közül mit kell nyomni.

Az Apple korai modelljeit is meg lehetett csodálni. Ezek mondjuk kellemetlen emlékeket idéztek fel bennem, mert annak idején, PhD hallgató koromban a főnökömnek hála egy Power Machintossal "dolgozhattam".

De a Silicon Graphics kiállított munkaállomásai gyorsan elfeledtették a múlt sötét árnyait. Azok nagyon tetszettek. De ezek már Unix munkaállomások voltak, nem okozott gondot, hogy használjam őket. Egy látogató még Hello Worldöt is fordított rá.

sgi.jpg

Persze nem minden kiállított termékkel lehetett játszani. Voltak gépek, amiket csak nézni szabadott. Egy szekcióban a telekommunikációs eszközök is voltak. Itt ért a második sokk. Az a telefon modell, amit mind a mai napig használok, kiállítási darab volt! Ott ült velem szemben! Ne szóljatok semmit, én is le tudom vonni a megfelelő következtetést.

n95.jpg

Ha már ennyit emlegettem a demoscenét, tudni kell azt is, hogy egy tábla erejéig bizony arról is megemlékeztek a múzeumban. A korai PC-k között kiállítottak egy olyan darabot, ami már nem csak pittyegett, hanem dedikált hangkártya volt benne. Egy Gravis Ultrasound. A kis tábla említette, hogy mennyire népszerű volt a demoscenerek között. Sajnos a gép lefagyott, nem hallhattam a GUS-t működés közben.

gravis.jpg

Végezetül láthattam, hogyan fejlődtek a hordozható gépek. Úgy látszik a cipelhető számítógépekre már kezdetekben is elég nagy igény lehetet, mert rengeteg megoldás volt a problémára. Csak azt nem értem, miért kellett két floppy meghajtó mindegyikbe?

laptop3.jpg

laptop2.jpg

laptop1.jpg

laptop4.jpg

Még egy katonai modellt is sikerült szerezniük, amiről nem sok információjuk volt.

katonailaptop.jpg

Eredetileg csak két órát terveztem, hogy maradok, de a programozás, a sok játék miatt észre sem vettem, hogy már négy órája számítógépekkel bohóckodok. Miután kijöttem, akkor éreztem csak, milyen éhes is vagyok.

Ha van mennyország, akkor az így néz ki. És ha van pokol, akkor az is, csak áram nélkül.

Szólj hozzá!

Címkék: demoscene amiga c64

A Keresztapa

2017.04.23. 23:41 Travis.CG

Kor Leó az Európai Parlament protokollszolgálatánál dolgozott asszisztensként. Munkája során hozzászokott a kifinomult és választékos élethez. Szerette is ezt a letisztult világot, hiszen az élet úgyis annyi szörnyűséget tartalmazott, jól esett neki, ha erről legalább nap közben nem szerzett tudomást. Elég volt, ha az esti híradások során szembesült vele.

Egy hónapja viszont más eseményre készült. Feleségével, Annával együtt nemsokára keresztszülők lesznek. Három és fél éves lányával, Editkével együtt, hármasban utaztak haza Brüsszelből a nagy eseményre. Magyarországon Anna szüleinél - Lajosnál és Mártánál - szálltak meg, a nagyszülők legnagyobb örömére, akik ismét elkényeztethették unokájukat.

A nagy eseményre mindenki a legjobb ruháját vette fel. Legalábbis az elérhető legjobbat. Leó sötétkék Luciano Barbera öltönyét vette fel. Anna egybe részes halvány sárga Guccit választott, míg lányukra egy vidám kockás ruhát adtak.

- Fél egyre kell a templomhoz érni, jobb lenne, ha sietnétek - jegyezte meg Lajos. Természetesen ez csak Mártának szólt, hiszen egyedül ő nem állt még készen.

- Még Editkére sem adtátok fel a kabátját - replikázott a nagymama - meg fog fázni. Ilyen időben nem lehet kabát nélkül kimenni!

Leó észrevett egy szürke, széles galléros gyerek kabátot. Anna hozhatta ki korábban. Márta visszarohant a WC-re, Leó ráadta a kabátot a gyerekre. Lajos az autó papírjait szedegette össze, Anna illatszerekkel vonta be magát. Editke begörbítette hátát, felhúzta karjait és trappolni kezdett:

- Én vagyok a sárkány! - kiáltotta.

- Márta, rád várunk! - kiáltotta Lajos. - Tíz perc múlva a templomnál kell lennünk - válaszra sem várva kilépett az ajtón és az udvaron keresztül a garázs felé indult. Editke megérezte a zavart az egyensúlyban:

- Papa, merre vagy!?

- Itt vagyok, kicsim. Kiállok az autóval.

Editke visítva rohant nagyapja után, mintha Papa azt jelentette volna be, hogy 10 hónapra Tűzföldre, Kalkuttába vagy más hasonló tájra megy. Anna és Leó sorra vették Editke kiegészítő felszerelését, hiszen egy gyerek rengeteg váratlan helyzetet tud okozni, ezekre nem árt felkészülni. Ital, hogy ne szomjazzon: megvan. Rágcsálni való, hogy ne éhezzen: megvan. Fröccsöntött műanyag bogár (szigorúan négy végtaggal hat helyett), hogy ne unatkozzon: megvan. WC ülőke, hátha a rágcsa és az ital gyorsabban teszi a dolgát: nincs meg.

- Kell a WC ülőke - jelentette ki Leó.

- Melyik legyen? - kérdezte Anna. Márta ugyanis, ha látta, hogy unokájának vettek valamit a szülei, ő is vett egy hasonló tárgyat, majd később megmutatta és kijelentette: ez sokkal jobb. Az idők során Editke nem szenvedett hiányt semmiben. Volt két rollere, két plüs bocija (akkor épp a boci volt a kedvence, csak bocis mesét lehetett mesélni, bocis tányérból kellett enni és plüs bocival aludni), két festék készlete, és természetesen két WC ülőkéje is.

- A miénk - mondta Leó a pragmatizmus és dac furcsa keverékével. Az ő darabjuk ugyanis még be volt csomagolva a reptéri túlélő csomagba és érkezésük óta ott is volt, nedves törlőkendővel és más szükséges kellékkel.

- Miért azt viszitek? - kérdezte Márta, aki közben kiért a WC-ből. Tegyétek el ezt. Ez sokkal jobb. Csak bele kell tenni egy szatyorba.

Anna Leóra nézett. Leó megadóan felemelte a kezét. Lajos közben kiállt az autóval. Editke rájött, hogy míg Papával volt, túlságosan eltávolodott Apától. Elkezdett visítva rohanni vissza a házba.

- Vegyél fel a nyakamba! - mondta a kislány, de Leó tudta, ez azt jelenti, hogy neki kell felvennie lányát. A ragozással még voltak gondok.

- Nem, kislányom, most nem lehet. Szép ruhában vagyunk, nem koszolhatjuk össze.

Editkét beszíjazták a gyerekülésbe, Márta bezárta a lakást, mindenki elfoglalta helyét az autóban, majd elindultak.

- El fogunk késni, már csak hét percünk van, hogy odaérjünk - kommentálta Márta.

- Én is látom azt a rohadt órát, nem kell mondanod! - vágta rá Lajos.

- Milyen kabát ez? - nézett Editkére. - Ilyen kabátot kell ráadni? Hát hogy néz ez ki?

- Igen böszme - helyeselt Lajos.

- Miért nem azt a lila kabátot vetted elő? - fordult lányához Márta. - Az olyan aranyos. Ezt az undorító kabátot kellett ráadni? Ki adta rá?

- Én - felelte rezignáltan Leó. Anyósa folyamatosan kritizálta tetteit. De a legjobban azt kritizálta, ha semmit nem tett.

- És nem láttad hogy néz ki? Nekem kellett volna előkészítenem Editke ruháját. Forduljunk vissza! Ebben a kabátban nem mutatkozhatunk.

Lajos, mit sem törődve unokája beszédfejlődési stádiumával, cifrát káromkodott. Az autó vissza kanyarodott.

- Ott van a nagy szekrényben, majd kihozom - mondta Márta.

- Nem, mert te lassú vagy, majd én - vágott közbe Lajos. Kiugrott az autóból és eltűnt a házban. Kisvártatva az utcafront felőli ablak függönyét elhúzta és felemelte a kabátot, hogy Márta azonosíthassa. Mikor párja bólintott, már el is tűnt és robogott vissza a zsákmánnyal.

- Most nézd meg, Apád hogy hagyta a függönyt! - mondta lányának. - Most miért nem lehetett rendesen visszahúzni? Mint a putri, úgy néz ki. Már nem érünk oda a templomba.

Közben Lajos megjelent a kabáttal.

- Nézd meg a függönyt! Nézd meg! - ordította Márta, amint Lajos kinyitotta a kocsiajtót és beadta a kabátot. - Így kell otthagyni?

A kocsiajtó a kelleténél nagyobbat csattant, majd Lajos dúlva-fúlva visszament a házba.

- Ez egy esőkabát - állapította meg Anna.

- De sokkal aranyosabb, mint ez a másik - mondta erőtlenül Márta. Nem is hozakodott elő a ruhacserével. Közben Lajos is megjelent, szép nyugodtan. Bezárta a kaput, ráérősen a kocsihoz ballagott. - Most nézd meg apádat! Direkt nem siet! El fogunk késni és direkt nem siet!

- Most jó a függöny? - vetette oda foghegyről.

- Úgy nézett ki, mint egy lepratelep!

- Miért nem tudtad normálisan mondani?

- Normálisan mondtam.

- Ordítottál, mint egy szamár. Lehet, hogy a te fejedben normálisan hangzott, de nem az volt. Editke, ezek negatív példák, ne figyelj ránk.

Lassan megérkeztek a templomhoz. Amint kinyílt az ajtó, Editke Leó karjába fúrta magát és ki sem jött onnan, míg észre nem vette a földön futkosó rovarokat. Akkor leugrott és nekilátott gyűjteni.

A mise tovább tartott, ezért a keresztelő még nem kezdődött el. Szerencsére nem késtek el. Anna testvére, annak felesége és lánya már várták őket. Mindenki üdvözölt mindenkit, Editkét kivéve, aki csak a  hangyákkal volt elfoglalva.

Miután a miséről kiáramlottak az emberek, a keresztszülők és a kis lurkók beáramlottak. Négy gyereket kereszteltek aznap. Az első egy roma család volt. Tetőtől talpig feketébe öltözött a négy keresztszülő. A második családban az anya uralt mindent. A méretekről a nadrágig mindent. Az aprócska apa szinte eltörpült a három keresztszülő mellett. Leóék mentek fel harmadikként. Editke egészen jól elvolt a nagyszülőkkel kb. 5 másodpercig, utána apát akarta. Leó elmagyarázta neki, hogy most nem lehet, de Editkének jobb érve akadt: torka szakadtából üvölteni kezdett. A templom visszhangzott 

Leó így felkapta a kislányt és felvitte őt is. A pap megkérdezte, őt is keresztelik-e, de Leó csak megrázta a fejét.

Az utolsó család a teljes szabadság jegyében mellőzött minden ünnepélyes ruhát. A család tagjai melegítő nadrágban jelentek meg, az apa még egy kendőt is feltett. A keresztszülők karját teljesen beborították a tetoválások, amit a rövid ujjú pólóknak hála mindenki láthatott.

- Editke, most csendbe kell maradni - súgta lánya fülébe Leó.

- Nem! Senki sem marad csendben.

- De igen, csak nézd meg! Te vagy az egyetlen, aki hangoskodik.

- Nem akarok csendben maradni!

A szertartás közben elkezdődött. A hangosításnak hála, az oltárnál állók nem hallottak semmit. Leó, hogy elterelje lánya figyelmét, megpróbált érdekes dolgokat mutatni neki.

- Nézd, milyen szép nagy gyertya.

- Nem, nem szép.Semmiképpen nem szép.

De Editke ellent mondott még a papnak is. Mikor az a rész következett, hogy a keresztszülők hisznek-e Jézusban, a kislány ellentmondást nem tűrő hangon kijelentette:

- Nem!

De ugyan így nem hitt a feltámadásban, örök életben, sem semmiben, amit a pap akart a hívek szájába adni. Ellenállása egy rövid ideig szűnt csak meg, mikor a gyerekek a keresztvíz alá kerültek. Korábban ugyanis szülei elmesélték, mire számíthat a szertartás alatt. Egyfajta felkészítésnek szánták. Mikor felismerte, hogy amiről beszéltek neki, most valósággá válik, elkezdte kommentálni az eseményeket.

- Most leöntik a fejüket. Sírnak, mert vizes lett a hajuk. - tényleg sírtak. Nem számított sem kor, sem hovatartozás. Amint a gyerekek fejét víz érte, ugyan úgy üvöltöttek. Akár kvartettet is alkothattak volna.

A pap keresztet rajzolt a gyerekek homlokára, Editkét ez már nem érdekelte. Körül nézett, lát-e valami érdekeset, majd kijelentette, hogy menjen mindenki haza.

- Még nincs vége a szertartásnak, még nem megyünk haza.

- Haza akarok menni. Senki nem marad itt.

- Még nincs vége.

- De vége van. Mindenki haza megy.

- Ezt nem te döntöd el.

- De!

Leó nem szólt semmit, látta, hogy észérvekkel nem lehet hatni lányára. Editke is csendben maradt, mert nem volt kivel vitatkoznia. Közben a szertartás is véget ért. Az emberek lassan elhagyták a templomot. Újra, kint a napfényen Leó azon gondolkodott, mi a fene volt ez az egész felhajtás. Miért volt erre szükség? Abban sem volt biztos, minek volt a részese. Végig csináltak egy színjátékot, mert mindenki végig szokta csinálni. De mennyivel lettek többek?

- Menjünk haza - mondta Editke. Leó lenézett lányára. - Menjünk - mondta. Mit sem törődve az illemmel, a szép ruhákkal, felvette a nyakába lányát, aki érdekes módon nem mondta, hogy "nem tetszik".

Szólj hozzá!

Címkék: irodalom

Revision 2017 (3. nap)

2017.04.17. 10:46 Travis.CG

Eljött a harmadik nap is. Ismét megkaptam a magamét. Eldicsekedtem, hogy rákkutatással foglalkozom, mire kioktattak, hogy a dohányzás nem is okoz rákot, csak a stressz és az élelmiszer adalék anyagok. Egy ideig gondolkodtam, hogy reagálok valamit, de aztán úgy döntöttem, felesleges. Szépen végighallgattam az érveit.

Érdekes módon találkoztam egy régi motorossal is, aki retro számítógép megszállott és évek óta Luxemburgban él. Átautózott a partyra majd' minden nap, a családi vacsorát kihagyva.Teljesen odáig volt, hogy még vannak mások is, akik ezekre a régi gépekre kódolnak.

A mai nap első megmérettetése a futtatható zenék voltak. A legnagyobb bajom, hogy az alkalmazott kódról nem sok leírást lehetett olvasni, így amikor azt látom, hogy ennek vagy annak a programnak SSE 4.1 kell, akkor nem értem, miért. Többször előkerült a hangszerek fizikai modellezése a leírásban, de ez sem tiszta nekem. Ettől eltekintve elég barátságos volt a felhozatal, de nem nagyon volt olyan, amit a telefonomra töltenék.

A 4k futtatható grafikák tetszettek, nem volt olyan, ami spontán ovációra készteti a közönséget, de a készítők tényleg kitettek magukért, nem lehet ok a panaszra. A régi gépekkel készített képekben az tetszett a legjobban, hogy alig volt konvertált kép. (Amikor a lusta készítő fog egy fényképet, átkonvertálja az adott platform formátumára és hártadől. Persze a konvertálók ezt nem ismerik be és bizonygatják, hogy mennyik kell még dolgozni a kovertálás után, de nem szabad bedőlni nekik.)

A modern grafikai felhozatal szerény volt, a prímet a nagy nevek vitték (Made, Lycan, Unreal, nem feltétlenül ebben a sorrendben). A Poo-Brain azt kell mondani, jön föl. Oni képe simán megállja a helyét a nagyok között.

A Wild a szokásos zenegyűjteményekkel és DOS 256b-al indult, aztán jött valami, amit Atari Music Videónak hivnak. Egy CPU nélküli zenei kütyü. A bemutató videón szétszedték a gépet és meg kell mondanom a Sokol rádió bonyolultabb elektronikával van felszerelve, mint ez a vacak. De ez nem akadályozta a csapatot abban, hogy demót készítsenek rá. Dekadence továbbra is a 20 éves évfordulóját ünnepelte, ezúttal egy 3D nyomtatóval. Ha lenne olyan kategória, hogy a leghülyébb platform, akkor a valódi motorra szerelt mobil telefon által irányított Amigás motorszimulátor biztosan jó eséllyel pályázna rá. Felejtsd el a virtuális valóságot, ha a valósággal irányítod a virtuális világot.

Az animált GIF egy elég furcsa kategória számomra, de most mintha láttam volna az értelmét. Olyan rövid poénokat lehet készíteni, ami önmagában nem elég egy videóhoz, képben pedig nem jön át. Elég marginális kategória, most mégis úgy éreztem, volt értelmük, mégha a legtöbb alkotás felejthető, akkor is.

Az utolsó grafikai megmérettetés a Paintover volt, ahol egy kriksz-krakszra kellett értelmes képet készíteni. Még most is megdöbbent, mit képesek az emberek belelátni egy halom vonalba. Legközelebb egy kínai újság gyászhirdetését kéne nekik adni, mert úgy látszik, ez túl könnyű a résztvevőknek.

Persze beteg játékokból sem volt hiány. Lángszórósként macskákat égethettünk (akik veszélyeztették a zöld területeket), a jó öreg Snake lövöldözős verzióját is láttuk, de még a jó öreg Pongot is megbolondították (az egyik ember a léceked, a másik a labdát irányította).

Nem akartam úgy járni, mint tegnap, ezért elmentem aludni kilenc óra magasságában, pont a koncert alatt. Bár az alvó helyiség a hangfalak mögött volt, olyan erővel dübörgött a föld, hogy azt hittem a frontvonalon vagyok. A csontjaimban éreztem a zenét. Majd meglátjuk, mire lesz elég ez a pihenés.

Az esti kompók közül a 8k volt az első. Mindjárt kaptunk is egy Function invitációt beszéd szintetizátorral. Fulcrum is készített egy beszólós intrót. Kis tankok nyírták egymást nagy erőkkel, míg végül csak egy maradhatott. Egy másik prod is odaszólt az Alcatraznak, igaz csak a leírásban. A kihívásra meg is jött a válasz. Egy igen összeszedett produkciót tettek le az asztalra, több jelenettel, letisztult színekkel és kellemes zenével. Aztán megismétlődött az, amit tegnap a 4k-nál. Elkezdtek jönni a jobbnál jobb produkciók. Homokvihart kavaró kockák, Holdra szálló emberek.

Az oldschool 4k-k nem voltak olyan jók. Huszonöt byte Atari zaj, hosszú C64 scroller, régi PC-s . A Dekadence ismét megünnepelte 20 éves fennállását. Úgy tűnik, 4k elég kevés ezeknek a régi gépeknek.

Az Amigás demókra már nem lehetett panasz. Folytatódott a "minél kevesebb gyorsítás" irányzat. Vagy sima 500-asra vagy közönséges 1200-esre készült a legtöbb produkció. Persze egyesek továbbra is kipaszíroztak mindent a 060-as gyorsítókártyákból. Charlie - az Amigás kompók egyik szervezője - elmesélte, hogy valami speckó kártyának köszönhetően 70MHz-en pörgött a kompógép, aminek örülhettek azok, akiknek nem volt idejük optimalizálni.

Végül eljött az éjszaka fénypontja, a PC-s demók. Annyi volt, hogy a felénél szünetet kellett tartani. Sajnos a 4k-nál látott csoda nem ismétlődött meg, nagyon sok közepes, gyenge produkció volt. Három alkotást emelnék ki a demó tengerből: A Terraforming egy halvány filozófiai hangvételű demó, ennek megfelelő lassú történet meséléssel. A Viianki egy érzelmekre ható, a természet szeretetét előtérbe helyező produkció. Végezetül nem mehetünk el szó nélkül a Spacepigs infantilis alkotása mellett, ahol megismerkedhettünk Kevinnel, a csámpás fogú kisfiúval, akinek hangulat változásait a fogai mozgásából tudhattuk.

Összességében jó kis party volt, a kezdeti nehézségek rendeződtek, sikerült aklimatizálódni és nagyon jó volt látni ennyi remek produkciót.

Szólj hozzá!

Címkék: demoscene

Revision 2017 (2. nap)

2017.04.16. 09:41 Travis.CG

Délelőtt elég meleg volt, jártam egyet a városban. Ma már compók is voltak. A tracked zene, mint ahogy a zenék lenni szoktak, elég vegyes volt, de Blalával jól kibeszéltük valamennyit.

Az ANSI kompóra Luisa valami állati totemoszlopot készített és volt egy apácás, ahol érdekes átmenet volt a vallás és a pokol között. A többiben nem láttam elég fantáziát.

A régi zenéknél szinte minden platform felvonultatta magát. Hiányoltam a pörgősebb számokat, amiket a tracked zenék között lehetett hallani. Ott is elég sok Amiga volt, tehát nem technológiai akadálya volt a ritmus hiányának. Az egyik legjobb a Cintrustrial volt. A zenét egy program valós időben generálta (némi precalc után, a leírás szerint). A hangzás kicsit nyers volt, mintha egy fémfeldolgozó üzemben vették volna fel. Talán emiatt ütött el a sok csipogástól.

A másik meglepő alkotás a Size Matters volt, ami PC speakeren szólt. Csak egy egészen halk sípolás volt, szerintem valódi vason nem szólna ilyen szépen. Legaábbis, amiket eddig hallottam, inkább idegesítő volt, mint szórakoztató.

A fotók természetesen hozták a jól ismert témákat, de talán csak nekem, úgy tűnt több retusálást engedtek meg, mint máskor. Némelyik kép simán megállta volna a helyét Freestyle grafikaként is.

A videók között ismét volt vicces alkotás, aminek örültem: A Saarbrücken busz, mint veszélyeztetett faj. Volt két családi alkotás is, ahol ilyen-olyan módon a gyerekek is részt vettek a mű elkészültében. Mivel egyre több a családos ember, ez nem meglepő. A Poo-Brain tovább tökéletesítette drón-kamerás technikáját. Nem tudom, milyen géppel voltak felszerelve, de igen impresszívre sikeredett filmük.

A PC 4k intrók első három alkotása a gyorsan felejthető kategóriába sorolható. A negyedik viszont már érdekes volt a maga fizikai szimulációjával, még akkor is, ha már láttunk jobbat Archeetol. A raymarching technikával készült prodok összehasonlíthatatlanul jobbak voltak "hagyományos" társaiknál. Az nwep igazán megdöbbentő volt, aztán jött a Second Stage Boss folytatásának is tekinthető Final Stage. Öt kis űrhajó pusztított el egy Halálfraktált, vagy valami hasonlót. És még mindig nem volt vége! Csak jöttek a durvábbnál durvább intrók. Egy percig nem unatkozott az ember. Ősi űrhajó, változó évszakok, paráztató gömb, minden volt. És ez még csak a 4k volt.

Az Amigás intrók kevesen voltak, de jók voltak. Ha az eddigi kompókból nem derült volna ki,  a Dekadence 20 éve gyárt különböző releaseket. A zenei kompók után most egy Amiga intrót is dedikáltak a nagy eseménynek. A zene elég monoton lett.

Utána rögtön következtek a 64k intrók. Bero szoftveres szintetizátorát demonstrálta egy kicsit hosszú és monoton intróban. A második egy szél energiának szentelt intró volt, furcsán forgó propellerekkel. Ezután lemerültünk a tenger mélyére, ahol egy elsúlyedt várost láttunk. A tenger után egy távoli bolygón guruló kis gömb kalandjait tekinthettük meg a Poo-Brain előadásában. A Dekadence intrója, mintha nem is lett volna. Tovább tartott leírni ezt a pár szót róla, mint maga az intró. Az Approxymate nem tudom, mit csinált, de az jól nézett ki. Értetlenkedésem kiterjedt a következő prodra is, ahol még a készítők nevei sem mondtak semmit (Macau Exports?). A Mercury most csak összedobott valamit a partyra, de ha ők összedobnak valamit, még az is a felső harmadban végez. A Conspiracy alkotásában egy kis kocka utazását követhettük végig, talán kicsit hosszabban, mint kellett volna. Az utolsó produkció a Logicoma beszólós 64k-ja volt, ahol az összes nagy nevű csapatot eliminálták és jelezték, hogy színre léptek.

Az oldschool demókon elaludtam. Néha felébredtem, és láttam, hogy még mindig fut az Overdrive 2. Mondtam is magamban, hogy ez tök jó, majd adás szünet. Bocs.

Szólj hozzá!

Címkék: demoscene

Revision 2017 (1. nap)

2017.04.15. 10:21 Travis.CG

Nyuszikát és egyéb családi ünnepet hátrahagyva bepattantam Archee kocsijába és elhúztam Németországba az idei Revisionre. Az esemény a tervezési fázisában még jó ötletnek tűnt (kihagyni az értelmetlen zabálásokat, hallgatni, ahogy megvető megjegyzéseket tesznek az ajándékokra, vagy bármi másra, amit az ember tesz). De ahogy itt ülök és nem találom a helyemet, már nem olyan vicces.

Az utazás elég hosszúra sikerült. Mivel Archee-ék péntek reggel korán akartak indulni, én már csütörtökön Pestre utaztam, hogy le ne késsem az indulást. Kislányomnak elmagyaráztam, mi fog történni, amit ő így összegzett:

- El akar menni az apukád. - el az a hülye barom.

Utoljára még ágyban aludtam, mert az elkövetkező három napban csak a föld lesz a társam. Reggel Archee Kolumbiai barátnője finom rántottát készített, majd bepakoltunk és indultunk.

Mivel a lány viszonylag keveset tudott angolul, főleg spanyolul ment a társalgás, amibe én nem tudtam bekapcsolódni. A tíz órás út, sok bóbiskolás mellett hamar elröppent. Rendkívüli esemény nem történt.

Ez az első party, hogy nem hozok semmi release-t. A mini csapat egyik tagja sem készült semmivel.

A magyar kontingens egy helyre települt, de mikor megérkeztünk, már csak három szabad hely volt azon a részen. Egy ideig néztem, ahogy kétségbeesetten igyekeznek a három székből négyet varázsolni, majd úgy döntöttem, maga oldom meg a problémát. Ez nem is volt olyan egyszerű, mert minden csapat foglalta a haveroknak a helyet. Végül a Mercury mellett volt egy magányos hely, oda telepedtem.

A Revisionnek mindig van egy témája, ami köré csoportosul a party. Idén ez egy utóposztikus technokrata világ, ahol a demoscene az egyetlen lázadó erő a mindent és mindenkit uralni akaró gonosz multinacionális cégekkel szemben. Az ötlet egész jó, nekem már az invitációnál bejött.

Megtartották a Meteoriks díj-átadót, ahol az elmúlt év legjobb alkotásait díjazták. A Conspiracy hideglelős 64K-ja három díjat is nyert (közönségdíj, legjobb high-end alkotás, legjobb történet). Ez úton is gratulálunk nekik.

Szólj hozzá!

Címkék: demoscene

Negatív binomiális regresszió

2017.04.04. 09:10 Travis.CG

A lineáris regresszió igen hasznos és sokoldalú, de nem minden esetben van normális eloszlású mintánk, sőt nem minden esetben dolgozunk folytonos adatokkal.

Diszkrét adatok esetén a negatív binomiális regressziót használhatjuk. A név kicsit félrevezető, mert a függő változó igazából pozitív értékeket vesz fel.

Használata R-be nagyon hasonló a lineáris regresszióhoz. Nézzünk meg egy példát:

library(MASS)
model <- glm.nb(y ~ x, data = d)

 Vicces módon a lineáris regressziónál bemutatott példát itt is használhatjuk, mert a génekben található mutációk száma csak egész lehet. Most nincs szükség az adatok transzformálására sem.

genes <- read.table("genes.tsv")
genes.log <- log(genes+1)
nb.model <- glm.nb(snps ~ length, data = genes)
lin.model <- lm(snps ~ length, data = genes.log)

A glm.nb() fügvény futtatásánál kapunk néhány figyelmeztető üzenetet, de ezzel most nem törődünk. Valószínű az adat nem teljesen tiszta, vagy túl sok olyan gén van, amiben a mutációk száma nulla.

Tehát van egy lineáris és egy negatív binomiális modellünk. Melyik a jobb? Amelyiknél a reziduálisok négyzetösszege kisebb:

sum(lin.model$residuals**2)
[1] 34722.41
sum(nb.model$residuals**2)
[1] 28060.83

Mint látjuk, a negatív binomiális modell jobban illeszkedik az adatokra.

Mire használhatjuk még a negatív binomiális regressziót? Genomi töréspontok meghatározására. Ebben az esetben a töréspontok várható számát becsülték meg egy regressziós modellel, majd vizsgálták, mikor találnak az elvártnál magasabb értékeket. Hasonló logika húzódik meg a rákot okozó gének keresésében is. A különbség, hogy a várható értéket a szinoním mutációk alapján határozták meg, és nézték, hogy az aminosav cserével járó mutációk száma szignifikánsan eltér-e vagy sem.

Használhatjuk még RNA-seq-ben a változó expressziót mutató gének felderítésére, és így vissza is kanyarodunk az RNA-seq sorozatunkhoz. A kvantifikálás során ugyanis egy egész értékekkel feltöltött mátrixot kapunk. Az egy génre (vagy transzkriptre) jutó szekvenciák száma az összes mintára nézve, negatív binomiális eloszlást fog követni. A regresszió segítségével meghatározhatjuk a szórást, a szórás segítségével pedig eldönthetjük, hogy a változás, amit látunk csupán zaj, vagy valódi expressziós különbség. A helyzet természetesen bonyolultabb, mert a különböző minták szekvenálása során eltérő mennyiségű readet kapunk, de a mögötte álló logikán ez mit sem változtat.

A negatív binomiális regressziónak van egy gyenge pontja, amiről még nem beszéltünk. Ezek pedig a "túl sok nulla". Nem tudom egészen pontosan megfogalmazni, mit jelent a túl sok, de azt tudom, hogy emiatt ez a fajta modell nem használható egysejtes RNS szekvenálások feldolgozásához. Ilyen esetben a "zero-inflated negative binomial regression"-t használják, aminek nem tudom, mi a magyar megfelelője.

Akit részletesebben érdekel a téma, annak ezt a könyvet ajánlom. Nem egyszerű olvasmány, de gyakorlatilag a teljes koncepciót levezeti.

Szólj hozzá!

Címkék: machine learning

Ha nincs elég bajunk, csináljunk magunknak

2017.03.27. 02:02 Travis.CG

Néha egyszerűen semmi nem megy. Vannak olyan helyzetek, amikor a legjobb kikapcsolni a számítógépet és semmihez nem érni, ami kicsit is bonyolultabb egy arithmometernel. Ha a vállunkra ül a Bitmumus, semmit nem tehetünk, mással kell foglalkozni, hogy elunja magát és odébb álljon. A legrosszabb, ha még nagyobb energia befektetéssel dolgozni kezdünk.

Egy publikáció ábrájához kellett színskálát készítenem. A clusterProfiler remek csomag, sok szép képet lehet vele készíteni. Csupán egy baj van vele: semmilyen jelölést nem ad az ábrához. Nem tudni, hogy az enrichMapen a piros árnyalatok milyen p-értékekhez tartoznak, a körök mérete hány gént jelöl, stb.

A forráskód böngészése után arra gondoltam, elkészítem magam. Bitmumus ekkor mászott a vállamra és csendben figyelni kezdte, mit csinálok.

R-ben a színátmenetekért a colorRampPalette felelős. Segítségével létrehozhatunk tetszőleges színek között átmeneteket. Mivel gyorsan akartam eredményt elérni, ezért szokás szerint egy karakteres változó nevet használtam. Bitmumus a c-t javasolta és alig hallhatóan kuncogni kezdett.

Az R ezután furcsán kezdett viselkedni. Látszólag értelmes kódok hibaüzenetet kezdtek dobálni. Azt még érdemes hozzátenni, hogy Jupyter alatt tevékenykedtem. Miután láttam, hogy nem vagyok képes a színátmenettel düllőre jutni, elkezdtem mással foglalkozni, természetesen ugyan abban a munkafolyamatban. Ott is egyre-másra kaptam a furcsa hibaüzeneteket.

Kb. fél óra elteltével rájöttem, hogy semmi nem működik, amiben a c() függvényt használom. Bitmumus ekkor már a földön fetrengett a röhögéstől. Nekem még mindig nem esett le. Miért nem megy az egyik legalapvetőbb R függvény? Hozzá sem értem...Kivéve, mikor létrehoztam egy c változót. Biiip. Rossz válasz! A colorRampPalette függvényt ad vissza, nem változót. Sikerült felül definiálnom egy beépített függvényt!

Oké, legalább a hiba megvan. Már csak ki kell javítani. Kernel újra indítás? Bitmumus rekeszizmai begörcsöltek, csak kezével jelezte: csináld, te hülye. Az újra indítást követően még mindig nem kaptam vissza az eredeti függvényt.

Végül bezártam az egész rendszert, kinyírtam minden futó folyamatot. Még a böngészőt sem kíméltem. Visszakaptam az eredeti, értintetlen rendszert. Az órára néztem. Egy óra telt el, de még mindig nem volt színátmenetem. Szépen felálltam és kimentem a szabad levegőre. Bitmumus légszomjal küzdve, négykézláb mászva új áldozat után nézett.

Szólj hozzá!

Címkék: programozás

Genome Informatics 2016

2017.03.13. 01:25 Travis.CG

Jessica Chang: Transforming gene discovery by radically open data sharing

A humán gének 51%-áról nem tudni, milyen hatással van a fenotípusra. Az újgenerációs szekvenálásoknak és a bioinformatika fejlődésének hála a felfedezések száma ugrasszerűen megnőtt. A következő 15 évben valószínűleg megugrik a feldolgozásra váró adatok mennyisége, de az elemzési, validálási kapacitás nem fog emelkedni, mert a kísérletek áteresztő képessége még mindig alacsony. Az adatok korai megosztása nem jellemző a kutatókra, mert mindenki magas impaktú lapba akar publikálni, ráadásul a páciens adatok nyilvánossá tétele etikai aggályokat is felvet. A megoldás a MyGene2 lenne, ahol a páciens oszthatja meg a saját vizsgálati adatait. Ez a Web2 alapokon nyugvó ötlet azért is előnyös, mert a kutatók a ritka betegségek kapcsán, ha megírták a publikációt, nem térnek vissza a betegekhez. Itt viszont a hasonló betegségben szenvedő páciensek kapcsolatban lehetnének egymással és információt kaphatnának az újabb terápiás lehetőségekről. Kórkép, fenotípus és a VCF feltölthető lesz, amit bárki nézegethet.

Konrad Karczenski: Prediction of splice variants and transcript-level effects improves the identification of gene-disrupting variants

A funkcionális régiókban a variációk száma lecsökken, de a szekvenálási hibák aránya ugyan az marad. Ha a variáció az intron kivágódás helyén keletkezik, az nem jelent feltétlenül a transzkript megszűnését, ha az intron tartalmaz GT vagy AG szakaszt az eredeti hely közelében, akkor a transzkript átíródhat. Ezen hibák felderítésére a Loftee VEP plug-in alkalmas. A Broad Institute Exac adatbázisa pedig összegyűjti ezeket. A potenciális kivágódási helyek megtalálására a MaxEstScan a legjobb program. A programból lesz új verzió is, amibe már integrált gépi tanulásos algoritmusok segítik a felhasználót.

Martin Kircher: Advancing massively parallel reporter assays for interpreting regulatory variants

A ritka variációk alacsony mintaszáma miatt nehéz szignifikáns eredményeket kihozni, ezért a megtalált variációk klinikai hatását a rcare nevű programmal lehet megbecsülni. A nem kódoló szakaszban előforduló variációk is fontosak, ezek felderítésére egy lenti vírus MPRA riporter assey-t kell használni. Ez beépül a genomba, de a beépülés helye nem lehet tetszőleges. A módszerük elég jól reprodukálható, de nem eléggé prediktív az eredmény, ezért a módszer további finomítására szorul.

Jennifer Harrow: Improving the speed of genome interpretation via network collaboration and knowledge sharing

Az Illumina felhő alapú genom elemző megoldása, a BaseSpace, több pipeline-t is tartalmaz. A szolgáltatáshoz tartozó AppStore-ban a felhasználó kiválasztja, milyen eszközökkel akar elemezni, majd fizet és megkapja az eredményeket. Nukleotid variációk keresésére még mindig a BWA+GATK a legjobb, struktúrális variációk felderítésére viszont a Delly-nél jobb a Manta. A megtalált variációk biológiai hatásának értelmezésére is van eszközük, ami állítólag 15 perc alatt lefut egy humán VCF-re. Ugyancsak van páciens fenotípus predikció is. A végső riport készítő alkalmazásuk pedig gyönyörű, publikáció kész összesítéseket bocsát a felhasználó rendelkezésére.

Jared Simpson: Analysis methods for nanopore sequencing data

Nanopore szekvenálás egy membrán két oldalán feszültség különbséget mér. A membránon keresztül vezet egy protein csatorna, amin ha átmegy a DNS, megváltoztatja a feszültséget. 1D-nek nevezik a kapott szekvenciát, ha egy szál halad csak át a csatornán, 2D, ha a reverz komplementer is átmegy. A szignál korrelál az átvándorló DNS mintázatával. Egy eseményből (frekvenia változás) 5 vagy 6 méretű k-mer szekvenciájára lehet következtetni (bár a homopolimer hiba magasabb 6-mernél). A hivatalos base caller a Metrichor, de a közösség létrehozta saját base callerjeit. A Nanocall egy rejtett Markov lánc alapú megoldás, csak úgy, mint a Metrichor, de a DeepNano már recurrent neurális hálózatot használ. A szekvenálás hatékonysága is sokat javult az új flowcelleknek hála. Az R7-nél még 81%, de az R9-nél már 92%, ami az új pólus fehérjének köszönhető. De novo összeszerelésnél hasznos eszköz a Nanopolish, ami egy rejtett Markov lánc alapú konszenzus készítő. Segítségével tovább csökkenthető a hibás nukleotidok száma. A szerkezet képes minden féle bonyolult könyvtárkészítési procedura nélkül metilált nukleotidok azonosítására. A base caller ebben az esetben kiterjesztett nukleotid készletet kap, hatékonysága 87% és a módszer hibája úgy tűnik kontextus függő.

 Kerstin Howe: Curation of multiple genome assemblies of the same species and utilisation for reference improvement

Az előadó a GRC referencia genomok felügyeletétől jött. A referencia ellenőrzésére a gEVAL, Gbench programokat használják, de vannak saját curátor eszközök is. Az információt több helyről kapják. Vannak kapilláris szekvenálási eredmények, alternatív módon összeillesztett referenciák (például CHM1, HuRef embernél, MGSCv3 egérnél). Kérdés, mennyire jók a szekvenciák, mennyire lehet javítani a genomokat? Embernél az elsődleges cél a chr11 javítása, amihez optikai illesztést (optical mapping) és  BAC klónokat, PacBio szekvenálásokat használnak. A kapott konszenzus szekvenciákat összehasonlítják. Meglepő módon még mindig vannak hiányzó és hiányos gének, mert a repetitív részeknél fragmentálódik a szekvencia. A kromoszómára nem illeszkedő részeket igyekeznek bevonni az összeszerelésbe, átrendezik a scaffoldokat, eltávolítják a lyukakat és hibás duplikátumokat. Munkájuknak hála 1300 problémát oldottak meg és 3%-al csökkentették az N-ek számát. Aki részletesebben is érdeklődik munkájuk iránt, nézze meg az oldalukat.

Frank Nothaft: Processing genomics data at scale with ADAM and Toil

A szekvenálás igen olcsóvá vált, de a számítógépek még nem tartanak ott, hogy lépést tartsanak az adat áradattal. A processzor mag szám növekszik, a I/O keresztmetszetét horizontálisan skálázódó eszközökkel igyekeznek növelni. A felhő sem jelent megoldást mindenre, mert a performancia sok esetben rosszabb, mint a HPC-k esetében. Egy lehetséges megoldás az Apache Spark. Ez a memória alapú adatbázis iteratív feladatokra a legjobb, erős Python/R/SQL támogatással. Hogyan lehet ezt genomi adat feldolgozásra használni? Először is más logika alapján kell szervezni a munkát, hogy jobban kihasználhassuk a párhuzamos feldolgozás adta előnyöket. A régi fájlformátumok (BAM/VCF) nem támogatják ezt a fajta feldolgozást, mert szekvenciális módon tárolják az információt, valamint az egymásra épülő feldolgozási lépések bizonyos feltételekkel hajtódnak csak végre (legyen a BAM sorba rendezve). Erre a Toil lehet a megoldás, ami egy munkafolyamat építő eszköz, Python alapokon. ADAM-al együtt használva 30-szor gyorsabb sebességet érhetünk el, miközben az eredmények nem változnak. Természetesen nem minden munkafolyamat ültethető át erre a logikára. Haplotípus azonosítás már nem skálázódik hasonló hatékonysággal.

Andrew Farrel: RUFUS: Reference free variant detection improves accuracy

A Rufus egy de-novo mutáció kereső program, ami illesztés nélkül találja meg az eltéréseket. Bemeneti adatai trió adatok. K-merekre bontja a readeket, hashbe gyűjti őket, majd de-novo assemblyt készít az egyedi szekvenciákból. Mivel csak a szekvenciákat nézi, minden élőlényen működik, nem szükséges paramétereket állítgatni. GATK-hoz nagyon hasonló eredményt ad ember esetén, de például a férfi X kromoszómán pontosabbak a találatok, mert a GATK feltételezi, hogy diploid szekvenciákkal dolgozik. https://github.com/jandrewrfarrell/RUFUS

Alicia Oshlack: SuperTranscript: a linear sequence assembled for the visualization and analysis of transcriptome data

Először a readeket összeszerelik a transzkriptekké, majd génekké klaszterezik őket a Corset nevű programmal. A kérdés, hogyan érdemes vizualizálni az egyes izoformákat? Ők úgynevezett szuper transzkripteket készítenek, ami minden lehetséges szekvenciát tartalmaz. Az így kapott mesterséges szekvencia akár differenciál expressziós vizsgálatokra is használható. Előnye, hogy könnyen áttekinthető az exon lefedettség, nem kell aggódni a több helyre illeszkedő readek miatt. A Lace nevű program képes a beadott klaszterekből szuper-transzkripteket építeni. Nem model organizmusokhoz is használható és akár variációk detektálására is használható. Az előadáson bemutatott egyik ROC görbe, ami az egyes transzkriptek expresszióját hasonlította össze, nem volt teljesen meggyőző, de egy másik példában olyan új csirke szekvenciát találtak, ami nincs benne a genomban. A hagyományos differenciál expresszióval való összehasonlítás eltérést mutat a két módszer között, de az előadó szerint a szuper-transzkript ennek ellenére is jobb módszer.

 Jouni Siren: GCSA2: A scalable approarch to indexing population variation graphs

Hogyan indexeljünk útvonalakat gráfokban? Ez egy kompromisszum az index mérete, részletessége és a keresés hatékonysága között. A gráfok számítógépes reprezentálásá folyamatosan fejlődött. Először deBruijn gráfokat használtak, később ezt felváltotta az FM index. A legújabb adatstruktúra a GCSA2. A gráfoknak lehetnek redundáns algráfjai, amiket ha összevonunk, kisebb memória méretet érhetünk el. Egy LF térképezésnek nevezett eljárás segítségével hosszú, egzakt egyezéseket derítenek fel a gráfokban. Az implementáció az 1000 genom variációit 7 óra alatt 387 GB-ra tömöríti és 4 mikroszekundum alatt megtalálja a keresett szekvenciát. Sebességben a BWA szintjén jár.

Birte Kehr: Unknown and non-repetitive sequence in the Icelanders genomes

Az izlandi emberek szekvenálása során olyan szekvenciákra bukkantak, amelyek nincsenek benne a referencia genomban, nem repetitívek és nem transzpozonok. Tizenötezer ember genomjából a nem illeszkedő readeket kiszedték, kiszűrték a mikrobiális genomokat, a maradékot Velvet segítségével összeszerelték. Csoportokba rendezték a kontigokat és variációkat kerestek bennük. A fenotípus még nem teljesen beazonosított, de struktúrális variációkkal találtak asszociációkat.

Katie Pollard: Decoding enhancer function with machine learning

A távoli enhanszerek beazonosítása, a szabályozott gének megtalálása és az enhanszerek mutációinak hatásvizsgálatára gépi tanulási módszereket vetettek be. Sok esetben a Chip-seq nem az enhanszereket azonosítja, a peakhez legközelebbi gén nem minden esetben a szabályozott gén. A szabályozás ennél komplexebb. Az EnhancerFinder képes elkülöníteni az aktív enhanszereket, egy másik eszköz, a MotifDiverge segítségével pedig megállapítható, hogy a transzkripciós faktorban azonosított mutáció a funkció elvesztésével jár-e. Chip-seq adatok mellett publikus Hi-C adatokat is feldolgoztak és azt vették észre, hogy a peakhez közeli gének sok esetben nem szabályozottak. A TargetFinder segítségével a komplex interakciók is azonosíthatóak. Azt a hipotézist vették alapul, hogy ha mutáció keletkezik a szabályozó régióban, akkor az a DNS alakjának megváltozásával jár, mert a transzkripciós faktorok térbeli alakokat ismernek fel. DNAshape program 5mereket rendel struktúrálist formákhoz. Egy hipergeometrikus teszttel megnézték, hogy ezekhez a strukturális formákhoz lehet-e szekvenciát rendelni. A peakek 25%-hoz sikeresen rendeltek összetartozó térbeli formát és szekvenciát. Az eredményeket CRISPR/Cas rendszeren ellenőrzik.

Chris Probert: DeepNuc: A deep learning model that accurately predicts genome-wide nucleosome positioning from ATAC-seq

ATAC-seq-el a nyitott kromatin régiókat lehet meghatározni. V-plotot használnak az eredmények megtekintéséhez, de a nukleoszóma kötőhelyek megtalálása így is nagy kihívás. Nagy mélységű neurális hálót tanítanak be, ahol az első réteg egy konvolúciós mátrix, majd 6 rejtett réteget használnak és különböző szűrőket használnak a különböző jellemzők azonosítására. A kimenet a MNáz szignál. Az eredmények összehasonlításából az derül ki, hogy bár a random forest módszerek is egészen jó eredményeket adnak, az előadó módszere még annál is jobb, split-ATAC-seq-el egyenesen tökéletes.

Michael Hoffman: Transcription factor expression and its effects on binding site occupancy and motif preference

A transzkripciós faktor kötése sejtvonal függő, ezért RNA-seq-et és Chip-seq-et csináltak ugyan abból a szövetből, hogy meghatározzák a kötés preferenciáját. Azt találták, hogy a peakek erőssége korrelál a gén expresszióval. Azt is észrevették, hogy különböző motivumok más-más szövetekben aktívak. A motivumokat klaszterezése után azt találták, hogy a motivumok sejttípus függőek, de biológiai validálást még nem végeztek.

Anshul Kundaje: Deep learning transcription factor binding sites and regulatory sequence grammars in diverse cell types and lineages

A gépi tanuláson alapuló módszerükhöz a tréning adata az 1kb hosszú genomi régiók, amelyek átfednek a transzkripciós faktor peakekkel. A negatív adatszett azokat a régiókat tartalmazta, ahol nincs átfedés. Ha elég sok konvolúciós réteget halmoznak egymásra, motivum kombinációkat is képes megtalálni a rendszer. Habár különböző bemeneti adatokkal tanították a rendszert (ATAC-seq, MNase-seq), a rendszer nem tűnik elég kiforrottnak. Például a Homerrel történő összehasonlítás során az eredmények inkább az utóbbi felé hajlottak. Valószínűleg a negatív adatszettel lehetett valami probléma. Link, link.

Vera Kaiser: Mutational biases drive elevated rates of substitution at regulatory sites across cancer types

A nem kódoló variációkat nem kutatják olyan intenzíven. A transzkripciós adatbázisok átnézése közben azt vették észre, hogy kicsi az átfedés közöttük. Khi-négyzet probával összehasonlították a rákhoz köthető gének szabályozó régióit egy kontrol régióval, nézték a mutációs spektrumot és vizsgálták a variációkat. Azt vették észre, hogy a CTCF kötőhelyeknél a mutációk aránya eltolódott.  Regressziós analízissel igyekeztek meghatározni, mely hatások a legjelentősebbek (pl. replikációs idő), de csak azt találták, hogy mindegyk fontos.

Kim Pruitt: NCBI graphical display tools – Hidden in plain sight

Az NCBI-nál egy új genom nézegetőt készítettek. Érdekessége a többi, hasonló kezdeményezéssel szemben, hogy ez tetszőleges weboldalba integrálható, majd saját annotációt lehet hozzárendelni. A terv az, hogy a GEO-ból is elérhető legyen. Bemutatták a Genome Workbench legújabb verzióját is, a tervek szerint ez fogja leváltani a SeqIn-t.

David Powell: RNA-seq visualization using Degust

A Degust, ahogy az előadás címe is mondja, egy kollaboráció központú RNA-seq vizualizációs program. Mivel az RNA-seq analízsre számtalan megoldás létezik, ezért ezeket építették be a Degustba és inkább a kutatók együttműködésére helyezték a hangsúlyt. Számtalan interaktív eszköz áll a kutatók rendelkezésére, hogy a differenciál expressziós eredményeket nézegessék. A bemenet egy nyers mátrix, amit webszerver alapú alkalmazás ezután feldolgoz. Magas szinten működik, de a hozzáértőknek lehetőségük van, hogy akár az ábrákat generáló R kódot is megtekintsék. A rendszert lehet az eredmények tárolására is használni. Érdekessége, hogy eredetileg Haskelben írták, de végül NodeJS-ben implementálták újra: https://degust.org

Jonathan Manning: ShinyNGS: Interactive data mining with R and Shiny

A Shiny egy webes keretrendszer R-hez, interaktív weboldalak készítéséhez. Ezen alapul a ShinyNGS, ami az analízis végén helyezkedik el és a már analizált eredmények megjelenítésével foglalkozik. Az előadásban példákat láttunk a használatára. A szerzők szeretnék kiterjeszteni egy sejtes RNA-seq-re is. https://github.com/pinin4fjords/shinyngs

Davis McCarthy: Using single-cell RNA-seq data for inference on gene regulation

Az egy sejtes RNA-seq népszerű, mert egyszerű dimenzió redukciós módszerekkel a sejt differenciálódás nyomon követhető. Az expresszió a differenciált sejteknél alacsonyabb a pszeudó idő skálán. A jó eredményekhez természetesen jó bemeneti adatok is kellenek. A scater csomag segítségével a QC könnyen megállapítható. A normalizálásra még nincs általánosan elfogadott módszer, de az scran elfogadható eredményt ad. A különböző batch effektek eltávolítására még mindig az ismétlésszám növelése a legjobb módszer. A hagyományos RNA-seq módszerek nem alkalmazhatóak.

Hagen Tilgner: Comprehensive transcriptome analysis using synthetic long read sequencing reveals molecular co-association and conservation of distant splicing events

A transzkriptek száma magas, hosszúságuk eltérő, de legtöbbször 400-700 bázispár hosszúak. lncRNS-eknek több izoformájuk van protein kódoló társaikénál, míg utóbbiak hosszabbak. Hosszú PacBio readekkel akarták azonosítani az egyes izoformákat. Sikerült új izoformákat azonosítaniuk, allélspecifikus variációkat is találtak, sőt egyes esetekben még új exononokat is felfedeztek. A kivágódások száma a polyA véghez közelebb megnő. Azt is észrevették, hogy összefüggés van a promóterek és az alternatív splicing között.

Simon Hardwick: Spliced synthetic genes as internal controls in RNA sequencing experiments

Az RNA-seq szekvenálások minőségéről az úgynevezett spike-in kontrol használata ad felvilágosítást. Ezeket a mintáktól jól el kell tudni különíteni. A szintetikus szekvenciák 78 gént tartalmaznak, 164 izoformát, egytől 36 exonig. A méret eloszlásuk 250 nukleotidtól 7kb-ig terjed. A hozzáadott kontrolok koncentrációja fontos, mert ha túl alacsony, akkor az FPKM és a tényleges koncentráció között nagyon nagy lesz a szórás. (Az előadó szerint 5.17 FPKM alatt a model nem használható.) www.sequin.xyz

Pali Meisted: Fast fusion detection, assembly, and quantification using kallisto

A fúziós géne fontos szerepet töltenek be a rák diagnosztikában. Az alap Kallisto k-merek segítségével azonosítja a transzkripteket és ha inkonzisztenciát talál a referenciával, eldobja azt. Ezért az alap program nem jó fúziós gének keresésére. A módosított program ellenben visszaadja azokat az eredményeket, amelyek nem fednek át ismert transzkriptekkel. A fals pozitívok száma magas, de a futási idő csupán 5 perccel növekedett meg. A fals pozitívok egy része a rossz annotációból ered.

Szólj hozzá!

Címkék: bioinformatika nanopore machine learning

Tévedni kutatói dolog

2017.03.06. 00:15 Travis.CG

A Sangerben általában hatékonyan mennek a dolgok. Természetesen itt sokan panaszkodnak, hogy a rendelési rendszer bonyolult, az állatházban fintorognak, ha egyedi kérés van, stb, de összességében szerintem tervszerűen haladnak.

De nem hiba nélkül. Ha pedig hibáznak, akkor az nagyot szól. Összességében kétféle hibát lehet megkülönböztetni. Az első kategória a "hagyományos" hiba, amikor valamit elterveznek, de nem úgy sikerül végrehajtani. A második kategória, amikor eltervezik, végrehajtják, de onnan nincs továbblépés, mert azt már nem tervezték el.

Az első bemutatandó példa Katerina esete. Közel 760 PDX mintát kellett volna feldolgoznia. A PDX (patient-derived xenograft) alapja, hogy a humán rákos sejteket egérbe oltják és ott növesztik. A szekvenálás során tehát a minta meghatározatlan mennyiségben egér DNS-t is tartalmazott. Ezt így tervezték, csak épp a bioinformatikusoknak nem szóltak előtte.

Mivel a pipeline-t nem hibridek feldolgozására tervezték, az IT nem nyújtott segítséget. Katerina talált egy R szkriptet, ami megoldja a problémát, de mivel csak neki volt rá szüksége, az IT nem telepítette azt a központi gépekre. Pont helpdeskes voltam, amikor felkeresett, hogy segítsek neki telepíteni a modult.

Biztos fantasztikus ötlet húzódik a program hátterében, de a megvalósítás hagy némi kívánni valót maga után. Először is, a program saját maga akarta elkészíteni a BAM indexeket és ezért a szimbolikus linkeket is visszakövette eredeti helyükre. Ami az iRODS szerveren van, halandók számára csak olvasási joggal.

Mikor erre rájöttem, módosítottam a modul kódját és onnantól már használható is volt.

A másik eset az én csoportomban történt. Közel 1400 mintát szekvenáltak meg és a DNS izolálás több tálcán történt. Kutatónk, hogy gyorsítsa a munkát, nem feliratozta a csöveket, hanem a tálca-pozíció alapján azonosította a mintákat. Az egyik lépésnél, amikor pipettázni kellett egyik csőből a másikba, a monoton munka hatására kimaradt egy cső, amit csak az egész folyamat végén vett észre.

Megvolt a három technikai ismétlés, de csak a Nedves Labor Nagy Szelleme tudta, hogy melyek azok. Az egyetlen dolog, amit tehettem, hogy mind az 1400 mintát hierarchikusan klasztereztem, hogy megtudjam, mik tartoznak össze. Ez nem volt olyan egyszerű, mert igencsak az elérhető memória (1,5 Tb) felső határán járt a szkript és ott futott több, mint négy napig. Kétszer is le kellett futtatnom, mert a fát tartalmazó PDF nem volt elég széles, hogy olvashatóak legyenek a feliratok.

Egyébként a legszaftosabb szekvenálási eredmények a Kísérletes Szekvenálási csoport produkálja. Ami tőlük jön, az olyan, mintha az állatorvosi lovat megfőznék a boszorkány konyhában. Csakhogy néhány példát említsek: 1 nukleotid hosszú adaptor, több száz sejtmagot tartalmazó sejtek (egysejtes) szekvenálása. Ezek egyike sem futhat a pipeline-ban. Gyakran a jól bevált programokat sem tudjuk használni. BWA például úgy nyelte el azokat a rövid adaptorokat, hogy öröm volt nézni. Aztán csak néznek nagy boci szemekkel: nem lehetne valamit mégis csinálni? Természetesen lehet, csak had indítsak el egy vim-et.

Szólj hozzá!

Címkék: életmód bioinformatika