HTML

Az élet kódjai

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

Friss topikok

  • sdani: Oh... néha eszembe jut, hogy az EBI után esetleg vissza kellene menni valamennyire az akadémiai vo... (2025.03.18. 16:58) Pontos, jól behatárolt célok
  • legyen úgy: Szia, Értem és köszönöm a válaszodat! T. (2025.02.24. 18:23) Expose CTF
  • sdani: Sajnos nekem is hasonló érzéseim vannak az R kiszorulásával kapcsolatban. Remélem jobban fogja tar... (2024.04.29. 10:48) R meetup
  • sdani: Nagyon jók ezek a bejegyzések! Feszültséggel teli, fordulatos, mint egy jobb krimi. :D Abba ne hag... (2024.04.29. 10:35) Wgel CTF
  • sdani: @Travis.CG: Egy kis szerencse sosem árt. :D (2024.03.01. 13:19) A bioinformatika helyzete 2024-ben

Revision 2012 (harmadik nap)

2012.04.09. 02:23 Travis.CG

Találkoztam az Alpha Raid csapattal, akik elárulták, mi a játékuk titka, amitől teljes képernyőn sem fagy ki. Ez pedig az SDL. Kicsit csalódott voltam, de ez van. Az embernek mindig magának kell kitalálnia a megoldásokat. Gargaj összeismertetett az @Party egyik szervezőjével. Megígértem, hogy adok be oda is valamit, ha már voltak olyan kedvesek, hogy megengedik, hogy távolról is lehet nevezni. Akkor még nem is sejtettem, milyen könnyen fogom tudni tartani az ígéretemet, de erről később.

Meghallgattam egy szemináriumot, hogyan kell sikeres zenéket írni. Az egy órás előadás tanúságát most megosztom az olvasóimmal: Nézd meg, mit szeretnek az emberek és másold le belőle azt, amit szeretnek. Ezért már érdemes volt idejönni.

Egy másik szeminárium hekkelhető routerekről szólt. Annyira hekkelhető, hogy még kábelt is adnak, hogy konzolról beloggoljon az ember a készülékre. A cross-compilinghoz teljes virtuális gép képet adnak, a router kernele pedig fel tudja csatolni a fejlesztőgép vinyóját. Ez már valami!

A procedurális grafika nagyon tetszett. Már rég nem azok az idők járnak, hogy asztrakt formákat rajzolnak ki. A cél immár a realizmus megragadása. A 64k-k is igen jól sikerültek, ezek közül is kettő volt, ami nagyon megragadott. Az egyik a technológiai tudásával. Egy kis sziget növényvilágát renderelték le. A másik pedig egy játékszobába enged betekintést, ahol épp nem tartózkodnak élőlények. Mindig is rajongtam a történettel rendelkező alkotásokért, ezért ez nagyon tetszett.

A régi gépek 4k-i nem voltak olyan érdekesek, de itt is érezhető volt, hogy újdonságokra törekedtek. Az Amiga demók is jók voltak. Kedvencem, az Elud megelégelte, hogy nem képesek nyerni és beleadtak apait-anyait produkciójukba. Volt minden, amit szeret a közönség: sárkány, dubstep, a gép fizikai korlátainak feszegetése. Nem tudom, mit csinálnak, ha mégsem nyernek :-) Természetesen akadtak kevésbé kifinomult művek is. Az egyik példának okáért felolvasott egy receptet.

A PC demókat hagytam a végére, mert ebben érdekelt vagyok. Legalábbis úgy gondoltam, hogy érdekelt vagyok, mert rögtön úgy kezdték a kompót, hogy három csapattól elnézést kértek, amiért nem fogják bemutatni a produkciójukat. Köztük voltunk. Pasy szerint azért, mert túl sok PC demó van. A jó ebben, hogy van időm megfixálni a rossz részeket. Majd beadom @Partyra, ahol nem fenyeget az a veszély, hogy olyan sok demó lesz. Mivel azért piszkál, hogy a mi nevezésünket szórták ki, elmondom, hogy a nagy nevű, sokak által várt demó mit tartalmazott: Fülsiketítő színusz hullámot, fehérzajt, recsegést és ropogást. Én befogtam a fülemet, de szegény Mu6k, aki az első sorban ült, majdnem megsüketült. És még hosszú is volt. Mindez állítólag valami polgárpukkasztó poén akart lenni. Ez van.

Szólj hozzá!

Címkék: demoscene parti riport

Revision 2012 (második nap)

2012.04.08. 09:27 Travis.CG

A tegnapi nap elég sűrű volt. Reggel zuhanyzás után meghallgattam két szemináriumot. Az első a demók post-processingjéről szólt. Én még eddig egyetlen egyszer sem használtam semmilyen ehhez hasonló módszert, ezért érdeklődéssel figyeltem. Ha feltöltik az előadásról készült videót, ide is belinkelem.

A második szeminárium már nem volt olyan hasznos, mint képzeltem. Egy új szoftverese szintetizátort mutattak be, ami tartalmazott egy szerkesztőt, egy saját programnyelvet, JIT fordítót, talán még szintetizátort is. Elég bonyolultnak nézett ki, hogy használhatatlan legyen a csapatunknak. Hibáktól sem volt mentes.

Kaptam a szervezőktől egy üzenetet, hogy nem jó a demónk, ezért félve kerestem fel őket, hogy megtudjam, mi lehet a baj. Kiderült, hogy nem Ubuntu 11.10, hanem béta 12 alatt akarják lejátszani a demót, mert a 11.10-ben gond van a hálókártya támogatással. Béta állapotú Ubuntun nem teszteltem, ahol az volt a gond, hogy teljes képernyő esetén a Unity eszköztára ott maradt, rontva az élvezhetőséget. Mivel nem tudom újrafordítani laptopon, maradt az a verzió, hogy lemegy ablakos módban. Nem szabad elfelejtenem, hogy a demokódot át kell írni gtk-3.0-ra és meg kell nézni ezt a teljes képernyős bugot.

A tracked music tetszett. Voltak jó és kevésbé jó alkotások, de nem akartam kimenekülni a teremből. Népes mezőny indult a fotó kategóriában. Nem volt velük semmi gond. Az animációk elég gyengére sikeredtek, ezen a Los Angeles Lamersel közös produkciónk sem segített. Executable musicból viszont rengeteg volt. A végére teljesen összefolytak az alkotások. Sehol nem éreztem kiugró teljesítményt. Hallgattam az egymás után jövő muzsikákat és egyik sem fogott meg.

A webes introk ellenben jók voltak. Mellettem Archee az összeset leszólta, de én továbbra is úgy érzem, hogy az Adinpsz igazán kitett magáért. Lehet, hogy nekünk is meg kellett volna próbálkozni beadni valamit ebben a kategóriában? Talán jövőre.

A régi gépek szerelmesei ezen a napon tobzódhattak leginkább. Ekkor mutatták be a zenéket, grafikákat és demókat a 8 bites platformokra. Izgalmas volt látni, mivel próbálkoztak az emberek. Számomra érthetetlen módon egy Amigás release is bekerült közéjük, megcsillantva, mire is számítsunk másnap.

Romeo Knight koncertje késéssel indult, és a nagy hangerő ellenére is igazi fergeteges hangulatot hozott. Ezt sok esetben csukott szemmel hallgattam. Nem a zene élvezetét kívántam fokozni, csupán tartalékoltam erőimet a compókra, amelyek éjjel kettőkor értek véget. Mellettem Mu6k fiatalos lendületében azt hitte, kibírja ébren, de átaludta a compókat. Csak a végükre ébredt fel, a hangos tapsolásra. Ennyit utazni, hogy utána otthon, YouTube-ról kelljen megnézni az alkotásokat...

Szólj hozzá!

Címkék: demoscene parti riport

Revision 2012 (első nap)

2012.04.07. 09:17 Travis.CG

A release nem lett kész teljesen. Maradtak benne bugok, egy jelenetet meg úgy kínlódtam ki. Annyira fáradt voltam, hogy néztem a béna jelenetet és nevettem. Később úgy döntöttem, ezt nem érdemes beadni, mert annyira rossz. Partira ellenben nem érdemes release nélkül menni.

Korán lefeküdtem, másnap reggel pedig indultunk. A közlekedés szokás szerint a legrosszabb formáját hozta. A sínen közlekedő eszközöket gumikerekes járművekkel pótolták, amiket eltérítettek egy baleset miatt. Nem volt számottevő a késés. A gyűjtőponton találkoztam Mu6k-al. Fél óra múlva ott volt Archee is.

Az út hozzávetőlegesen 11 óra volt. Nem történt semmi érdekes, leszámítva, hogy mikor mélyen bent jártunk Németországban, kiszúrtam egy másik magyar rendszámú autót. Előzéskor gondolkodtam, mivel lehetne üdvözölni honfitársunkat, amikor megláttam a vezetőt. Kínai volt. A hosszú út arra is jó volt, hogy meghányjam-vessem a demónk ügyét. Beadjam, nem törődve semmivel, vagy tartsam vissza, hogy javítgassam?

A parti körül már sok scener gyűlt össze. A nagy kivetítőn a Vakondok 2 ment. Úgy vettem észre kedvező fogadtatásban részesült. Az angol fordítás is jól sikerült.

Vezeték nélküli hálózat nem volt, ezért egy kábelen osztoztunk sokan. Vetésforgó-szerű rendszerben feltöltöttük a releaseket. Végül a képernyőn keresztül farkasszemet néztem a becsomagolt demóval, és úgy döntöttem, egye fene, adjuk le.

Szólj hozzá!

Címkék: demoscene parti riport

Készülődés Revision 2012-re (V)

2012.03.31. 21:50 Travis.CG

Nem hagyott nyugodni a hiba, ezért a vektorizáló programot szedtem darabokra. Viszonylag egyszerűen működik: veszi az első képkockát, majd az összes többi képből kivonja azt. Gyakorlatilag a mozgó elemek kontúrját szedem ki. A kontúrokat alakítom át később poligonokká, és itt volt a hiba.

Ha csak a kontúrokat rajzolom körbe, és a kontúr vonala megszakad, a poligon visszakanyarodik a hézag mentén. Ezért tapasztaltam azt, hogy megváltozik a poligon orientációja. Eltávolítottam a vektorizálóból a kontúr keresést és helyettesítettem egy olyan kóddal, ami fehérre meszeli a kép azon területeit, ahol eltérés található a videó első képkockájához képest. A fehér maszatot gond nélkül olyan poligonná tudtam alakítani, amit már fel tudott bontani háromszögekre a demó.

Újabb jelenetet is adtam a demóhoz, szintén geometriai shaderrel. Nagyon tetszik, hogy egyre több kódot pakolhatok át shaderekbe, mert a demó fordítása nélkül tudom változtatni a jelenetek paramétereit.

