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

Segítségnyújtás

2015.07.21. 21:44 Travis.CG

Legújabb cikkünk  egy együttműködés keretében született. Megkerestek az állatorvosok, hogy segítsünk nekik egy Staphylococcus genom összeszerelésében és mutassuk meg nekik a felhasznált bioinformatikai módszereket is. A Mira-t hasznaltuk, de megpróbálkoztunk különböző scaffolderekkel is, hátha sikerül alacsonyabb scaffold számot kapni. Végül az így kapott eredményeket elvetettük.

Kezdetben tényleg nagyon lelkesen látogattak minket. Még egy kis finom noszogatást is kaptunk: ("A főnököm nagyon szeretné látni az eredményeket, de mondtam neki, hogy ehhez idő kell."). Mikor tényleg megkaptak minden eredményt, hirtelen eltűntek és a cikk nagyon nem akart megjelenni. A levelekre csak olyan válaszokat kaptunk, hogy most nagyon elfoglaltak. Oktatni kellett, beteg nyuszikat istápolni, stb. Javasoltam, hogy legalább a szekvenciákat töltsük fel. Ezt sem akarták, mert attól féltek, a szemfüles kínaiak megneszelik és cikket írnak belőle. Legalább ők akarnak cikket írni.

A bioinformatika oktatás sem lehetett túl sikeres, mert végül eljutottak oda, hogy ez a Linuxos parancssoros időtöltés nem gyümölcsöző, de a Geneious bezzeg kiváló program, nekem is azt kellene használni.

Már kezdtem teljesen lemondani róla, hogy ebből valaha publikáció lesz, amikor váratlanul megint elkezdtek özönleni a levelek. Hirtelen mindent fel kellett tölteni, kéziratot átnézni, sebtében többszörös illesztéseket végrehajtani. Kérdeztem is, mi ez a nagy pálfordulás, már nem félnek a kínaiaktól? Természetesen féltek, de a főnökségtől még jobban, akik eredményeket akartak látni.

Összességében nem volt rossz projekt. Már csak olyan cikkek kellenének, amiknek impaktja is van.

Szólj hozzá!

Címkék: publikáció

Javítások, melyek túl rövidek egy önálló poszthoz

2015.07.12. 23:51 Travis.CG

Ami elromolhat, azt meg is kell javítani. Az elmúlt egy évben számtalanszor kellett különböző javításokat eszközölni, de ezek oly csekély hírértéket képviseltek, hogy sajnáltam rájuk egy egész posztot írni. Az idő múlásával a számuk tekintélyesen felszaporodott, így itt az idő, hogy másokkal is megosszam ezeket.

1. Sátor merevítő

Anyósomék vettek egy sátrat a gyereknek, aki nagyon szereti. Különböző kergetőzős játékok esetén előszeretettel menekült be, ami úgy nézett ki, mint egy SWAT művelet. Futás közben térdre ereszkedik, mert magasabb, mint a sátor, csúszik egy kicsit, négykézlábra ereszkedik, majd eltűnik a sátor gyomrában. Sajnos a játék hevében néha elvéti a bejáratot és a merevítőnek kell kiállnia a megpróbáltatást. Mondanom sem kell, hogy rövid időn belül a műanyag eltörött. A ragasztás nem lett volna elég tartós, a szigetelő szalagnak nincs elég tartása, ezért azt találtam ki, hogy egy fát belefaragok a műanyag csőbe:

sator.jpg

Az eredmény kielégítő, leszámítva, hogy a műanyag rugalmassága a fa toldásnál lecsökkent. Ez azt eredményezte, hogy a gyerek következő kaszkadőr mutatványánál pont a toldás végénél tört el újból. Másorszor epoxi gyantás erősítést használtam, de az nem volt olyan tartós. A rugalmasságot úgy próbáltam növelni, hogy a következő törésnél fa helyett egy koax kábel darabbal erősítettem meg. Ez viszont nem volt elég merev.

2. Babakocsi heveder

Ez a javítás is a gyerekhez köthető. A babakocsi hevederét - ami megakadályozza, hogy a lurkó deszant ugrást hajtson végre, ha meglát egy cicát - előszeretettel rágcsálja, ujjával az apró lyukakakt tágítja. Miután eredményesen leszanálta őket, ideje volt ezt is rendbe hozni:

img_7894.JPG

Ez alapvetően egyszerű volt, mert vettünk egy új hevedert a méter árú boltban, méretre vágtam, befűztem, a végét levarrtam. Sajnos ez a műszálas anyag a vágás után elkezdett bomlani, ezért gyufa lángja fölött áthúztam néhányszor. A hő összeolvasztotta a kis szálakat.

img_7901.JPG

Természetesen ezt nem egyedül csináltam. A gyerek is segített...

img_7897.JPG

szétpakolni.

3. Botmixer

A botmixer egy végtelenül egyszerű berendezés. A bekapcsoló gomb érintkezési hibát mutatott. Ami miatt mégis helyet kapott, az a szétszerelés miatt van. Ugyanis nem találtam azt az egyetlen csavart, ami egyben tartja a gépet. Pontosabban láttam, de nem hittem el, hogy azt keresem. Azt gondoltam, az csak a végét tartja.

mixer.jpg

Kicsit olyan érzés volt, mint a rajzfilmekben, amikor egy csavar tartja össze a buldózert.

4. Sarokcsap

A sarokcsapunk is elöregedett az idők során, így megérett a cserére:

img_8327.JPG

Rendesen begyógyult, így egy vízpumpa fogóval szedtem ki a helyéről.

img_8328.JPG

Az új sarokcsap  végére teflon szalagot tekertem tömítésnek.

img_8330.JPG Visszaszereltem. A csapot rongyba burkoltam, hogy a fogó nehogy kárt tegyen benne. Mondanom sem kell, a rongy az igénybevételtől elszakadt és a fogak végigszántották a csapot. A nyomás próba után víz apró érként elkezdett folyni a csap mellett. Kiszedtem és még több teflon szalaggal tekertem be. Másodszorra már nem volt gond.

img_8331.JPG

Szólj hozzá!

Címkék: barkácsolás

Demó melléktermék: MetaMut

2015.07.06. 00:06 Travis.CG

Az NVScene-re készített produkciónk az első Androidos demónk, ezért igyekeztem minimalista demók készíteni, hogy a platform részletes ismeretének hiánya ne akadályozza az alkotás elkészültét. Így esett a választás a metaball kétdimenziós változatára, a metakörre.

A metakörrel érdekes alakzatokat lehet kirajzolni. Ha közel kerülnek egymáshoz, egy részük kidudorodik, mintha vonzanák egymást. Ez a tulajdonságuk azért is hasznos, mert felbontás és képernyő arány függetlenek, tehát bármilyen eszközzel nézik meg a demót, az mindig korrektül fog megjelenni.

Egy másik hasznos tulajdonságuk, hogy pixel shaderben lehet implementálni a megjelenítésüket. Ez azért hasznos, mert nem kell poligonokat importálni, elég egy kis kódot írni és máris megjelennek. A metakörök jellemzőit uniform változókon keresztül akartam beadni. A uniform változók száma viszont rendszer függő. Egy NVidia Shield esetén valószínűleg magas a számuk, de én gondoltam a régi, leszázalékolt telefonokat használókra is (főleg, mert nekem is azok vannak), ezért egy kis tesztprogrammal megnéztem, mennyi változóval birkózik meg egy Sony Tipo. A mérések alapján 40 elfogadható sebességet produkál.

Történetet is akartam, amiben kihasználom a metakörök csápszerű nyúlványait. Eredetileg egy Magyar ugaron ihletésű jelenetre gondoltam, ahol a gazok egy ember után nyúlnak, visszahúzzák, stb. Ehez metakörökkel kirajzolt képekre volt szükségem.

Grassnak ezért készítettem egy Windowsos rajzoló programot. A kíváncsiak letölthetik innen. Grass azt mondta, hogy ezek a bogyók egyszerűen nem alkalmasak arra, hogy felismerhető grafikát készítsünk velük. Természetesen nem értettem egyet vele. Megpróbáltam én is rajzolni valami értelmeset a programmal, nekem sem ment. Arra gondoltam, ez bizonyára azért van, mert nem tudok rajzolni.

Ekkor született meg az ötlet, hogy a számítógépnek kéne rajzolnia. Én beadnék neki egy képet, a program pedig legenerálja a szükséges metakör adatokat. Mivel a metakörök között elég bonyolult interakciók lehetnek, ezért a megoldást egy genetikus algoritmusban láttam.

Készítettem is egy ilyen programot és néhány teszt futtatás után megállapítottam, hogy ez sem fogja a megfelelő eredményt produkálni. A demó végül teljesen procedurális lett, nem volt benne történet, de az ötödik helyet és a vele járó jutalmat (ami egy NVidia Shield tablet volt) elhoztuk.

A program felépítése egyszerű. Beolvas egy ASCII PBM fájlt, ami a legegyszerűbb bitkép formátum, ami létezik. Ebből is csak fekete-fehéret kezel. Elkészít 1000 darab ábrát, mindegyikben 40 metakörrel, amelyek paramétereit véletlen szerűen választja ki. Jaccard index segítségével összehasonlítja az összes képet az eredetivel. Kiválassza az 5 legjobbat, majd azokat véletlen szerűen elkezdi kombinálni, valamint bizonyos százalékban mutálja az utódok tulajdonságait. Képez újabb 1000 utódot és a művelet kezdődik elölről.

Kíváncsi voltam, hogyan befolyásolják az egyes paraméterek (mutáció gyakorisága, populáció mérete, stb.) az eredmény alakulását. Mivel a program rengeteg véletlen számmal dolgozik, igazából el sem tudtam képzelni, hogy lesz-e értelmes eredmény. A program ezért statisztikai céllal elmenti minden generációban a legjobb egyed által generált képet, valamint a populáció minden tagjának a Jaccard-indexét.

Az első és legfontosabb észrevételem, hogy a program viszonylag gyorsan elér 80% hasonlóságot, és onnan lelassul. Ennek az az oka, hogy nagyon precíz változásokra van szükség, hogy növekedjen a hasonlóság.

Másik észrevétel, hogy a magasabb mutációs ráta nem hozott gyorsabban eredményt, pedig ezt vártam volna. Talán a populáció méretét is növelhettem volna. De az egészben a legmegdöbbentőbb, hogy az algoritmus eredményeit úgy vizsgálom, mintha tényleg egy sok egyedes szuperorganizmus lenne. Akinek van kedve, játszhat a beállításokkal. A forráskód innen tölthető le.

Mivel elég lassan fut, megpróbálok egy Cuda gyorsított változatot is készíteni.

Végezetül nézzük meg, hogyan rajzolja ki a Denevérember logóját:

MetaMut from TravisCG on Vimeo.

Szólj hozzá!

Címkék: programozás demoscene

Cseppet sem objektíven: QBParty 2015

2015.05.31. 22:50 Travis.CG

Nagyon szerettem volna eljutni a QB Partyra, de a család mattot adott. Bármit ügyeskedtem, csak újabb gondok keletkeztek, míg végül beláttam, a Sülysápi kalandból nem lesz semmi.

Rengeteg kategória volt, minden kategóriában kevés indulóval. Amolyan alibi releasek voltak, mert elég sok aggasztó hír érkezett és nem volt biztos, hogy a zöldfülű csapat megbírkózik a feladattal. De megbírkóztak vele. Improvizáltak, alkalmazkodtak és elhárítottak.

Archie Lego emberei immár harmadszor lépnek színre. Most a változatosság kedvéért videóban nézhetjük, amint elnáspángolják egymást. A Los Angeles Lamers videotárában akad még be nem mutatott PC zúzás. Ebből láthatunk egy újabb csokrot.

A Stellar kellemes meglepetés volt. Nem akart túl nagyot szólni, de nem is adta alá a minőséget.

