HTML

Az élet kódjai

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

Friss topikok

  • Kalle: @Travis.CG: Igazság szerint bioinformatikában nem is nagyon tudnék érvet mondani, hogy miért kéne ... (2019.06.28. 23:45) CentOS, nagyoknak
  • sdani: @Travis.CG: Nohát, nem is tudtam, hogy ilyen van... bár ahogy elnézem ezek a komponensek fizetősek... (2018.11.01. 10:14) Rossz beidegződések a bionformatikában
  • Csenge Tarnói: Ez érdekes. Most csinálok egy meta-analízist, életemben először, úgyhogy az én tudásom is felszíne... (2018.10.01. 21:39) Ez már nekem sok
  • robertherczeg: Nekem a kedvenc az volt, hogy: "Inkább eleve Mann-Whitney és/vagy Wilcoxon tesztet használjunk, m... (2018.09.04. 07:47) Ezért utálom a Wilcoxon-tesztet
  • Travis.CG: ÉÉÉÉÉs megjelent! (2018.08.24. 23:31) Nehéz szülés 2

Adat feldolgozás a gyökerekig hatolva

2019.02.18. 22:30 Travis.CG

Az adatok feldolgozásához rengeteg szoftver-környezet áll rendelkezésünkre. Ott van a veterránnak számító Matlab/Octave, újabban a számtalan kernellel futtatható Jupyter, a konzervatívabb beállítottságúaknak az RStudio., extravagánsaknak Julia. Sőt, állítólag van egy excel nevű is, de azt valami horror filmben mutatták, nagyon meg is ijedtem tőle.

Mégis van a kutatóknak egy olyan rétege, akik nem ezeket használják. A Cernben a részecskegyorsítók adatait nem a fenti megoldásokkal kezelik. Nekik olyan feldolgozási gyorsaságra van szükségük, amit a szkriptnyelvek nem biztosítanak, ezért megalkották a Root-ot. Persze azt sem szabad elfelejteni, hogy a rendszert 1995-ben kezdték fejleszteni, amikor a Python még pelenkát viselt, az R pedig éppen kibújt a tojásból.

Rendkívül furcsának tűnhet, hogy egy olyan világban, ahol az értelmezett nyelvek virágkorukat élik, valaki C++-t használ adatfeldolgozásra, de ha túl vagyunk az első sokkon, és csak alap funkciókra szorítkozunk, akkor a nyelv használata a meghívott osztályokon túl nem tér el jelentősen a Python osztályok használatától. 

Az adat ábrázolási módszerek igen bőségesek, bár érezhető, hogy ki az elsődleges célközönség, ezért felülreprezentáltak a jelfeldolgozó függvények. De rengeteg magas szintű osztály segít abban, hogy saját vizualizációs eljárást implementáljunk, akár OpenGL segítségével is. Itt látszik igazán, hogy a C++ nem is olyan rossz választás. Hiszen, ha az R vagy Python képességeit akarjuk kiterjeszteni, mert az adott területre még nem létezik modul, akkor kénytelenek vagyunk egy másik programozási nyelvet választani. A Root-nál nem. Itt elég, ha csak a C++-t ismerjük. Amit használunk, azzal bővítjük a rendszer képességeit is.

De amin a leginkább meglepődtem, hogy a Root saját GUI fejlesztővel van felszerelve! Igen, jól olvastátok! Aki használt már Visual Basic-et, ahhoz hasonló módon tud felhasználói felületet készíteni. Kereszt platformosan! A QT meg a millió liszensz lehetőségével elmehet a...

Természetesen a Root is halad a korral. Számtalan kapcsolódási lehetősége van más keretrendszerekhez, úgy, mint Python, R, Jupyter, Spark, Ruby.

A fizikusoknak nyilván gazdag numerikus kelléktárat is biztosítani kell, hogy képesek legyenek modelleket alkotni, valamint eszközöket nyújtani a szimulációs adatok generálásához is. Ez utóbbihoz Monte Carlo szimulációs osztályok állnak a kutatók rendelkezésére.

A telepítése rendkívül egyszerű. Először kicsomagoljuk a letöltött állományt, majd létrehozunk egy könyvtárat a binárisoknak. Ezután kiadjuk a könyvtárból a következő parancsot:

cmake path_to_src
make
make install

A konfigurálás alatt rengeteg opciót adhatunk meg. Ha például szeretnénk R-ből használni a Root-ot, akkor a -Dr=on opcióval bekapcsolhatjuk azt (ebben az esetben az Rcpp és az RInside csomagoknak a gépen kell lenniük.) Én három különböző gépre telepítettem (ezek körül az egyik egy HPC környezet volt, fordító nélkül) és minimális problémába ütköztem. Azok is a függőségek hiányából fakadtak. A fordítási idő elég hosszú, több órát is igénybe vehet.

Nézzünk egy példát a rendszer használatára. Rajzoljunk egy denzitás függvényt:

TF1 myfunc("test", "1/sqrt(2*TMath::Pi())*exp(-0.5*x**2)",-3,3);
myfunc.Draw();

A fenti példában a TF1 osztályt használjuk, amivel egy dimenziós függvényeket ábrázolhatunk. A függvényt magát a második paraméterben adjuk meg, majd a tartományt, ahol ábrázolni akarjuk. A második sor maga a rajzolás. Eredményül egy interaktív plotot kapunk, amit tetszés szerint átszabhatunk. Csak nézzük meg az Edit -> Style menüpontot. Akár saját stílust is definiálhatunk. De akár a képet is elmenthetjük klikkelve, vagy módosíthatjuk, ha bekapcsoljuk a Toolbart. Szövegeket és nyilakat helyezhetünk el az ábrán, mintha csak rajzolnánk. R-ben ezt csak parancsokkal lehet megtenni, ami nem mindig öröm. Természetesen erre itt is lehetőség van.

Azért azt sem szabad elfelejteni, hogy a rendszer nem tökéletes. Fórumokon sokan kritizálják, hogy kevés ember fejleszti, kicsi a felhaszálói bázis, ezért egyes hibák sokáig rejtve maradhatnak. Nincs elég oktatói anyag, a C++ kódot értelmező Cint borzalmas memória kezeléssel van megáldva.

Például én is tapasztaltam, hogy az R-ben alkalmazott módszert, hogy a history-ból előhívjuk a korábban begépelt parancsot és lefuttatjuk újra, nem működik. A rendszer kiabál miatta.

De aki nem riad meg a C++-tól és szeretné adatait hatékonyan feldolgozni, esetleg szeretne modellezni, nyugodtan adjon neki egy esélyt.

Szólj hozzá!

Címkék: statisztika opengl

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr3814630506

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.