Sajnos ennek a videós módszernek van egy nagy hátránya is. A jeleneteket nehéz úgy összefűzni, hogy ne legyen feltűnő az illesztés helye. Ezt úgy igyekeztem megoldani, hogy az összes részt azonos kameraállásból, azonos fényviszonyok mellett vettem fel. Ennek ellenére mégsem sikerült minden problémát kiküszöbölni. Az első az operatőr árnyéka volt, ami szintén mozgott és a szintén poligonként bekerült a végső állományba. Eltűntetni viszonylag egyszerű volt: koordináta alapján elkülönítettem és töröltem őket. A második problémát viszont nem ilyen egyszerű megoldani. A kamera ugyanis tele állásnál igen jelentősen torzít, tehát az alak mozgás közben megnő. Ha jó lesz az idő, talán meg tudom ismételni a felvételeket, de nagy a valószínűsége, hogy nem lesz rá idő.

Szólj hozzá!

Címkék: demoscene

Készülődés Revision 2012-re (IV)

2012.03.29. 13:17 Travis.CG

Az időzítések problémáját megoldottam, a trianguláció viszont kifogott rajtam. Először arra gyanakodtam, hogy a metódusokban követtem el valami hibát, ezért kiszedtem őket, és egy külön programban teszteltem a működésüket. A várakozásoknak megfelelően hiba nélkül teljesítettek.

A figyelmem ekkor a poligonok felé fordult, ahol meg is találtam a hibát. A vektorizáló kód elkezdi felépíteni a poligont, majd a felénél megfordítja a körüljárási irányt. Emlékeztek? Az ear clipping csak akkor működik, ha a körüljárási irány nem változik.

A vektorizáló program egy olyan API-n alapul, amit nem tudok megváltoztatni. Nem ismerek olyan geometriai eljárást, hogy a poligon pontjait körüljárási irány szerint sorba rendezhetem, ha valaki mégis beírná a kommentek közé, nem biztos, hogy lenne elég időm, hogy implementáljam. A lehetőségeket figyelembe véve, Grassal úgy döntöttünk, kihagyjuk a produkcióból és csak körvonalak fognak szerepelni.

Az idő vészesen fogy, még vannak hiányzó jelenetek, de továbbra is úgy látom, még be tudjuk fejezni.

Közben a Los Angeles Lamers csapatot is kisegítjük, mert ők nem tudják kivinni a produkciójukat Revision-re, ezért koprodukcióban készül egy wild is. Zenét és egy logót kaptak tőlünk. Ha találok valami elfekvő kódot, amiből valami érdekeset lehet generálni, elküldöm nekik.

Szólj hozzá!

Címkék: demoscene

Készülődés Revision 2012-re (III)

2012.03.26. 11:24 Travis.CG

A hétvégén elkészítettem még egy jelenethez a videókat, este pedig elő VNC adásban megmutattam Grassnak, hol is tartunk. Rögtön előjött egy csomó hiba:

1. A C#-os algoritmus C-re ültetve nem úgy működik, ahogy kellene. Valahol bugos a kód.
2. Ubuntu alatt lassabb a képfrissítés, amitől egyes jelenetek szinkronizációja elcsúszott.

Ellenben kijavítottam két korábbi hibát. Még sok jelenetet kell megfelelő szintre hozni. Mint mindig, most is az idővel van a probléma, ezért a céges laptopot is befogtam a munkára, hogy munkába menet és jövet a tömegközlekedésen tudjak kódolni. A gond csupán annyi, hogy a laptop nem ismeri a legújabb OpenGL szabványt, de a trianguláció hibáját lehet rajta keresni.

A szinkronizáció viszonylag egyszerűen megoldhato, attól nem félek, de lesz-e elég idő minden hiba kijavítására?

Szólj hozzá!

Címkék: demoscene

Készölődés Revision 2012-re (II. rész)

2012.03.18. 17:09 Travis.CG

Trianguláció

A demóban több két dimenziós poligon lesz látható. Mivel szeretnénk rá textúrákat rakni OpenGL alatt, kénytelenek vagyunk felbontani őket háromszögekre. Minden sokszöget fel lehet bontani háromszögekre a matematikusok szerint, de a sokszög bonyuloltságától függően több algoritmust használhatunk. Mit jelent ez a gyakorlatban? A sokszöget alkotó csúcspontokat megadhatjuk véletlenszerűen, vagy szisztematikusan. A sokszög élei metszhetik egymást, tartalmazhatnak lyukakat, sőt a lyukak újabb lyukakat.

Egyszerűsíteni akartuk a munkánkat, ezért kikötöttük, hogy a sokszög nem tartalmazhat lyukakat, és a csúcsok sorrendje az óramutató járásával megegyező irányban írja le az alakzatot. A kikötések után az "ear clipping" (magyarul nem tudom, hogyan lehetne frappánsan lefordítani) algoritmusra esett a választás, amely kellően egyszerű ahhoz, hogy implementálni lehessen.

Az algoritmus leírása

Egy háromnál több csúcsot tartalmazó sokszög három egymás után következő csúcspontját összekötve háromszöget kapunk. Ez a háromszög lehet "száj" vagy "fül" attól függően, hogy a háromszög alapja a sokszögen belül vagy kívül található (1. ábra).

 

 

 

 

Az ábrán az A csúcs egy száj, míg a B egy fül. A fül eltávolításával egy egyszerűbb sokszöget kapunk. Addig ismételgetjük a fülek eltávolítását, amíg egy háromszög nem marad.

Egy háromszögről úgy döntjük el, hogy fül-e, hogy megvizsgáljuk a körüljárási irányukat. Erre van érdekes módon a háromszög területének kiszámításával kapunk választ.:

T = (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1)

A fenti összefüggés ugyanis más előjelű eredményt ad a körüljárás irányától függően.

Egy lépés viszont még visszavan. Az ábrán látható sokszög elég egyszerű, de találkozhatunk olyan elvetemült esettel is, ahol egy másik csúcs a vizsgálandó háromszög területén belül található. Ilyen esetben nem szabad eltávolítani a csúcsot.

A kérdés eldöntésére a háromszög összes szomszédos csúcsával és a vizsgálandó ponttal alkotunk egy-egy háromszöget, és megvizsgáljuk ezen háromszöget körüljárását. Ha az összes körüljárási irány azonos, a pont az eredeti háromszögen belül található (2. ábra).

Ha megvizsgáljuk az AEB és az AFB háromszögeket, láthatjuk, hogy más a körüljárási irányuk. Az algoritmus tesztelésére készítettem egy C#-os programot, ahova idővel további triangulációs algoritmusokat is be fogok építeni.

Algoritmus a GitHub-on.

Források:

http://softsurfer.com/Archive/algorithm_0101/algorithm_0101.htm#Modern%20Triangles
http://www.gamedev.net/topic/295943-is-this-a-better-point-in-triangle-test-2d/
http://cgm.cs.mcgill.ca/~godfried/teaching/cg-projects/97/Ian/applet1.html

Szólj hozzá!

Címkék: demoscene

Bioinformatika jövője

2012.03.02. 15:40 Travis.CG

Sokáig úgy gondoltam, a bioinformatika egyfajta tudományos megváltás. A nehéz és költséges kísérletek zajos eredményeiből a számítógépek, algoritmusok egyfajta letisztult eredményt adnak és olyan összefüggéseket láttatnak meg, amelyeket laboratóriumi munkák segítségével közel lehetetlen felfedezni. Ezt gondoltam egészen addig, amíg újgenerációs szekvenálásokkal nem kezdtem el dolgozni.

Itt ugyanis a még zajosabb eredmények születnek. Kezdjük ott, hogy maga a szekvenálás folyamata is sokkal zajosabb a Sanger-alapúnál. Ezt úgy ellensúlyozzák, hogy nagy mennyiségű rövid szekvencia részletet termelnek. Sajnos a mennyiség nem mindig csap át minőségbe. A bioinformatika ugyanis újabb zajt helyez az eredményekre. A rövid szekvenciák illesztése ugyanis pontatlanná válik ismétlődő szakaszok, mikroszatellitek és egyéb alacsony komplexitású régiók esetén.

A nagy mennyiségű zajos adatot nehéz tárolni, nehéz kiértékelni. A nukleotid polimorfizmusokat nehéz megkülönböztetni a szekvenálási hibáktól, a Chip-seq vizsgálatok esetén pedig a fehérje kötő helyeket nehéz leszűkíteni a nagyszámú találat miatt. A bioinformatika tehát nem, hogy segítene a kutatóknak, hanem újabb nehézségeket varr csak a nyakukba. Természetesen ez nem jelenti azt, hogy bioinformatika nélkül könnyebb lenne, mindössze azt, hogy megszűnt az a szerepe, hogy kiemeli az üveggyöngyöt a sárból. Már annak is örülönk, ha némi átlátszó műanyag kerül a szemünk elé.

Szerencsére a jövő nem tűnik vészesnek. A mostani trendek azt sugallják, hogy a kísérletes munka fogja levenni a terhet a bioinformatika válláról. A szekvenálók hosszabb és pontosabb readeket fognak készíteni. Ez azt jelenti, hogy nem kell olyan mélységben szekvenálni, mint manapság. Ez kevesebb tárolandó adatot jelent, és könnyebb feldolgozást. Egy hosszabb, kevesebb hibát tartalmazó szekvenciát algoritmikusan is könnyebb illeszteni a referenciához.

A kiindulási minták száma is kevesebb lesz. Nem véletlenül hallani az egy sejtet felhasználó módszerekről. A lambda-exonukleázok segítségével pontosabban fel lehet deríteni a fehérjekötő helyeket. Ezzel együtt úgy tűnik, hogy a bioinformatika háttérbe fog szorulni. Továbbra is szükség lesz rá, és lesznek olyan problémák, amelyek csak számítógépes úton lehet megoldani. De vége lesz a "futtatok egy Blastot és én vagyok a király" típusú munkáknak. Ezek bele fognak épülni a biológusok mindennapi feladatai közé.

Ezt támasztja alá, hogy több olyan integrált eszközt látni, mint amilyen a CLC Genomics Workbench, a Geneious, Galaxy, Taverna. A számtalan weboldalról nem is beszélve.

A bioinformatikusok algoritmusokat és eszközöket fognak fejleszteni, esetleg ismert lépésekből álló folyamatokat automatizálnak, de a közvetlen mintafeldolgozás meg fog szűnni.

Szólj hozzá!

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

Készölődés Revision 2012-re (I. rész)

2012.02.27. 20:22 Travis.CG

Habár nem írtam jó ideje, nem teltek eseménytelenül a napok. Grassal pár hónapja kitaláltunk egy koncepciót, amire egy demót építve indulunk a Revision 2012 partin. A koncepció lényege, hogy egy olyan alkotást készítsünk, ami egyrészt élő szereplős, másrészt mégis generált animáció. Jó ideje gondolkodtam ugyanis azon, hogyan lehetne minél kevesebb programozásból elkészíteni egy produkciót.

A koncepció életképességét be kellett bizonyítani, és fel kellett tárni az esetleges hiányosságokat, ami némi kutatómunkát igényelt. Mivel egy része élő szereplős, fontos volt, hogy videóra vegyek bizonyos eseményeket, amelyeket azután számítógéppel feldolgozok. Ha a leírásom egyes helyeken homályos is, az csak azért van, hogy ne lőjjem le a poént.