A Bandwagon kicsit raymarching tutorial szagú, de azért egyszer nézhető. A szervezők angol tudása állítólag hagyott némi kívánni valót maga után, ez szolgált a következő intró alapjául:

 A Fresh!Mindworkz ismét robotozott egyet. GoProval felvett felvételt utómunkáztak valós időben. Ami viszont meglepetés volt nekem, az a Low az Ümlaüt Designtól.

Minden részében nagyon ott van és Gargaj egyedül csinálta. Általában ezek a demói grafikai szinten gyengébbek szoktak lenni, de itt egyáltalán nem ez volt a helyzet. Végezetül álljon itt Nagz élménybeszámolója 2 és fél percben:

Szólj hozzá!

Címkék: demoscene

Tesla titkai

2015.05.28. 22:58 Travis.CG

Szeretek híres kutatók életéről olvasni. Karácsonyra meg is kaptam Nikola Tesla és az univerzum titkai című könyvet. Tesla különösen érdekelt, mert annak ellenére, hogy igen kreatív, sokoldalú és nagy hatású feltaláló volt, elég keveset tudtam róla.

Az életéről sok mítosz kering és erre Tesla rá is játszott. Reménykedtem benne, hogy ez a könyv eloszlatja ezeket és kaphatok egy tisztább, objektív képet erről a hatalmas emberről.

Ez hiú ábránd volt.

Az első gyanús jel a harmadik oldalon jelent meg. Tesla apja ugyanis hangosan beszélt magában és még a hangját is elváltoztatta, mikor önmagával vitázott. Az író pedig megpróbált meggyőzni, hogy mindez teljesen normális, mert ő is ismer ilyen embereket és azoknak sincs semmi baja.

Tesla gyerekkorában sokat betegeskedett, és képzeletbeli utazásokat tett, hogy elterelje a figyelmét a betegségéről. Az író erre még rá is tett egy lapáttal, hogy biztos idegen civilizációkat is meglátogatott, akik tanácsokat adtak neki a felfedezéseihez.

Egyébként nem értem, miért nem lehet elfogadni, hogy egyes emberek kimagasló teljesítményekre képesek. Vannak, akik ezt annyira nem tudják elképzelni, hogy inkább más magyarázatokat keresnek. Ezt nem csak Teslára értem, vannak, akik szerint Shakespeare sem írhatott meg annyi művet.

Azt gondoltam, a könyvben ennél már nem jöhet rosszabb, de ismét tévedtem. Az író elég tájékozottnak tűnt, de az életrajzi bemutatáson túl sajnos a könyvbe belekeverte saját ezoterikus világnézetét is. A könyv mondanivalóját így összegezhetném:

  1. Tesla mindig igazat mond.
  2. Mindent Tesla talált fel. Az utána jövők csak az ő találmányait pontosították.
  3. A fizika Tesla óta rossz úton jár.
  4. Ha valami ellent mond az első három pontnak, az a gonosz kormányügynökök műve.

Tesla nem mondott mindig igazat. Például mikor a vezeték nélküli hálózatának első tornyát építették, Tesla azt állította, hogy egy hasonló torony épül Skóciában is. Az író erre vonatkozóan semmilyen adatot nem talált és ezt egy vállrándítással el is intézte, hogy ez nem is fontos. Pedig szerintem az. Tesla ugyanis befektetőket keresett az építkezéshez, ezért nem mondhatta, hogy kérem, ez a rendszer egy prototípus, még én sem tudom, hogy működni fog-e.

A könyvben idézett Tesla cikkek túlnyomó többségére jellemző a végletesség. Tesla minden találmányát a legjelentősebbnek bélyegezte, ami soha sem fog elromlani, bármekkora távolságra, minimális energiával bármit eljuttat és még a kezelése is teljesen triviális. Ezek a túlzások nem lehetnek igazak és ezt Teslanak is tudnia kellett.

A második ponthoz annyit tennék hozzá, hogy a világ Tesla óta is fejlődik. Ezt nem nehéz észrevenni. De mikor az író Teslának tulajdonítja az internetet, azt erős túlzásnak éreztem. Tény, hogy a feltaláló is vizionált egy globális vezeték nélküli hálózatot, ami szöveget, hangot és rajzokat is továbbítani képes (bármekkora távolságra), de ettől még szerintem nem lesz a szűlőatyja.

Amit viszont elfelejtett az író, az a Flabélos, mert ezt is Tesla találta fel. Igaz, ő mechanikus rezgéskeltőnek nevezte. Észrevette ugyanis, hogy az egyik kísérletének a mellékterméke egy erősen rezgő talapzat volt. Mikor erre ráállt, utána nem sokkal ki kellett mennie a WC-re. Később úgy írt, hogy ezzel valószínű fogyasztani lehet az elhízott embereket.

Ahogy az író lenézi a modern fizikát, az teljesen nevetséges. Tesla pont egy paradigma váltás idején élt, még a régi iskola szerint tanulta a fizikát. Az éter létezésétől nem tudott elszakadni. Kritizálta Einstein relativitás elméletét is. Ezzel nincs is semmi baj, hiszen radikális változások voltak ezek, biztos nehéz volt elfogadni őket. A baj az, hogy az iró mind a mai napig ezeket a nézeteket vallja. Igazán utána nézhetett volna, hogy milyen kísérletes bizonyítékok vannak a relativitás elméletre. Érvelésében azt hozza fel, hogy vannak most is olyan elméletek, melyek cáfolják a relativitás elméletet. De ez nem jelenti azt, hogy az elmélet teljesen zsákutca és vissza kell térnünk az éterhez vagy a lapos Földhöz. Az éter létezésére a sötét anyagot hozza fel bizonyítéknak, mert az is mindent kitölt és jelenleg detektálhatatlan. Ez is hibás érvelés. Az éter ugyanis azért született, mert nem ismerték a részecskéket. A sötét anyag azért, mert nem ismerik a kozmoszt alkotó összes anyagot.

A könyv ezen hibáit nehéz tolerálni, de mikor végképp megszakít minden kapcsolatot a valósággal, arra nincs bocsánat. A könyvből az is kiderül, hogy Tesla idézte elő a Tunguszkai robbanást, földrengéseket volt képes létrehozni és minden bizonnyal földönkívüliekkel kommunikált. Sajnos a Bermuda háromszög rejtélyét nem hozták kapcsolatba Teslaval, így a paranormális jelenségek bemutatása kissé hiányos. De vannak ley-vonalak, úrhajók az abidoszi templom keresztgerendáján és persze a védikus tanok (az ott leírtak természetesen száz százalékig igazak). Mindez összegyúrva egy olyan eleggyé, amit még Daniken gyomra sem venne be.

Az iró abszurd világképét Tesla életrajzba csomagolja és ezzel akar tisztelegni a nagy felfedező előtt. Ez viszont nem tisztelgés.

Szólj hozzá!

Címkék: életmód

Don Emeritus bosszúja

2015.05.17. 23:04 Travis.CG

Hétfőn a kutatócsoport tagjai álmosan léptek be az intézet kapuján. Gondolataik lustán pattogtak a hétvégi semmittevés és a heti teendők között, ami szokás szerint semmi produktívat nem eredményezett. Néhányan a kávéautómata adta időhúzással próbálkoztak, míg mások inkább az e-mailt válaszotották, hogy legalább a látszata meglegyen, hogy csinálnak valamit. Őket érte az első sokk.

Don Emeritus a teljes csoportnak címezett dekrétuma szerint ma megbeszélés lesz. Kilenckor. Az óra nyolc óra ötvenhét percet mutatott. Az e-mailt olvasók elrohantak a cigarettázó/kávézó kollégákhoz, leadták a drótot. Megrohamozták a WC-t, hogy a fájdalmasan hosszúnak ígérkező megbeszélés ne legyen kibírhatatlan hosszú és új világrekordot felállítva megjelentek a sötét, dohos irodában.

Nem volt elég szék. Egyedül Don Emeritus pihent kényelmesen, a többiek feszengve álltak. Az asztalon egy kinyomtatott kézirat pihent. Az elöl állók el tudták olvasni. Egy újabb toportyánt szekvenáltak!

- Kaptam egy kéziratot bírálatra - bökött ujjával a cikk felé Don Emeritus. - A kínaiak már megint meghatározták egy toportyán transzkriptómját. - A hír hallatára néhányan fellélegeztek. Tudták, a toportyán Don Emeritus szívügye, ezért minden vágya, hogy ő publikálja a genomját. Ha megelőzte volna valaki a csoportot, ebédig hallgathatnák az áldást.

- A cikk semmi újat nem mond. Kimutatták, hogy a szőr pigmentációjáért felelős génekben van egy mutáció. Ezt mi már '90-ben kimutattuk.

- Akkor születtem - szólalt meg az egyik PhD hallgató. Mindenki úgy tett, mintha nem hallották volna.

- A cikkben nincs következtetés. Csak leírják, hogy különböző programokat futtattak és milyen eredményt kaptak. Én a cikk írást a Nobel-díjas Sydney Brennertől tanultam. Ő mondta, hogy a publikációnak eredeti gondolatokat kell tartalmaznia: modelleket, hipotéziseket, következtetéseket. Ebben nincs semmi, csak az eredmények nyers közlése. Olyan szavak vannak benne, amit a bioinformatikusok szoktak mondogatni. - itt szünetet tartott. A szűk hallgatóság várt, mert tudták, Don Emeritus még nem végzett.

- És nem hivatkoznak ránk! Ez a pofátlanság teteje. Mi már akkor a toportyánnal foglalkoztunk, mikor ezek a cserebogárról tanultak az óvodában. A Dönci - volt doktoranduszom - toportyán-chipjét igazságügyi vizsgálatokban használják. Ez azt jelenti, hogy a magyar jogrend elismeri a módszert. A vizsgálatainkból három PhD dolgozat készült és több, magas idézettségű publikáció. Olyan publikációk, amik következtetéseket tartalmaznak, mert mi meg tudjuk fogalmazni őket. A toportyán ráadásul Hungarikum. Már Arany János is írt róluk. Erre idejönnek ezek a kínaiak! A bírálat nagy részét már megírtam, vissza fogom dobni. Azt kérném tőletek, hogy olvassátok ti is át a kéziratot és szedjétek össze az összes hibát, hogy beleírhassam az indoklásba.

Szólj hozzá!

Címkék: irodalom

Android demo keretrendszer

2015.05.03. 22:57 Travis.CG

Androidra viszonylag egyszerű demót kódolni. A multimédiás képességekkel felvértezett telefon API-ja rengeteg kényelmi funkciót biztosít, amit egy demó készítésénél felhasználhatunk. Persze nem szabad elfeledkezni, hogy bár néha félelmetes teljesítményt zsúfolnak ezekbe a készülékekbe, egy PC-hez képest sok limitáció van és nagyon sokféle készülék. De néhány egyszerű szabály betartásával ezek a hátrányok leküzdhetőek.

A Google is sokat tesz, hogy a fejlesztés könnyű legyen (hiszen bevételt termelnek). Rengeteg jó eszköz van és még Linux alól is működnek. Ha demót akarunk kódolni, az első szabály, amit adhatok:

Felejtsd el az emulátort.

Komolyan. Az egyik demónk fejlesztését két napra visszavetette, hogy kerestem egy bugot, ami emulátor alatt nem jelentkezett. A második fontos szabály:

Ne feledkezz meg az XML-ről.

Mint minden rendes Java fejlesztésnél, az Androidnál is sok XML turkálás kell. Ha ezt észben tartjuk, nem lesz semmi gond. Most pedig lássuk, hogyan készíthetünk demókat Androidra!

Az itt bemutatásra kerülő keretrendszer OpenGL-t használ a grafika megjelenítésére, ezért célszerű az AndroidManifest.xml-be felvenni a következőt:

<uses-feature android:glEsVersion="0x00020000" android:required="true" />

Ezzel elérjük, hogy minimum OpenGL ES 2.0 kell a demó futtatásához. Ha különböző engedélyekre is szükségünk van, azokat is ide vehetjük fel. Most lássuk a kódot!

package com.cybernetic.genetics.android.demoframework;

import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.view.WindowManager;

public class OpenGLActivity extends Activity {