A videó készítés volt az első nagyobb probléma. Nekem ugyanis nincs kamerám. Azt gondoltam, a mobiltelefon megteszi, ezért egy Amigás winchester beépítő keret és némi kábel kötegelő segítségével a telefont a fotóállványra szereltem. Sajnos nem csináltam képet róla, pedig szédületes látványt nyújtott. Azért, hogy a beépítőkeret meg ne sértse a telefon kijelzőjét, még két befőttes gumit is tettem a telefonra, mintegy tömítésnek.

Ezzel felszerelkezve elmentem videózni. Akkor még nem volt hó, de elég hideg volt. A telefon néha előbb félbeszakította a felvételt, minthogy leállítottam volna. A felvételek során megpróbáltam felidézni, mire emlékszem középiskolás talajtorna gyakorlataimból, aminek az lett az eredménye, hogy többször úgy a hátamra estem, hogy másnak mindenem fájt. Persze csak ezután vettem észre, hogy még a felvételek egy része is hiányzik.

Amelyik felvétel sikerült, azokkal sem lehettem maximálisan elégedett. A telefon színhűsége hagy némi kivánnivalót maga után. Ez egy közönséges felvételnél nem okoz gondot, de máris hihetetlen akadályt jelent, ha számítógéppel akarjuk feldolgozni.

Ez január elején történt, el is ment a kedvem a demó készítéstől. A problémákról beszéltem Grassal, aki felajánlotta saját fényképezőgépét. (Ez úton is köszönöm neki) A felbontás nem számított, de az állvány menet és a színhűség igen. A nagy havazások idején újra elmentem elvételeket készíteni. A hideg itt is kikezdte az akkumulátort, de nagyságrendekkel jobb minőségű felvételek születtek.

Nemrég sikeresen befejeztem az útófeldolgozó programot is, aminek hála három jelenet durva váza már elkészült. Ez elég motivációt jelentett, hogy folytassam a munkát. Egy komoly algoritmus implementálása még visszavan. Ez a trianguláció...

Folytatjuk...

Szólj hozzá!

Címkék: demoscene

Egy BRCA1 adatbázis

2012.02.12. 15:49 Travis.CG

Az egyik legtöbbet kutatott rákos elváltozás, a mellrák. Két génhez köthető a legtöbb rizikófaktor, a BRCA1 és BRCA2-höz. Az itt előforduló polimorfizmusok tehát rendkívül fontosak a kutatóknak és diagnosztáknak. Nem csoda, ha ezeket a változásokat adatbázisokba gyűjtik. Az egyik ilyen adatbázis a BIC. Mivel személyi adatokat is tartalmaz, jelszóval védett az oldal.

A teljes adatbázis letölthető tabulátorokkal határolt szövegként, amit aztán lehet vizsgálni. Feltéve persze, ha kitaláljuk, hogyan épül fel az adatbázis.

Az adatokból ugyanis tisztán látszik, hogy a tervezést az újabb tudományos eredmények elavulttá tették. Ahelyett, hogy újratervezték volna az adatbázist, inkább az új adatokat paszírozták a meglévő rendszerbe, furcsa titkosítás-szerű logikával. Azért, hogy másoknak ne kelljen a dekódolással szenvedni, leírom, hogy hogyan értelmezhetőek az adatok.

A legfontosabb adat, az adott variáció pozíciója. Ez a cDNS-en található nukleotid pozíciója. Megadják azt is, melyik exonban kell keresni. Időközben intron adatokat is elkezdtek feltölteni. Ha tehát exonnak I-3 van megadva, akkor az nem exon, hanem intron adat. A pozíció is módosul. 667+3 alakra, ami azt jelenti, hogy a második exon végétől még 3 nukleotid távolságra van a variáció. De néha a következő exon elejétől számolják a pozíciót, akkor értelemszerűen 1445-12 alakot fogunk felfedezni.

A mutáció jellege deléció, inszerció és SNP lehet. A deléciót a del kulcsszó jelzi. Előtte és után lehet szóköz, de akár el is maradhat. Ha rövid a szekvencia, akkor kiírják. pl: del AATGG, de ha túl hosszú, akkor csak a méretét írják ki. del 18. Hasonló a helyzet az inszerció esetén is (ins kulcsszó). A probléma akkor van, ha egy hosszabb szakasz egy rövidebbre cserélődik. Ilyen esetben láthatunk ilyen bejegyzést is: del 23 ins ATG. Az SNP-k jóval egységesebbek: nukleotid to nukleotid. Tehát A to G vagy C to T. Feltételezem, senki nem ellenőrizte az adatokat, miután felvitték, mert ilyen formát is láttam: A to G del G.

Vannak etnikai és nemzetség tárolására szolgáló mezők is. Valahol meg tudják mondani egyértelműen: pl Italian. néha viszont bizonytalanok: German? Egységes formát itt sem találunk. Az amerikaiakat például négyféle módon láttam leírva: usa, U.S.A, African American, United.

Az adatbázist jó ideje nem frissítették, de remek figyelmeztetés arra, hogy bárhol érhetnek minket meglepetések.

Szólj hozzá!

Címkék: bioinformatika

Tengerészgyalogos erőnléti felmérés

2012.02.03. 15:25 Travis.CG

A hétvégén elhatároztam, hogy végigcsinálok egy tengerészgyalogos erőnléti felmérést. Nem kell komoly megpróbáltatásokra gondolni. Csak 5km futás, húzódzkodás és felülésből áll. Mindezeket a lehető leggyorsabban. A részleteket itt olvashatjuk.

A húzódzkodással kezdtem. 18-t tudtam megcsinálni. Utána szusszantam egyet, majd két perc alatt 83-szor felültem. Az első perc után tört meg a lendületem. Egy felüléshez utána már 5 másodperc kellett, de becsülettel végigcsináltam, majd két percig a földön feküdtem és csak lélegeztem. Mikor úgy éreztem képes vagyok felülni, felvettem a futócipőt és elkezdtem futni.

Három kilóméter után kezdtem kifulladni. Szerencsére ekkor jött egy lejtő, ahol újra felvettem az utazó sebességet. 27 perc 5 másodperc alatt futottam le.

A táblázat szerint egy 219 pont, ami a 27-39 éves korosztályban első osztályú eredmény. Minden esetre másnap nem éreztem magam első osztályúan. A vádlim egyetlen fájdalom csomóvá vált. Minden lépés után úgy néztem ki, mint egy hadirokkant. Nevetni nem tudtam, mert a hasamban is izomláz volt. Egyedül a húzódzkodás nem hagyott nyomot.

Ajánlom mindenkinek, mazoistáknak kötelező.

Szólj hozzá!

Címkék: sport

Részecskerendszerek geometry shaderben

2012.02.02. 22:20 Travis.CG

Az OpenGL 4.0-tól kezdve nem csak csúcspontokként, pixelenként, de primitívenként is futtathatunk programokat. Ez azt jelenti, hogy ha van egy összetett alakzatunk, akkor az azt felépítő háromszögek mindegyikét feldolgozhatjuk shaderrel.

Mit jelent mindez a gyakorlatban? A vertex shader csak egyfajta "ajánlás", hogy miként jelenjen meg az alakzat, a tényleges megvalósítást a geometry shaderre bízhatjuk. Ha ehhez még hozzávesszük azt is, hogy a geometry shaderben új csúcspontokat hozhatunk létre, akkor nem meglepő, ha az ember rögtön azon kezd el gondolkodni, miként használhatja ezt egy demóban.

A koncepció bemutatására egy nagyon egyszerű részecske rendszert fogunk látni, ami halványan egy tüzijátékra emlékeztet. A csúcspontok a CPU-ban kerülnek kiszámításra, majd a geometry shaderben repeszeket adunk hozzá. Mindent pontokként rajzolunk ki.

Először meghatározzuk a csúcspontok helyzetét:

   for(i = 0; i < PARTICLE_NUM * 3; i++){
      pos[i] = drand48() - 0.5;
   }
Véletlenszerűen kiválasztunk néhány koordinátát. Ezután létrehozunk egy vertex array objectet.

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

   glGenBuffers(1, &fire_vbo);
   glBindBuffer(GL_ARRAY_BUFFER, fire_vbo);
   glBufferData(GL_ARRAY_BUFFER, PARTICLE_NUM * 3 * sizeof(GLfloat), pos, GL_STATIC_DRAW);
   glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
   glEnableVertexAttribArray(0);
További attribútumokat is megadhatunk újabb bufferek hozzáadásával. Minden attól függ, mennyire összetett részecskéket akarunk. Most csak a pozíció kerül átadásra.

void PlayFirework(){
   double time;
   GLuint uni;

   time = getTimeInterval();
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

   uni = glGetUniformLocation(fire_prg, "time");
   glUniform1f(uni, time);

   glUseProgram(fire_prg);
   glBindVertexArray(fire_vao);
   glDrawArrays(GL_POINTS, 0, PARTICLE_NUM);
}
A megjelenítés abból áll, hogy a csúcspontokat kirajzoljuk a megfelelő shaderrel. Mivel animációt is akarunk, ezért az eltelt időt is elküldjük egy változón keresztül. (time) Végül lássuk a shadereket.

#version 410
layout (location = 0) in vec3 vertex;

void main(void){
   gl_Position = vec4(vertex, 1.0);
}
A vertex shader nem csinál semmi izgalmasat. Megmondjuk neki, hogy a buffer mely attribútumát használja fel, majd tovább is adjuk ezt az információt.

#version 410

layout (points) in;
layout (points, max_vertices = 40) out;

out vec4 color;

uniform float time;

void main(){
  float theta;

  vec4 emitter = gl_in[0].gl_Position;
  float offset = mod(time, 2) / 22.0;

  gl_Position = emitter;
  color = vec4(1.0);
  EmitVertex();
  EndPrimitive();

  for(theta = 0.0; theta < 3.14 * 2.0; theta += 0.2){
     gl_Position.x = emitter.x + offset * sin(theta);
     gl_Position.y = emitter.y + offset * cos(theta);
     color = vec4(1.0 - (offset * 10.0), 0.0, 0.0, 1.0);
     EmitVertex();
     EndPrimitive();
  }
}
A geometry shader végzi a munka oroszlán részét. Megmondjuk, hogy milyen formában fogadjuk a primitíveket. Most pontok vannak beállítva, de természetesen lehetnek háromszöget is, a program felépítésétől függően. Azt is megadjuk, hogy mi a kimeneti primitív típusa. A példában ez is pont. Érdekes, hogy nincs szükség arra, hogy a bemeneti és kimeneti típusok megegyezzenek. Tehát én akár háromszögeket is felépíthetek a bemeneti pontok alapján.