    private GLSurfaceView demoview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        demoview = new cgSurfaceView(this);
        setContentView(demoview);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_open_gl, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed(){
        android.os.Process.killProcess(android.os.Process.myPid());
    }
}

A kód nem csinál túl sok mindent. Előkészíti a képernyőt a rendereléshez és kitölti az egész képernyőt. Általában előírás, hogy bizonyos gombokra a demó lépjen ki, ez itt a vissza gomb lenyomásakor történik. A következő lépés, hogy implementáljuk a cgSurfaceView osztályt. Itt állítjuk be, hogy miként jelenjen meg az OpenGL tartalom. Ez is egyszerű, alig különbözik a Google tutorialtól.

package com.cybernetic.genetics.android.demoframework;

import android.content.Context;
import android.opengl.GLSurfaceView;

import static android.opengl.GLSurfaceView.RENDERMODE_CONTINUOUSLY;

public class cgSurfaceView extends GLSurfaceView {

    private final demoRenderer demo;

    public cgSurfaceView(Context context) {
        super(context);
        setEGLContextClientVersion(2);
        demo = new demoRenderer(context);
        setRenderer(demo);
        setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
    }
}

 Mivel folyamatosan fogjuk változtatni a képernyő tartalmát, ezért a RENDERMODE_CONTINUOUSLY-t kell használnunk. Ugyan csak itt állítjuk be a használni kívánt OpenGL verziószámát is. Ha az alapértelmezettől eltérő pixel formátummal kívánunk dolgozni, azt is itt tehetjük meg. Végezetül jön maga a demó lelke, a rajzoló rutinok, amit a demoRenderer osztályban fogunk össze.

package com.cybernetic.genetics.android.demoframework;

import android.content.Context;
import android.media.MediaPlayer;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.util.Log;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;

import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;

public class demoRenderer implements GLSurfaceView.Renderer {
    private FloatBuffer vertex;
    private static float coords[] = {-1f,-1f, 1f,-1f,1f,1f,-1f,1f};

    private final String vertexsource =
            "attribute vec4 pos;" +
            "void main(){" +
            "gl_Position = pos;" +
            "}";
    private final String fragmentsource =
            "precision mediump float;" +
            "void main(){" +
            "gl_FragColor = vec4(1.0, 1.0, 1.0, 0.0);" +
            "}";
    private int defaultprg;
    private MediaPlayer music;
    private Context context;

    public demoRenderer(Context context) {
        this.context = context;
    }

    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {

        GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

        ByteBuffer bb = ByteBuffer.allocateDirect(8 * 4);
        bb.order(ByteOrder.nativeOrder());
        vertex = bb.asFloatBuffer();
        vertex.put(coords);
        vertex.position(0);

        defaultprg = createGLProgram(fragmentsource);

        music = MediaPlayer.create(context, R.raw.music);
        music.start();
    }

    private int createGLProgram(String fragmentsrc){
        int program;
        int error[] = new int[1];

        int vshader = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
        int fshader = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
        GLES20.glShaderSource(vshader, vertexsource);
        GLES20.glShaderSource(fshader, fragmentsrc);
        GLES20.glCompileShader(vshader);
        GLES20.glGetShaderiv(vshader, GLES20.GL_COMPILE_STATUS, error, 0);
        if(error[0] == GLES20.GL_FALSE){
            Log.d("Demo", "Vertex Shader error" + GLES20.glGetShaderInfoLog(vshader));
        }
        GLES20.glCompileShader(fshader);
        GLES20.glGetShaderiv(fshader, GLES20.GL_COMPILE_STATUS, error, 0);
        if(error[0] == GLES20.GL_FALSE){
            Log.d("Demo", "Fragment Shader error" + GLES20.glGetShaderInfoLog(fshader));
        }

        program = GLES20.glCreateProgram();
        GLES20.glAttachShader(program, vshader);
        GLES20.glAttachShader(program, fshader);
        GLES20.glLinkProgram(program);
        GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, error, 0);
        if(error[0] == GLES20.GL_FALSE){
            Log.d("Demo", "Compile error" + GLES20.glGetProgramInfoLog(program));
        }

        return program;
    }

    @Override
    public void onSurfaceChanged(GL10 gl, int width, int height) {
        GLES20.glViewport(0, 0, width, height);
    }

    @Override
    public void onDrawFrame(GL10 gl) {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
        int pos = music.getCurrentPosition();
        GLES20.glUseProgram(defaultprg);

        int loc = GLES20.glGetAttribLocation(defaultprg, "pos");
        GLES20.glEnableVertexAttribArray(loc);
        GLES20.glVertexAttribPointer(loc, 2, GLES20.GL_FLOAT, false, 8, vertex);
        GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, 4);
        GLES20.glDisableVertexAttribArray(loc);
    }

A munka dandárját ez az osztály végzi. A zene pozícióját használhatjuk az időzítéshez. Ha további modelleket akarunk megjeleníteni, a ByteBufferes átalakításra szükségünk lesz. Vegyük figyelembe, hogy a rendszer nem tökéletes. Gyakorlatilag a fő szálon végezzük az összes inicializálást, ami a nagy mennyiségű modell, textúra, shader betöltésénél problémát okozhat. Mivel a mi demónkat minimalista stílusra terveztük, ez nem okozott gondot. A dokumentáció már a zene inicializálását sem javasolja a fő szálon, de a gyakorlatban ez sehol nem okozott problémát. Apropó, zene. A zene fájl elhelyezéséhez hozzunk létre egy raw könyvtárat a res könyvtáron belül és helyezzük el a zenét music.mp3 néven.

Szólj hozzá!

Címkék: programozás demoscene android

Illumina Roadshow 2015

2015.04.18. 23:22 Travis.CG

Tavaly nem sikerült eljutnom az Illumina előadásokkal egybekötött ingyenreklámjára. Idén - mivel az egyik üzletkötő a barátom - külön emlékeztettek rá, hogy itt a helyem. A konferencia maga nem volt kirívó, előbb vettem észre a dietetikusokat, akik szintén a Lurdy-házban tartották összejövetelüket. Sőt, akadtak, akik még a célegyenesben is rossz regisztrációs pulthoz mentek.

Termékismertető

Az előadó először megpróbálta a saját hangjával kitölteni a termet. Miután ez nem sikerült, a hallgatóság felhívta a figyelmét, hogy ott van mögötte a mikrofon. Innentől tudom, miről beszélt. Mutattak is egy remek videót:

Kedvenc jelenetem, mikor a farmer megmutatja a krumplit az okostelónak. Komolyra fordítva a szót: A kutatás mellett a preimplantációs genetikában, bűnfelderítésben, onkológiában akarnak kész megoldásokat nyújtani. A könyvtár készítés során az emberi hibákat akarják minimalizálni, ezért egy gépet dobnak piacra NeoPrep néven, ami ezt a folyamatot egyszerűsíti.

Sok kutatóintézet szeretne humán mintákat szekvenálni, de nincs pénzük HiSeq-re. Nekik készítették a HiSeq X Five szekvenálókat. Az előadó elmondása szerint ezek lebutított HiSeq 2500-asok. Egyes országok törvényei nem engedik meg, hogy az állampolgárok genomját külföldön szekvenálják, nekik lehet hasznos ez a gép.

Akinek mégis a flexibilitás a fontos, a HiSeq 3000/4000 lehet alternatíva. A genom mellett ezek a gépek transzkriptómmal is megbírkóznak. Az array technológia még nem akar kihalni, így a NextSeq a szekvenáló mellett egy array szkennert is tartalmaz.

A kémiát javították, amitől az még jobb lett. A nem-invazív prenatális tesztek segítségével meg lehet állapítani, hogy a születendő gyermek hordoz-e genetikai betegséget. Erre is mutattak különböző megoldásokat. Voltak PCR mentes módszerek is, hogy ezzel is növeljék a pontosságot.

Bioinformatika vonalon továbbra is a BaseSpace-t erőltetik. Azon megrendelők, akik ódzkodnak a felhőtől, kapnak privát felhőt, ami egy sarokba állított szerver.

Drosophila mRNS szekvenálás

A Drosophilat MiSeq-el szekvenálták, ami új transzkriptóm összerakáshoz nem biztosít elég lefedettséget, de expressziós vizsgálatokhoz elegendő. A könyvtár készítés során nem szál-specifikus metódusokat használnak, hogy ezzel is csökkentsék a költségeket. Négy egyedet szekvenálnak egyszerre, ami egyedenként 5-6 millió readet jelent. A gépet igyekeznek maximálisan tuningolni, hogy az elméleti 25 helyett 30 millió read jöjjön le. Az előadó elmondása szerint a BaseSpace az ő esetükben nem használható, mert ott csak humán, egér, patkány referencia szekvenciák vannak. Kénytelenek voltak a Tuxedo-t használni.

De-novo baktérium szekvenálás

Az előadásban elsősorban azt mutatták meg, hogy miként lehet úgy előkészíteni a mintákat, hogy a bioinformatikusok munkáját megkönnyítsék. Például már a DNS törés is jelentősen befolyásolja a keletkező scaffoldok számát, ezért az enzimatikus darabolást részesítik előnyben. A nagy szekvenálási mélység ugyan csak felesleges, csupán a költségeket növeli.

A scaffoldokat saját fejlesztésű hézag pótló algoritmussal kapcsolják össze. A módszer lényege, hogy azokkal a párosított readekkel, amelyeknél a pár tagjai két különböző scaffoldra mennek, mini denovot csinálnak és egy iteratív módszerrel építik tovább-

Bioinformatics Data Processing

Ez az előadás szerintem egyetlen bioinformatikusnak sem mondott semmi újat, az érdeklődőknek pedig nem volt eléggé informatív. Olyan kijelentések voltak, mint például: az illesztéshez többféle algoritmust is használhatunk. Ennyi. Legalább felsorolhatott volna néhányat, hogy valaki, aki most ismerkedik a témával, utána tudjon nézni. Viszont megtudtuk, hogy az Illumina gyári feldolgozó programjai hiányosak, érdemesebb helyettük saját magunknak összeállítani a feldolgozó alkalmazásokat. De ez szerintem nem újdonság senkinek. (Esetleg az Illuminás marketingeseknek)

NeoPrep bevezető

Ebben az előadásban a könyvtár készítés automatizálását mutatták be. A készülék kevés paraméter beállítása mellett teljes genom vagy stranded RNA-seq könyvtárakat készít. A készülék cseppeket alakít ki a beadott mintákból, amelyeket elektródák segítségével vándoroltatnak. A cseppek ütközését cellák akadályozzák. A hozzáadandó anyagok helyét kártyákkal jelölik. Bemutató videó:

Whole genome sequencing and amplicon sequencing

A kutatók a költéshatékonyság érdekében felrúgják a gyártó által előírtakat. Ez volt a mottója ennek az előadásnak. Bemutatták, hogy a MiSeq-el a fágok szekvenálása mellett meg lehet próbálni gerinceseket is szekvenálni. Igaz, nem humán genomot próbáltak, de az anyai vérből izolálható cirkuláris DNS-ek kromoszóma szintű rendellenességei kimutathatóak. Az áteresztő képesség SNP szintű azonosítást nem tesz lehetővé és még a módszer is túl drága, de szeretnék, ha a jövőben a megfelelő fejlesztések után ez egy standard eljárás lenne. Léteznek különböző gén panelek is bizonyos szimptómák szűrésére, amelyeket megfelelő target eljárásokkal tovább lehet fejleszteni. A 16S rRNS szekvenálásokkal metagenomikai vizsgálatok is végezhetőek. Az előadás végére felvetítették, hogy mitokondriális és macska genom szekvenálásokat is végeznek.

Az Illumina MiSeq onkológiai alkalmazása

Az Országos Onkológiai Intézet előadásában megtudhattuk, hogy a korábbi Sanger alapú szekvenálást váltották ki NGS-el, ami pontosság terén már eléri az intézet számára szükséges színvonalat. A multiplexelésnek köszönhetően a költségeket le tudták csökkenteni, de a bioinformatikai elemzést nem lehet megkerülni. Az Illumina saját reportoló alkalmazása használhatatlan, mert 6-10 hosszúságú indeleket elvesztenek. További példákat is bemutattak, amikor az alapértelmezett beállítások hatására információ veszett el. A BaseSpace sem jelent megoldást, mert az ott fellelhető programok vagy elvaultak vagy nem teszik lehetővé a paraméterek módosítását. Sokkal jobb a saját munkafolyamatok felállítása, ahol a megfelelő alkalmazások találhatóak meg.

Illumina kits for NGS library preparation

Amilyen semmitmondó volt a bioinformatikai előadás, annyira telefonkönyv szerű volt ez. A könyvtár készítés két nagy csoportba osztható. Az egyik a Nextera, ahol a DNS hasítást enzim végzi, a másik a TruSeq alapú, ami mechanikus töréssel darabolja a DNS-t és PCR mentes. Ennek a két fajta eljárásnak létezik rengeteg fajtája, amit szükségtelennek tartok itt leírni, de amit az előadó mind felsorolt.

Van külön rák vizsgálatra is panel, de ha nem tetszik a célgének összeállítása, saját panel összeállítására is van lehetőség. Külön kitek vannak alacsony koncentrációjú minták kezelésére is. Metagenomikára a korábban is említett 16S rRNS-t célzó kitet javasolják. Az örökletes betegségek szürésére szintén vannak megoldások. Az RNA-Seq alapú kitek egész kis családot alkotnak a sokféle kondíciók lefedésére. A végére csak említés szintjén szóltak az igazságügyi eljárásokban alkalmazható kitekről.

Új generációs szekvenálási szolgáltatások a Debreceni Egyetemen

Ebben az előadásban megismerhettük, hogy milyen szolgáltatásokat nyújtanak a Debreceni Egyetemen vagy annak spin-off cégén az UDGenomeden. A Chip-Seq nagyüzemben megy, a genom szekvenálásban és RNS-Seq-ben már rutinjuk van. A jövőben szeretnének a metagenomika felé nyitni. Saját rák paneljük is van. Minden egyes szekvenálás mellé kérhető bioinformatikai elemzés is.

Szólj hozzá!

Címkék: bioinformatika

Cseppet sem objektíven: Revision2015

2015.04.12. 21:59 Travis.CG

Idén kimaradt a Revision és még az elő közvetítést sem néztem. A party után nyugalmasabb óráimban az alkotásokat nézem. Mennyiségben nincs hiány. Huszonnégy kategória, átlagosan tíz indulóval. Mi Magyarok is szép számmal képviseltettük magunkat, sőt még a Cybernetic genetics is releaselt a tudtomon kívül, nem kis meglepetést okozva nekem. Természetesen pozitív értelemben.

Grafikák

 Ebbe a kategóriába gyűjtöttem minden állóképet, tehát a fotókról is itt ejtek szót. Elég változatos volt a mezőny. A kedvencem Made képe volt. Nagy, ronda robot, szép kecses nő.

De a győztes Cigarette Break méltán lett első.

Prince valami csoda folytán nem készített freskó méretű képet. Helyette törpéket tűzött lándzsa végre. Valami azt súgja, a Disney nem fogja megcsinálni ezt az előzményt.

Unreal Modern Graphics kategóriában csak a negyedik lett, de talán elégtétel neki, hogy a kézi rajzban első lett.

A fotókból szokás szerint vegyes volt a kínálat. A vicces, de technikailag nulla képektől a profi kompozícióig volt minden. Amit én kiemelnél, az egy elvetemült scener képe a fényképezőjéről. Maga a kép, amit készített igazából nagy nulla, de a fényképezőgép. Na, az igen!

dscf2338.JPG

Ez egy A4 szkennerből eszkábált digitálist fényképezőgép Raspberry-vel meghajtva. Ezért szeretem a demoscenet. Teo képe a 15 helyen végzett.

Az "öreg" gépekre készített képek legtöbbje majd a demókból is vissza fog köszönni. Ezek is zseniálisak. Most csak egy Amigás képet emelek ki:

A proceduralis képek közül sajnos nem tudtam mindegyiket megnézni, mert a lusta programozók nem mellékeltek hekkmentes verziót. (Nem demoscenereknek: Azért, hogy beleférjenek a méretkorlátba, a programokat eszement hekkekkel zsugorítják. Ezért nincs visszatérési érték ellenőrzés. Ha valami balul üt ki, szétfagy az egész és nem lehet tudni, miért. Néha mellékelnek "biztonságos" verziót, ami minden körülmények között lefut.) Így a Lánchídról lemaradtam, és BoyC képét is csak képről láttam. Értitek.

Zenék

A zenék most nem tetszettek. Talán a futtatható zenék közül JazzCat zenéje fogott meg egy kicsit. Teo negyedik (executable music) és kilencedik lett (striming music), gratulálunk neki.

Wild

Ebbe a kategóriába négy versenyszámot gyűjtöttem. Az animációk idén nagyon elvontak voltak. A Blank például kifejezetten tetszett, pedig csak a negyedik helyezett volt.

BLANK from grade die. on Vimeo.

Természetesen volt vicces videó is ezúttal a Jumalauta tálalásában. Nem biztos, hogy a második helyre érdemes, de a közönség így gondolta.

Az igazi Wildot a Raspberryk és a saját építésű hardverek uralták. A Panda Cube kockapandával rukkolt elő. Igazából a medve nem sokat tesz hozzá a produkcióhoz (hiszen csak a kockában ül), az ötlet viszont zseniális:

Lft kivételesen nem épített számítógépet, csak zongorázott. Az oszcillátorral összekötött C64-k mit kerestek ott, az nem értem. Szerintem így akarta megszerezni az oldschool arcok szavazatát. A 120 Hz demók legtöbbje korábbi demók feltuningolt változatai voltak. Ez az a fajta kompó volt, amit látni kellett volna. Hasonló a helyzet a media facade demókkal is, de azokat azért videóról is meg lehet nézni. Itt egy speciális szoba vetítőit kellett vezérelni. Pontatlan leírások helyett itt a nyertes demo:

Intrók

A 64k-ban a Conspiracy nyert, ahogy korábban megjósoltam, kezd beérni a demotooljuk. Én mégis inkább a második helyezettet emelném ki. Nemes egyszerűséggel azért, mert ahogy néztem, soha nem tudtam, mit is látok igazán. Mikor azt hittem, tudom, mit látok, változott a kép és már megint elvesztettem a fonalat. Ezt a bizonytalanságot sikerült három és fél percen keresztül fenntartani, úgyhogy egy linket megérdemelnek:

Mivel a szívem csücskei a sztoris demók, ezért meg kell említenem az Approximate végtelenül szentimentális intróját is. A 4k indulók nem voltak kimagaslóak. Még fraktálokat sem láthattunk. Úgy vettem észre, a csapatok inkább a 8k-ra tartogatták erejüket, ami a minőségen is meglátszik. A TRSI nyerte a compót teljesen megérdemelten. Már az első jelenet önmagában is jobb volt, mint a 4k mezőny, és még erre tettek rá további jeleneteket. A zene is pompás volt.

A Future Crew legendás demóját már rengetegen feldolgozták, most épp 8k verzióban. A gumiemberes modellek elég érdekesek voltak. A recycle 8000-t emelném még ki. Technikailag nem volt olyan jó (bár én ilyet nem tudok), de élvezetes volt nézni.

Demók

A Fairlight NVScenen megkapta, hogy amit csináltak, az nem bír művészi értékkel. Talán erre (is) volt válasz ez a demó. Itt azért halványan volt egy kis társadalom kritika is. Fájó pont, hogy még 1024x768-ban sem tudtam akadás nélkül lejátszani. Félek kell egy új videokártya. A Coccon demóját sem tudtam vason megnézni, pedig nagyon szerettem volna, hiszen a leírás szerint valós idejű globális illuminációt használtak. A harmadik helyezett Oniria a dizájn demók sorát gazdagítja. Jó példája annak, hogy nem csak az lehet jó demó, ami szétégeti a videokártya processzorát. Azután ott van a 6. helyezett Interstase. Néztem és nem tudtam eldönteni, hogy jó vagy nem. Nem teljesen random, mert vannak visszatérő motívumok benne, de mivé is áll össze az egész? Nem tudom. Amiga vonalon most nem volt olyan erős a mezőny, mint tavaly. A Ghostown messze mindenki felett nyert.

Csak nagyon felületesen mutattam be az alkotásokat. Akinek van egy kis ideje, csemegézzen belőlük:

http://www.pouet.net/party.php?which=1550&when=2015
http://demozoo.org/parties/2444/

Szólj hozzá!

Címkék: demoscene

Humán genom MinION-al

2015.04.01. 07:06 Travis.CG

Fantasztikus cikk jelent meg a Nature Methodsban. Az angliai Sanger Intézet egyik kutatócsoportja sikeresen egyben megszekvenált több humán kromoszómát is MinION készülékkel. A mutatvány közel sem volt egyszerű. Először el kellett különíteni a kromoszómákat, amire egy szinkron fejlődésű sejtcsoportot használtak. Amikor az összes sejt anafázisban volt, akkor szétválogatták az egyes kromoszómákat. A DNS töréseket chaperon molekulákkal akadályozták meg, amit a szekvenálás megkezdéséig a kromoszámákon hagytak.

Egy módosított protokollal előkészítették a mintákat, majd nagyon óvatosan a MinION készülékbe töltötték őket. A szekvenálás teljes időtartama alatt folyékony nitrogénnel hűtötték a készüléket. A leírás szerint így sokkal jobb jel/zaj arányt kaptak, plusz a szupravezetés miatt a szekvenálás is gyorsabban ment. Maga a készülék egy speciális rázkódás mentes asztalon feküdt, hogy ezzel is csökkentsék a kromoszóma törés valószínűségét.

Az eredmények elképesztőek. A 20-as és 21-es kromoszómát teljes egészében megszekvenálták. Sajnos az 1-es és 2-es kromoszóma esetén csak a kis kart sikerült egyben leolvasni, a nagy kar a kényes művelet ellenére is két darabba törött. A szerzők bizakodóak, hogy a módszerük tökéletesítésével végre megszűnnek a draft genomok és csak jó minőségű, precíz szekvenciák lesznek. A cikket az érdeklődők itt olvashatják el.

1 komment

Cseppet sem objektíven: NVScene 2015

2015.03.23. 00:27 Travis.CG

A gonosz nagy cég ismét demópartit adott a GPU Technology Conference ideje alatt. Volt pár előadás bioinformatikai vonatkozásban is, most viszont a demoscene rendezvényről fogok beszámolni szokásos csapongó stílusomban.

Android compo

Tudtommal az NVScene az egyetlen party, ahol dedikált Android compo van. Idén meglepő, de 6 induló volt és nagyon kitettek magukért. A d159 ismeretlenül robbant be. A zenét Gloom szerezte, de ő bárkinek ír, a kóderről viszont nem hallottam. A leírás szerint korábban Flash demókat készített, így igencsak meglepő tőle ez a release.

Magyarok is indultak. Aha, Pasy és Teo compo-gyilkos részecske rendszerüket vetették be, de a demo címe (Protostar) szakított a Standard modell nomenklatúrájával. Az ötödik helyre mi libbentünk be, a release részleteiről külön posztban olvashattok.

4k procedurálist grafika

Az első helyezett nem lehetett más, mint Archie. A kép témája maradt, a megjelenítő sem változott túl sokat, legalábbis a leírás szerint.

Animáció

Csak két animáció indult, ebből az egyik semmilyen. A másik a Blurred Memories. Kellemes, de semmi olyan nincs benne, amitől másodszor is meg akarnám nézni.

Demo