Leírásokban általában nem utalnak rá, de logikus, hogy nem lehet akár mennyi új csúcspontot képezni. Az általam birtokolt kártya megkövetelte, hogy állítsam be ennek maximális számát. Ennek hiányában nem generált hibaüzenetet, de nem is jelenített meg semmit. Nálam maximálisan 256 csúcspontot lehet emittálni. (Eredetileg gömböket akartam rajzolni, de nagyon hamar túlléptem a keretet.) A color kimeneti változót a fragment shader fogja megkapni. A time pedig az idő intervallum, amit szintén a CPU küld át.

Ami a shader szempontjából a legfontosabb, az a gl_in struktúra tömb. A tömb annyi elemet tartalmaz, ahány csúcspontot a primitív. Mivel pontokból kapjuk a csúcspontokat, ezért egyetlen elemet tartalmaz a tömb. A struktúra egyik eleme a pozíció információ (gl_Position)

Az idő alapján kiszámoljuk, mennyire mozdulhatnak el a repeszek a középponttól, erre szolgál az offset. Most jön az első érdekes rész. A gl_Position változónak megadjuk pontosan ugyan azt az értéket, amit megkaptunk. Ez csupán azért kell, hogy lássuk a középpontját a tüzijátéknak. A színe is más a pontnak. Két geometry shader specifikus függvény zárja a szakaszt. Az EmitVertex() jelzi, hogy elkészültünk egy új csúcsponttal, majd az EmitPrimitive(), hogy a primitív is elkészült. Ha háromszögekkel dolgoznánk, akkor háromszor annyi EmitVertex() kellene, mint EmitPrimitive().

Egy ciklusban is csúcspontokat hozunk létre. Egy folyamatosan növekvő kör érintőjén helyezkednek el a csúcsok, és az idővel halványulnak. Két másodpercenként újabb adag részecske keletkezik.

#version 410

layout (location = 0) out vec4 FragColor;
in vec4 color;

void main(void){
   FragColor = color;
}
Végezetül a korábban beállított szín segítségével megjelenítjük a pontokat.

Az új shaderek segítségével egyre több feladatot adhatunk át a GPU-nak. Új alakzatokat hozhatunk létre, és akár egy jó kis demót is írhatunk segítségükkel, mint amilyen a Texas is a keyborderstől. Ez a demó DirectX-es ugyan, de az OpenGL 4 segítségével mi is használhatjuk a technikát.

Szólj hozzá!

Címkék: programozás demoscene opengl

AmigaOS 4.1 update 4

2012.01.19. 21:32 Travis.CG

 Olyan sok mindenről szeretnék írni, de a posztok nagy része megmarad az elhatározás szintjén. Az egyik ilyen téma az AmigaOS 4, amiről már két frissítéssel ezelőtt szerettem volna írni valamit, de elmaradt.

Most pótolom. Már tavaly kijött a negyedik javítócsomag, amit fel is tettem, de még nem írtam le a tapasztalataimat vele kapcsolatban. Kezdjük az elején. Először is, ez nem igazi Amiga. Abban minden Amiga fanatikus egyetért, hogy az Amiga cég becsődölt, az általuk kiadott termékek fejlődése ott megállt, valamikor 1994-ben. Minden, ami utána jön, gyakorlatikag az Amiga életérzés átültetése újabb számítástechnikai eszközökre. Három nagyobb irány van: MorphOS, ami a PPC-s Apple gépeket vette célba, az AmigaOS, ami egyedi fejlesztésű gépekre készül, végül az Aros, ami az x86 architektúrán igyekszik megvetni a lábát.

Ez a három ág mást sem csinál, mint egymást szidja, egymással versenyzik, és mindegyik különböző okokra hivatkozva azt hiszi, hogy az egytlen és egyedüli üdvözítő út az övé. Ez a vita szerintem annyi értelemmel bír, mint a Linux/Windows, Java/C# és a többi unalomig ismert ellentét. Talán azért is látom így, mert én nem vagyok régi Amigás, 2008-óta foglalkozom csak vele. De éppen ezért talán objektívebben látom a kérdést, mint azok, akiknek ez az élete.

De nézzük magát a rendszert. Én egy MicroA1-es gépen futtatom az AmigaOS4.1-t. A gép szerény paraméterekkel bír. Van benne 256MB ram, 800MHz-en ketyegő G3-as PPC processzor és egy ATI Radeon 7000.

Az operációs rendszer egy felhasználós, nincs bejelentkező képernyő. Híján van a memória védelemnek is, amit abból szoktam észrevenni, hogy egyik pillanatról a másikra megáll az egérmutató és ebből az állapotból csak egy újraindítás zökkenti ki. Ha viszont kerüljük a "hirtelen mozdulatokat", akkor nincs sok gond vele. Nézzük, mit lehet kezdeni vele!

Webböngészés

Az internetet az Origin Web Browseren keresztül érhetjük el. Jelen posztot is ebből írom. Nem jelenít meg minden oldalt. Például a YouTube betöltése automatikusan lefagyasztja az egész rendszert, de mivel nincs Flash támogatás, ez nem számít. (MorphOS ilyen téren előrébb jár, ott a HTML5-be ágyazott videókat gond nélkül megnézhetjük). Nagy képeket a kis méretű videómemória miatt lassan tölt be. A JavaScript támogatás megfelelő, a Google Mailben a chat is üzemel. Amit viszont nagyon nem szeretek benne, hogy nem látom, hogy a fájlok letöltése hol tart. Ha egy nagyobb állományt letöltök, akkor annak befejezéséről úgy szerzek tudomást, hogy a routeremen már nem villognak a ledek. A CSS is korrekt, természetesen akadnak oldalak, ahol a formázás rosszul jelenik meg.

Emulátor

A negyedik frissítés hozott egy új emulátort is, amivel állítólag egyszerűbb a klasszikus gépekre írt játékok futtatása. Mivel én inkább demókat szeretek nézni, arra voltam kíváncsi, mennyire fognak ki a demók rajta. Két Amiga 500-ra írt demót próbáltam ki. Egy kis dialógusablak jelenik meg az emulátor elindítása után, ahova fogd és vidd módszerrel bedobhatjuk a futtatni kívánt program ikonját. Ezután megjelenik egy konfiguráció szerkesztő, ahol beállíthatjuk az emulátor paramétereit. Ha végeztünk, elég kettőt kattintani a program ikonjára, amitől elindul egy klasszikus workbench és azon belül a program.

Megpróbáltam a Lightshaftet is futtatni, de nem sikerült. Nem kaptam hibaüzenetet, egyszerűen csak nem indult el. Az emulátorból ezután nem tudtam kilépni, mert a dokumentáció nem említi, hogyan kell. A próbálgatások árán rátaláltam az Alt+q kombinációra, amitől visszajutottam az OS4.1-be. Nem kizárt, hogy a 060-as AGA demókat is lehet futtatni vele, de nekem nem sikerült.

Video lejátszás

Van MPlayer port, annak segítségével lehet videókat lejátszani. Az Amineten fellelhető verziót nem tudjuk használni, de az AmigaSoft oldalán frissebb, működő verzió van. Eddig még nem volt vele problémám. A processzor teljesítménye miatt nagy felbontású tartalmak csak akadozva jelennek meg.

Fejlesztés

Az SDK tartalmaz egy GCC fordítót, kevés dokumentációt, sok példaprogramot, debuggert és egy kisebb Unixos parancsgyűjteményt. Mivel szeretem a Vim szövegszerkesztőt - Linux alatt is azt használom - adta magát, hogy ide is telepítsem. Számomra így nincs különbség az AmigaOS és a Linuxos fejlesztés között. Ami nekem nagyon hiányzik, a dokumentáció. Említettem, hogy nem használtam klasszikus rendszereket, ezért sok programozói megoldás még szokatlan számomra. Van OpenGL támogatás is, ez most már a rendszer részét képezi, nem kell külön letölteni a könyvtárakat. Ugyancsak a rendszer része immár az SDL is. Ezt úgy vettem észre, hogy naívan elindítottam az egyik demónk AmigaOS-es átiratát és ment.

Összegzés

Személy szerint elégedett vagyok az AmigaOS4.1-el. Nem atom stabil (mint ahogy állítják mások), sok hiányossága van, de nem is azért használom, mert minden munkát ezen akarok megcsinálni. Aki erre vágyik, az használjon Windowst vagy Mac-et. Aki viszont a kényelmetlenségek ellenére is olyan rendszert szeretne, aminek egyénisége van, az válassza valamelyik Amiga útját.

 

Szólj hozzá!

Címkék: amiga

Emboss: Szekvencia illesztések

2012.01.16. 15:49 Travis.CG

Korábban megismerkedtünk azokkal az Emboss programokkal, melyek a szekvencia kezelésében segítettek nekünk. Most azt tudjuk meg, mit tehetünk, ha két szekvenciával kell dolgoznunk.

Először is készítsünk teszt adatokat a munkánkhoz a makenucseq paranccsal. Hozzunk létre egyetlen 10 ezer nukleotid hosszúságú szekvenciát. Ha elkészült, adjunk hozzá mutációkat az msbar programmal, és mentsük egy másik állományba.

>makenucseq -amount 1 -length 10000 -outseq test.fasta -auto
>msbar test.fasta -count 40 -point 1 -block 1 -codon 0 -outseq test2.fasta
Van két szekvenciánk, melyek 40 ponton eltérnek. Az első program, amivel megismerkedünk, a needle. A  neve a Needleman-Wunsch algoritmusból származik, tehát ez egy globális illesztőprogram. Hosszú szekvenciáknál, mint amilyen az általunk készített is, nem alkalmazható, mert az illesztéshez felhasznált mátrix nem valószínű, hogy elfér a memóriában. Ezért csak az első 300 bázispáron fogjuk tesztelni.

>needle test.fasta test2.fasta -sbegin1 0 -send1 300 -sbegin2 0 -send2 300 -outfile global.needle -autoA kimenet mutatja a két szekvenciát, amelyet illesztettünk és pipe karakterrel jelzi a tökéletes egyezést.

Ha hosszabb szekvenciákat akarunk illeszteni, akkor a stretcher programhoz fordulhatunk. Ez egy Myers-Miller algoritmust használ, hogy megtalálja nekünk az optimális globális illesztést, miközben a memóriaigénye alacsonyabb, mint a needle-nek.

Lokális illesztéshez is több programot kapunk. A water a klasszikus Smith-Waterman algoritmus megvalósítása, hosszabb szekvenciákhoz ezért nem érdemes használni. Ha mégis nagyratörő terveink vannak. akkor a supermatcherhez fordulhatunk. A paraméterezésük nem tér el lényegesen, ezért csak egy összesítő példa álljon itt a programok használatáról.

>water test.fasta test2.fasta -sbegin1 0 -send1 300 -sbegin2 0 -send2 300 -outfile local.water -auto
>supermatcher test.fasta test2.fasta -outfile local.sm -auto
Ha megnézzük a két eredményt, láthatjuk, hogy a supermatcher bár gyors, rosszabb eredményt ad az első 300 bázispáron, mint a water.

Az Emboss nem tartalmaz programokat olyan problémákra, melyekre már létezik megoldás. Például nincs benne Blast konkures, sem a ClustalW babérjaira törő program. De vannak olyan eszközök, melyek jól kiegészítik ezeket a programokat. Az emma például egy ClustalW-t futtató program. De említhetném például a cons alkalmazást is, ami többszörös illesztésből készít konszenzus szekvenciát. (Ezt egy 23Mb-os SAM állományon próbáltam ki, de fél óra alatt sem futott le.)

Amit viszont feltétlenül érdemes megemlíteni az illesztőprogramok kapcsán, az az illesztés kimeneti formátuma. Valamennyi bemutatott alkalmazás eredményét az -aformat3 kapcsolóval formázhatjuk.

pair/srspair:
atggatatgtggtccggg
||||||||||||||||||
atggatatgtggtccggg

markx0:
tttgcag-acaaccccg
::::::: :::::::::
tttgcagaacaaccccg

markx1:
tttgcag-acaaccccg

tttgcagaacaaccccg

markx2:
gcctttga-----tctc
........TACAT....

Megpróbáltam érzékeltetni, hogy mi vár ránk, ha különböző formátumokat használunk. A blogmotor formázása viszont kifogott rajtam. A markx3 és markx10 formátumok mindkét szekvenciát külön tartalmazzák.

Szólj hozzá!

Címkék: bioinformatika

Szekvencia illesztések megtekintése

2012.01.13. 13:46 Travis.CG

Az ember vizuális típus. Akkor is szereti grafikusan megtekinteni munkája eredményét, ha annak nincs is gyakorlati haszna. Így van ez a bioinformatikában is. Az újgenerációs szekvenálási eredmények grafikus megtekintése időrabló feladat. Az adatok mennyiségét figyelembe véve gyakran szükségtelen. Viszont előfordulhat olyan eset, amikor nem kerülhetjük meg azt, hogy szemünkre és józan eszünkre támaszkodva megnézzük, mi is kaptunk eredményül.

 Jelen posztomban több programot fogok bemutatni, amelyek alkalmasak arra, hogy illesztéseket jelenítsenek meg. Mind kereskedelmi, mind ingyenes programok belekerültek a tesztbe.

EagleView

Első versenyzőnk az EagleView. A programot bináris formában terjesztik, Windows, Linux és MacOSX-re egyaránt letölthető. C++-ban fejlesztették. Akadémiai használatra ingyenes, letölteni regisztráció után lehet. A szerzők szerint még tartalmaz hibákat, amit meg tudok erősíteni. Az Overlapping Size opcióra klikkelve mindig lefagy. Funkció nem sok van benne, tudunk jobbra és balra menni a szekvenciákon. Támogatott fájlformátum egyedül az ACE. Szerintem ezt csak akkor használjuk, ha egy börtön mélyén pisztolyt nyomnak a fejünkhöz.

CLCBio Workbench

A CLC-ről már többször írtam, de még nem részleteztem a megjelenítőjét. A CLCBio Genomics Workbench kereskedelmi termék, 14 napos próbaidővel. Az idő lejárta után sok funkció nem érhető el, de nézegetőnek még használhatjuk. Ingyenes alternatívája a CLC Sequence Viewer, de ez nem képes megnyitni az általunk vizsgált fájlokat.

A program előnye, hogy kereshető benne az adott read neve, referencia szekvencia pozíció. Egyszerűbb szerkesztő funkciók is elérhetőek, mint amilyen az illesztés egy részletének kivágása, elmentése. Többféle formátumot ismer, a referenciára több annotációt is ráhelyezhetünk, ami hasznos, ha funkcionális összefüggéseket keresünk. Egyik nagy hátránya, hogy rendkívül ronda, a másik a readek rendezése, amit igyekszik mindig átrendezni, akárhányszor léptetjük az ablakot. Aki igényli az integrált környezetet, sok pénze van, annak jó választás lehet.

Geneious

A másik kereskedelmi termék a Geneious, amiről már szintén írtam. Ott az eszközök hiányára panaszkodtam, de mi a helyzet vele, mint illesztés megjelenítővel? A felhasználói felület gyönyörű. A basic verziót ingyen használhatjuk, míg az eszközökkel megpakolt termékért fizetni kell. A Linux, Windows, MacOSX verziók mellett Solarisra is elérhető. Java nyelven írták.

Az általam kipróbált példány Fedora 16-on a menüből indítva hibával kilép, de ha belépek a telepítés helyére és onnan indítom, akkor szépen fut.

A kívánt pozíciót gyorsan megkereshetjük az ablak tetején található koordináta segítségével, de akár a nevük alapján is rátalálhatunk a readekre. A menüket egérrel nem tudtam elérni, ami lehet, hogy csak a Fedora 16 egyik sajátossága, de akkor is zavaró volt. Akik nem elégszenek meg a CLC puritán kinézetével, azok nyugodtan válasszák a Geneious-t.

Tablet

Az első program, amivel átléptünk az ingyenes alkalmazások világába, a Tablet. Java nyelven készült, elérhető az összes platformra. Ami nagyon tetszik a Tabletben, hogy több színezési módszerrel emelhetjük ki a nekünk tetsző részletet. Hátránya, hogy a navigálás primitív módon valósult meg. Nem tudunk adott koordinátára ugrani, ami például a humán 1-es kromoszómán igen nehézkessé teszi. ACE, AFG. MAQ, SAM, BAM, SOAP állományokat képes megnyitni, ez elég nagy szabadságot ad. GFF3-ban képes annotációt is betölteni. Tetszik ellenben, hogy kapunk egy áttekintő képet. Automatikusan keresi a frissítéseket, de a felhasználóra bízza, hogy az le akarja-e tölteni vagy telepíteni. Ez is szimpatikus tulajdonsága. Hátránya, hogy semmilyen szerkesztő funckiót nem kapunk. A programot csak az illesztés megtekintésére használhatjuk. Ha ezek nélkül tudunk élni, a Tablet egy remek választás.

IGV

Elérkeztünk a nézegető programok leghíresebbjéhez, az IGV-hez. Egyes cégek, akik pénzért feldolgozzák a nyers szekvenciákat, képesek IGV-t csomagolni az elemzések mellé, hogy a felhasználó láthassa, mit kapott. Azt gondolhatnánk, hogy bizonyára nagyon szép felhasználói felülettel látták el. Nem. Ez a Java nyelven írt program bizony nagyon ronda. Cserébe viszont sok hasznos funkciót kapunk.

Az egyik ezek közül az igvtools, ami segítségével a sam/bam állományokon hajthatunk végre egyszerűbb feladatokat, mint az indexelés vagy sorba rendezés. Ez akkor lehet hasznos, ha a SAM fájlunk nincs koordináták szerint sorba rendezve, és ezt az IGV szóvá teszi. Anélkül, hogy a programból kilépnénk, IGV-kompatibilis állományokat hozhatunk létre. Természetesen az igazi az lenne, ha ezeket a feladatokat automatikusan oldaná meg az IGV, de ne legyünk telhetetlenek. A program hátránya, hogy nincs áttekintő kép, ami miatt először nem is látjuk, hogy hol van és hol nincs lefedettség. Ehhez nagyítani kell. Hosszú szekvenciák esetén ez hátrány, mert sokat kell lépkedni, hogy megtaláljuk azokat a régiókat, ahol nincs lefedettség.

Az IGV-t azoknak ajánlom, akik több illesztést hasonlítanak össze. Ez az eszköz az egyetlen, amelyik egyetlen referenciához több SAM/BAM állományt is be tud tölteni.

Frissítés:

Időközben találtam egy érdekes oldalt, ahol rengeteg vizualizációs eszközt lehet találni:

http://ngslib.i-med.ac.at/taxonomy/term/18

Frissítés 2:

GoldenHelix GenomeBrowser

Nemrég ingyenessé vált a GoldenHelix nézegetője is. A program C++-ban készült, Qt felhasználásával. Nem sűrűn találkozni céggel, akik keresztplatformos C++ programot fejlesztenek (Windows, Linux és MacOSX-re is kiadták, 32 és 64 bites verzióban egyaránt)! Kicsit fanyar szájízt ad, hogy használni csak regisztráció után lehet, ahol összegyűjtik az e-mailt, telefonszámot, stb.

Előnye, hogy rengeteg annotációt képes letölteni a webról. Viszont lokális gépről csak az illesztést képes betölteni, azt is BAM formátumban. Nem mertem kipróbálni, hogy nem sorba rendezett, index nélküli BAM-ot is megnyit-e, valószínűleg nem. A rendkívül szellős dokumentáció szerint IDF állományokat is meg tud nyitni, ami annotációkat tartalmazhat. Szinték képes rá, hogy több BAM-ot is megnyisson egyszerre.

goldenhelix.png

A felület nagyon tetszetős, az indexelt letöltésnek köszönhetően gyorsan megjelenít mindent, de elég kevés funkció van benne. Azoknak ajánlom, akik csak BAM fájlokkal dolgoznak és sokféle annotációt használnak, de lusták letölteni azokat.

Szólj hozzá!

Címkék: bioinformatika

Emboss: szekvencia kezelés

2012.01.08. 20:37 Travis.CG

Korábbi posztomban nagyon kifakadtam a leendő bioinformatikus kollégákra. El is határoztam, hogy írok alapozó posztokat. Ez az első. Jöjjön az EMBOSS gyorstalpaló.

Az Emboss a bioinformatikai svájci bicska. Minden alapvető műveletre megtalálható benne egy vagy több program. Ebben a leírásban elsősorban a szekvencia műveletekre fogok koncentrálni.

Az Emboss parancssoros programokból áll. Két alapvető módon használható. Mindent parancssori kapcsolók segítségével állítunk be, vagy interaktív módon használjuk. Az interaktív módnál a legfontosabb paraméterekre rákérdez a program. Ha kifelejtünk egy kötelező parancssori kapcsolót, a program azonnal rákérdez. Amennyiben megelégszünk az alapértelmezett beállításokkal, -auto kapcsolót használhatjuk.

Az Emboss egyik nagy előnye, ami miatt mindenki szereti, hogy meghatározza, milyen fájlformátumban kapja a bemenetet. Explicit is megadhatjuk neki a formátumot, de az esetek többségében nincs rá szükség, képes kitalálni, mit kapott.

Segítség

Az Emboss rengeteg programot tartalmaz. Ember nincs a világon, aki az összeset ismerné. A wossname segítségével téma szerint kereshetünk programot. Ha nem adunk meg kulcsszót, akkor megkapjuk az összes elérhető program nevét. Ha megtaláltuk a nekünk megfelelő programot, a tfm parancs segítségével részletes leírást kapunk.

Szekvencia feldolgozás

Alapvető igény, hogy általános információkat kapjunk a vizsgálni kívánt szekvenciáról. Például tudni akarjuk a hosszát, mennyi rekordot tartalmaz, stb. Az infoseq programot erre találták ki.