A Still legújabb demója magasan nyert, pedig semmi rendkívüli nem történik benne. Vártam, mikor fog összeállni a kép jelentéssé, de ez nem következett be. Ennek ellenére nem volt rossz. A második helyezett a Fairlight abszolút valós idejű raytracere. Itt nagyon sajnáltam, hogy a demó megállt a technológia bemutatásán és nem lépett át a művészet mezejére. Annyi potenciál, annyi ötlet ment veszendőbe egy IKEA szoba bemutatásával, hogy fájdalom még leírni is. Még a harmadik helyezett Dead Roman is több életet vitt a jelenetekbe.

A Rebels nem állt meg az Android nyüstölésnél, hanem PC-n is bedobták magukat. Erőfeszítéseiket a közönség a negyedik hellyel jutalmazta. Végezetül érdemes megemlíteni a Monolith című JavaScript demót. A jelenetei kicsit egyszerűek, ennek ellenére ötletes.

Összefoglalás

Az idei NVScenere valahogy mindenki be akart adni valamit, de vagy időhiány vagy egyéb más okok miatt a legtöbb induló nem dobta be teljesen magát. Sok ügyes release volt, de legenda nem született.

Szólj hozzá!

Címkék: demoscene

Beindul a termelés

2015.03.19. 22:26 Travis.CG

Kezdenek beérni a munkák. Hosszú pangás után beindult az impakt faktor gyár. Eddig ezzel a cikkel volt a legkevesebb problémám. Ez annak is köszönhető, hogy az első revízió után kapcsolódtam be a munkába.

A vizsgálatok során öt búzafajta kb. 20 metabolit szintjét mérték két évjáratban, három ismétléssel, két szövetben. SPSS-ben három táblázatra megcsinálták a MANOVA-t, de a bíráló kért még egy csomó statisztikai összehasonlítást, amit sajnos SPSS klikkeléssel nem lehetett megoldani. Legalábbis a bíráló adta időintervallumon belül nem.

Írtam egy nem túl optimális R szkriptet, ami így is 10 óra alatt lefutott és megcsinálta az összes összehasonlítást. Később kellett heatmapeket gyártani, de azok sem vettek el sok időt. Főleg, hogy PowerPointban még utólag maszatoltak rájuk.

Ez alatt az idő alatt tanultam meg, hogy különböző módon is ki lehet számolni a MANOVA-t. Természetesen a két statisztikai program máshogy számolja őket. Ez okozott némi fejtörést, mert nem tudtam azokat az eredményeket megismételni, amit az SPSS kiadott. Végül helyére kerültek a dolgok és megszülethetett ez a cikk.

Szólj hozzá!

Címkék: publikáció

A cikk, ami majdnem nem készült el

2015.03.08. 23:09 Travis.CG

Sok tekintetben a kutatás egyfajta versenyfutáshoz hasonlít, ahol az első helyezetten kívül nincs díjazás. Szerencsére elég sok versenyszám van, de így is tetemes mennyiségű kutató áll rajthoz. Hogy tovább növeljem a képzavart, néha csak akkor látjuk a konkurenciát, amikor az már célba ért és minket kiejtett a versenyből. Néha úgy érzem, egy blogot meg lehetne tölteni a hiábavaló próbálkozásokkal.

Ennek a cikknek az alapanyaga is majdnem így végezte. Én a de-novo összeszerelésben és az annotálásban segédkeztem. A mi részünkkel elég jól haladtunk, de a partnerek már nem voltak ennyire ambíciózusak. Egy levélváltás például heteket vett igénybe. A végén már úgy voltunk, hogy megírjuk magunk, a többiek pedig láttamozzák csak le.

Ekkor jött ki a konkurencia cikke. Nem emlékszem pontosan, de talán két-három hét depresszió után elkezdtük összehasonlítani a mi eredményeinket a friss cikkel és végül arra jutottunk, hogy van némi különbség a genomok között. Sajnos nem találtunk akkora különbséget, hogy az elemzések újdonságot nyújtsanak, de a genomok még leközölhetőek.

Kiválasztottuk az újságot is, de ekkor jöttek a drága partnerek extra kívánságai. Nevezetesen ne töltsük fel nyilvános adatbázisba, mert akkor jönnek a gonosz kínaiak, letöltik, kielemzik és megírják a cikket helyettünk. Az újság persze közölte, hogy a genom vagy nyilvános adatbázisban lesz, vagy nem lesz cikk. A partnerek így nagy duzzogva megengedték nekünk, hogy feltöltsük a szekvenciát, de kikötötték, hogy nem lehet látható, amíg meg nem jelenik a cikk.

Nem is volt semmi gond, egészen Karácsonyig. Ekkor ugyanis a partnere riadóztattak mindenkit, hogy a szekvenciáknak azonnal meg kell jelennie, mert ők jelentést, beszámolót, kivonatot írnak és ez nem lehet teljes a szekvenciák nélkül. Csakhogy, amit nem tudtak, hogy az NCBI-ban a feltöltött adatokat csak úgy lehet megváltoztatni, hogy küldünk egy levelet és megkérjük az adminisztrátort. Küldtem levelet, amire rögtön megérkezett a válasz: Szabadságon vagyok. Majd jött egy második levél is, amiben azt írták, tele vannak munkával, amint lesz szabad idejük, teljesítik a kérésem.

Szilveszterre megjelentek. Februárra a cikk is.

Szólj hozzá!

Címkék: publikáció

Fenyítés alatt

2015.02.27. 00:10 Travis.CG

A korábbi Nanopore-os írásaim felkeltették az illetékesek figyelmét, valahogy összekapcsolták azokat az egyik munkatársammal és udvariasan figyelmeztették, hogy el kellene távolítani a blogbejegyzéseket. Szerencsétlen nem tudott az egészről semmit. Miután kiderült, hogy én voltam az elkövető, így kérték a tartalmak eltávolítását. Mivel nem akarom, hogy kidobjanak minket a programból, a kérésnek eleget tettem.

Most úgy érzem, olyan rosszfiús lett a blog. Itt olyasmit is lehet (lehetett) olvasni, ami tiltott információkat tartalmaz.

Mielőtt meglátogatnak a texasi nehézfiúk, gyorsan nézzük is meg, mások milyen információkat szivárogtatnak ki:

Kezdjük is mindjárt egy két órás borzalommal Nick Lomantől, akinek nincs time-lapse képes videokamerája:

De láthatunk nagyszerű programokat különböző folyamatokra: Vizualizációra, illesztésre, szekvencia javításra.

Cikkek is kezdenek megjelenni: HLA haplotípus meghatározásról, baci összeszerelésről.

4 komment

Címkék: nanopore

Új demóparty a láthatáron

2015.02.22. 22:36 Travis.CG

Azt gondolom, a magyar demoscene ismét felszálló ágban van. 2010-ben két party volt csak nálunk. Function-ön négy demó indult, kettő 4k és kettő 64k introval. Elég nagy pangás volt, a depresszión egyedül az Experience segített, ahol megnézhettük az adott év legjobbjait és beszélgethettünk kicsit. Rákövetkező évben volt egy Busodore is a megszokott rendezvények mellett, de az csak egy fellángolás volt.

2012 érdekes fordulatot hozott. Az Experience belépett a partik sorába. Function-ön 11 demót nézhettünk végig. Egy évvel később csak egyel volt kevesebb demo, de már olyan nagy nevek is képviseltették magukat, mint a Fairlight.

Idén pedig még egy party lesz, a QB! A Cybernetic geneticsnek is van némi része benne, mert Betasector a szervezők között van. Ha a régi partik idén is megrendezésre kerülnek, az azt jelenti, hogy 2015-ben négy party várható. Csak győzzük release-el!

Szólj hozzá!

Címkék: demoscene

Kommunikációs nehézségek

2015.02.22. 22:04 Travis.CG

Egyesek úgy érezhetik, nem becsülöm eléggé az intézeti rendszergazdáinkat. Pedig rengeteget dolgoznak, hogy mi, hálátlan kutatók dolgozni tudjunk. Még a szórakoztatásunkról is gondoskodnak, hogy ne legyen olyan egyhangú az életünk. Legalábbis a következő eset erre enged következtetni:

Valami bürokrata kitalálta, hogy számba kell venni, hogy az intézetünkben mennyi nyomtató van és az egy év alatt mennyi papírt fogyaszt. Nosza, fel is kerekedett a két kópé, mert ugye egy ilyen bonyolult munkához nem elég egy ember. Ki is alakították a hatékony csapatmunkát. Az egyikük leolvasta a nyomtató típusát, IP címét (nevezzük Stannak), a másik beírta egy laptopba (legyen Pan).

Stan: Hogy kell előhívni a tesztoldalt?
Pan: Hosszan lenyomod a gombot.
Stan: Diktálom a sorozatszámot. Így, ahogy mondom: Iksz, kettő Negyven kilenc. Nem negyvenkilenc! Ahogy mondom: Negyven kilenc. Mondom, hogy nem negyvenkilenc! Negyven kilenc. Ezt nem hiszem el!
Én: Miért nem azt mondod neki, hogy négy nulla kilenc?
Stan: Igen, az lesz.
Pan: Itt a gép, írd be te.

Szólj hozzá!

Címkék: életmód rendszergazda

(Majdnem) mindent a Blastról

2015.02.22. 21:04 Travis.CG

Nem hiszem, hogy van még egy olyan bioinformatikai program, ami ennyire alapvető lenne, mint a Blast. Van egy elméletem, ami szerint egy ötlet eredetiségét úgy lehet lemérni, hogy hányan próbálják meg lemásolni, illetve a farvizén elevezni. A Blast ebben torony magasan vezet.

Kezdetek

Kezdetben vala a Smith-Waterman algoritmus és láták a bioinformatikusok, hogy ez jó. És volt szekvencia összehasonlítás, homológia keresés, első nap. Azután a sok szekvenciát elkezdték adatbázisokba gyűjteni, és hamar rájöttek, hogy a Smith-Waterman algoritmus sokáig tart, ha egy adatbázisban kell keresni. Ekkor született meg a Fasta, aminek a neve egy fájlformátumban köszön vissza. Ebből is látszik, hogy többféle módon válhat hallhatatlanná valaki. A Fasta három verziót élt meg, és 2000-ben nyugdíjazták. Én életemben egyetlen egyszer használtam, amikor egy gépen nem volt elérhető a Blast, akkor is csak demonstrációs célokból.

A hős színre lép

Amikor megjelent a Blast, még nem volt az a sziporkázó program, mint most. Nem volt képes gap-esen illeszteni, hiányzott belőle néhány statisztika, viszont kegyetlen gyors volt, miközben az érzékenység oltárán nem áldoztak fel sokat. A sebességre pedig égetően nagy szükség volt. A GenBank-ben abban az időben már 33 ezer szekvencia volt, ami nem tűnik túl nagynak, de akkoriban a gépek teljesítménye sem volt eget rengető.

A program lehetőségei viszont sokakat megihlettek. Blast dolgozik a RepeatMasker gépházában, az annotáló rendszerekben, mint amilyen a Trinotate is, de még HLA típizáló munkafolyamatokban is kap helyet. Ismeretlen fehérjék funkcióinak felderítésére az első lépés még manapság is az, hogy Blast segítségével megkeressük a rokon fajokban a szekvenciát és reménykedünk benne, hogy ott kísérletesen is ellenőrízték a fehérje szerepét (nem csak egy másik Blast kereséssel állapították meg azt). Egyszóval megtaláljuk mindenütt, ahol a szekvencia hasonlóság meghatározására van szükségünk. Gátlástalan cégek odáig merészkednek, hogy üzleti modellt építenek erre a remek kis programra.

Használata

A Blast parancssori kapcsolói rengeteget változtak a verziók során, és hála a különböző webes megoldásoknak, sokszor nincs is szükség az ismeretükre. Rendszeres használat esetén vagy ha nagy mennyiségű adatunk van, szükség lehet a Blast kézi futtatására. Ebben a leírásban a 2.2-es verzióval foglalkozom. Első lépés mindig az adatbázis építése. Ezt a makeblastdb paranccsal hozhatjuk létre egy FASTA fájlból. Meg kell adni a bemeneti állomány nevét, a szekvencia típusát (fehérje vagy DNS) és opcionálisan a kimeneti fájlok prefixét.

makeblastdb -in input.fasta -dbtype nucl -out mydb

Ezután jöhetnek a kérések. Az adatbázis és a kérés típusa határozza meg, melyik Blast programot kell futtatnunk:

program kérés adatbázis
blastn nukl nukl
blastp prot prot
tblastn prot nukl (transzlált)
blastx nukl (transzlált) prot
tblastx nukl (transzlált) nukl (transzlált)

A blastn programnak ezen felül három módja van: a megablast és a blastn-short és a dc-megablast. A megablast nagy mennyiségű kérés esetén gyorsabb, mintha többször lefuttatnánk a Blasttot, mert a kéréseket összefűzi egy szekvenciává. A blastn-short rövid (20 nukleotid) szekvenciák esetén adnak hatékony eredményeket. A -task paraméter segítségével aktiválhatjuk ezeket.

Az alapértelmezett paraméterek a legtöbb esetben elegendőek, olykor mégis szükség lehet azok állítgatására, hogy hatékonyabb, esetleg kevesebb eredményt kapjunk. Az első a -window_size. Ezzel állíthatjuk be, hogy mikor kapcsoljon össze két közeli találatot a blast. A -word_size segítségével állíthatjuk a legkönnyebben a program érzékenységét. Minél magasabbra állítjuk, annál nagyobb összefüggő, teljesen illeszkedő szakaszokat fog megtalálni. Tehát gyorsabb fog futni, de kevesebb találatot kapunk a kevésbé hasonló szekvenciákból.

A -matrix segítségével azt határozhatjuk meg, mennyire tekintsünk hasonlónak két monomert. Ez a beállítás nagyon függ attól, mire is akarjuk használni a Blastot és ha elrontjuk, ezzel okozhatjuk a legnagyobb kárt.

Ha nem érdekelnek minket a gapek, akkor az -ungapped segítségével megszabadulhatunk minden ilyen beállítástól. Főleg rövidebb szekvenciák esetén érdemes használni. Ellenben ha irányítani szeretnénk a gapek hosszát és számát, akkor a -gapopen és -gapextend segítségével bírálhatjuk felül az alapértelmezett viselkedést. Az algoritmus szempontjából ide kell venni a -penalty és -reward opeciókat is. A szekvenciák összehasonlításánál gyakran többféle módon is összeilleszthetünk két szekvenciát. A következő, erősen sarkított példa is ezt kívánja szemléltetni:

Az illesztés paramétereire nem térnék ki, mert rengeteg weboldal és fórum foglalkozik velük. A kimenet feldolgozását viszont valahogy elmúlasztják bemutatni. Az alapértelmezett kimenet jó vizuális áttekintésre, de sok eredmény esetén nehéz a feldolgozásuk. A legegyszerűbb ilyenkor táblázatos formát kérni (-outfmt 7 vagy -outfmt 6, attól függően, hogy akarunk-e kommenteket, vagy nem). Ha több információt szeretnénk visszakapni, az XML lehet segítségünkre. XML-t szinte valamennyi programozási nyelven fel lehet dolgozni. Azt is megadhatjuk, hogy táblázatos kimenet esetén milyen mezőket kapjunk vissza.

from xml.dom.minidom import parse
import sys
xml = parse(sys.argv[1])
for hit in xml.getElementsByTagName('Hit'):
    hitacc = hit.getElementsByTagName('Hit_accession')[0].firstChild.nodeValue

A fenti Python kód kigyűjti a találatok szekvencia azonosítóit.

Habár a nukleotid alapú Blast nagy népszerűségnek örvend, a fehérje alapú homológia keresés a gyakorlatban sokkal lényegesebb. Mivel különböző trinukleotidok is kódolhatják ugyan azt az aminosavat, ezért a fehérje alapú kereséssel olyan hasonlóságokat is megtalálhatunk, ahol az evolúciós távolság nagyobb. Nem véletlen, hogy fehérje alapú keresésre többféle Blast program létezik.

A blastp sok tekintetben megegyezik a blastn-el, ezért az ott leírtak itt is alkalmazhatóak. A psi-blast ellenben egy teljesen más keresési stratégiát valósít meg. Szekvencia helyett ugyanis mátrixokkal keres. Míg a nukleotid alapú összehasonlításnál csak azt nézzük, hogy a szekvenciák egy ponton megegyeznek-e vagy sem, addig a fehérjék összehasonlításánál a nagyszámú kémiai jellemző miatt árnyaltabb hasonlósági mutatókat kell megállapítani. Erre szolgálnak a mátrixok. Minél több hasonló szekvencia kerül a mátrixba, annál több információnk van arról, hogy a szekvenciák mely pozíciói konzerváltak, tehát az összehasonlítás során lényegesek, és melyeknél van nagy diverzitás. De hogyan lesz egyre több elemünk a mátrixban? A psi-blast ezt iterációval oldja meg. A találatokat felhasználva új mátrixot képez és megismétli a keresést. Parancssorban a -num_iterations kapcsolóval szabályozhatjuk ezt.

A psi-blast minden iteráció után egyre távolabbi hasonlóságokat képes megtalálni, így előfordulhat, hogy végül olyan találatokat is megkapunk, aminek kevés köze van az eredeti kereső szekvenciához. A phi-blast ezért egy szabályos kifejezés-szerű mintázattal csökkenti ezen találatok számát. Parancssorban a phi_pattern opcióval adhatunk meg egy fájlt, amiben definiálhatjuk a mintázatokat. Ha a weben keresünk, csak egy mintázatot használhatunk. A szabályos kifejezés szintaxisáról itt olvashatunk.

A psi-blast egyik gyengesége, hogy a mátrix egy blastp keresés első találatából származik. Ezt a hiányosságot igyekszik kiküszöbölni a delta-blast. Ennél a programnál először a konzervált domain adatbázisra történik egy illesztés, majd ebből állítja elő a mátrixot.

Futtatási módszerek

Blastot nagyon sokféle módon futtathatunk. Ha van egy böngészőnk, akkor csak annyi a dolgunk, hogy felkeressük a számtalan weboldal egyikét. Ez rendkívül kényelmes és egyszerű módja a keresésnek. Hátránya, hogy sok limitációval kell számolnunk. Leggyakrabban a kereső szekvenciák számát és méretét korlátozzák.

Ha nincs böngészőnk (például mert egy távoli gépre jelentkeztünk be parancssorban) vagy szeretnénk kicsit automatizálni a kereséseket, akkor az URL API lehet segítségünkre. Ebben az esetben egy URL-be írhatjuk be paraméterként a program beállításait. A folyamat két lépcsős. Először elküldjük a kérést, kiszedjük a Request ID-t (RID), majd ennek ismeretében letöltjük az eredményt. Mivel ebben az esetben nincs automatikus oldal frissítés, ezért ha túl kevés idő telik el a kérés elküldése és az eredmény letöltése között, csak egy értesítést kapunk. Ugyan csak ügyeljünk rá, hogy ne terheljük le a szervert túl sok kéréssel. Ezzel csak azt érjük el, hogy letiltanak bennünket. Minimum a következő paramétereket kell megadnunk:

 wget "http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?QUERY=145361606&DATABASE=nr&PROGRAM=blastn&CMD=Put" -O rid.html

A kérés az Arabidopsis AGO5 mRNS-ét küldi el. A QUERY mezőbe a GI számot írtuk be. Az eredményt a következő utasítással kaphatjuk meg (figyelem, a RID kérésenként változik!):

wget "http://www.ncbi.nlm.nih.gov/blast/Blast.cgi?RID=B5ZDS8C2015&CMD=Get" -O result.html

A paraméterek teljes listája itt található.

Akit a GET-es paraméterek limitációi aggasztanak, használhat SOAP-ot is. Ezt használják a klikkelős programok nagy többsége is. Példaprogramokat itt találunk. Ha a klikkelős programokat választanánk inkább, szóba jöhet a CLC Workbench programcsalád legtöbb tagja, a Geneious, de akár az ingyenes UGene vagy az NCBI Genome Workbench is.

A végére hagytam a legegyszerűbb módszert. A parancssoros blast program a -remote kapcsolóval távoli feldolgozást kezdeményez. Helyi használatra a poszt elején láthattunk példákat. Ha számítógépünket nagyon lefoglalják egyéb programok, használhatunk célhardvereket is. Ezek többnyire FPGA alapokon nyugszanak.

Technikák

A Blast legegyszerűbb, mindenki által ismert használati módja, hogy elküldünk egy szekvenciát és nézzük, milyen találatokat kapunk. Ortológok keresésénél szokták használni a reciprok keresést. Ez két keresésből áll. Először egy "normál" keresést hajtunk végre, majd a legjobb találattal ismét végrehajtunk egy keresést egy olyan adatbázison, amiben az előző kereső szekvencia is szerepel. Ha az első helyen visszakapjuk az eredeti szekvenciát, a két szekvenciát 1-1 ortológnak kiáltjuk ki.

Új organizmus transzkrip annotálásnál, ha a blastn eredmény nem kielégítő, tblastn-t is lehet használni. A fehérje szekvencia konzerváltabb, mint a DNS, ezért esélyesebb, hogy jó eredményt fogunk kapni.

Vannak esetek, amikor a Blast erőssége (lokális illesztés) egyben a hátránya is. Aki sok keresést futtatott, találkozhatott azzal a jelenséggel, hogy túl sok HSP-re esett szét a találat. Ha nem akarunk másik illesztő programot használni, jó szűrési módszer, hogy csak azokat a HSP-ket tekintjük egy találatnak, amelyek azonos orientációban vannak (természetesen a HSP-k közötti távolságot limitáljuk).

Végszó

A Blast hosszú ideje hű társa a bioinformatikusoknak és még az is marad egy jó ideig. Ezzel a poszttal szeretnék tisztelegni az alkotóik előtt és kívánok nekik még ezer hivatkozást.

Szólj hozzá!

Címkék: bioinformatika

Sírós kislány visszatér

2015.01.26. 00:05 Travis.CG

Intézetünknek valami különös vonzása lehet, mert akik egyszer elhagyták, valami úton-módon visszatérnek. Nem történt ez máshogy a Sírós kislánnyal sem. Mindent hátrahagyva elment banki asszisztensnek és úgy tűnt a tudományt ismét hatalmas veszteség éri. Mivel még nem volt meg a diplomája, visszatért, hogy két hónap alatt megoldja ezt a problémát és MsC-vel felvértezve elmenjen Németországba PhD-zni.

A visszatérés nem ment zökkenő mentesen. Először is képtelen volt egy távoli gépről adatokat letölteni. Az scp-vel kinti gépről akarta a tűzfal és millió router mögött elhelyezkedő munkaállomását elérni. Pedig az infrastruktúra mit sem változott, mióta elment (még a felhasználói fiókja is megvolt a távoli gépen). Az említett távoli gép egyébként egy másik egyetem tulajdonában van, de mivel a csoportunk vezetőjének ott is van állása (és ő a gép egyik rendszergazdája), ezért használjuk. Pédának okáért ott tároljuk a nyers szekvenálási eredményeket is.

Ez az állás sajnos megszűnt, de a kapcsolat megmaradt és továbbra is úgy használjuk a gépet, mint eddig. Ezt a Kislánynak is megemlítettük, aki viszont nem egészen így adta tovább a nedves laboros kollégáknak. Alig fél órával később megjelent két másik csoport vezetője és nekünk estek, hogy most mi lesz az ő szekvenciáikkal, mert le akarják törölni a távoli gépről. Hiába magyarázták nekik, hogy nem kell pánikolni, mert van biztonsági mentés nálunk is, a szervert továbbra is használhatjuk, csak egy állás szűnt meg. Az érveket meg sem hallották, csak hajtogatták, hogy az ő adataikat törölni fogják. Olyan volt az egész, mint az Inception. Elültettek egy gondolatot a fejükben, ami túlbúrjánzott.

Később kiderült, hogy ők is elkezdtek biztonsági mentéseket csinálni az egyik PhD hallgató laptopjára. Pár nap múlva felkerestek egy másik csoporttól is, hogy egy USB-s vinyóra mentsek le "mindent".