infoseq NC_010473.fnaDisplay basic information about sequences
USA                      Database  Name           Accession      Type Length %GC    Organism            Description
fasta::NC_010473.fna:NC_010473.1 -              NC_010473.1    NC_010473      N    4686137 50.78                      Escherichia coli str. K-12 substr. DH10B chromosome, complete genome

Rengeteg információt ad, egy részük redundáns. A -only kapcsolóval szűkíthetjük a kiírandó oszlopok számát.

infoseq NC_010473.fna -only -usa -lengthDisplay basic information about sequences
USA                      Length
fasta::NC_010473.fna:NC_010473.1 4686137

Máris sokkal szebb.

Említettem, hogy több fájlformátum van. Előfordulhat, hogy ezeket kénytelenek vagyunk konvertálni, kivágni bizonyos részeit. A seqret a mi barátunk. A bemenetet és a kimenetet kell megadnunk neki.
seqret NC_010473.fna raw::outMi az a "raw::"? Itt állítottam be a kimeneti fájl formátumát. Ugyan így megadhatjuk, hogy miként értelmezze a bemeneti fájlt is. Több rekordot tartalmazó fájl esetén megadhatjuk a rekord nevét is, :-al a fájl neve mögött. Pontosan úgy, ahogy az infoseq is kiírja.

A szekvencia kezdő és végpozícióját is megadhatjuk, -sbegin -send kapcsolókkal.

Két különböző forrásból származó szekvencia összehasonlítására a diffseq-t használhatjuk. Ez annyival jobb, mint a Unixos diff parancs, hogy a szekvenciákat hasonlítja össze, nem a fájlokat. Ez akkor lehet hasznos, ha a szekvenciák például különböző szélességű állományokban vannak.

Hasonlóan a fuzznuc-ra is gondolhatunk úgy, mint szekvenciákra kihegyezett grep parancsra. Ideális, ha egy kisebb részszekvenciát akarunk megkeresni egy nagyobban.

fuzznuc test.fa -pattern ACTG -outfile test.fuzzA test.fa állományban megkeressük az ACTG mintázat összes előfordulását, majd az eredményeket a test.fuzz állományba mentjük. Ha a minta reverz komplementerét is meg kívánjuk keresni, akkor a -complement kapcsolót is használnunk kell.

Van két parancs, ami első látársa nem tűnik hasznosnak, pedig segítségükkel új szekvenciákat állíthatunk elő. Ezek a shuffleseq és msbar. Előbbi egy tetszőleges szekvenciát kever össze, míg utóbbi mutációkat hajt végre. Arra is lehetőség van, hogy véletlenszerű szekvenciákat hozzunk létre. Ekkor a makenucseq parancsot kell kiadni.

makenucseq -amount 1 -length 10000 -outseq ki.fa -autoA parancs hatására egy darab 10 ezer nukleotid hosszúságú fájl keletkezik ki.fa néven.

Szólj hozzá!

Címkék: bioinformatika

Cseppet sem objektíven: TUM2011

2012.01.03. 21:09 Travis.CG

Véget ért 2011 decemberének egyik legnagyobb partija a TUM (The Ultimate Meeting). A releasek kezdenek szállingózni, immár bárki megnézheti azokat. Röviden leírom szubjektív véleményemet a kiadott alkotásokról. Igyekeztem mindent megnézni, meghallgatni, de sok esetben nem bírtam idegekkel.

Grafika

Idén sok robotos kép volt. Kedvencem az Invasion begins, Morphinegeneration és a Popwarzen.

Zene

Három féle zenei kategória is volt. Executable music, ahol indítható állományok zenéltek, Loop music, ahol üzenetrögzítő szalagra gyártott zenét a kreatív alkotók, végül trackd music. Nem tetszett egyik sem.

4k intro

Fantáziátlan 4k-k voltak. Egyik sem tetszett.

64k intro

Az Epsilon tényleg lélegzet elállító volt, igaz, csak videón tudtam megnézni. A Transplant nálam bugzott, ennek ellenére szépnek találtam a növényeket. Hozzájuk képest a CoderColors egyszerű volt. Pasyék is képviseltették magukat, a Bozon nevű intróval. A Sparkból ismert részecskerendszert vették alapul, ahol a részecskék most Unreal egyik képévé álltak össze. Gratulálok nekik innen is a negyedik helyezéshez.

Demo

A Mein Zahnfleisch brennt-ben a karatézó robotok tetszettek, de a zene nem az én stílusom. A Tokyo demofest invit egészen jó volt, csak rövid. Jól néztek ki benne a fák. The 3/4 Delusion: A fraktálos rész nagyon tetszett, de a zene itt sem nyerte el a tetszésemet. A táncoló figurák elkészítése a leírás alapján sok időt vehetett igénybe, ennek ellenére elnagyoltnak tűntek. A Verschdl poénjait nem értettem. Az Fr-075 szerintem nagyon jó ötlet. Egy Kis Herceg szerű világot jelenített meg érdekes rajzos shaderekkel, amitől nagyon egyedi hangulatot árasztott. A demó ráadásul futott a gépemen, ami nagy szó. Az Elude meglepő módon most nem Amigás demóval indult. A Suxx a videó alapján nagyon látványos demó, Chaser zenéjét pedig szeretem. A Composed dreams egy musicdisk. Ambientes zenéket játszhatunk le egy nem szokványos kezelőfelületen. Tetszett.

Wild

Csak két entry-t emelnék ki. Az első a Shine, ami bár nem egy világrengető videó, de elég hangulatos, a fiúk igazán megpróbálhatták volna valós időben előállítani. A másik az Introgigademo, ahol szépen összevágtak egy csomó ZX Spectrum demót. Képzeljétek, milyen lehetett a többi induló, ha ezeket emeltem ki.

Szólj hozzá!

Címkék: demoscene

Ezért nem vagyok kódtörő

2012.01.01. 22:10 Travis.CG

Mint annyi más ember, én is ráakadtam a GCHQ honlapjára, ahol egy kódot kellett megfejteni. Egy munkatársam is felfigyelt a képernyőmön látható furcsa jelekre és ő is kedvet kapott egy kis agytornához. (Ez persze nem azt jelenti, hogy mi munkaidőben mással foglalkoznánk! Komolyan, főnök, ez nem igaz!)

Én abból indultam ki, hogy ez egy rejtjeles üzenet lesz, ezért gyorsan írtam egy szkriptet, ami különböző hosszúságú tokenekre bontotta a kódot és megszámolta a gyakoriságot. Társam viszont azt állította rövid szemlélődés után, hogy ez egy programkód és elkezdte visszafejteni assemblybe. Habár a gyakoriság vizsgálat alapján két bájt hosszúnak találtam a jeleket, rájöttem, hogy az üzenet így túl hosszú lenne, ezért biztosan más módszerrel titkosítottak.

Az assemblybe való visszafejtés ígéretesebbnek tűnt, de azzal érveltem, hogy "bármilyne bináris szutykot" vissza lehet assemblyre fordítani. Akkor sem hittem el, hogy ez egy programkód, amikor feltűnt az int 80 megszakítás. (Igaz, ebben az is közrejátszott, hogy a munkatársam rosszul fordította vissza a kódot, amitől minden regiszter ki volt nullázva) Szépen meg is győztem, hogy ez nem lehet programkód. A másik érvem az volt, hogy ha ez kód, hol van az adat tag?

A kérdés viszont nem hagyott nyugodni, ezért pár nappal később rákerestem a neten, hogy mások hol tartanak a megfejtéssel. Szomorúan konstatáltam, hogy bizony ez programkód volt. A honlap segítségével tovább lehetett volna lépni, de rájöttem, hogy ha nem látom meg a jó megoldást (és másokat lebeszélek a jó megoldásról), akkor nem érdemlem meg, hogy folytassam.

Tanultam az esetből. Ha egy ötlet első látásra nem tökéletes, még nem jelenti azt, hogy rossz.

Szólj hozzá!

Címkék: biztonság életmód

Részecskerendszerek fragment shaderben

2011.12.22. 22:28 Travis.CG

Biopunk című demónkban volt egy érdekes effekt, ami egyfajta sejtosztódást próbált meg utánozni. Maga az effekt nem túl bonyolult, egy metaballs implementáció volt 2D-ben. Röviden arról van szó, hogy a képernyőn részecskék mozognak, de minden pixelnél az összes részecskéktől való távolságot összeadjuk, és ez alapján határozzuk meg az adott pixel színét. Itt sokkal részletesebben lehet olvasni róluk.

Organikusnak tűnő alakzatokat lehet vele készíteni, amelyek "nehezen szakadnak" el egymástól. Ideálisak sejtosztódás szimulálására. A megjelenítés módja pedig óhatatlanul azt vonta maga után, hogy fragment shaderben kell elkészíteni.

Az én implementációm csak annyiban különbözött a hétköznapi metaballtól, hogy bizonyos idő elteltével minden részecskéből egy új született. Az új részecske tulajdonságait a GPU-n kívül akartam beállítani. Itt jött az első probléma: hogyan küldjem el a részecskék tulajdonságait (sebesség, életkor, pozíció) a fragment shadernek? Kis számú részecske esetén változóként beadhatom a shadereknek, ez nem probléma, de én 80 darab sejtet akarta.

A megoldás az volt, hogy textúraként adom át a részecske adatokat. CPU-n meghatározom a tulajdonságokat, majd textúrát készítek belőle és hagyom, hogy a megjelenítés nehézségét a shader elvégezze. Csupán egy uniform változót adok át, a részecskék számát (a textúrán kívül, természetesen).

A textúra minden egyes oszlopa egy részecskének felelt meg, a sorok pedig az egyes tulajdonságoknak. Az egyszerúség kedvéért csak egycsatornás textúrát készítettem.

   glGenTextures(1, &celltexture);
   glBindTexture(GL_TEXTURE_2D, celltexture);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
   glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, MAXCELLNUM, CELLATTRIBNUM, 0, GL_RED, GL_UNSIGNED_BYTE, 0);
   glBindTexture(GL_TEXTURE_2D, 0);

 Ezután készítettem egy pixel buffer objectet (továbbiakban PBO).

   glGenBuffers(1, &cellbuffer);
   glBindBuffer(GL_PIXEL_UNPACK_BUFFER, cellbuffer);
   glBufferData(GL_PIXEL_UNPACK_BUFFER, sizeof(GLubyte) * MAXCELLNUM * CELLATTRIBNUM, 0, GL_DYNAMIC_DRAW);
A kirajzolásnál frissítettem a PBO-t, majd átmásoltam azt a textúrába (glTexSubImage2D függvény segítségével):

   glBindTexture(GL_TEXTURE_2D, celltexture);
   glBindBuffer(GL_PIXEL_UNPACK_BUFFER, cellbuffer);
   updatePixelData(time);
   /* Copy from PBO to texture */
   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, MAXCELLNUM, CELLATTRIBNUM, GL_RED, GL_UNSIGNED_BYTE, 0);
   glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