Egyik nap közölte, hogy őt nem csak azért vették vissza, hogy megcsináljon bizonyos elemzéseket, hanem azért is, hogy bioinformatikát oktasson. Azzal táskájából elővett egy tabletet és elindult tanítani. Ezt már csak azért sem értettem, mert a múlt év végén tartottunk bioinfó oktatást.

Annyi biztos, mióta itt van, nem unatkozunk. De van egy olyan érzésem, azután sem fogunk, hogy ő elmegy.

Szólj hozzá!

Címkék: életmód

Hogyan dolgozzunk sokat, feleslegesen

2015.01.11. 23:11 Travis.CG

Először is válasszunk egy programot, ami a cikkek és fórumok tanúsága szerint könnyedén megoldja az Ön összes problémáját. Például az EuGene-t, ami a leírasok szerint annotálja az Ön frissen összerakott genomját. Telepítse a programot, ami olyan rendkívül hasznos és nélkülözhetetlen függőségekkel rendelkezik, mint a a4wide LaTeX stílusfájl, ami csak plusz 200Mb egyéb eszközzel válik elérhetővé.

Mélyedjen el a dokumentációban és fedezze fel, hogy bizony az igazán hasznos funkciók eléréséhez további programokra lesz szüksége. Például NetGene2 és NetStart programokra. Mindkét programot csak e-mail útján szerezhetjük be, ahol bizonyítjuk, hogy nem vagyunk gonosz cég, akik profitot akarnak. Sajnos a NetStart bináris, ezért a telepítésével még úgy is érezhetjük magunkat, hogy haladunk és célba fogunk jutni. Szerencsére a NetGene2 nem ringat minket hiú ábrándokba. A forráskódja ugyanis 2001 óta változatlan, esély nincs rá, hogy turkálás nélkül működjön. Nosza, álljunk neki! Keressük meg az összes makrót és függvény definíciót, ami ütközik a szabvány C++ matematikai és sztring könyvtárakkal. Gyomláljuk ki a GCC elavult kapcsolóit a Makefile-ból.

Úgy látom néhányan elégedetten hátradőlnek, hogy készen vannak. Csak ne olyan sietősen! Tesztelték a programot? Nem működik a programhoz mellékelt teszt adatokkal sem? Bingó! Floating point exception? Bingó! Most akkor lehet gondolkodni: A mi gányolásunk rontotta el? Rossz a program? Valami függőség változott az elmúlt 14 évben? Hétfőn beszámoló az eddigi munkáról? Kellemes hétvégét!

De addig is fordítsa le ismét a programot debug módban, gdb-vel keresse meg a hiba helyét és szörnyülködjön el! A hiba ugyanis a szekvencia index kezelő részben van! Miután kijavította a hibát és ellenőrizte, hogy az eredmény ugyan az, mint a webes verzióban, akkor indítsa el az összeszerelt eukarióta genomján is. Lepődjön meg Ön is, amikor megpillantja a program limitációit: maximum 1500 darab 1 millió hosszú szekvencia. Tehát a programmal nemhogy egy eukariótát, de még egy nyamvadt E. coli genomot sem lehet feltérképezni.

Miután végérvényesen zsákutcába jutott, gondolkodjon el azon, hogy ezek az emberek mennyi impakt faktort, kutatási támogatást és idézettséget zsebeltek be, hasonlítsa össze a saját eredményeivel és csuklassa meg a szüleiket. Esetleg nézzen szét a neten, keressen Önmagánál is nagyobb lúzereket és röghögje ki őket.

6 komment

Címkék: bioinformatika

Bioinformatika vs Demoscene

2015.01.04. 23:19 Travis.CG

A munkám és a hobbim látszólag nagyon különböző entitások, de minél többet foglalkozom velük, annál több hasonlóságot fedezek fel közöttük. Erről a nemrég lezajlott Magyar Bioinformatikai Társaság közgyűlése győzött meg végérvényesen. Igaz, a Magyar Demoscene Egyesületnek (a link még nem működik) nem vagyok tagja, de a levelezési listán fenn vagyok és értesülök minden fontosabb dologról. Röviden összefoglalom, miért gondolom olyan hasonlónak a két csoportosulást:

  • Mindkettő számítógépes tevékenység
  • Mindkét tevékenység nagyfokú hozzáértést kíván
  • Mindkét tevékenység nagyon szerteágazó
  • A szerteágazóság miatt nehezen definiálhatóak (gyakorlatilag még a tagok is eltérően vélekednek)
  • Mindkét szervezet tagjai eléggé passzívak
  • A tagok nem, vagy csak kis százaléka fizet tagdíjat
  • A vezetőség nincs tisztába a társaságra vonatkozó jogszabályokkal
  • A vezetőség csak minimálisan foglalkozik a társasággal/egyesülettel (mentségükre legyen mondva, ezt legalább bevallják)
  • A tagok csak kis százaléka látogatja a közgyűléseket
  • A tagok csak kis százaléka van fenn a Facebookon/Twitteren

Röviden ennyi. A legnagyobb baj, hogy én is csak a hiányosságokra tudok rámutatni, megoldást nem tudok. De talán kezdetnek jó lenne, ha befizetném a tagdíjat.

Mentségemre legyen mondva, hogy a számlaszám, amire be lehet fizetni a tagdíjat, a társaság weboldalán van, amire nem lehet regisztrálni. Korábban a befizetések a társaság által szervezett konferencián történtek, de ennek megszervezése idén elmaradt.

Szólj hozzá!

Címkék: filozofálás

Demoscene mindenütt

2014.12.31. 21:00 Travis.CG

Grassal volt találkozóm. Egy szálloda előtt álltam, amikor észrevettem, hogy milyen érdekes objektumok vannak egy busz oldalára festve. Azután a képleteket vettem észre. Sugárkövetés a busz oldalán! 20141227103.jpgEzzel kívánok Boldog Új évet minden scenernek.

Szólj hozzá!

Címkék: demoscene életmód

MinION: Az első éles szekvenálás

2014.12.24. 12:20 Travis.CG

Elérkeztünk a burn-in lépéshez. Ennek során egy ismert szekvenciájú lambda fágot kellett megszekvenálni. Ez még a teszt része és a protokolok begyakorlására is kiválóan alkalmas. Mivel nálunk két készülék is van, elég adatot tudtam gyűjteni az elemzésekhez és alaposan begyakorolhattam, mire is kell klikkelni. Sőt, a pipettázásból is kivettem a részemet.

A könyvtár készítés egyértelmű a leírások alapján. A teljes protokollt felesleges itt részletezni, mert úgyis fantázianeveket tartalmaz (pl. motor fehérje), valamint folyamatosan változik. Volt is ebből félreértés, mert kinyomtatták a protokollt, a neten pedig időközben frissítettek. De még olyan is előfordult, hogy a kereszt hivatkozások eltérő módon frissültek, és megnehezítették a szöveg értelmezését. Ellenben felvettem mindent, a videó megtekinthető itt. Ez nem az a marketing szagú anyag, ahol előre beállított pipettákkal egy steril (vagyis használaton kívüli) laborban egy jól fésült ember végzi a lépéseket. Ez kérem a valóság: Kupleráj, szervezetlenség és hibák:

A második rész:

A minta felvétele után 6 órán keresztül ment a kis gép. A belső fórumon panaszkodtak, hogy a szekvenáló képes túlmelegedni, ezért a légkondícionálót is bekapcsoltam, amitől a hőmérséklet stabilan 37 fok volt. Mivel számítógép vásárlási igényeinket rendre visszadobják, ismét saját hardverrel támogattam a magyar kutatást. A szekvenálást is megtekintheti mindenki:

Ezzel el is érkeztünk a szekvenciákhoz. A fast5 fájlok feldolgozásához immár Loman csoportja eszközt is ad poretools néven (és sikerült megakadályozniuk, hogy az általam fejlesztett Fast5 Studio legyen az első). A cucc jó, a samtools hagyományait követi, de a gyors fejlesztésnek hála annyi hülye függősége van, hogy Ubuntun kívül nem bírtam másra feltelepiteni. (Pontosabban az első olvasás után elment a kedvem a próbálkozástól) A fast5 fájlokban 1 és 3 közötti szekvencia található a leolvasás minőségétől függően. A 2D leolvasás során ugyanis a két szálú DNS-t széttekeri és külön leolvassa az egyik szálat (template), majd a másikat (complement), végül generál egy konszenzust is (twodirections). Különböző, a szekvenálások során fellépő hibáktól függően egyik-másik szekvencia hiányozhat.

A readek hossza Poisson-eloszlást követ, nálunk a várható érték mindkét szekvenálás esetén 3000 nukleotid volt, a leghosszabb pedig elérte a 78 ezer hosszúságot. A readek száma függ az úgynevezett pólus számtól. Ez gyakorlatilag azt mondja meg, hány szekvenálás történhet párhuzamosan. A flowcell elméletileg 512 pólussal érkezik, a gyakorlatban az első szekvenálás esetben 267, a másodikban 400 pólus volt aktív. Mondanom sem kell, a négyszáz pólusos sikerült jobban.

Elméletileg a flowcell egy lemosást követően újra használható, de a nálunk járt példányok esetén a pólus szám harmadolódott és ezzel a hatákonyság is. Több módszert is kipróbáltunk, de a pólusok működés képtelenné váltak. (Időközben a fórumon egyesek a pólusok megmentésére tettek próbálkozásokat).

A readek nagyon sok hibát tartalmaznak. Átlagosan minden 3-4 nukleotid hibás, és vannak indelek is. Ami viszont érdekes, hogy a szekvencia hosszával a hibák száma nem korrelál. Kapunk itt is megbízhatósági pontszámot (quality score) minden egyes nukleotidra, de a gyakorlat azt mutatja, hogy nem jelent semmit. A hibák előfordulási aránya nem mutat összefüggést ezzel a pontszámmal. Egy illesztést itt láthatunk:

omim1.png

Illesztésre a Last-ot szoktuk használni, erősen megengedő módban. A hosszú szekvenciáknak köszönhetően ez mégsem probléma. Fórumon többen is összehasonlították az elérhető illesztőprogramokat, készítettek egyedi mátrixot is, hogy növelhessék a hatékonyságot, de eddig a Last tartja magát. (Azóta Ivan Sovic fejlesztett egy saját gráf alapú illesztő programot, de még nem teszteltem)

A hibákat elemezve találunk homopolimer hibát, ami nem meglepő, tekintve, hogy a DNS áthúzása a póluson valószínűleg nem konstans és a pólus konformáció változása is nehezen érzékelhető azonos nukleotidok esetén. 

De-novo összeszerelés eddig kivitelezhetetlen. Illuminával történő hibrid assembly viszont ígéretesnek tűnik a SPAdes program használatával, ha a minion readeket PacBio-ként adjuk be. Erről már cikket is adtak ki.

Szólj hozzá!

Címkék: bioinformatika nanopore

Karácsonyi üdvözlet

2014.12.24. 11:47 Travis.CG

Rokonoknál találtam ezt a kazettát. Ami miatt érdekes, hogy a felirat tanúsága szerint Atari 1040 ST-vel készült. Az már csak plusz ráadás, hogy Karácsonyi ének a címe. Ezzek kívánok Kellemes Ünnepeket olvasóimnak.atari.jpg

 

Szólj hozzá!

Ha túl sok a cikk

2014.12.08. 00:32 Travis.CG

A tudományos publikációk tárolása és az ott található információk visszakeresése alapvető fontosságú igény minden kutatónak. Selye egy egész fejezetet szentel katalógus rendszerének bemutatására. Manapság a PDF és az elektronikus kütyük világában mindez nevetségesnek tűnhet, de a probléma manapság is jelen van.

Számtalan online megoldás létezik: Mendeley, PubMed, ScienceDirect, stb. Ez teljesen jó a formális csatornákon keresztül megszerezhető cikkeknél. A cikkek egy részéhez viszont informális módon jutunk hozzá: például bírálat formájában. Jó lenne úgy keresni ezekben a cikkekben is, hogy ne kelljen kiadni a fájlokat a kezünk közül.

Eddig egy meglehetősen primitív, de éppen ezért nagyon hatékony rendszert használtam. A cikket letöltöttem PDF-ben, a fájlt a PMID számmal neveztem el, majd a PubMedről letöltöttem szövegként az absztraktot és PMID + txt névvel láttam el. Ha kíváncsi voltam valamire, grep-el megkerestem az absztaktot, majd elolvastam a hozzá tartozó PDF-et.

A rendszer alapvetően működött, de nem tudtam keresni a cikk szövegében, a grep nem kedveli az elírásokat (már pedig ha nem emlékszem pontosan egy kifejezésre, akkor rosszul keresek rá), az informális cikkeket továbbra sem találom. Végezetül meg kell említeni, hogy nem minden absztrakt található meg a PubMedben.

Az egyik megoldás a Lucene és a PDFBox. A Lucene egy szöveg indexelő és kereső rendszer. Java alapú API-val rendelkezik. A PDFBox, mint neve is mutatja egy PDF kezelő könyvtár. A két API-t a leírások alapján könnyű integrálni. De ha minden szép és jó lenne, akkor ez a poszt nem született volna meg...

Jelen poszt a Lucene 4.9.0 és a PDFBox 1.8.6 verziókat mutatja be. Mavennel a fordítás nem okoz gondot, de amint együtt akarjuk használni a kettőt, már problémákba ütközünk. Legalábbis a dokumentációban bemutatott kód nem működött. A PDFBox egységtesztjében egy régi Lucene verzió volt, amihez már Java API sincs a neten.

PDFBox

A PDFBox feladata csak annyi, hogy a PDF állományt beolvassa és kibányássza a szöveget. Ezt négy sorból meg lehet csinálni:

PDDocument pdf = PDDocument.load(f);
PDFTextStripper totext = new PDFTextStripper();
String fulltext = totext.getText(pdf);
pdf.close();

Lucene

A Lucene használata viszonylag egyszerű. Létre kell hozni egy indexet, bele kell tölteni a dokumentumokat, majd keresni kell az indexek között. Az index létrehozása sem bonyolult:

Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9);
IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_4_9, analyzer);
conf.setOpenMode(IndexWriterConfig.OpenMode.CREATE_OR_APPEND);
IndexWriter index = new IndexWriter("/tmp/luceneindex", conf);

Ahol az igazi móka kezdődik, az a szöveg beillesztése. Ugyanis, akár csak egy adatbázis esetén, itt is lehetőségünk van a szöveget mezőkbe szétosztani. Például létrehozhatunk egy mezőt az absztaktnak, az eredményeknek, stb. Ezzel a későbbi kereséseket tudjuk finomhangolni. Tegyük fel, hogy a fulltext változót felbontottuk fejezetekre és most ezekből készítünk egy dokumentumot, majd adjuk hozzá az indexhez:

Document doc = new Document();
doc.add(new StringField("url", url, Field.Store.YES));
doc.add(new TextField("abstract", abstract, Field.Store.YES));
doc.add(new TextField("methods", methods, Field.Store.YES));
doc.add(new TextField("references", ref, Field.Store.YES));

index.addDocument(doc);

A visszakeresés már gyerekjáték. A példa megkeresi azokat a dokumentumokat, amelyek tartalmazzák a "bioinformatic" és "database" szavakat az absztraktjukban:

dir = FSDirectory.open(new File("/tmp/luceneindex"));
dirread = DirectoryReader.open(dir);
index = new IndexSearcher(dirread);
analyzer = new StandardAnalyzer(Version.LUCENE_4_9);
QueryParser parser = new QueryParser(Version.LUCENE_4_9, "abstract", analyzer);
Query q = parser.parse("bioinformatic AND database");
ScoreDoc[] hits = index.search(q, 1000).scoreDocs;
for(int i = 0; i < hits.length; i++){
  Document pdf = index.doc(hits[i].doc);
  System.out.println(pdf.get("url"));
}
dir.close();
dirread.close();

A Lucene természetesen ennél többet is tud. Lehetőség van a keresett szóhoz hasonló szavak keresésére, a találatokat rendezhetjük, több keresés eredményét összevonhatjuk. Akit elrettent a sok kód, azoknak a Solr jelenthet segítséget.

Szólj hozzá!

Címkék: java programozás

Bioinformatika az agykutatásban

2014.12.04. 22:23 Travis.CG

Simándi Zoltán, Nagy László: In vitro neuron, in silico PRMT8, in vivo glioma

Ebben a bevezető jellegű előadásban azt boncolgatták, a megtermékenyített petesejt hogyan differenciálódik idegsejtekké. Az RNA-seq vizsgálatokkal találtak egy PRMT8 gént, ami a központi idegrendszerben fejeződik ki. Kiütötték a gént, aminek hatására a sejtek továbbra is képesek voltak idegsejtté differenciálódni, de a sejt expressziós mintázata megváltozott. A génhálózati vizsgálatok kimutatták, hogy a PRMT8 a sejt elektrofiziológiás állapotáért felelős géneket, az asztrocita útvonalban részt vevő és neurodegeneratív betegségben szerepet játszó géneket szabályoz.

Réthelyi János: Bioinformatikai módszerek a skizofrénia-kutatásban: RNS- szekvenálás és konnektomika

A skizofrénia tünetei: Halucináció, téveszmék, érzelmi elsivárosodás, anhedónia, kognitív zavar. Periodikus lefolyású, de a tünetek minden periódus végén súlyosbodnak. Jelenleg a dopaminerg receptorok szelektív gátlásával gyógyítják, de kezelés sikeressége egyénenként változik. A betegség öröklődik, valószínűleg poligénes, komplex gén-gén és gén-környezet interakciókat figyeltek meg. A GWAS vizsgálatok érdekessége, hogy a variációk nagy része az MHC I régióba esik. A skizofrén egyén genomjában nagyobb arányban fordulnak elő mikrodeléciók és mikroduplikációk. Találtak de-novo mutációkat is kromtain átrendező faktorokban, szinaptikus funkciók génjeiben. A helyzetet tovább bonyolítja a neuronok eltérő genetikai állománya, a mozaicizmus is. A retrotranszpozon aktivitás is erősebb a betegek körében. Létrehoztak egy adatbázist is Schizobank néven, ahol a páciensek exom szekvenálásait teszik hozzáférhetővé.

Az előadás második részében IPS őssejtek segítségével in vitro agyi folyamatok modellezését mutatta be az előadó. A kísérletek korai stádiumban vannak, jelenleg egy úgynevezett pszeudo-neuron differenciációig jutottak, amely már képes akciós potenciált kiváltani, de a valódi neuron teljes funkcionalitását még nem éri el.

Pulay Attila: Multimarker vizsgálómódszerek a pszichiátriai genetikában

Az előadás bemutatta a neurológiai betegségek genetikai azonosításának problémáit. Az első nehézség a helyes diagnózis megállapítása. Sok tünetet csak a páciens visszaemlékezéseiből lehet megállapítani. A szakemberek dolgát tovább nehezíti, hogy sok pszichiátriai kórkép mutat hasonló tüneteket. Történtek próbálkozások objektív diagnosztikai  bélyegek azonosítására (ezekre az endofenotípus névvel hívatkoztak), de ezek értelme a betegség függvényében kevésbé meghatározott. Az állatmodellek korlátozottan használhatóak. A genetikai háttér azonosítását nehezíti, hogy sok páciens viselkedésével a hajlamosító környezetet is "átörökíti". Négy kutatási irányt vázoltak fel: A nyers erő módszerét, amikor a minta elemszám növelésével akarnak gyenge asszociációt találni. A ritka variánsok keresése a második, míg a környezeti faktorok integrálása a harmadik módszer. Végezetül az adatbányászati eljárások alkalmazása a manapság legdivatosabb irány. A vizsgálatokhoz a következő programok használhatóak: GSEA, sigPathway, KGG, David, NetGSA, Pathway Express.

Grolmusz Vince: Gráfelmélet és az agy

Az előadás egy magyar konnektóm adatbázisról szólt, ami az agy egy olyan gráfelméleti leképezése, ahol a csúcsok a neuronokat, az élek pedig a szinapszisokat reprezentálják. Mivel jelenlegi ismereteink nem teszik lehetővé, hogy akár a Drosophila konnektómot modellezzünk, ezért úgynevezett ROI-kat használnak, ami neuronok egy csoportját jelöli. Hogy pontosan milyen csoportokat is takar, azt leginkább egy, az előadó szájából elhangzó mondat szemlélteti: "Azért szeretem [a ROI-kat], mert meg sem próbálja érzékeltetni, hogy itt anatómiai egység van".

A magyar konnektóm adatbázis itt érhető el. Az adatbázis segítségével rengeteg összehasonlításra nyílik lehetőség. Az előadás felvázolta, milyen különbségek lehetnek az idős és fiatal agy között, valamint a férfiak és nők között. Eredményeik többek között, hogy a nők agya jobb expander, mint a férfiaké, valamint kromatikus számszerűség kisebb idősebbek és nők esetében.

Tóth Brigitta: Agyi funkcionális kapcsolatok vizsgálta gráf elméleti elemzéssel

Itt a kutatók a EEG-vel meghatározták az agy funkcionális területeit. Akkor tekintettek funkcionális egységnek két területet, ha neurális aktivitás hasonló oszcillációt mutat. Az így detektált területeket gráfelméleti módszerekkel vizsgálták. Eredményeik egy része újszülöttek vizsgálatából ered. Összefüggést találtak a terhesség hossza és az idegrendszer centralizáltsága között. Idős emberek vizsgálata esetén azt figyelték meg, hogy a théta és alfa generátorok a kor előrehaladtával gyengülnek és alhálózatokra esnek szét. Patológiás esetekben az egészséges, szegregált hálózat centralizált lesz és az alhálózatok közötti kapcsolatok mértéke jelentősen csökken. Pusztán gráf elméleti elemzéssel képesek klasszifikálni a patológiás eseteket.

Gulyás Attila: Sokcsatornás agyi adatok elemzésének kérdései és problémái

Az előző előadásokkal szemben itt a kis struktúráktól haladtak a nagyobb szerveződési egységek felé, nevezetesen a jelátvitelben szerepet játszó fehérjék működésén keresztül akarják megérteni az agyi folyamatokat. Arra kíváncsiak, hogy a mikro szinten ható mintázatok hogyan alakítják ki a makro szintet. Itt is lehet gráfelméleti megközelítést használni, de itt más típusú gráfokra van szükség. Itt ugyanis a serkentő és gátló sejtek kölcsönhatásait kell elemezni. A serkentő sejtek hosszú távú kapcsolatot adnak, ezek alakítják a memóriát. A gátló sejtek pedig a modulációt biztosítják. Arra is kíváncsiak, hogy a serkentés/gátlás hogyan biztosít dinamikát, valamint ez a dinamika miként változik az időben. A másik fontos kérdés, hogy miként viselkednek perturbáció hatására?

Káli Szabolcs: Agykérgi idegsejt-hálózatok működésének matematikai modellezése: eredmények és kihívások

Az agyról keveset tudunk, mert egy sokváltozós rendszer, sok heterogén elemmel, melyek jellemzői állapotfüggőek. Ebből következően általános megoldás nincs. A lentről fel modellek nem használhatóak, mert nem lehet az összes paramétert felmérni és a megértést sem segítik elő. (Miről is beszélt Gulyás Attila?). Kénytelenek egyszerűsítéseket bevezetni, ha le akarják írni a folyamatokat. Az egyik ilyen egyszerűsítés, hogy a szinapszis jelfeldolgozó szerepét elhanyagolják. Csak kevés sejt típussal dolgoznak, egyszerűsített kapcsolatot feltételezve. A modellekből hiányzik az idő, mint paraméter. A végső cél természetesen, hogy minél realisztikusabb modellt állítsanak fel.

Szólj hozzá!

Címkék: bioinformatika

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