Az updatePixelData tartalmazza a PBO frissítését. A részecskékkel kapcsolatos részt most kihagyom és csak az OpenGL kódra összpontosítok:

   ptr = glMapBuffer(GL_PIXEL_UNPACK_BUFFER, GL_WRITE_ONLY);
   for(i = 0; i < cells.bornedcells; i++){

   /* Particle part skipped */

      ptr[0 * MAXCELLNUM + i] = (65535.0 * cells.cells[i].xpos) / 255.0;
      ptr[1*  MAXCELLNUM + i] = (int)(65535.0 * cells.cells[i].xpos) % 255;
      ptr[2 * MAXCELLNUM + i] = (65535.0 * cells.cells[i].ypos) / 255.0;
      ptr[3 * MAXCELLNUM + i] = (int)(65535.0 * cells.cells[i].ypos) % 255;
   }
   glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);
Gyakorlatilag a glMapBuffer és glUnmapBuffer a lényeges. Kapunk egy pointert, amin keresztül új értékekkel tölthetjük fel a PBO-t. Mivel nekem megvolt a részecskék összes tulajdonsága a CPU-ban is, ezért GL_WRITE_ONLY-ként határoztam meg a puffert.

A shader a celldata nevű textúrában kapja meg a részecskéket és a texelFetch utasítással olvasom ki az értékeket.

#version 150
#define MIN_THRESHOLD 0.99f
in vec2 texcoord;
out vec4 gl_FragColor;
uniform sampler2D celldata;
uniform int bornedcellnum;

float equation(float radius, float mx, float my, float x, float y){
   return( radius / sqrt( (x-mx)*(x-mx) + (y-my)*(y-my) ) );
}

void main(void){
   int i;
   vec2 cellsize = textureSize(celldata, 0);
   float sum = 0.0;

   for(i = 0; i < bornedcellnum && sum < MIN_THRESHOLD; i++){
      float mxl = texelFetch(celldata, ivec2(i,0), 0).r;
      float mxh = texelFetch(celldata, ivec2(i,1), 0).r;
      float myl = texelFetch(celldata, ivec2(i,2), 0).r;
      float myh = texelFetch(celldata, ivec2(i,3), 0).r;
      float mx = mxl + mxh/256.0;
      float my = myl + myh/256.0;
      float x = texcoord.x;
      float y = texcoord.y;
      sum += equation(0.003, mx, my, x, y);
   }

   if(sum >= MIN_THRESHOLD){
      float c = sum / 3.0;
      c = max(c, 0.5);
      gl_FragColor = vec4(c,c,c,1.0);
   }
   else{
      gl_FragColor = vec4(0.0, 1.0 - distance(texcoord, vec2(0.5)), 0.0, 1.0);
   }
}
A sejtek pozícióit nem elég 8 biten tárolni, ezért a pozíciókat a textúrában két sorban tárolom, azért van ennyi bűvészkedés a sejtek helyzetének meghatározása körül. Gyakorlatilag ez egy tervezési hiba, ha a textúrák nem 1 byte-on tárolnák az adatokat, a kód egyszerűbb lehetne. Aki fel akarja használni a kódot, annak célszerű kijavítani ezt.

A teljes forrás letölthető innen. Az src könyvtárban található celldivide.c fájl tartalmazza a sejtosztódós részt.

Szólj hozzá!

Címkék: programozás demoscene opengl

Szakmák, amikhez mindenki ért: bioinformatika

2011.12.22. 00:56 Travis.CG

Ön tudja nyomkodni a Facebookot? Használt már Windowst? Gratulálunk, Ön mától bioinformatikus! Hogyan? Ön úgy érzi, keveset ért semmit a biológiához? Semmi gond, ez nem akadály. A nukleotidokra gondoljon úgy, mint holmi karakterekre a Wordben, ahol csak négy karaktert kell lenyomni. Látja, könnyebb, mint a gépírás! Úgy látom, még mindig nem hiszi el, hogy Ön bioinformatikus. Mondja, mi még a gondja. A statisztika? A 

statisztika felesleges, gondoljon csak a bikinis hasonlatra. A 

programok úgyis kiírnak valamit. Olyan programot meg úgysem írnak, amelyik ostobaságot írna ki.


Ez után a bevezető után kifejteném, miért látom úgy, hogy a bioinformatikához mindenki ért. A munkahelyemen meghírdettünk egy bioinformatikai állást, amire csak úgy özönlöttek a jelentkezők. Ennyi bioinformatikust még konferencián sem láttam. A jelentkezők legtöbbje Unixot még nem látott. Ez azért probléma, mert a programok legtöbbje Mac-en vagy Linuxon fut. Miért? Mert ezeken van egy olyan parancssor, ami nagyban segíti a munkát. Legtöbbször ugyanis szöveges állományokat kell feldolgozni. Ha van három fájl, azt még egy klikkelős programmal el lehet intézni, de 20 fölött még a legtürelmesebb ember is feladja. Ha viszont van egy jó parancssor, akkor a munka gördülékeny.

Ez elvezet minket oda, hogy kell némi programozói ismeret. Nem muszáj Terminátorokat gépi kódban hekkelni, de a Perl szkriptek ismerete szükséges. Miért Perl? Mert szövegfeldolgozásra kihegyezett programnyelv. Van egy BioPerl modulgyűjtemény, amivel az ismertebb fájlformátumokat feldolgozhatóak. Az EnsEMBL API szintén Perl-ben készült, A nyelv ismerete elengedhetetlen. Ennek ellenére volt olyan jelentkező, aki C#-ban írt egy programot, ami promóter mutációkat szimulált. A gond csak az volt, hogy a program egy tetszőleges szövegen véletlenszerűen megváltoztatott néhány nukleotidot. Ha beírtam volna a Háború és Békét, azt is mutálja. A programnak semmi értelme nem volt, de legalább bebizonyította, hogy a jelölt ért egy olyan programozási nyelvhez, ami irreleváns bioinformatikailag. Az már csak hab a tortán, hogy felhívtuk a figyelmét rá, hogy a program értelmetlen, semmilyen biológiai folyamathoz nincs köze, de csak annyit mondott, még további fejlesztésre szorul. (Azóta sem láttam a Nature címlapján)

Az adatok feldolgozása egy dolog, de nyersanyagot is tudni kell szerezni. Egyik próbafeladatunk alkalmával egy gént kértünk FASTA formátumban. Ha a jelölt nem a Google és Wikipédia oldalakon keresztül jutott a célhoz, már örültünk. Pedig az elsődleges szekvencia adatbázisok minden bioinformatikai kurzusban szerepelnek. Három van belőlük, de mivel ugyan az van mindegyikben, elég egyet megjegyezni.

Azután ott vannak a fura figurák. Ők már a felszínen átrágták magukat, de mégis hihetetlen dolgokat produkálnak. Például egy programozó, aki saját bevallása szerint eddigi munkája során a másodfokú egyenlet megoldóképleténél bonyolultabb matematikai formulát nem használt, elhatározta, hogy szekvencia illesztőt ír. Gondoltam segítek neki irodalommal, hogy mégse kelljen feltalálnia a spanyolviaszt. Mikor meglátta a Smith-Waterman algoritmust, kijelentette, hogy ez csak misztifikálja a problémát. Végül írt egy grep szintű programot. Ez annyira megtetszett neki, hogy tőlem kérdezgette, hogyan tudna bioinformatikusként elhelyezkednie.

A másik érdekes eset az volt, amikor egy másik bioinformatikus wannabe írni kezdett egy illesztőprogramot. Végül belefulladt a feladatba, ezért segítséget kért tőlem. Először elmagyaráztam neki, hogy az ő problémájára nem lesz jó a LCS algoritmus, neki globális illesztő kell. Azt felelte, de ő csak ezt találta letölthető kódban. Utána megpróbáltam megygyőzni, hogy ha már van kész program, nem szükséges fejleszteni. Megmutattam neki a programot, azt is, hogyan kell használni. Ezután közölte, hogy ő ezt Windows alól fogja használni 1500 fájlra. De mivel a PowerShell-t sem ismeri, ezért majd ír egy Java programot, ami meghívja neki az illesztőt. Igen, akinél kalapács van...

A bioinformatika határtudomány, ezért én úgy érzem, soha nem tudhatok eleget, hogy megfeleljek a kihívásoknak. Napi szinten találkozom olyan kérdésekkel, amelyekre nem tudok válaszolni. Legutóbb azt kérdezték tőle, minek a rövidítése a LOH. Nekem is utána kellett néznem.

Mások pedig felületes tudással tökéletesen elvannak. Mi lenne, ha én is azt mondanám: OpenGL-es demókat írok, akkor én játékmotor fejlesztő vagyok. Megszereltem a villanybojlert, akkor megpályázok egy víz-gáz-fűtés szerelői állást. Nevetségesen érezném magam.

Szólj hozzá!

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

Experience 2011

2011.12.11. 22:13 Travis.CG

Idén is megrendezték az Experience demóvetítést. Megismételték a Vakondok 2 bemutatóját, amit kihagytam, majd az idei év legjobb demóiból egy szubjektív gyűjteményt láthattunk nagy kivetítőn.

A teljesség igénye nélkül a következő produkciókat tekinthettük meg:

Struct by Outracks

Spheres on a plane by Dead Roman

numb res by Carillion, Cyberiade, Fairlight

We have accidently borrow your votedisk by Razor1911

A magyar produkcióknak volt egy kisebb díjátadó, ahol a legjobb produkciókra lehetett szavazni 8bites, zene, grafika, mozgókép, soundtrack, 4k és 64k kategóriákban. Csapatunk egyik kategóriában sem nyert gumikacsát, amit fődíjként osztogattak. Nagyon jó hangulatú vetítés volt. Egy kisfiút nagyon felzaklatott az Elektrosokk című alkotás, amiből megállapítottam, hogy egyes demók talán mégsem a gyerekeknek valók.

Ezen a napon volt az AmiCon találkozó is, amire most nem mentem el, de az Amigások eljöttek és bemutattak két produkciót, amit a Revision 2011-en mutattak be. Az egyik az Elude-tól a Shake off the dust volt, a másik a Human Traffic.

Kilenckor leléptem, hogy a ritkábban járó tömegközlekedést elérjem. Rosszul számítottam ki az időt, ezért futnom kellett. Az eső elkezdett esni, a cipőm talpa vizes lett. A hangjelzés pillanatában ugrottam fel a szerelvényre. A vizes talpam kifutott alólam, fenékre ültem, de a lendület tovább vitt és átcsúsztam a kocsi másik végébe. Mindenki rajtam nevetett.

Szólj hozzá!

Címkék: demoscene

Genetikai variációk webinar

2011.11.30. 21:42 Travis.CG

Egy érdekes webinart lattám a mai nap. A genetikai variációk detektálásáról és hatásairól szólt, kihegyezve, hogy milyen betegségeket képesek okozni. Három előadó beszélt, az első (Andrew J. Sharp) bemutatta a genetikai variációk detektálásának elméleti hátterét, míg a másik két előadó (Hakon Hakonarson és Ray E. Hershberger) a gyakorlati alkalmazásokat mutatták be saját tudományterületükről.

Az elmélet

Két fő módszer létezik genetikai variációk kimutatására. Az első a komparatív genom hibridizáció (Array CGH), mint a nevéből is látszik, egy hibridizációs eljárás, míg a második a szekvenáláson alapul. A hibridizációs módszer csak a chip-re felvitt DNS-hez képest egy relatív variációt képes megadni. A chip mérete a detektálható variációk mennyiségét is befolyásolja. Az előadás 4 millió variációt említ, a hibridizálandó szekvencia mérete 25-100bp között mozoghat. A CNV detektálásnál 0-5 ismétlődést képes kimutatni. A cégek speciális igényekhez saját chipeket is rendelkezésre bocsátanak, bizonyára jó pénzért.

A nagy felbontóképességű chipek mikrodeléciókat is képesek kimutatni. Ennek demonstrálására egy TGG repeatet mutattak, amely betegséget okoz, ha hiányzik belőle egy darab.

A szekvenáláson alapuló módszerek két nagy csoportra oszthatók. Az egyik paired-end readeket használ. Ha a referencia genomra illesztés során a read párok távolsága eltér az elvárttól, az delécióra vagy inszercióra utalhat. Ha a readek orientációja változik, akkor inverzió vagy transzlokáció történhetett. Itt megjegyezném, hogy egyes illesztőprogramok eldobhatják a readeket, ha azok túl nagy távolságra vannak egymástól. Egy nagyobb transzlokáció inkább olyan helynek fog látszani, ahova nem illeszkedik egyetlen read sem.

A technológia limitációját a DNS könyvtár mérete dönti el. Ez jelen pillanatban 300-6500 bázispár. Ennél nagyobb deléciókat értelem szerűen nem lehet megtalálni.

Ha nem párosított readeket használunk, akkor az úgynevezett split-read technikával szimulálhatjuk a paired readeket. Itt a read hossza válik limitáló tényezővé. A Mosaik és SOAP2 illesztőprogramok képesek így illeszteni.

A readek mélysége is fontos információt hordozhat az ismétlődő szakaszokról. Ha a referencia egy szakaszán kétszer annyi read fordul elő, mint máshol, akkor az azt is jelentheti, hogy az a szakasz két példányban fordul elő a referenciához képest. Végezetül megemlítették még a de-novo összeszerelést is, mint módszert.

A gyakorlat

A másik két előadó bemutatta, hogy mindez hogyan néz ki a klinikai gyakorlatban. Hakonarson azt mondta, hogy náluk a gyerekklinikán nem csak a gyerekeket, hanem a szülőket is megszekvenálják, hogy megállapíthassák, hogy öröklött vagy szerzett genetikai elváltozás okozza az adott rendellenességet. Találtak az ADHD-val (hiperaktivitás) kapcsolatba hozható genetikai változást, ami egy komplett anyagcsere útvonata blokkol. Terveztek gyógyszert, ami rendbehozza ezt az útvonalat, de a specificitása elég alacsony, ezért az előadó inkább a személyre szabott medicinában látja a jövőt.

A másik példa még grandiózusabb volt. Egy egész családfát megszekvenáltak, hogy megtalálják egy igen ritka genetikai variáció szívizom rendellenességre kifejtett hatását. Teljes exome szekvenálást, és array hibridizációt csináltak. Természetesen megtalálták, amit kerestek.

Kérdések

Volt pár érdekes kérdés a végén. Az egyik az volt, hogy a CNV-k mérete és a betegségek között van-e összefüggés. Azt válaszolták, hogy igazából a technológia fejlődésének köszönhető, hogy egyre kisebb betegség okozó CNV-ket találnak. A másik kérdés az volt, hogy a CNV-k eloszlása véletlenszerű-e? A CNV-k eloszlása nem véletlenszerű, vannak olyan helyek a genomban, ahol a több található, ezek valószínűleg összefüggésben állnak a rekombinációval.

Szólj hozzá!

Címkék: bioinformatika

Sci-fi 1991-ben

2011.11.26. 13:07 Travis.CG

A növényi betegségekről nem tudok túl sokat. Úgy is mondhatnám, semmit, ezért beszereztem egy könyvet "Beteg növények biokémiája és élettana" címmel. A könyv 1991-ben jelent meg, ami azt jelenti, hogy a '80-as évek ismereteit foglalta össze. Logikusan tagolva mutatja be az egészséges növény jellemzőit, majd bemutatja, hogy mit változtat meg a kórokozó jelenléte.

Mint a cím is mutatja, főleg mikroszkópos és kémiai vizsgálatokon keresztül értelmezi a tüneteket, ami mai szemmel nem korszerű, mégis megmagyaráz sok olyan jelenséget, ami feltétlenül szükséges, hogy megértsük, mi is zajlik le egy növényben a fertőzés során.

Ami miatt írni akarok erről a könyvről, az az utolsó fejezet, ahol molekuláris biológiai eredményeket tárgyalnak. Az érdekes benne az, hogy főleg a molekuláris biológiai módszerek nehézségeit tárgyalja. Mikor én tanultam ezekről a módszerekről, akkor már jó részük megoldódott. Azóta pedig még további lehetőségekkel bővült a kutatók eszköztára. Kicsit úgy éreztem magam, mintha egy jövőbeli ember önmagáról olvasna a múltban kiadott sci-fi könyvben.

Például a Nukleinsavak szintjén művelt biotechnológia című fejezetben a következőket írja: "Jelenleg a rezisztenciagéneket egyáltalán nem tudják a kutatók a génproduktumok alapján azonosítani...Ha a rezisztenciagénnek vélt gént a patogén indukálja a növényben, akkor a vizsgálandó növényi szövet teljes mRNS vagy teljes fehérje populációját kellene összehasonlítani a kórokozó nélküli állapotban és fertőzés után." Erre természetesen már megvannak a módszerek. Korábban a különböző expressziós chipeket használták, ma már inkább az RNA-Seq-et.

A bekezdés így folytatódik: " A patogének azonban igen sok stresszgén, illetve betegséggel kapcsolatos gén stb. expresszálódását indíthatják be, amelyek vagy a stresszel, vagy a patogenezissel kapcsolatosak, de nem a betegség elleni rezisztenciával." Szerencsére erre is van megoldás, hiszen bioinformatikai módszerekkel össze lehet hasonlítani stresszindukált növények expressziós mintázatát a patogén indukálta adatokkal.

Szinte minden magára valamit is adó bioinformatikai előadás tartalmaz egy grafikont, ahol feltüntetik a beküldött/feldolgozott szekvenciák számát/mennyiségét. Mégis, csak most értettem meg, hogy ez mit is jelent. Mit jelenthet mindez az információ egy húsz évvel ezelőtti kutatónak, aki a laborjában ülve azon kesereg, hogy nem tud egyetlen rezisztencia gént sem izolálni, mert egy gén azonosítása is több PhD-snak elegendő disszertáció témát ad. Most pedig aki nem állapítja meg több tucat genetikailag módosított növény teljes génexpresszióját, az lusta disznó.

Egy másik érdekes észrevétel, hogy a könyv írója 1991-ben el tudta képzelni, hogy mire lenne szükség a jövőben. Nekem, 20 év távlatából nincs ilyen elképzelésem a jövőről. Természetesen tudok közhelyeket mondani: olcsóbb lesz a genomok szekvenálása, kevesebb hibával, kisebb mennyiségekből is tudnak majd szekvenálni. De ténylegesen mindez mit fog jelenteni? Mik azok a kérdések, melyekre ma még lehetetlen válaszolni, és 20 évet kell várni?

Kicsit úgy érzem, nem én vagyok az egyetlen, aki nem lát előre. A sci-fi is egyfajta válságba került. Asimov idején még a technológia, a jövő technológiája a könyv szerves részét képezte. Ott is voltak gyilkosságok, szerelmek, akár egy tudománytalan-fantáziátlan könyvben, de a technológia jelenléte más ízt adott a témának. Ha megnézzük, William Gibson sem ír már emberekről, akiknek a fejében számítógépes interface van, hanem marketingesekről, akikkel akár már holnap találkozhatunk. Dan Simmons jövőjében pedig az internetre az erdő fái is rá vannak kötve. Nincs is igazi technológia, csak jelenségek, amelyek magyarázat nélkül függenek a levegőben.

Nem azt akarom mondani, hogy ezek a könyvek rosszak, csak azt, hogy akiknek tudniuk kellene milyen lesz a világ (vagy legalábbis irányt kellene mutatniuk), nem tudják. Nem tudják, mert már most sci-fiben élünk. A sci-fi szereplők pedig nem fantáziálnak a jövőről.

Szólj hozzá!

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

Hasznos linkek

2011.11.20. 12:25 Travis.CG

Az interneten történő kalandozásaim során sok érdekes linket találok. Ezeket ebben a posztban fogom gyűjtögetni.

Egy remek prezentáció az újgenerációs szekvenálási módszerekről. StarTrek fanatikusoknak kötelező darab.

Bioinformatikai alapozó. Itt nem a biológiát, hanem az algoritmikus megközelítést mutatják be. Néhány helyen hiányos. Ha bővítik, biztosan remek lesz az alapok elsajátítására.

Nem tudod, mi a de Brujin gráf? Semmi gond. Ha nem vagy otthon a gráfelméletben, itt akkor is képet kapsz a de-novo szekvencia összeszerelésről.

Néhány szeminárium szekvenciák feldolgozásáról. Klinikai elemzésekről is szó van.

Ha inkább blog formájában akarsz értesülni a legújabb eredményekről, íme egy blog, ahol a blogokról írnak.

Szólj hozzá!

Címkék: bioinformatika

Dokumentumfilm a demosceneről

2011.11.18. 14:44 Travis.CG

Tegnap volt a Vakondok 2 című film bemutatója, ami a demoscene-ről szólt. A film logikusan van felépítve. Elindul egy általános bemutatástól kezdve, majd az adott kategória szakértőin keresztül a néző megismerheti a részfolyamatokat is.

Jó volt, hogy kitértek a régi nyolc bites gépekre is. Mikor a filmen felsorolták ezeket a géptípusokat, mellettem egy lány meglepődve megkérdezte: - A C64 csak nyolc bites?

A filmet feldobta még a rengeteg demórészlet, ami az interjúk közötti átmenetben mutattak. Nem mehetek el amellett a részlet mellett, hogy a másodperc tört részéig látszott a 2010 c. demónk. :-) Egy másik demónk zenéje pedig hallatszott.

A filmvetítés helyén képeket is ragasztottak ki a folyosóra. Az összeállítást Grass csinálta. Itt is látható volt egy részlet az egyik demónkból, a Wayangból.

Összességében a film tetszett. Korrekt, alapos munka. A tény pedig, hogy a munkáink - ha csak rövid időre is - látszottak a filmen, azt mutatja, van helyünk a demosceneben.

Frissítés: Időközben elérhető a végleges film letölthető és online formában: innen.

Szólj hozzá!

Címkék: demoscene

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