HTML

Az élet kódjai

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

Friss topikok

  • 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
  • Travis.CG: Szóval az akadémiai szféra mazochistává tett, amit a Pinephone-al élek ki? Hmm, érdekes összefüggé... (2023.10.05. 18:23) Új barátom az Informatikai titkárságról
  • Travis.CG: Túl nagy a hype körülötte, ezért túlzó elvárások vannak vele szembe. Ha a korábbi chatbotokhoz kép... (2023.02.28. 06:28) chatGPT, a bioinformatikus

Bioinformatika konferencia 2022

2022.11.21. 12:23 Travis.CG

Eljött az első bioinformatikai konferencia is, amit élőben tartottak meg. Egy régi ismerőssel azon viccelődtünk, hogy annak idején a konferenciákon az ember kapott egy kis tatyót füzettel, tollal. Most meg láttam embereket, akik a délutáni szekció első szünetében reménykedve rázták meg az üdítős dobozokat, hátha van még benne innivaló. De aki ide jön, az a tudományra szomjazik, nem a baracklére.

Az idei konferencia is megtalálható YouTube-on, ezért csak röviden írok mindegyik előadásról. Egy-két személyes gondolatot hozzátéve.

Öregedési folyamatok molekuláris mechanizmusainak elemzése értelmezhető gépi tanulással

Mert eddig értelmezhetetlen gépi tanulást használtak :-) Az öregedési folyamatok hátterét sokan kutatták már, és bizonyítottan epigenetikai jellemzői is vannak. Neurális hálót használtak, aminek a rejtett rétege a Reactome-nak feleltethető meg. Az itt található súlyokat nem változtatták a tanítás során. A Reactome miatt lehet tudni, melyik anyagcsere út aktiválódik.

A lineáris SVM-ek néhány szép alkalmazása gráfok és sorozatok elemzésében

Agygráfokra használtak lineáris SVM-t. A férfiak és nők agygráfjait hasonlították össze. Mivel lineáris az elválasztás, az elválasztó vonaltól távol eső agygráfok nagyon fontosak nemek között. Ezek jellemzően hormon receptorok.

Lesz-e az E. coliból szuperbaktérium?

A virulencia faktoroktól veszélyesebb lesz a vírus, míg a rezisztencia génektől nehezebb védekezni ellene. Kérdés, hogy örökölhet-e az E. coli mindkét géncsaládból úgy, hogy egy olyan törzs alakuljon ki, amitől mindannyian megdöglünk. Ezért 21 ezer genomot letöltöttek, törzsfákat építettek. Statisztikai tesztet is csináltak, ami csak egy régi Mac-es program formájában létezett. Az eredmények alapján a virulens törzsek inkább virulencia faktorokat gyűjtöttek, míg a rezisztensek inkább rezisztens géneket. Az eredmények alapján nem lesz szuperbaci.

Egy rács-alapú, malignus sejtek szimulációjára fejlesztett ágens alapú szoftver bemutatása

Több sejt szimulációs alkalmazás is létezik, de egyik sem tökéletes, ezért újabbat fejlesztettek, aminek majd webes felülete is lesz. Példákat láttunk a használatára. Bár a program egyszerűbb modell alapján dolgozik, eredményei pontosságban megegyezik a többivel.

Az autofágia indukciójában kulcsfontosságú mTORC1-ULK1-PP2A szabályozási háromszög működésének rendszerbiológiai vizsgálata

Az mTOR C1 AMPK szabályozási háromszöget vizsgálták rendszerbiológiai megközelítéssel. Differenciál egyenleteket alkottak, a paramétereket kísérletesen állították be. Tudták vizsgálni a szabályozás dinamikáját.

SARS-Cov-2 PCR primerek célrégióiban megjelenő mutációk vizsgálata

Mennyire pontos a PCR, ha a vírus genomja folyamatosan változik? A vizsgálat során 53 primer készletet vizsgáltak. A legtöbb PCR esetén 2-3% a tévedés aránya, csupán négy olyan primer volt, ahol a gond lehet a detektálás hatékonyságával.

A SARS-CoV-2 potenciális új variációi által okozott betegség lefolyás előrejelzése gépi tanulás segítségével mutációs adatok alapján

A mutációból a betegség lefolyására következtetnek. A programnak két módja van, vagy egy szekvenciát kell feltölteni, amiből többszörös illesztéssel meghatározzák a mutációkat, majd prediktálnak egy kimenetet, vagy közvetlenül a mutációkat lehet felvinni. Személy szerint nehezen értelmezhetőnek tartom, mit is takar a betegség lefolyása, ha nincs bemenet a páciensről. covidoutcome.bio-ml.com

A HLA-I és HLA-II variánsok közötti kölcsönhatás befolyásolja a tumorellenes immunválasz erősségét és időzítését melanómás betegeknél

A tumor immunterápia függ a páciens HLA típusától. A HLA-II típusok immunterápiára gyakorolt hatását nem vizsgálták. A vizsgálat során találtak olyan HLA I és II típusokat, amelyek megléte nagyban befolyásolja az immunterápia sikerét.

A TNMPlot bővítése: új analízisek lefuttatási lehetőségei és új grafikus megjelenítési formák bemutatása

A weboldal a tumor-normál és metasztatikus szövetek génexpresszióját hasonlítja össze. Most már több gént is tud egyszerre nézni és gén szignatúrákat is vizsgálhatunk.

Venezuelai ló-láz encephalitis vírus proteáz öninaktivált konformerének vizsgálata molekuladinamikai szimulációkkal

Embert és állatot is megfertőz. Van egy natív és egy inaktív konformációja, amit molekuladinamikai modellezéssel vizsgáltak. Megtalálták miért más a kettő.

Vitális funkciók paraméterezése aktivitásmerő okoskarkötőkkel

Emerekre okoskarkötőt adtak, mértek egy csomó adatot, lépcsőztették őket, majd megmérték ugyan azokat a paramétereket. Az adatokat összegyűjtötték, majd az előadó felsorolta egy gépi tanulás könyv tartalomjegyzékét, hogy majd azokat akarják elvégezni.

A protein-arginin-metil-transzferáz-5 enzim foszforilációjának szerkezeti hatásai a H4 hisztonhoz való kötődésére

Felépítettek egy PRMT5-MEP50 + Hiszton H4 komplexet natív és foszforilált formában, és ezt molekuladinamikával vizsgálták.

GPCRdb, a G protein-kapcsolt receptorok információs adatbázisa

Az adatbázis már '93 óta létezik, folyamatosan fejlesztik. Most AlphaFold-al legeneráltak térszerkezeteket és azokat is belerakták. Ezen kívül egy ligand adatbázist is létrehoztak.

TmAlphaFold adatbázis: AlphaFold2 segítségével becsült transzmembrán fehérje szerkezetek membrán lokalizációja és értékelése

A folding kicsit más membrán fehérjéknél. Meghatározták hol lehet a membrán síkja, mi lehet a transzmembrán domain. Az eredményeiket egy adatbázisba gyűjtötték.

Membránfehérjék szerkezete az AlphaFold AI után

Az AlphaFold jól működik membránokra is, de az AlphaFold-multimer nem olyan jó. Az ABC transzportereken, mint példán keresztül bemutatták, hogy azért a kísérletes szerkezet meghatározást még használni kell.

Fehérjék kötőhelyeinek fragmens alapú azonosítása

A fragmensek kis 10-16 atomos poláros kis molekulák. Bármilyen fehérjén meg tudják keresni a kis molekula kötőhely helyét. Ez azért jó, mert ezzel a módszerrel bonyolult fehérjék kötődési mintázatát tudják vizsgálni.

Az immuneterápia hatékonyságának előrejelzése

A ROC görbe rajzoló alkalmazás megtalált egy cikkben leközölt gént, ami fontos az immunterápiában. Az előadó ezért úgy gondolja, hogy a többi gén, amit megtalált a program, az is biztos jó lehet az immunterápiában. A fals pozitív találatok fel sem merültek senkiben, még a felvetített kérdéses hatékonyságú AUC görbék láttán sem.

Szólj hozzá!

Címkék: bioinformatika

Ritka betegségek noire

2022.11.09. 13:56 Travis.CG

Még esett az eső, mikor megérkeztem az irodába. A nyomozó hellyel kínált, töltött egy whiskeyt először magának, aztán nekem. Ő maga rá is gyújtott. A füstfelhő mögül hosszan fürkészett, majd rám mordult.

- Meséljen az ügyről.

Igen, az ügy. Mintha csak tegnap lett volna. Magánnyomozóként rendszeresen kellett ügyeket megoldanom, és az évek múlásával egyre tapasztaltabb lettem. Differenciál expresszió? Rutin. Blastolás? Pizsamában is.

- Az egész úgy kezdődött - fogtam bele mondandómba - hogy megjelent Ő.

A nyomozó röfögés szerű nevetést hallatott.

- Kitalálom. A vonzó és intelligens PhD hallgató, akinek nem lehet nemet mondani.

Pókerarccal néztem a szemébe. Megvártam, míg kiélvezi pillanatnyi diadalát,

- Majdnem. Egy ötvenes, mocskos szájú csoportvezető. Klinikai mintákat voltak nála.

A nyomozó elkomorult. Egy hajtásra kiitta italát és újabbat töltött.

- Úgy érti emberi adatokkal kellett dolgozni?

Bólintottam.

- Nem volt magának túl nagy falat? A klinikai diagnosztika nem játék.

Ez igaz. A klinikai diagnosztika nem játék. A korábbi munkáknál nem volt baj, ha elvétettem a mutációkat. Alapkutatás, beleférnek az ilyenek. Ha valamit elszúrok, legfeljebb visszavonják a cikket. Vagy nem foglalkoznak vele. Ilyet is láttam már. De a diagnosztikában nincs helye a tévedéseknek. Ez teljesen új élmény volt nekem. Hogyan is mondhatnám el ennek a nyomozónak, mennyire más volt kórtörténetet olvasni. Mikor a sorokat böngészve azon gondolkodtam, mit érezhet az anonimizált kód rejtekében élő emberek.

Még most is emlékszem, mikor az egyik leírásban azt olvastam, hogy a házaspár első gyermeke váratlanul meghalt egy ritka genetikai rendellenességben. Született egy másik gyermekük, aki egészséges volt, majd egy harmadik, aki az elején még egészségesnek tűnt, de idővel az első gyerek tüneteit kezdte mutatni. Nem tudtam a nevüket, nem tudtam a címüket. Mégis tudtam a legnagyobb félelmükről.

- Megbírkóztam vele. Egy csapat tagja voltam. Az eredményeimet többen is ellenőrizték.

- Maga pedig csak ült a számítógépe előtt, és próbált elbújni az azonosítók mögé, hogy ne viselje meg a páciensek szenvedése.

- Ismét téved. Folyamatosan tudatosítottam magamban, hogy valódi emberekkel van dolgom, még akkor is, ha csak azonosítókat látok. Nem akartam, hogy rutinná váljon a munka. Szerencsére a ritka betegség kutatás elég változatos, hogy ne váljon megszokottá. Igaz, csak mutációkat kell keresni, de a körülmények mindig mások.

- Gondolom, akkor ez az ügy is más volt, mint a korábbiak.

- Igen. Mivel ritka betegségekről van szó, soha nem lehetünk biztosak, hogy jó mutációt találtunk-e meg. Korábban, a rákkutatásnál, ha volt egy tippünk, elég volt pár egérben célzottan elrontani a kérdéses genomi pozíciót, és megtudtuk, hogy igazunk volt-e. Diagnosztikában nincs megerősítő kísérlet. Most viszont biztosak voltak a klinikusok, hogy a megtalált mutációk egyike sem lehet felelős a betegségért.

- Miből voltak olyan biztosak?

- Nem tudom, de nekik több információjuk van. Tudnak szöveti vizsgálatokat csinálni, FISH-t, stb.

- Mi történt ezután?

- A konzultációk közötti idők megnövekedtek. Tudtam, mit jelent ez: meg fog szakadni a munkakapcsolat.

- És megszakadt?

- Tudja, ez nem úgy szokott történni, hogy mindenki összegyűlik, elmondja a gondolatait és a végén felállunk egyértelmű válaszokkal, hanem egyszer csak nem jön több elemezni való minta. Ha kérdezünk valamit, halogatás a válasz. Itt is ez történt. Aztán egyszer csak jelentkezik egy másik bioinformatikus, hogy nem érti a jegyzőkönyvedet, vagy csak megkérdezi, milyen programot használjon ehhez vagy ahhoz az elemzéshez. Kérdések és válaszok mennek emailen, te pedig a végére rájössz, hogy azt elemzi újra, amit már megcsináltál.

Ismét felharsant a röfögés-szerű nevetés. Elfordítottam a fejem és az ablakon csordogáló esőcseppeket néztem.

- Gondolom jó dühös volt.

- Nem. Már többször megtörtént velem. Az ember egy idő után hozzászokik. Nem a munkakapcsolatot sajnáltam, hanem a témát. Ez volt az első alkalom, hogy úgy éreztem, amit csinálok, annak valódi, kézzel fogható haszna van.

- Igen. Az időnket el tudjuk tölteni, de tudunk-e valami hasznosat is csinálni? - felelte merengve. Ez volt az első alkalom, hogy a beszélgetés során némi rokonszenvet éreztem iránta. - De azért született valami publikáció is, nemdebár?

- Született - azzal az asztalára dobtam.

- Akkor meg mit szomorkodik? Minden rendben van. Úgyis csak ez számít, az impakt faktor.

- Ahogy mondja - mordultam rá. Nem fogja megérteni, akár hogy is próbálkozom. Vettem a kabátomat, a kalapomat, majd kiléptem az irodából. Már a folyosón voltam, mikor utánam kiáltott:

- Ki sem hagyták a publikációból, ez azért jelent valamit, nem?

Nem méltattam válaszra. Kiléptem az esőbe. Felhajtottam a galléromat, majd elindultam a kihalt utcán, hátha belebotlok egy újabb ügybe.

Szólj hozzá!

Címkék: publikáció

Galaxy - a bioinformatika jövője akar lenni, de nem az

2022.10.25. 08:03 Travis.CG

Kevés a nagy teljesítményű számítógép? Utálod a rendszeradminisztrációt? Gőzöd sincs, hogyan kell parancssorban dolgozni? Nem tudsz programozni? Bioinformatikát akarsz csinálni? Lehet, azt hiszed, ezek a feltételek kizárják egymást, de tévedsz! Ott a Galaxy! Még telepítened sem kell. Ha van akadémiai email címed, amivel bizonyíthatod, hogy csóró vagy, akkor regisztrálhatsz a usegalaxy.eu-ra. Kapsz 250GB tárhelyet, ami elég a legtöbb munkához. de ahhoz a három génhez, amivel foglalkozol, biztosan.

Az egész a felhőben fut, mégsem kell érte fizetni. Feltöltöd a cuccaidat, lefuttatod az elemzést, majd letöltöd az eredményeket. Mindenki ezt használja. Bármelyik kontinensen is vagy, van egy Galaxy csomópont a közeledben, hogy a számítógépkezelés nyűgét-baját levegye a válladról. Mint a mesében, nem igaz? És az örömöd addig is fog tartani, mint egy mese.

Kezdjük az elején. A kezdeményezés jó, hogy biztosítsunk egységes, határokon átívelő felületet a bioinformatikai munkának. Ez az új belépőket segíti, hiszen ha elakadnak, akkor könnyű a jó irányba navigálni őket. A Galaxy elméletileg erre született. Ott vannak az eszközök, vannak előre összeállított munkafolyamatok.

Sajnos a futó folyamatokról egyetlen visszajelzést sem kapunk. Miután elindítottunk, az fut. Ha megszakad a futás, azt nagyon nehéz nyomon követni. A képernyő jobb oldalán található History bonyolult számozással mutatja csak a részeredményeket, ráadásul egyes lépések rejtettek. Ha pedig bekapcsoljuk a rejtett lépések láthatóvá tételét, akkor a nem-rejtettek tűnnek el, tehát a teljes folyamatsort soha nem fogjuk látni.

Rengeteg tutorial van a Galaxy használatáról, és a munkafolyamatok is részletesen le vannak írva. Ez minden olyan program esetén nagyon fontos, ami széles felhasználói bázisra törekszik. Az egyetlen gond, hogy a munkafolyamatok és a belőlük készült dokumentációk nincsenek szinkronizálva. Én például napokat töltöttem azzal, hogy megpróbáljam kitalálni, egy munkafolyamat eredményei között miért nem találok egy fájlt, amit a dokumentáció szerint meg kellene találnom. Végül rájöttem: a munkafolyamat nem tartalmaz olyan kimenetet.

Aprópó munkafolyamatok. Elméletileg ezek azért vannak, hogy egy tevékenységet egységesített módon kezeljenek, hogy ne kelljen a rengeteg programmal és azok paraméterezésével bíbelődni. De erre képtelenek. Például nekem is javasolták, hogy a Galaxyban futtassam le a VGP munkafolyamatot. Nos, VGP pipeline nem létezik. Helyette van 3 különböző VGP pipeline. Egy, ha van Bionano adatunk, egy, ha nincs bionano adat és van egy scaffoldingra. De egy számomra érthetetlen oknál fogva, ebbe nem integráltak egy nagyon fontos kezdeti lépést, a Genoscope2-t. Enélkül pedig lehetetlen lefuttatni a többit.

Az alapértelmezett paraméterek rosszak. Például mondja el nekem valaki, egy dedikáltan gerinces genom-összeszerelőben, miért egy féreg génkészlete alapján mondja meg, hogy jó-e az összeszerelés? Persze, be lehet állítani akár emlőst is, de miért nem a gerinces az alapértelmezett, ha már gerincesre lett optimalizálva?

Ha elindítottunk egy munkafolyamatot, akkor semmi nem tárolja, hogy milyen paramétereket használtunk. Ez pedig a megismételhetőség egy elég komoly akadálya.

Nem akarom azt mondani, hogy a parancssor a jövő, mert nem igaz. A különböző low-code megoldások, mint amilyen a Snakemake is, nagyon népszerűek, és nyilván a kevesebb gépelés felé mutatnak a trendek. De a Galaxy jelen pillanatban még nem áll azon a szinten, hogy teljesen kiváltsa a csúnya fekete képernyő előtti matatást.

Szólj hozzá!

Címkék: bioinformatika

A nemeskei szörny

2022.10.17. 23:44 Travis.CG

Az a jó abban, ha biológiát tanult az ember, hogy időnként állatokat, növényeket kell meghatározni. De nem úgy, hogy odateszik elém, esetleg lefényképezik. Nem, szájhagyomány útját kell megmondani, milyen állatról van szó. Mivel az érdeklődők másokat is bevonnak a játékba, ezért az ő tippjeiket is megkapom, mintegy támpontnak. Ennek eredményeként hihetetlenül komplex, és teljességgel használhatatlan információkat tudnak rám sózni.

Mai állatunk a nemeskei szörny munkanevet kapta. A leírást egy 82 éves, szemüveges néni adta, aki az éjszaka közepén felébredve találta szembe magát ezen ádáz fenevadak csoportjával.

nemeskeiszorny.jpg

Az állatnak sok lába van, így indított a leírás. Ez alapján a feleségemmel százlábúra vagy ászkarákra tippeltünk. Már úgy éreztük, hogy kezdünk közel jutni a bestiához, amikor megkaptuk a következő infót: ugrik. Ha ugrik, akkor ugró lába van, de én egyetlen állatot sem ismerek, amelyiknek ugró lába van és hatnál több.

Valami zavar volt a Mátrixban. Aztán kiderült, hogy nem holmi közönséges szörnnyel van dolgunk, hanem egy igazi médiasztárral. A bestia ugyanis szerepelt a TV-ben. Legalábbis egy kérdéses szavahihetőségű ember szerint. És természetesen kínából jött, mint az olcsó popit.

Ha ez még nem lenne elég, az egyik beleesett egy vödör vízbe! Bár magamban szurkoltam, hogy tudjon úszni, kiderült nem tud, de azért komoly arccal hozzátették, hogy sokára fulladt meg. Hiába, vigyázni kell ezekkel. Egyeseket még az olvadt ólom sem téríti észhez.

Végül a néninek eszébe jutott, hogy egyet agyoncsapott a szobába, és a tetem még ott lehet. Nem vagyok a mindennapos takarítás híve, de egy kínából jött soklábú, ugró izé esetén biztos kivételt tennék. Ilyen mértékű hanyagság már a Déli-sarkon is okozott némi zűrzavart.

Óvatosan közelítettem meg a helyszínt. A néni félrehúzta a szőnyeget, de a tetem már nem volt ott! Csak az egyik lába. Ez némi reményre adott okot. Nem azért, mert ha vérzik, meg is tudjuk ölni, hanem mert így közelebb jutunk, milyen faj is lehet.

Anélkül, hogy tovább húznám mindenki idegeit, a láb alapján úgy tűnt, házi tücsökről lehet szó.

A csáp és a farkserték egy rosszul megvilágított helyen tűnhetnek további lábaknak. De nem Kínából jött. Gyerekkoromban elég sok jött be a szobámba, elbújt valami szekrény mögé, és onnan ciripelt, hogy ne tudjak aludni. Szóval nem kell félni tőle, nem akar gyereket.

Szólj hozzá!

Címkék: életmód

Rajzolj, te gép!

2022.10.10. 00:01 Travis.CG

Vicces, hogy a tudományos-fantasztikus könyvek nagy többsége az öntudatra ébredt robotokat hideg logikával mutatja be, képtelenek a művészetre és bármilyen kreatív tevékenységre, viszont a végletekig racionálisak. Ennek ellenére a valóságban a tanuló algoritmusok tök hülyék, viszont kreatív alkotásban lepipálnak néhány embert.

A változás szele érezhető. A Function idején egy hirtelen szabálymódosítással meg is tiltották a tanuló algoritmussal generált képek nevezését. A döntés érthető. Relatíve olcsón egész jó minőségű képeket lehet létrehozni. Igazából rengeteget lehet vitatkozni arról, hogy ez most jó-e vagy rossz. Előkerül a ki a művész, mi a művészet kérdés. Ehelyett inkább nézzük meg, mire is képes az algoritmus.

Az egyetlen nyílt forráskódú rajzoló program a stable diffusion névre hallgat. Ezt tudjuk lokálisan is futtatni. Ennek is egy memória optimalizált változatát teszteltem, mert ez lefut a 10 éves számítógépemen (bár a videokari csak 7 éves). Először is installáltam a miniconda-t.

git clone https://github.com/basujindal/stable-diffusion
cd stable-diffusion
conda env create -f environment.yaml
conda activate ldm

Ezután le kell tölteni egy 5GB-os modellt (sd-v1-4.ckpt) a HuggingFace oldaláról. Erre nem tudok közvetlen linket adni, mert regisztrálni kell az oldalra. Át kell nevezni model.ckpt-re és bemásolni a stable-diffusion/models/ldm/stable-diffusion-v1 könyvtárba. Ha a könyvtár nem létezik, létre kell hozni. És ennyi.

Az első szkript, amit futtathatunk, a txt2img.py. Angolul írunk egy kifejezést, mire a program a legjobb tudásához mérten előállít egy képet. Mint az elején írtam, ez egy tök hülye algoritmus, és ezt elég könnyű észrevenni. Először is, teljesen hiányzik belőle a "józan paraszti ész". Tehát láthatunk embereket például három lábbal. Vagy a fej teljesen meg is tekeredhet a törzshöz képest. Bevallom néhány kép a Kör című horrort juttatta eszembe.

Az arc sokszor kivehetetlen. Csak mellékesen jegyzem meg, volt egy barátom, aki imádott rajzolni, de az emberi arc neki sem ment jól. Ezért ha embert rajzolt, az mindig csukját viselt. Az ő szintjére már eljutott ez a program.

Tehát minél részletesebb képet akarunk, annál pontosabban kell megmondanunk, mit is akarunk látni. Nézzünk meg egy alkotási folyamatot.

Nekem van egy demó ötletem, ami úgy kezdődne, hogy egy robot kitöri egy felhőkarcoló ablakát és kiugrik. Ehhez kerestem koncepciónak különböző képeket az interneten, de nagyon nyögve nyelős a folyamat. Viszont sokkal jobb, ha a géppel elkészíttetem. Így sokkal hamarabb eljutok egy olyan képhez, ami már közelebb van ahhoz, amit elképzeltem.

Elsőre a következőt írtam be neki:

humanoid robot jumping through skyscaper's window

seed_35_00008.png

Mint látható, az algoritmus hülye. Ha átugrok egy ablakon, akkor kitörik az üveg. Ez egyáltalán nem evidens a programnak. Ezért módosítottam:

python3 optimizedSD/optimized_txt2img.py --prompt "humanoid robot breaking out the skyscaper's window, jumping out, glass debris everywhere" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 5 --ddim_steps 50

seed_30_00003.png

Ez már egy picit jobb lett. A robot lába még mindig elé béna. Ráadásul a képen úgy tűnik befelé ugrik, nem kifelé.

Azt sem szabad elfelejteni, hogy az algoritmus igencsak függ a tanuló adatoktól. Például mikor egy jövőbeli katonát akartam hatalmas fegyverrel, akkor a fejemben egy brutál Master Chief jelent meg, vagy valami rémálom a Warhammer univerzumból. Ennek ellenére ezt kaptam:

python3 optimizedSD/optimized_txt2img.py --prompt "futuristic soldier with big gun in rural village" --H 512 --W 512 --seed 27 --n_iter 2 --n_samples 5 --ddim_steps 50

seed_153869_00003.png

Az összes elkészített képen vagy feketék vagy koreaiak vannak.

A legkeményebb próbatételnek viszont a lányom kérése bizonyult. Mikor látta, miket művelek, azt kérte, írjam be "pelenka szitál". Két napig próbáltam kiszedni a lányomból, hogy ez mi a túrót jelent, mire képes volt úgy lefordítani, hogy legalább én megértsem.

"Apa, ez azt jelenti, hogy a pelenkának van szeme meg szája és tart egy szitát." Továbbra sem értem, mit is akar ez jelenteni, és pontosabb részleteket is nehéz tőle kérni, mert elkezd röhögni ezen a hülyeségen és utána képtelenség a további kommunikáció. Azért a tőlem telhető legjobbat megpróbáltam kihozni:

python optimizedSD/optimized_txt2img.py --prompt "happy diaper with eyes and mouth and nose holds a sieve" --n_iter 2 --n_samples 6

seed_170694_00010.png

A többi képet inkább nem teszem be, mert a Humángenetika című egyetemi jegyzetemben a születéskori rendellenességek képei kutya fülék ahhoz képest, amit a program kiadott magából.

Egy kép többet ér ezer szónál, és ez a stable diffusion esetén is igaz. Ugyanis ha nem vagyunk elégedettek a képpel, amit kapunk, adhatunk neki némi támpontot saját skiccel.

python optimizedSD/optimized_img2img.py --prompt "humanoid robot breaking out skyscaper's window, jumping out, glass debris everywhere" --init-img ~/tmp/sketch.png --strength 0.8 --n_iter 2 --n_samples 6

Ebből

sketch.png

ezt

seed_747975_00001.png

készítette. Ezt pedig egy következő iterációban is használhatjuk, folyamatosan javítva a képet, egyre közelebb hozva ahhoz, amit elképzeltünk.

Szólj hozzá!

Címkék: machine learning

Oh, my bug

2022.10.03. 23:23 Travis.CG

Az utóbbi időkben a demóim silányságában az is szerepet játszott, hogy nem tudtam két menetben renderelni. Mikor az új engine-t írtam, a Domestic violence-ből átemeltem a framebufferbe renderelés elemeit, becsomagoltam egy tetszetős C++ osztályba, majd vártam a csodás.

A csoda elmaradt. Közben volt néhány demóparti, amire újabb elemekkel bővítettem a kódhalmazt, ez a feature meg közben elmaradt. De eléggé idegesített, hogy amit annak idején viszonylag könnyen leprogramoztam, most nem akar működni. Ezért mident félretettem, és elkezdtem kutatni a hiba okát.

A framebuffer létrehozásáról már írtam korábban. Most csak arról szeretnék írni, hogy milyen lépések és milyen hibaforrások lehetnek. Először is, létre kell hozni a Framebuffer objektumot, textúrákkal, mélységi pufferrel (1). Utána kell egy shader, ami ebbe a pufferbe rajzol (2). Kell maga a geometria kirajzolása (3). Ez az első lépés. A második lépésnél a képernyőt tesszük alapértelmezettnek (4), rajzolunk egy téglalapot (5), és egy második shaderrel kirakjuk rá az előző lépésnél elkészített textúrát (6). Bármelyik lépésnél kudarcot vallunk, nem látunk semmit.

Először egy tutorial alapján újra átnéztem minden utasítást. Természetesen nem találtam a hibát, mint ahogy az előző több tíz alkalommal sem. Ha csak simán a képernyőre rajzoltam a geometriát, akkor minden megjelent, tehát a (2) és (3) jó. A kód összehasonlításánál az (1) is jónak tűnt. Az (5) is jónak tűnt, mert ha a második shadernél csak piros színt raktam ki, akkor az egész képernyő piros lett. Ebből arra következtettem, hogy a (6) lépés is stimmel. A (4) pedig csak egy glBindFramebuffer(0), tehát az is jó. Minden jó, mégsem működik.

Még egyszer végigmentem a lépéseken, másodszor sem láttam a hibát. Harmadszor is végignéztem egy tutorial kóddal összehasonlítva, továbbra sem láttam a megoldást. Viszont volt egy ügyes trükk a kódban. A képernyőtörlést más színnel végezte a két rajzolás alatt. Ezt én is megléptem. Az első framebuffer szürkét kapott, a második, képernyőre író pedig fehéret.

Az eredmény szürke képernyő volt. Tehát (1) jó, (2) jó, (3) nem jó. Ami ellentmondásban volt a korábbi tesztekkel, ahol Framebuffer bűvészkedés nélkül a geometria megjelent. Rájöttem, hogy ha tovább akarok lépni, akkor segítségre van szükségem.

A segítség az NVidia NSight volt, amivel Linux alatt is tudok debuggolni. Még Slackware alá is fel tudtam telepíteni. Egyetlen gondom az volt, hogy visított, hogy régi a videokártyám, ezért nem lesz minden funkció elérhető. De erre csak legyintettem.

Ez a debugger kilistázza a rajzoló műveleteket úgy, ahogy meghívásra kerülnek, nem kell a millió osztály referencián keresztül végigkövetni, mi is történik. Kirajzolja a textúrákat, puffereket, szóval nagyon jól működött. Kb. fél óra után már átláttam, mit is csinál, mire kell klikkelni. Elég intuitív.

Ekkor jött a meglepetés. (3) jó. A textúra ott virított, ahol lennie kellett.(6) megkapta a megfelelő textúrát, mégis csak a nagy szürkeséget rajzolta ki belőle.

Ekkor fogtam magam, átírtam a kódot és a framebufferes textúra helyett egy közönséges jpg-t adtam meg neki. Azt sem rajzolta ki. Illetve olyan volt, mintha csak a textúra teteje jelenne meg, de az is teljesen homogén módon.

Ekkor már tudtam, hogy közel vagyok. Most már egészen biztos voltam, hogy (5) és (6) között lesz a hiba. Ezért nem a (6) shadert kezdtem el használni, hanem a (2)-t, mert az bizonyította, hogy jól működik. Ez egy hiba volt a részemről, mert a két shader ég és föld volt. Aztán elkezdtem heggeszteni a kódot, hogy az inkompatibilitások ellenére is működjön, ezzel pedig rengeteg időt vesztegettem, mert újabb hibaforrásokat vittem az amúgy hibás rendszerbe. De pont ez hozta el a megoldást.

Ugyanis (2) shaderben a vertex shader kicsit bonyolultabb, mert normál vektorokat is kezel a geometria miatt. De a teljes képernyős négyzet esetén nincs szükségem normálokra. Ezért átírtam a kód elejét, mire hirtelen minden tökéletesen megjelent.

A kód akkor már nagyon össze-vissza volt a sok toldozgatás-foltozgatás miatt, ezért további egy óra ment el arra, hogy mindent úgy írjak vissza eredetibe, hogy közben ne vétsek új hibát. (Ezért kell verziókövető rendszert használni, nem igaz?)

Szóval ez a sok hűhó egyetlen sorra vezethető vissza:

layout (location = 2) in vec2 texc;

Átírtam location = 1-re, és minden jó volt. Mint abban a gyerekversben, ahol a szög miatt a patkó elveszett.

Szólj hozzá!

Címkék: programozás opengl

Function 2022, kerek évforduló

2022.09.18. 22:12 Travis.CG

Eljött az ősz, becsöngettek az iskolába, éééééés Function!

A demót már jó ideje írtam, de egyszerűen nem haladtam vele. Az egész demó részecske rendszerekből állt, és úgy gondoltam, milyen jó lenne, ha akadályokat képezhetnék nekik, amivel a részecskéket térbeli formákba tudnám zárni. Arra gondoltam, háromszögek lennének ezek az akadályok. Aztán jöttek az implementálandó algoritmusok: a háromszög-részecske ütközés, a háromszög-részecske visszaverődés, és még ki tudja, mennyi algoritmus. Az ötlet egy véget nem érő fejlesztésbe torkollott, aminek következtében a kódom komplexitása csak nőtt, miközben demót még mindig nem tudtam készíteni. Csak engine-hegesztés folyt.

Végül arra gondoltam, ez így nem mehet tovább. Mi lenne, ha tetszőleges háromszög helyett egy kockába zárnám a részecskéket, és azokból építkeznék, mitha Lego lenne. Voxel formákat könnyebb létrehozni.

A kocka lefejlesztése egy pillanat volt, és már kezdhettem is demót kódolni. Utána, hogy már láttam is a haladást, könnyebben ment a demó készítése is, több motivációt kaptam. Végül két nappal határidő előtt készen voltam.

De arra gondoltam, ha már van két napom, megpróbálhatnék egy videót is készíteni. Nos, a videó alapanyaga már hónapok óta készen volt, ami hiányzott, az a zene. Ezzel a zenével vért izzadtam. Pontosan tudtam, hogy olyan hangzást akartam elérni, mint a Rupture, ezért egyfolytában az hallgattam. Még a konditeremben is ezt tettem be, ha éppen hozzáfértem a terem zenelejátszását biztosító mobiltelefonhoz.

Nem haladtam. A zene, amit csináltam, még csak nem is emlékeztetett a Rupture zenéjére. Ha pedig mégis, akkor szörnyű volt a kontraszt. Ebben az állapotban voltam a parti előtt két nappal.

Itt is taktikát váltottam. Gondoltam, lemehetne a videó alatt az eredeti zene. Ezt elég hamar elvetettem, mert az eredeti zenében rengeteg háttér hang is volt, ami csak felesleges zavart keltett. Ha a másolás nem megy, akkor eredeti zene kell. Végül ez bizonyult ha nem is esztétikusnak (hiszen nem vagyok zenész), de legalább produktívnak.

Az eredmény elég elkeserítő lett. Még az is felmerült bennem, hogy álnéven adom be, annyira rossz lett. Vagy be sem adom. Elrejtem egy hosszú könyvtárszerkezet legmélyére xls kiterjesztéssel, hogy még véletlenül se nyissam meg.

Végül mégis a beadás mellett döntöttem. Miért? Mert eddig soha, egyetlen alkalommal sem csináltam semmi maradandót, tehát semmilyen reputációt nem teszek tönkre vele. Utolsó lesz? Fújjogni fognak? És akkor mi van? Ha nem adom be, olyan leszek, mint a partira járók 80%-a, akik nekilátnak valaminek, de soha nem fejezik be. Elvesztik a motivációt, nem találnak rá időt, és csak panaszkodnak, hogy most sem készültek el semmivel, pedig már mennyit dolgoztak vele. Most, a partin is beszéltem ilyen emberre, és a parti után is hallgattam a sztorikat. Én elkészültem vele. Igaz, hogy én is látom, hogy milyen minőséget képviselnek, de én ennyit tudok. A videó témája pedig jó ötlet, csak a zenével van gond.

Egyébként azzal, hogy megpróbáltam lemásolni a zenét, és ezért nagyon sokszor meghallgattam, elkezdtem észrevenni azokat az apró struktúrákat, amiből felépül. Úgy érzem, ebből megtanultam, hogyan lehet elkerülni, hogy ne legyen olyan monoton egy zene felépítése, valamint miként lehet előkészíteni a zenei témák váltását.

Ráadásul csak úgy tudok fejlődni, hogy megmutatom ezt a rossz zenét valami hozzáértőnek, aki tud javaslatot tenni a javításra. Ha nem mutatok semmit, nem lehet mihez képest fejlődni.

Szombaton a gyér látogatószám idején érkeztem. Sokan épp ebédelhettek, de legalább volt szabad helyem, ahova lecuccolhattam. Feltöltöttem a releaseket, és körbenéztem. Megcsodálhattam egy Mega 65-t.

function2.jpg

Később, mikor visszamentem a gépemhez, addigra egy német kontingens elfoglalta a helyemet, valamit nagyon kódolhattak, azért kellett egy csomóban lenniük. Addig elmentem ismerősöket üdvözölni. Volt egy érdekes beszélgetésem Aha-val, aki a JS jövőjéről beszélt a demosceneben. A lényege, hogy a scenerek már annyira lusták lettek, hogy sajnálják az időt a letöltésre és kicsomagolásra. Ha JS-ben van a demó, akkor elég egy link és a böngészőből fog futni.

Ratman talált egy C64-t még két éve egy bokorban. A megtalálás körülményeit még mindig viselte a gép. Az egyik német annyira meghatódott ettől, hogy össze-vissza járta a partit egy diagnosztikai cartrige után kutatva.

Blala DJ lett. Ez a dolog, csak engem ért meglepetésként, úgy tűnt mindenki más tisztában van vele, hogy a Haskell programozási nyelv elkötelezett térítője DJ lett. Hiába, nem lehet tudni, milyen rejtett értékek rejlenek egy-egy emberben.

Zene kompóra már ismét szabad volt a gépem előtti hely, gyorsan el is foglaltam. Az indulók száma nem hagyott kétséget afelől, hogy már komoly partival van dolgunk. Voltak igazán jó zenék is, úgyhogy bizalommal tekintettem a többi kompó elé.

A játékok igen színvonalasak voltak. Négyen indultak, és mindegyik nívós induló volt. Még ahol csak ötletet villantottak, ott is látszott az igényes kidolgozás.

A fotón előzsűrizték a képemet. Ettől egy kicsit letörtem, mert azért így is maradt bent olyan kép, ami sem kompozícióban, sem témában nem kimagasló (khm Autók (5).jpg). De az is lehet, csak én nem vagyok a megvilágosodás ezen szintjén. Az volt a legelkeserítőbb, hogy ez volt az első képem, amiben tudatosan megterveztem a kép felépítését. Amikor nem gondolok semmire, csak kattintok egyet, akkor ilyen nem történik.

A grafikák többsége nagyon jó volt. Grass és SP képe különösen tetszett. Grass egyébként a Vakondok következő filmjéhez készítette ezt a posztert. A kézirajzok nagyon különböző technikával készültek, változatos stílust követtek.

A wild-ok változatosak voltak. Láthattunk Arduino cuccot, videót. Valahogy nem volt nagy viszhangja a videómnak, mikor lement. Szerencsére utolsó sem lett. Mint utólag megtudtam, a legtöbben nem is értették, hogy a Rupturt vettem alapul. Úgy tűnik, az elvont figurák között is kezdek elvont lenni, ami már hatványozott elvontságot jelent egy átlagemberhez képest. Ha így folytatom tovább, a végén egyedül fogok röhögni a saját vicceimen. Bár a díjkiosztó után Slyspy elmondt, hogy neki átjöttek a poénok, úgyhogy még van némi remény számomra.

Viszont a nyertes alkotás, a Poligon nagyot ütött. Nem állítom, hogy a teljes szimbólum rendszert értettem, és a teljes díszlet elégetése nagyon lehangolt, de akkor is torony magasan verte a mezőnyt.

A Sequence is elég jó volt, bár ott nem értettem, hogy most az elvált nő (vagy annak lánya?) hogyan jutott el a NASA űrhajós kiképző programjába. Bizonyára nem is ez volt a célja a filmnek.

A 256byte kivételével az összes intrót összevonták. Probléma nem volt velük, élvezetesek voltak. Na de, a 256-ok! A néző kezdi azt hinni, hogy már mindent látott, de kiderül, hogy nem. Azt hiszem az új trend a true color, de a részecske rendszer is népszerű effekt volt idén.

Öt demó volt, ebből az első három korábbi ötletek felfrissítése volt egy magasabb szinten, ha lehet ez mondani. Az Away jól illeszkedik a Rainbow Clash sorozathoz, amit Slyspy évek óta visz, de a tiritarka színorgia helyett egy melankólikus demót kapunk, az elmúlást bemutatva. Netro az Night M. Shyamalan-i hagyományokat követte, amikor is csak a végére áll össze a kép. Talán a fáradság volt az oka, de most tényleg nem értettem, mit is látok. Ezen az sem segített sokat, hogy az egyetlen általam felismert formánál, a vörös vértestnél valaki felkiáltott mögöttem: vérlemezke. Mikor eljött a döntő pillanat, akkor kezdett világossá válni, hogy ja, azok a polipok neuronok voltak. Így már oké! Gargaj pedig a Piledriver stílusát emelte meg egy esztergapaddal:

A díjkiosztón Gargaj azt mondta, hogy szerinte Netronak kellett volna nyernie, ezért át is adta a díját neki.

Összességében elmodható, hogy a demoscene punnyadás véget ért. A Revision - QBParty - Assembly fáradt, néhol erőltetett vonaglása helyett kaptunk egy igazi demópartit, igazi release-ekkel. Mondhatni a Function saját gravitációs mezőt fejlesztett. Annyian jöttek el, hogy alig fértek el a teremben. Plusz szavazólapokat kellett nyomtatni, mert elfogytak. Még Spenót is eljött, pedig korábban nagyon aggódott, hogy elkapja a koronavírust, és meghal. Ha így nézzük, akkor az élete kockáztatása árán is eljött. Remélem nem hirtelen fellángolás volt ez, hanem egy új trend kezdete.

function1.jpg

Szólj hozzá!

Címkék: demoscene

Klikk, klikk, PhD dolgozat

2022.09.04. 16:39 Travis.CG

Nem szoktam túl kritikus lenni a PhD dolgozatokkal. Egyrészt, mert az én PhD dolgozatom sem túl kiváló, ráadásul elég élénken él még bennem, milyen a PhD-sok élete. Ezért is volt nehéz számomra, hogyan is bíráljam el a most bemutatásra kerülő PhD dolgozatot.

A dolgozat röviden abból állt, hogy megnézték egy növény biotikus stresszre milyen válaszreakciókat ad. Azon belül is egy gént emeltek ki, mert abból a génből már volt eredményük, hogy egy teljesen másik növénybe transzformálva hogyan működik. Látszott, hogy biztosra akartak menni. Ismert gén, ismert módszer, csak a növényt változtatták meg. Gondolom azt várták, hogy hasonló eredményt is kapnak.

A dolgozat bevezetője alapján a laborvizsgálatok mellé bioinformatikai vizsgálatokat is végeztek. Ezek leírása viszont meglepően pontatlan volt, nem érte el egy BSC-s előadás szintjét sem. Ráadásul letöltöttek a GEO-ról egy adatsort, ami pont ugyan azt a stresszt vizsgálta, pont ugyan azon a növényen, mint ők. Viszont nem a nyers adatokat szedték le, hogy újraelemezzék, hanem a végső expressziós táblázatot. Tehát más tollával akartak ékeskedni. Ez már kiváltott némi duzzanatot néhány homlokomon kanyargozó éren.

Amikor meg tényleg saját bioinformatikai vizsgálatot csináltak (ami igazából abból állt, hogy egy weboldalra feltöltötték az adatokat, klikkeltek, majd letöltötték a kimeneti táblázatot), akkor sem kezdtek semmit az eredménnyel, csak leírták, hogy ezt köpte ki a program. Semmi értelmezése nem volt az eredményeknek, csak puszta leírása.

Mindegy - gondoltam magamban -, ha a bioinformatikai munka nem is volt nagy eresztés, a kísérletek önmagukban mégis csak képviselnek valami értéket. Megpróbáltam átrágni rajta magam, tudván, hogy nem sok kapcsolatom van a laboros módszertannal. Mint kiderült, alaptalan volt a félelmem. A laborvizsgálatok eredményeinél derült ki, hogy a vizsgált növények elrohadtak, és nem ismételték meg a kísérletet.

Hogy pontosan miért nem ismételték meg a kísérleteket, nem derült ki egyértelműen. Az összefoglalásnál még a COVID-19 miatti karantén intézkedéseket említették, de az eredmények és megvitatásuknál már a kísérletek költségeit nevezték meg oknak.

Szép lassan kezdett számomra kirajzolódni, mi is történhetett. Labor Jani elkezdett kísérletezni egy olyan témán, ami nem világmegváltó, de biztosan nem kudarcra ítélt. Hónapokat dolgoztak a növények nevelésén, majd azok megdöglöttek. Valami határidő biztosan elkezdte őket szorítani, ezért elkezdtek pánik-szerűen gondolkodni, hogyan lehetne mégis valami PhD dolgozatot összehozni. Erre jöhetett a világmegváltó ötlet: akkor csináljunk bioinformatikát mások eredményét felhasználva.

Mert milyen menő már, hogy a bioinformatikus csak nyomkodja a gombokat egy fekete képernyő előtt, meg klikkel a weboldalon, és kész a kutatás. Hiszen ezt egy majom is meg tudja csinálni. Azt hiszem, ez a dolgozat is bizonyítja, hogy ez nem így van. De akár ezt a mémet is hozhatnám példának. Valóban könnyebb egy program kimenetére várni, mint transzformált növényeket növeszteni vagy egereket keresztezni, de érteni is kell, miért kapjuk, amit kapunk.

Ugyanis még nem tartunk ott, hogy pusztán bioinformatikai módszerekkel megoldjuk a biológiai problémákat. Még mindig szükség van a kísérletekre, azok nélkül továbbra is csak predikciókat tudunk mondani. A predikciók pedig tévedhetnek, mint ahogy tévedni is szoktak. Elég csak megnézni különböző szakértők előrejelzéseit, amikről utólag kiderül, hogy hamisak. Nem azért hamisak, mert ezek a szakértől hülyék lennének, hanem azért, mert az eddigi ismereteik alapján az adatokból ezt tudják előre jelezni. De a biológiában szerencsénk van, mert lehet kísérletesen ellenőrizni ezeket a predikciókat.

Ezért voltam dilemmában a PhD dolgozat bírálata idején. A legegyszerűbb megoldás az lett volna, hogy leírjuk, ez egy használhatatlan dolgozat, elkaszálni az egészet, és kész. Csakhogy ez nem a hallgató hibája. Biztos, hogy nem ő találta ki, hogy mostantól bioinformatikai munkát fog végezni. Ha igaz a karantén-kifogás, arról sem tehet a hallgató. Viszont szánalomból sem lehet átengedni valakit.

Ezért írtam vagy két oldalt, hogyan lehetne többet kihozni az eredményekből. Milyen további vizsgálatokat érdemes végezni, azokhoz milyen weboldalakat használhat (annyi ideje úgysem lenne a hallgatónak, hogy konzolos programokkal foglalkozzon). Ha megfogadja, megfogadja, ha nem, akkor nem.

Szólj hozzá!

Címkék: bioinformatika

Borban az igazság

2022.08.28. 21:15 Travis.CG

Ide első publikációm két élesztő hibridről szólt. Az egész úgy kezdődött, hogy elhívtak egy megbeszélésre, ahol arról megtudtam, hogy izoláltak két Saccharomyces törzset, amelyek az elsődleges vizsgálatok alapján hibrideknek tűntek. A feladat a szülő fajok azonosítása lett volna.

A témát két részletre bontottuk, hogy még több cikkünk legyen, és minden cikkben mindenki szerepel, mert ki ne örülne még potya publikációknak? A most megjelent cikk inkább az élesztők által készített bor fizikai tulajdonságokról szólt, nem az élőlények genetikájáról (ami később fog megjelenni), ezért eredetileg úgy tűnt, nem is lesz szerepem benne. A bírálók viszont máshogy gondolták.

Történt ugyanis, hogy a kézirat első verziója után plusz kísérleteket kértek, amitől a szerzők száma megemelkedett. Azt is kritizálták, hogy a fizikai tulajdonságokat elemző ANOVA túl nagy szórást mutatott, ami állítólag rendes fermentálás esetén nem szabadna, hogy bekövetkezzen.

Ezt úgy oldották meg, hogy a 3 ismétlésből kivették a kiugró értéket, és újraszámoltattak velem mindent, mert én tudok for ciklust írni R-ben. Úgyhogy az én munkám egyetlen nagy ANOVA táblázat elkészítése volt. Arra számítottam, hogy a kisebb adatmennyiségen fenn fognak akadni a bírálók, de nem tették. Ebből is látszik, hogy ha a bírálóknak megírod, hogy javítottad, amit kértek, akkor már nem olvassák el újból, hogy hogyan is javítottad azt.

Kis kitérőként megemlítem, hogy tavasszal pont ezzel a módszerrel akartak átverni egy cikket rajtam, amit bíráltam. Abban a cikkben kifogásoltam, hogy az RNA-seq nem tartalmaz párhuzamos mérést, mire azt válaszolták a szerzők, hogy azt a módszert alkalmazták, amit XY et al. 2019-ben. Dobtak valami csontot a kutyának, hogy elhallgattassák. Sajnos vettem a fáradságot, és elolvastam XY cikkét, amiben nyoma sem volt ismétlés nélküli RNA-seq-nek.

De térjünk vissza a mostani cikkhez. Egy másik táblázatból is kellett volna ANOVA-t számolni, de ez végül mégsem számoltam, mert nem találták az eredeti adatokat! Mai tanúságunk, hogy ha van egy szakdolgozónk/PhD hallgatónk, akkor a nyers adatokat ne hagyjuk náluk úgy, hogy nálunk nincs belőle másolat. Az eredeti, nyers adatok a kincsek. A belőlük készült színes-szagos Excel tábla nem kincs, csak egy eredmény. Azt újra lehet generálni. A nyers adatért viszont meg kell szenvedni, azt nem könnyű pótolni.

Miután kijavítottunk mindent, amit kértek, elfogadták a cikket, de még nem ért véget a tortúra. Maguk a formai változások is három vagy négy revíziót éltek meg, amivel a levelező szerző igencsak megszenvedett, mert szűk határidőket szabtak, miközben mindenki szabadságon volt. Minden második levélváltás az editorokkal arról szólt, hogy haladékot kérjen nekünk.

Szerencsére megértőek voltak, úgyhogy minden elkészült. Nem valószínű, hogy ezeknek a hibrideknek a hatására jobb borok fognak megjelenni a piacon, de azért jó volt dolgozni a projekten. Remélem nemsokára azt is megmutathatom, hogyan dolgoztam fel a genomokat.

Szólj hozzá!

Címkék: publikáció

sudo finomhangolás

2022.08.21. 18:18 Travis.CG

A sudo parancs a legtöbb felhasználó számára egyet jelent a root-al. Egy kis kellemetlenségért cserébe (be kell gépelni, hogy sudo + jelszó) megkapjuk az isteni hatalmat a gép felett. Aki viszont veszi a fáradságot, az a beállításokkal nagyon részletesen előírhatja, hogy mennyit is kaphat valaki ebből a hatalomból.

A sudo beállításai az /etc/sudoers fájlban és az /etc/sudoers.d/ könyvtár fájljaiban található. Ez utóbbi azért alakult ki, mert a csomagkezelők előszeretettel írják felül a konfigurációs állományokat egy program frissítése során. A sudoers.d fájljai viszont értintetlenek maradnak.

A konfigurációs állomány szintakája nagyon egyszerű:

user host = (otheruser) cmd

A user lehet egy felhasználó neve, de akár egy csoport is, ha % jellel kezdődi. A host annak a gépnek a nevét jelenti, ahol a jogokat ki szeretnénk adni. Ez a megoldás lehetővé teszi, hogy egy sudoers fájlt több gép között is megoszthassunk. Az otheruser annak a felhasználónak a neve, akinek a nevében futni fog a parancs. Mint látható, nem muszáj root-nak lennie. Ha például az adatbázis felügyelet egy dedikált user nevében fut, akinek még home könyvtára sincs, akkor itt beállíthajuk, hogy a felhasználó ezen néven adatbázis műveleteket végezzen. A cmd a futtatni kívánt parancs. Mivel a sudo alapból nem ismeri a PATH-t, ezért célszerű teljes elérési utat megadni. A parancs esetén van egy érdekes dolog! Nevezetesen megadhatunk paramétereket is. Ezzel olyan érdekes helyzeteket hozhatunk létre, hogy a felhasználó nem tud tetszőleges paraméterekkel parancsot futtatni. Ha mondjuk egy felhasználónak csak egy szolgáltatás indítását és leállítását akarjuk engedélyezni, akkor a következő módon tehetjük meg:

dummy ALL = /sbin/systemctl start dummy.service, /sbin/systemctl stop dummy.service

Ebben az esetben a dummy felhasználó bármely gépen el tudja indítani a dummy szolgáltatást és le is tudja állítani. De az állapotát már nem tudja lekérdezni!

Ez így mind szép, de mi van, ha több host-ot, több felhasználót, netalántán több parancsot szeretnénk megadni? A konfiguráció során létrehozhatunk aliasokat. A Host_Alias a számítógépek neveit gyűjti egy azonosító alá. A User_Alias a felhasználókat. A Cmnd_Alias szerepe ezek alapján már egyértelműen beazonosítható.

Az aliasok felépítése is nagyon egyszerű:

User_Alias DB = adam, eve

Tehát a DB alias alatt adam és eve fog szerepelni. Az így definiált aliasokat utána használhatjuk a fenti struktúrában.

Azt is szabályozhatjuk, hány esetben kelljen beírni a jelszót. Ha a kiadni kívánt parancs előtt szerepel a NOPASSWD:, akkor a jelszó beírása nem kötelező, ami szkripteléskor jön jól.

Ez persze még mindig csak a jéghegy csúcsa. Nem említettem a reguláris kifejezéseket, környezeti változókat, stb. Aki még mélyebbre szeretne ásni a témában, itt teheti meg.

Szólj hozzá!

Címkék: rendszergazda

Cseppet sem objektíven: Assembly 2022

2022.08.18. 15:05 Travis.CG

Majdnem lemaradtam az idei Assembly-ről! Mindenre úgy rákészültem, mégis az utolsó pillanatban majdnem lemaradtam. De úgy látom, mások is.

Remélem ez nem egy trend része, de a Revision és a QBParty után az Assembly is visszafogottabb volt, mint korábban. Remélem a Function fogja megtörni a jeget. De addig is lássuk, mit kaptunk idén.

A zenei és grafikai compókra nem lehetett panasz, elég induló is volt, és végignézve a mezőnyt, a felhozatal sem volt rossz. Zenéből négy kategória is volt: Dance, Fast, Listening, Tracked. Tulajdonképpen nem is tudom, mi a különbség a Dance és a Listening között. Egyszer majd utánajárok.

A gyors zenék közül egyedül Melod száma tetszett, de ezzel úgy tűnik egyedül voltam, mert csak a 10. helyezést érte el.

Egyik kedvenc zenészem, Aikapallo kivételesen szakított a metálos hangzással, de az új stílusa is megkapó. Nem tudom, hogy ez egy kísérletezés eredménye, vagy erre a vonalra szeretne ráállni, de jó volt hallgatni.

A grafikák is népes számban képviseltették magukat. A fast graphics esetén kivételesen nem egy firkát kellett értelmes képpé varázsolni, hanem egy témát adtak, a szavazást. Bár voltak ügyes témák, a legtöbb kép nagyon nyers volt. Sajnos a scene.org FTP-jén nem volt fenn az összes kép, de amiket láttam, azok közül a Get free oil volt a legjobb (ami valami miatt Vote for roboboy néven található meg, de ezen nem kell fennakadni).

A Freestyle grafikák már nem tűntek félkész munkáknak. A résztvevők száma is viszonylag kevés volt. Darkki első helyezett képe nagyon megkapó. Torony magasan nyert is.

A videók idén nem voltak túl jók. Általában ezekkel szoktam a releasekre hangolódni, mert könnyű megnézni őket, és többnyire szórakoztatóak. Gyanítom, az in-game videóra nem készültek sokan, mert összesen egy induló lehetett, azt pedig áttették ebbe a kategóriába. Mivel nem ismerem a játékot, ami a videó alapjául szolgált, ezért nem is értettem az egészet.

A futtatható alkotások láthatóan hátrányban voltak az előző évekhez képest. A régi hardverek kedvelői nem valószínű, hogy emlékezni fognak egyetlen indulóra is. A változatosságra nem lehetett panasz: volt DOS, C64, Amiga és Gameboy demó is. A megvalósítás viszont uncsi volt.

Az 1k indulókkal nem találtam meg a hangot. Több helyből gazdálkodhatnak, mint egy 256b, mégis az embernek olyan érzése van, mintha kevesebb lehetősége lenne az indulóknak. Például biztos nehéz volt megoldani, hogy a JS intrók menjenek ebben a mérettartományban, de az eredmény mégis kevésnek hat. Olyanok voltak, mint a Linux intrók. Tök nehéz összehozni őket, az eredmény mégis lesújtó.

A 4k intrók sem villanyoztak fel. Mondjuk, a második helyezett be is vallotta, hogy előző este összedobott valamit, majd beadta. Egy kisebb hazai partin látni ilyeneket nem lenne gond, de ez az Assembly és most ünnepelték a 30 éves fennállásukat!

Volt egy öszvér compó is wild screen néven, amiben voltak demók, videók, képek. Ennek a kategóriának a létére nem jöttem rá. Ettől az oldalaránytól csak azok élvezhetik ezt, akiknek ilyen széles monitoruk van. A halandók alig látnak belőle valamit. De legalább volt HBC demó. Örülök, hogy a csapat nem adta még fel.

A kegyelemdöfést a PC demók adták meg. Egyáltalán nem éreztem a nagy katarzist, hogy demókat nézhetek, inkább az órát néztem, hogy mikor lesz végük. Az Adapt demója nagyon látványos volt, de nem éreztem benne a kohéziót, csak azt, hogy "pakoljunk bele még egy folyadékszimulációt". A Fairlight demók a vége felé szintén inkább techdemók voltak, de ott a technológia állt a középpontban, ezért mindig egyféle effektet mutattak be. Itt meg volt valami jeti, ami csak lépett egyet jobbra, egyet meg balra. Víz kockában, aztán emberi szökőkút. Oké, de nem tartotta össze a demót semmi. Ráadásul nálam el sem indult, kénytelen voltam TeCsőről nézni.

Egyébként más is észrevette már, hogy a Notch demók mindig egy mozgó emberi karakter köré épített részecske rendszerek? Érdekes lenne megtudni, hogy ez az engine sajátságából adódik, vagy valami más oka van.

Akkor már inkább az MFX álomszerű demóját érdemes megemlíteni, ami egy teljesen korrekt alkotás volt. Egyszerű, de fülbemászó zene, egységes képi világ és elég gyors vágások, nehogy észrevegyük, milyen repetitív a karakterek mozgása. Ezt a demót látszik, hogy szívvel készítették.

 

Szólj hozzá!

Címkék: demoscene

Slackware: öregfiúknak

2022.08.07. 19:58 Travis.CG

Régen minden jobb volt! Régen a számítógép azt csinálta, amit mi akartunk. Ha hülyeséget csináltunk, nem működött a rendszerünk. Ma meg csak azt csinálhatjuk, amit a cégek megengednek. Lejár a terméktámogatás a jó kis Windows 8.1-hez, erre mit csinálnak? Figyelmeztető üzeneteket küldenek. Kérte valaki? Telepítettem én Microsoft üzengető modult a gépemre? Hát erről beszélek, kérem alásan!

Még a Linuxok is jobbak voltak. A mai Linuxosok? Pfff. Egy lépést sem tudnak tenni a grafikus képernyő nélkül. Ha valami nincs a csomagkezelőben, akkor már nem is tudják telepíteni. Régen mi még forráskódból fordítottunk!

Bezzeg a Slackware követi a régi értékeket. Minden egy telepítő DVD-n van, nem ám felhőben, meg ilyen repóban, meg olyan repóban! Még mit nem! És olyan huncuttságok sincsenek, mint csomagfüggőség! Minek? Aki telepít, az úgyis mindent felrak. Ha meg nem akar mindent felrakni, akkor nem rak fel. Nem a gép mondja meg, mit lehet csinálni.

Grafikus felület? Csak ha én el akarom indítani. Senki nem kényszerít, hogy ostoba homokórákat bámuljak. Userek? Ott a root. Ezek a mostani rendszerek úgy félnek a rendszergazdai jogosultságoktól, mintha valami betegség lenne. Pedig a beállításoknak ez a módja. Nem ilyen sudo puhaság. Hogy meri megtiltani a rendszer, hogy én kiadjam a rm -fr a gyökérben? Persze, én nem akarom kiadni. De ha ki akarnám adni? Mi van, ha olyan napom van? Nekem ne adjon hibaüzenetet egy gép! És ha vészhelyzet van?

Már egy jó ide megvoltam a CentOS-el, de egyre több olyan apróság jött elő, amivel nem tudtam mit kezdeni. Egyik ilyen probléma a középső egérgomb volt. Elkövettem azt a hibát, hogy Logitech egeret választottam, aminél a középső egérgomb nem szabványos üzenetet generál. (Bezzeg egy régi jó kis görgős egérrel ilyen nem fordulhatna elő!) Windowshoz persze van driver, mert a Windows az csókos, de Linux alatt valami miatt a Gnome alapú rendszereknél nem működik.

A fiatalok biztos a gatyájukba csinálnának, vagy ami még rosszabb, kérdéseket tesznek fel a StackOverflow-n, de nálam ez nem volt gond, mert összesen két helyen használok csak középső egérgombot: a konzolban, szöveg bemásolásához, és Blenderben. Mindkét esetben van alternatív megoldás, ezért ez nem fájt olyan nagyon.

A másik apróság a Bluetooth volt. Ez már nagyobb probléma volt. Elkezdtem ugyanis egy rajztáblával szerencsétlenkedni, ami így kommunikál a géppel, de valami miatt nem jött létre a kapcsolat a két eszköz között. A logok alapján a bluez démon nem tudott rendesen elindulni. Ez egy ismert hiba, amire a program frissítést javasolták.

Viszont megjelent az új Slackware is, ami a legrégebb Linux disztribúció, tele olyan hasznos funkciókkal, amire egy magam fajta régivágású embernek szüksége lehet. A mostani kiadásra hat évet kellett várni, de hát az öregeknek van rá idejük. Aki Ubuntun nevelkedett, az ezt biztos nem érti. Azért mégsem írom, hogy megáll az idő a Slackware használata közben, mert a rendszer használata közben azért érezni, amikor a böngésző egyre kevesebb oldalt hajlandó betölteni az újabb és újabb webes szabványoknak hála.

Az öregedéssel persze óvatosság is társul, ezért először egy tesztgépre telepítettem, és kipróbáltam az egeret, valamint a rajztáblát. Nehogy belefogjak egy mindent átfogó telepítésbe, és még a problémáim se csökkenjenek. Patricknak hála működött mindkettő.

Telepítés előtt egy biztonsági mentést is akartam csinálni, mert a CentOS LVM partíciót hozott létre a home könyvtárra, amit nem tudtam volna kevés munkával Slackware alá csatolni. (És mint írtam, fő az óvatosság!) A biztonsági mentés három órát vett igénybe, pedig csak 560GB-t kellett átmásolni.

A Secure Boot megtréfált elsőre. Elindítottam a Slackware telepítőt, majd a cfdisk-el letöröltem az összes partíciót, újakat készítettem, telepítettem. Érdekes módon az initram készítésénél csak malmozott a gép, látszólag nem csinált semmit. Itt össze-vissza nyomkodtam a gombokat, majd egyszer csak a telepítő végére értem.

Újraindítottam, és legnagyobb meglepetésemre a CentOS visszajött! A kutya meg a macska! Miféle ezredfordulós humbug ez meg? Még kétszer megismételtem a mutatványt, mire rájöttem, hogy UEFI alatt GPT partíciókat kell csinálni. Az a 2048-as szektornál kezdődik, tehát hiába hoztam létre régi típusú partíciókat, azok nem jelentettek semmit. Az initram készítés is azért "fagyott" mert a nem tudta kiírni a fájlokat.

Szóval a partíciókat a jó öreg cfdisk helyett cgdisk-el kell elkészíteni, és akkor már minden rendben volt. Legalábbis a telepítéssel. A telepítő a rendszer indítót a Windows EFI partíciójára írta a telepítő, amitől először megijedtem. Régi reakció ez, amikor még az operációs rendszerek előszeretettel írták felül egymás MBR rekordjait. Manapság már kisebb a stressz emiatt.

A biztonsági mentésből csak két óra volt a visszamásolás, úgyhogy az értékes, a web számára rég elfelejtett programverziók biztonságban voltak (meg az olyan nagyon fontos videók, amiket a YouTube is rég letörölt, mert csak 640x480-as felbontásban vannak meg.)

Mivel már rutinosabb voltam, a Tensorflow telepítése gyerekjáték volt. Az NVCC fordítóról most inkább ne beszéljünk.

Azért ez az öreg is tud új trükköket. Már van hármas Python is, 11-es GCC, de aki úgy szereti, annak az LLVM is ott figyel, és a cmake is elérte a 3-as verziót. Amint látható, már az EFI alaplapokkal is megbírkózik. Úgy érzem, nem lesz gond. Egy ideig legalábbis.

Szólj hozzá!

Címkék: rendszergazda

Repedések a kádon

2022.08.01. 22:38 Travis.CG

Sajnos tökéletes kis lakunk kezd elöregedni és az egyik ronda elem benne a fürdőkád. Akril kádunk van, amit kikezdett a sok ugrálás, forró víz, meg még ki tudja mi. Apró repedések jelentek meg, amik az idő előrehaladtával nőttek, növekedtek.

kad1.jpg

A kádcsere szóba sem jöhetett, mert akkor burkolni is kellene, ami most tényleg nem fér bele a keretbe.

Keresgéltem a megoldások között. Több lehetőség is volt. Az egyik egy spray, ami kis repedéseket képes befedni, a másik egy kétkomponensű epoxi gyanta, ami akár mélyebb árkokat is kitölt. Régi vonzódásom az epoxi gyantákhoz itt is kiütközött, mert azonnal arra startoltam rá.

A boltban egy csónak javító készletet ajánlottak, mert abban még egy selyem háló is volt, amivel az adott területet meg is lehet erősíteni. Mivel eddigi tapasztalataim a gyantákkal megerősítettek abban, hogy bizony, ha rugalmasság is kell, önmagukban a gyanták nem elegek. Megvettem.

A leírás szerint a két komponenst 1:10 arányba kell összekeverni, majd a színváltozás fogja elárulni, hogy mikor dermed meg az anyag. A keveréshez egy fecskendőt használtam. Mivel az aktivátor, amit csak kis mennyiségben kell hozzáadni a gyantához viszonylag sűrű, 5ml-es fecskendőből talán ki sem lehet nyomni. Keverés után egy picit állni hagytam, hogy addig átcsiszoljam a felületet. A leírással ellentétben én semmilyen színváltozást nem láttam. Bár 20 perc alatt kellett volna megkötnie, nekem kb. 5 perc után zselatinszerűvé vált és már nem lehetett vele semmilyen felületet kezelni.

Cserébe ilyen állapotban még könnyen ki tudtam merni a mérőpohárból, és a kukába dobhattam. Mint később kiderült, ez egy hiba volt. A műgyanta ugyanis olyan büdös volt, hogy hiába vittem le a szemetest a művelet után, még két napig nem ment ki a szaga. Feleségemtől meg is kaptam a magamét.

kad2.jpg

A második keverésnél már résen voltam. Mikor elkészült az elegy, először egy vékony rétegben a kádra kentem, majd ráfektettem a hálót, majd az egészet lekentem. Egy rossz fogkefét használtam a felhordásra, mert tudtam, ha megköt a műgyanta, annak a tárgynak annyi lesz.

Most is rövidebb idő alatt kötött meg, mint ahogy a leírás mondta, de mivel számítottam rá, nem volt bonyodalom. A háló miatt nem simult be a kád síkjába, a szélét igyekeztem minél jobban elvékonyítani. A fogkefe miatt a felület sem lett teljesen sima.

kad3.jpg

Egy nap száradást hagytam, addig büdösödött mindenki. Mi a melegtől, a kád az epoxitól. Tényleg rettenetes szaga volt. Másnap pedig nekiestem, hogy eltűntessem az egyenetlenségeket. Mint az sejtheti az olvasó, könnyebb frissibe megcsinálni simára, mint utólag csiszolgatni. Azért egy kis gépi segítséggel tűrhető simaságúra csiszoltam.

Hanem kiderült, hogy ismét nem olvastam el rendesen a használati útmutatót vásárlás előtt, ezért száradás után tudatosodott bennem, hogy a gyanta átlátszó, nem fehér. A repedések továbbra is szépen látszottak. Mehettem vissza a boltba festékért.

A kádfesték elég drága mulatság. Először nem is akarta nekem odaadni az eladó, hanem keresgélt az olcsó radiátor festékek között. Csak akkor ment a pénztárhoz, mikor megmondtam neki, hogy jó megoldást akarok, nem félmegoldást. A festék szintén kétkomponensű, szintén eltúlzott keverési arányokkal és szintén rettenetes szaggal.

A leírás szerint két napig kell hagyni száradni, ezért fürdés után álltam neki festeni, mikor másnap úgyis elutaztunk. Ez tényleg remek festék volt, de ezután tűnt csak fel, milyen kopott is a festék a kádon.

kad4.jpg

Összességében jó lett az eredmény, még ha nem is teljesen esztétikus. Valódi fényviszonyok között nem ennyire feltűnő, mint az utolsó képen.

Szólj hozzá!

Címkék: barkácsolás

A nagyiék wifi-je

2022.07.27. 18:27 Travis.CG

Már elmúlt az az idő, amikor a nagyszülőknél csak megérinthetetlen porcelán nippek, ősrégi, meghatározhatatlan feladatú berendezések, ósdi divat szerint szabott ruhák és múzeum szag van. Mamiék a fiúk és menyük levedlett iPhone-ját használják, két okostévével szórakoztatják az unokákat, akik egy lépést sem tudnak tenni tablet nélkül, amik viszont rácuppannak a wifire.

Ha meglátogatjuk őket, viszem a laptopot, telefont. A lányom a tabletet. Ilyenkor átjönnek sógoromék, mindenki egy telefonnal, a lányuk plusz egy tablettel. Ehhez jön a nagyszülők saját kütyüparkja. A router ilyenkor nem szokott unatkozni.

Sajnos az eszközökkel nem jár autómatikusan azok használata is. Ezt jól példázza a két TV esete is. Az egyik futball világbajnokság idején nagypapa vett magának egy hatalmas TV-t, milliónyi okos funkcióval. A régit pedig egy használaton kívüli szobába száműzte. Sajnos a meccseket mégsem élvezhette, mert az unokáknak is tetszett, hogy óriási felbontásban nézhetik Peppa malacot. Ezért a következő idényben a szezon előtt elkezdte nézni a használt TV-ket. Már akkor javasoltam, hogy jobban jár egy Chromecast-al, amit a használaton kívüli TV-be dugva felokosíthat, de valami bizarr bizonyítási vágytól fűtve nem foglalkozott a javaslattal.

Végül sikerült venni egy olyan TV-t, ami bár okos volt, a YouTube még nem ment rajta. A vége az lett, hogy mégis kellett az általam javasolt kis cucc is.

Egy ideig minden ment is rendesen. Foci az egyik TV-n, pixel disznók a másikon. Hanem egy idő után a routertől messzebb lévő TV egyre többet mutatta a töltés animációt és egyre kevesebbet Peppa dagonyászását. Ezért nagypapa megállapította, hogy gyenge a wifi jel. Habár volt náluk egy használaton kívüli router is, amit bridge módba lehetett volna kapcsolni, mégis inkább vett egy wifi erősítőt, de beüzemelni már nem tudta.

Ekkor lépett színre "Dani", aki nem tudom, milyen kapcsolatban állt nagypapával, de valahol a "volt munkatársam fia" és a "két házzal arrébb lakó szomszéd unokája" vonal mentén mozoghatott. Ez a szakember nekiállt konfigurálni. És konfigurált és állítgatott. Gondolom közben redőzte a homlokát, hogy valami izommunkát vigyen a tevékenységébe és a mirigyeit is verejték üzemmódba állította, de Peppa csak nem akarta szekálni az öccsét azon a nyűves készüléken. Dani végül megállapította, hogy a router elromlott.

A router annyira rossz volt, hogy utána még Viberen is beszélhettünk, ahol a nagyszülők végül megkértek, hogy állítsam be a wifi erősítőt. Ekkor két dologban voltam biztos: a routernek semmi baja és a jelerősség sem csökkenhetett le drasztikusan.

Mikor eljutottunk hozzájuk, először egy wifi elemzőt indítottam a telefonon. Pár óránként ránéztem, és a gyanúm beigazolódott. A router csatornáját mások is használták. Nem csoda, hogy nem volt jel. A program futásával megállapítottam, hogy melyik csatorna szabad és a routert átállítottam. Hirtelen minden működött. Nem kellett semmilyen más eszköz.

Szólj hozzá!

Címkék: rendszergazda

Ha már adatot osztunk meg...

2022.07.20. 22:27 Travis.CG

Az adatok megosztása elég fontos része a jelenlegi tudományos életnek. Ez nem volt mindig így. Még egyetem alatt emlékszem, amikor az Állatökológia Tanszéken dolgoztam, egy cikk írása közben a témavezető nagyon törte a fejét, hogyan írja le úgy az eredményeket, hogy közben minél kevesebbet áruljon el belőlük. Én naívan azt javasoltam, hogy legyen egy nagy táblázatban.

- Azt nem lehet! Ellopják az adatainkat és cikket írnak belőle.

Akkor még nem voltam tisztában a tudomány működésével, és nem értettem, miért baj az, ha valaki több adat felhasználásával viszi előre a tudományt, olyan módon, amire mi egyébként képtelenek lennénk.

Szerencsére manapság már menő dolog adatot megosztani. De mit is tekinthetünk adatnak? Adat bármi lehet. Lehet egy cikk. Nem feltétlenül tudományos cikk, akár egy blog bejegyzés is adatnak minősülhet (főleg, ha vészhelyzetben kell bojlert javítani). Adat lehet programkód is. Lehet egy táblázat, ami tartalmazza egy cikkhez felhasznált információkat. Talán ez áll a legközelebb ahhoz, amire az ember elsőre gondol, ha adatot említenek neki, de akár egy teljes adatbázis is annak minősül.

Főként saját tapasztalatok alapján megpróbálom felvázolni, milyen problémákkal kell szembenéznie egy adat publikálónak és egy adat felhasználónak.

Adat felhasználóként

Először is, az adatot meg kell találni. Ha a cikk azt mondja, ezen az URL-n van az adat, de nincs ott, az megnehezíti a dolgokat. Egyesek veszik a fáradságot, hogy elhelyezzenek egy átirányítást az új oldalra, de néha ez nem valósul meg. Guglival néha fel lehet lelni az átköltöztetett adatot, de ilyen esetben mindig kérdéses, hogy ez ugyan az az adat, vagy csak a semmit mondó neve ugyan az?

Változatok kezelése. Ha az adat látszólag eltérést tartalmaz a cikkben leírtakhoz képest, akkor kérdés, hogy ez egy új adat változat? Miért kellett megváltoztatni? Mit változtattak? Ha az adatokat verziókövetésre alkalmas helyen tették közzé, akkor nincs gond, de mi a helyzet a DropBox-os, Google Drive-os, stb megosztással?

Az adatstruktúra leírása. Hogyan épül fel? Ez legalább annyira fontos, mint maga az adat. Egy cikk nem célja és feladata, hogy a megírásához használt adat minden egyes részletét bemutassa. Ráadásul lehetnek olyan részei is ennek az adatnak, amit nem tartottak fontosnak a szerzők. Egy metaanalízishez ezek nélkülözhetetlenek.

Adat publikálóként

Fontos tudatában lenni, hogy ha közzéteszünk egy adatot, annak utóélete lesz. Olyan utóélete, aminek tőlünk függetlenül is működnie kell. A platform, ahol megosztottuk az adatot, meglesz öt év múlva is? Túl fogja élni a munkahely váltást? Nekünk például az egyik cikkünkhöz tartozott egy weboldal is, ami csak pár évet élt, miután a számítógép, ami kiszolgálta, kinyiffant, biztonsági másolat pedig nem volt.

A metaadatokat is publikáltuk? A programunkat le fogját tudni fordítani? Az adattáblák fejléce informatív? Nekünk lehet, hogy az, hiszen hónapokon keresztül azzal dolgoztunk, de egy új ember is képes ugyan úgy átlátni?

Így FAIR

A fenti problémák egy globális jelenség részei, ezért született meg a FAIR irányelv, ami segíthet nekünk, hogy jó adatmegosztási döntést hozzunk. Az itt bemutatott irányelvek mindegyikét tudtommal még soha senki nem volt képes teljesíteni. Nyilván az élet minden területére kiterjedő kontrolunk nincs, tehát a legjobb jószándék ellenére is kompromisszumokra kényszerülünk, amely befolyásolhatja egyik-másik irányelv megvalósulását. Információim szerint a legtöbb FAIR irányelvet a DOI valósítja meg, így innen hozom a legtöbb példát.

Megtalálható

Azért, hogy az adat megtalálható legyen, szükség van egy globális azonosítóra, amely egyértelműen behatárolja az adatot. A folyóiratoknál ez a DOI azonosító, ami biztosítja, hogy a sok, egyforma nevű koronavírusról szóló cikk közül ki tudjuk választani a minket érdeklőt. Az adathoz metaadatok is kell, hogy tartozzanak, amelyek részletesen leírják az adatot. Gyakorlatilag nincs megszabva, hogy a metaadatoknak mit kell tartalmazniuk. Cikkek esetén a cím, szerzők, absztrakt, folyóirat, stb. szokott lenni a metaadat. Nyilván egy szekvenálási adat megadásánál a legtöbb értelmét veszti. A metaadatoknak szintén indexeltnek, és kereshetőnek kell lennie.

Hozzáférhető

Nyilvánvaló, hogy ha az adatot megosztani akarjuk, akkor hozzáférhetőnek kell lennie. Itt igazából nem szabják meg, hogyan legyen hozzáférhető az adat, csak annyit mondanak, hogy nyílt protokollon kell alapulnia. Ez a protokoll lehet a TCP/IP, de ha az adatainkat postai úton érhetik el, az szintén nyílt protokollnak számít. De ami talán még ennél is fontosabb, hogy a metaadatoknak akkor is hozzáférhetőnek kell lennie, ha az eredeti adatot már törölték. Például ha egy cikket visszavontak, a DOI azonosító alapján az absztraktot továbbra is megnézhetjük.

Átjárható

Az adatok nem magányosan léteznek, hanem rendszert alkotnak, mint ahogy egy könyvtár is rendszert alkot a könyvekből. A rendszer szemlélet miatt az adatoknak hasonló szerkezetet kell mutatniuk, amit úgy fogalmaztak meg, hogy egységes nyelvet kell használniuk. Ha az egyik cikkből csak mondatok számát tartalmazza a metaadat, a másikból pedig a cikk MD5 hash kódját, akkor azokkal nem sokra megyünk. Fontos, hogy ha megosztunk valamit, akkor a felhasználónak ismerős legyen a mi adatunk is, ne kelljen dekódolni, mit is osztottunk meg. Itt kell megemlíteni azt is, hogy az adatnak tartalmaznia kell keresztreferenciákat. Cikk esetén ez az irodalomjegyzék, és ha a cikkek teljesen megfelelnének a FAIR elveknek, akkor csak a DOI azonosítókat tartalmaznának a 200-féle formázás helyett.

Újrahasználható

Ez az elv szoros kapcsolatban van az átjárhatósággal. A metaadatoknak relevánsnak kell lenniük az adott adattípusra, és egyértelműen jelezni kell, hogy milyen liszensz szerint használhatóak. Tehát az elvek nem zárják ki, hogy az adat közzétételét korlátozzuk. Ugyan így az adatok eredetét is tisztázni kell.

Az elvek nagy része logikus és azt gondolhatnánk, hogy egyértelműek. Az adatmegosztás a gyakorlatban mégsem így fest, ezért nem rossz, ha összefoglalják. Érdemes átgondolni, milyen volt az eddigi megoldásaink, és ha úgy ítéljük meg, hogy lehet mit javítani rajtuk, akkor tegyük meg.

Szólj hozzá!

Címkék: életmód bioinformatika

A.I.-val verébre

2022.07.13. 19:55 Travis.CG

A lányomnak vagy egy játéka, amiben egy nyolcszögletű lapon képeket kell keresni. A játék menete, hogy mindenki kap egy csomó lapot, majd egy lapot középre helyezünk. Ha a kezünkben lévő lapon olyan kép van, ami a középen megtalálható lapon is, akkor ledobhatjuk azt középre, és megint kezdődik a párkeresés. Az győz, akinek legelőször fogynak el a lapjai.

A játék során azon gondolkodtam, hogy nem alakulhat-e ki olyan eset, hogy senki nem tud rakni lapot. Azért, hogy ez ne következzen be, biztosítani kell, hogy legalább három lap (ha két játékossal és egy referencia lappal számolva) között legyen legalább egy közös kép.

Azután, ahogy az kutatóéknál lenni szokott, a játékot felváltotta a játék elemzése, aminek lányom egyáltalán nem örült, mert ilyenkor a feleségemmel elkezdünk elmélkedni, kutatási tervet készíteni, stb. A gyereknek meg elmagyarázzuk, hogy ez mennyire fontos neki, de ő valahogy ezt nem értékeli. A kérdés eldöntésére elhatároztam, hogy építek egy gráfot, ahol a csomópontok a lapok lesznek, az élek pedig a közös képet fogják reprezentálni.

Igazából az egész munka 1-2 óra alatt elkészült volna, ha fogom magam és leülök, hogy egyenként átnézzem a lapokat. Fél nap alatt meglettem volna, ha még Excelt is használok :-) De ha már képekkel dolgozunk, miért ne lehetne egy tanuló algoritmust rászabadítani, hogy nézze a képeket helyettem? Az időráfordítást tekintve ez egy elég rossz ötlet volt, tekintve, hogy már több, mint két hónapja ezen szenvedek.

A játékban 73 kép van és 73 lap, laponként 9 képpel. Először lefényképeztem a lapokat. Hogy tovább nehezítsem a saját dolgom, egy fényképen több lap is van. A lapokon különböző orientációban és nagyításban találhatóak a képek. A játék dobozának hátulján van egy felsorolás az összes képről, ezt szintén lefényképeztem, ez lett a referencia.

Gimp segítségével a referencia képeket egyforma méretre hoztam, és amennyire tudtam, a hátteret is egységesítettem. Eredményül lett 73 darab 178x140-es képem. Ezután elkezdtem építeni egy konvolúciós neurális hálót.

Ez a fajta neurális háló igen érdekes, mert konvolúciós kerneleket használnak, hogy a kép különböző jellemzőit megragadják. A konvolúció után a képből egy alacsonyabb felbontású reprezentáció lesz. Egymás után több rétegben is használhatunk konvolúciót, de az utolsó rétegnek egy összesítő rétegnek kell lennie. Ez fogja összegyűjteni az eredményeket.

Ezek a neurális hálók igen bonyolult felépítésűek, de szerencsére Kerasban nagyon egyszerűen használhatjuk őket. Építőkockánként rakhatjuk össze a hálózatot. Mivel nem vagyok jártas, hogy milyen topológiájú hálózatot érdemes használni, ezért ezt vettem alapul. Ez egy jelzőtábla felismerő program akart lenni, ezt alakítottam a saját igényeimnek.

A program lényege az volt, hogy kevés képpel etetjük meg a rendszert, amelyik a kapott képeket véletlenszerűen elforgatja, tükrözi és nagyítja, hogy megnövelje a tanuló adatok mennyiségét. Ezzel biztosítva, hogy a lapokon is felismerje a képeket bármilyen helyzetben is vannak.

Az első tanítás katasztrofális volt. Habár a rendszer azt állította magáról, hogy 98%-ban pontos, a valóságban a tehénről azt mondta, hogy zöldalma. Sőt, mindenről azt állította, hogy zöldalma. Az első hiba, amit elkövettem, hogy nem volt valódi validációs adat, ezért azt is generáltattam, a tanuló adatokhoz hasonlóan. Itt látszott rögtön, hogy hiába 98%-os a rendszer, ha igazi teszt adattal etettem meg, akkor 16%-ban volt sikeres.

Elkezdtem játszani a paraméterekkel. Beadtam neki 20 ezer képet kategóriánként, de a hatékonyság nem növekedett. Próbáltam a modellt egyszerűsíteni, de ezek a kísérleteim is kudarcot vallottak. Úgy döntöttem, keresek egy példát, amihez adat is van. Sajnos a fenti tutorial nem az igazi, mert emailt, telefonszámot, meg talán még vérmintát is kér, hogy végig lehessen csinálni. Ezért másikat kerestem.

Végigcsináltam egy egyszerű példaprogramot, ami igaz, csak bináris klasszifikációt csinált (elkülönítette a repülőket és a személyautókat), és az meglepően jól működött, pedig csak 200 kép volt, és a tanítási idő sem volt vészes. Közben begépeltem számtalan más példaprogramot is, amik pedig egyszerűen nem működtek. Dobálták össze-vissza a hibákat. Egy részük csak más verziószámú Tensorflow-t igényelt, de elég sok valóban hibás kód volt. Többek között az első is, ami alapján a saját progimat összehoztam.

A másik dolog, amit nem értettem, hogy bár két GPU van a gépemben, összesen 8G memóriával, mégis rendszeresen kaptam a figyelmeztetéseket, hogy a videokártya memóriája mindjárt meg fog telni. Akár mennyi képpel is tanítottam a hálózatot, a GPU memóriája 95-98%-ban tele volt.

A tutorial után visszatértem az előző kódhoz. Egy hirtelen ötlettől vezérelve kiírattam a képeket, amelyeket generál a tanításhoz. Kiderült, hogy a kék és vörös csatárnákat megcserélte. Nem csoda, hogy képtelen bármit is megtanulni, hiszen nem ugyan az a két adatsor. Olyan, mintha más lenne a lecke és másból kellene felelni. A javítás után egy kicsit jobb lett a helyzet, de még így is messze volt a használhatótól.

Néha a számok alapján már majdnem úgy tűnt, hogy elértem a célom, de ha egy olyan képet adtam be neki, amit korábban nem látott, akkor látszott, hogy a rendszerem nem tanult semmit. Egyre biztosabb voltam, hogy nekem egy sokkal egyszerűbb modellre van szükségem. Végül találtam egyet. A leírásban 500 lépésben tanították a modellt, ami bődületesen soknak tűnt, de úgy döntöttem, kipróbálom. Ezt a hálót is a saját igényeimnek megfelelően átalakítottam, majd elkezdtem tanítani. Ez hét órát vett igénybe. A tanító kód itt van:

from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPool2D
from keras.layers import Flatten
from keras.layers import Dropout
from keras.layers import Dense
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator

NUM_EPOCHS = 500

class SmallNet:
  def build(width, height, depth, classes):
    model = Sequential()
    model.add(Conv2D(32,3,padding="same", activation="relu", input_shape=    (height, width, depth)))
    model.add(MaxPool2D())
    model.add(Conv2D(32,3,padding="same",activation="relu"))
    model.add(MaxPool2D())
    model.add(Conv2D(64,3,padding="same", activation="relu"))
    model.add(MaxPool2D())
    model.add(Dropout(0.4))
    model.add(Flatten())
    model.add(Dense(128,activation="relu"))
    model.add(Dense(classes, activation="softmax"))
  return model

train_datagen = ImageDataGenerator(rescale = 1.0 / 255, zoom_range=0.2, horizontal_flip = True, rotation_range=180)

test_datagen = ImageDataGenerator(rescale = 1.0 / 255)

train_generator = train_datagen.flow_from_directory("test2", target_size = (140,178), batch_size = 64, class_mode = 'categorical')

test_generator = test_datagen.flow_from_directory("test2", target_size = (140,178), batch_size = 64, class_mode = 'categorical')

model = SmallNet.build(width=178, height=140, depth=3, classes=73)
opt = Adam(lr=0.000001)

model.compile(loss="categorical_crossentropy", optimizer=opt,metrics=["accuracy"])

model.fit_generator(train_generator, steps_per_epoch = 14000 // 64, epochs=NUM_EPOCHS, validation_data = test_generator, validation_steps = 1000 // 64)

model.save("./imagesearchmodel")

Ez volt az első eset, hogy a képeket jól azonosította be. Sajnos legrosszabb esetben 24%-ban volt biztos a helyes megoldásban, de legalább helyes volt a megoldás. Még a kivit sem nézte zöldalmának. Végezetül beadtam neki a saját arcképemet, mire a rendszer megállapította, hogy ez egy banán. Remélem ez nem egy kritika az algoritmus részéről.

 

Szólj hozzá!

Címkék: machine learning

Készítsünk release-t játszva

2022.07.02. 20:58 Travis.CG

Érdekes módon a játék motorokat előszeretettel használnak demók elkészítésére, a machinimák mégsem terjedtek el a wild kategóriában. Mindez azért is furcsa, mert a demoscene-ben sok játékfejlesztő van, sőt külön kategória van saját készítésű játékoknak. Arról nem is beszélve, hogy régen a partikon volt lan parti is.

A talányra két hipotézisem van. Az egyik, hogy a demoscene-n belül viszonylag kevés a gamer (elvégre, ha játszol, nem tudsz release-t készíteni). A másik, hogy magára a játékosokra kicsit ferde szemmel néznek az igazi scenerek, mert nem alkotók, csupán fogyasztók. Akárhogy is történt, az biztos, hogy szép lassan egyre kevésbé látták szívesen a gamereket a demópartikon.

Talán ennek az ellentétnek is köszönhető, hogy amikor ehhez a bejegyzéshez készítettem némi kutatást (azért nem estem a buzgóság csapdájába), egyetlen machinimát sem találtam, amit demópartin mutattak volna be. Ettől függetlenül a machinima remek kifejezési eszköz lehet olyanoknak, akiknek nincs se programozói tudásuk, sem profi videófelszerelésük. Aki viszont tud programozni, rajzolni, az akár saját modokat is készíthet a játékhoz,

Lehet, ennek most vége, mert az idei Assemblyn két olyan kategória is lesz, ahol nem lehetőség, de egyenesen követelmény, hogy játékprogrammal készüljön. Az egyik az In-game photo, a másik az In-game short film.

Ha valaki szeretne ezekre a compókra készíteni valamit, az megteheti, hogy a játékát felveszi egy rögzítő programmal, majd kicsit megvágja és kész. Azomban vannak olyan játékok is, ahol beépített eszközök segítik ezen filmek elkészültét.

Ezek az eszközök annyival adnak többet a kezünkbe, hogy elrugaszkodhatunk a játékmenet által rögzített kameraállásoktól, idővonaltól, sőt, akár a képi világtól is. Például a GTA V-ben kapunk egy teljes videószerkesztő felületet. Mivel ezt ismerem a legjobban, ezért ezt mutatom be.

Ennek a szerkesztőnek az elődje már a GTA IV-ben is megvolt, de pozitív fejlesztésen esett át. Mielőtt nekilátnánk bemutatni mit is tud, nem árt tudni, hogy van néhány limitáció. Először is, a játékos halálával megáll a klipp. A második, hogy a kamera nem távolodhat el egy bizonyos távolságra a játékostól. Egyszerre csak egy karaktert tudunk irányítani (bár ez kikerülhető, ha vannak online barátaink.)

Alapvetően két módszer van klippek készítésére. Az első az úgynevezett Directore Mode. Ez olyan, mint az egyjátékos mód, de több szabadságot ad a kezünkbe. Miután a menüből kiválasztottuk ezt a módot, a filmstúdióba kerülünk, ahol kiválaszthatjuk a szereplőt, akit irányítani fogunk. Ez akár egy állat is lehet. Az elérhető szereplők száma függ attól, mennyire haladtunk előre a játékkal.

A kiválasztott szereplőt aztán irányíthatjuk a játéktérben. Mivel itt nincsenek küldetések, ezért nem kell aggódni, hogy telefonon zaklatnak más karakterek. Az interaktív menü (alapértelmezetten M) segítségével új elemeket helyezhetünk a városba. Nagy ugratót, utat, roncsot, stb. Felturbózhatjuk a helyszínt. Járműveket is a közelünkbe varázsolhatunk, valamit rávehetjük a szereplőt, hogy beszéljen, tegyen bizonyos mozdulatokat. (Azért ne számítsunk sok mindenre. A káromkodásokon kívül "Whassap?", "Hey" és társai jutnak csak nekünk.)

Az F1 gomb segítségével felvehetjük a jelenetet. Egyes esetekben, ha a játék által generált környezet túl összetett, sok elemet tartalmaz, előfordulhat, hogy a program jelzi, az elmentett klippben nem lehet majd kamerákat mozgatni.

A másik módszer, hogy az online térben készítjük el a filmet. Ennek előnye, hogy több színészünk lehet, de a kinézetünk nem fog változni, vagy legalábbis nem drasztikusan. Csak azokat az járműveket és tárgyakat használhatjuk, amelyeket megvásároltunk a karakterünkkel, viszont ezek száma sokkal nagyobb, mint amit az offline játék a rendelkezésünkre bocsát, plusz bármikor jöhet egy Oppressoros griefer és szétlőheti a forgatást. (bár invite only játéktér ezektől megvéd.)

Amennyiben összeszedtük a klippeket, kezdődhet a második lépés, a szerkesztés. Be kell lépni a Rockstar Editorba, ahol kissé nyakatekert módon össze is fűzhetjük a klippeket, de ezt inkább profibb programokra bízzuk. A legjobb, ha minden egyes klippen csak a kamera mozgásokat és a filtereket állítjuk be. Utána rögtön mentsük ki videóba. Az exportált videók az AppData\Local\Rockstar Games\GTA V\videos\rendered könyvtárban lesznek.

A kimentett klippeket pedig egy rendes videószerkesztővel rakjuk össze, mert a zenét, átmeneteket könnyebben megcsináljuk egy olyan programmal, amit erre terveztek.

Természetesen ezek csak a gyári képességek. A modderek már régóta feszegetik a GTA V határait, ezért ha olyan szereplőt akarunk, akit nem ajánl fel a játék, van rá mód, hogy szerepeltessük. Az Assembly szabályai is lehetővé teszik, hogy modokat használjunk, de csak olyat, ami publikusan elérhető. Viszont a modok egyfajta szürke zóna. Ha online használjuk őket, megkockáztatjuk, hogy kitiltanak minket (bár amennyi modderrel már találkoztam, ez biztos nem sűrűn fordul elő :-) )

Végezetül álljon itt néhány videó, ami bemutatja, hogy egy kellően elszánt ember mire képes ezzel a játékkal:

Szólj hozzá!

Címkék: demoscene

Szimulálj!

2022.06.24. 23:32 Travis.CG

Az adatelemzés mellett most több programot is meg kell írnom, amihez nem árt, ha folyamatos kontroll alatt áll a kód, hogy minden egyes módosítás után tudjam, nem szúrtam.

Gondoltam, nincs is jobb, mint valódi adatokkal megetetni a programot és a fejlesztés alatt folyamatosan monitorozni a visszaadott válaszokat. Pár órát rászántam a keresésre, de a végére valahogy egyik megtalált adat sem nyerte el a tetszésemet. Az egyik túl nagy volt, amin sokáig futna a program. A másik nem tartalmazott elég biztos eredményekt.

Kissé elkeseredtem. Egyre több adatot töltünk fel a különböző szekvencia tárhelyekre, de mégis ott tartanánk, hogy nincs megfelelő adat? Vagy egyszerűen csak lustává váltam, és túl nagyok lettek az elvárásaim? A nagy filozofálásnak az lett a vége, hogy eldöntöttem, nincs is szükségem valódi adatokra! Egy számítógéppel bármit le tudok generálni. Egy számítógép képes világokat teremteni. Olyanokat is, amelyek nem létezhetnek. Kell egy világ, ahol hibamentes Illumina readek léteznek? Egy kis gépelés, és már kész is.

Sőt, több, párhuzamos világot is teremthetek, ahol egy bizonyos paraméter egy sorozatot alkot. Tehát az előbbi példánál maradva a readek hibaszázalékát változtatva több adatot is készíthetek.

Ezen fellelkesülve nekiláttam egy VCF generáló programot írni. Azért, hogy pontosan tudjam, mit is generálok, és hova, a VCF fájlt saját tag-ekkel láttam el. Ezekkel tudtam ellenőrizni, hogy a másik program megtalálja-e azokat a jellemzőket, amelyeket a generáló program elhelyezett a fájlban.

A saját szimulátor jó móka, de nem szabad elfelejteni, hogy csak annyira tökéletes, amennyire mi ismerjük a jelenséget. A hiányos ismeretek visszaüthetnek, ha az elemző programot úgy írom meg, hogy csak generált adatokon tesztelem. Nem véletlen, hogy a különböző folyóiratok is a generált adatok mellett valódiakon is bemutatják az algoritmusokat.

Szólj hozzá!

Címkék: programozás bioinformatika

QBParty 2022

2022.06.19. 13:03 Travis.CG

A demót két nappal a határidő előtt befejeztem. Még arra is jutott időm, hogy a fordító figyelmeztetéseit is eltűntessem. Sajnos túl magabiztossá váltam a kezdeti sikerek miatt.

Mivel napok óta mondogatom otthon, hogy demópartira megyek, az indulás reggelén a lányomnak eszébe jutott, mennyire szereti a .the .productot, ezért teljes hangeről azt hallgatta. Gondoltam jó kis bemelegítés lesz. Lassan pakoltam össze, hogy biztosan ne felejtsek ki semmit. Többször végig gondoltam, mire is lesz szükségem, amitől még biztosabb lettem benne, hogy minden simán fog menni.

Nagyjából 10 perccel indulás előtt a tökéletesség buborékján repedések keletkeztem. A laptopon is meg akartam nézni a demót, és ekkor szembesültem vele, hogy ami az NVidia kártyán tökéletesen ment, az Intel HD-n nem egészen úgy fut. Úgy is mondhatnám sehogy sem fut. Kijavítani már nem volt idő, ezért mindent bepakoltam és útnak indultam.

A vonatot majdnem lekéstem, de "szerencsére" késve indult, ezért még várhattam is 15 percet. A vonaton release-t heggesztettem, de nem értem el sikereket, ráadásul netes segítség nélkül a hatékonyságom is felére csökkent. Sülysápra a tervezett érkezésnél fél órával később értem be. Reménykedtem benne, hogy a release leadás határidejét nem veszik olyan szigorúan. A partira nem tudtam bemenni, mert zárva voltak az ajtók. Egy táblát láttam csak: Zárt körű rendezvény. Azért volt annyi helyismeretem, hogy tudjam, hol a hátsó bejárat, ezért onnan settenkedtem be. (Később megtudtam, csak egy ember vitte a jegypénztárt, váltás nélkül és épp el kellett mennie, ezért zárta be az ajtót.)

Feltöltöttem a fotót, majd további egy órán keresztül próbáltam kitalálni, mi lehet a hiba a demóval. A végére annyit elértem, hogy a kód lefutott, úgy futott le, ahogy szerettem volna, viszont egy shader validálási lépés szűntelenül nyekerett, hogy különböző típusú textúrák ugyan azt az azonosítót használják. Gondoltam, majd a veterán demósok megsegítenek, de akiket megkérdeztem, azok sem találtak semmi hibát a kódomban. Közben egyesületi ügyeket is intéztünk.

Három óra magasságában indult az első compó: a paprikáskrumpli. A szervezők főztek egy nagyon finom paprikás krumplit, amit természetesen meg is kóstoltam. Az első igazi compó a fotó volt, nyolc indulóval. Ha már fotóra is csak nyolc képet adnak be, akkor lehet sejteni, hogy nem lesz nagy dömping a többi kategóriában sem.

Bár a tavalyi partiról azt írtam, hogy olyan, mint egy ébredező medve, azért még most is félálomban volt. Legjobban Spenót fogalmazta meg, hogy annyira elszokott az emberektől, hogy délután már elfáradt a sok beszélgetésben. Talán emiatt kissé álmatag hangulat miatt sem fogom a releaseket értékelni. Bár azért Viti legújabb lézershow-ja megérdemli, hogy megemlítsem. A vektoros ábrák mellett bitkép-szerű látvány is volt. Ha így folytatja, a végén még épít egy R2D2-t Lea hercegnő üzenetével.

Az udvaron Fun Compó néven olyan versenyek voltak, amik a józanul kínosnak tűntek. Például csipeszeket kellett arcra pakolni és az győzött, aki a legtöbbet tudta magára aggatni. A vizipisztoly csata pedig olyan volt, mint egy gettó Mátrix.

Később volt tombola is, ahol kegyetlem mennyiségű nyalókát és egéralátétet lehetett nyerni (voltak más nyeremények is, de azok nem maradtak meg úgy, mint ez a kettő). A másfél órás sorsolás alatt a nézők folyamatosan csökkenő lelkesedéssel tapsolták meg a nyerteseket. Csak akkor tért vissza a hallgatóságba az élet, ha nő ment ki a nyereményért, akkor valami miatt az éljenzés hangereje megnégyszereződött.

Az intrók közé valahogy belekevetredett a demóm, mire egyes alkohol gőzös nézők azt hitték, hogy 116 fotót sűrítettem 1k-ba. Nagy volt a csalódásuk, amikor megtudták, hogy mégsem. A demó egyébként az utolsó helyen végzett, de a többi indulót látva ott is volt a helye.

A parti nagyon jól sikerült, egyik szervezési hiba sem volt szerintem végzetes, bár a szervezőket nagyon megviselte a mostani party. Ebből én nem vettem észre semmit. Nekem annak a felismerése volt a parti, hogy megvan bennem az elhatározás és akarat, hogy további demókat készítsek. Még akkor is, ha az utolsó helyen végeznek.

Szólj hozzá!

Címkék: demoscene

A láthatatlan fotózása

2022.06.11. 09:09 Travis.CG

A fotózás azért is olyan jó hobbi, mert bármikor elverhetünk rá eszméletlen összegeket. Van egy géped? Kell objektív. Van objektíved? Kell még egy objektív, majd még egy szűrő, esetleg egy második fényképezőgép (nehogy már az objektív cserével értékes időt veszítsél), memória kártya, stb. Ha pedig valami csoda folytán mindegyik bigyó megvan, akkor jöhet az elvault rendszer cseréje.

Annak idején azért is döntöttem a Canon mellett, mert úgy tűnt, a cég nem cserélgeti sűrűn az objektív foglalatokat a gépeken. Majdnem 10 évembe került, mire minden lehetséges helyzetre sikerült megfelelő objektívet szerezni, erre bejöttek a MILC-ek. Egy ideig néztem magam elé, mint akiket egy felsőbb hatalom átvert, majd úgy döntöttem a középső ujjamat mutatom ennek a fene nagy megállíthatatlan fejlődésnek.

Miközben mindenki váltott Sony-ra és adta el a régi Canon-os cumókat, én szépen begyűjtöttem azt, amiről korábban csak álmodthattam. Így került hozzám egy Canon 5D mark II, egykoron felső kategóriás gép, de most olcsóbban hozzájutottam, mint egy új, belépő szintű tükörreflexeshez. Ráadásul ennek a gépnek volt egy plusz hozadéke: kiszerelték belőle az összes szűrőt. Tehát nem csak full frame, hanem full spektrum is. Lehet vele infrában és UV tartományban is fotózni. Merthát miért csak a látható tartományban fotózzunk?

Az elején kicsit ódzkodtam tőle, mert már volt benne 150 ezer expo, ami a gyári limit. Az eladó nyilván azt mondta, hogy "ennél háromszor többet is bír", ráadásul meg is volt bontva a konverzió miatt, ezért félő, hogy bemondja az unalmast, végül mégis győzött az irracionalitás és megvettem.

Az első teszt természetesen a TV távirányítója volt. Még a gyári fényképezőgépek szűrői sem képesek teljesen megakadályozni, hogy az infravörös fény az érzékelőre jusson. Halvány pislogásként látni fogjuk. Itt nem. Itt úgy világított, mint egy lámpa. (Gyakorlatilag a távvezérlőt vakunak lehet használni tök sötétben.) A belső szűrők eltávolítása hihetetlen fényerő növekedést produkált. Egy teliholdas éjszakán olyan képet lehet vele készíteni, mintha nappal lenne.

ejszakai.jpg

Az eladó azt mondta, hogy manuális fehéregyensúly állítással akár normál képet is lehet vele készíteni. Nos, való igaz, hogy lehet csökkenteni a vörös árnyalatot, de a kép inkább olyan lesz, mint egy öregedésnek indult színes fotó. A szaturáció nem lesz az igazi. Akármennyit is játszottam a nyers képekkel Gimp-ben, valahogy soha nem voltam elégedett az eredménnyel.

Az igazi kaland viszont akkor kezdődött, amikor megjöttek hozzá a speciális szűrők, amelyek csak bizonyos hullámhossz tartományt engednek át. Az első kiszűri az UV-t és az infrát is, vagyis a fehéregyensúly állítása nélkül is lehet megszokott képeket készíteni. Az így készült képeket összehasonlítottam a 350D-vel készült képekkel, és azt kell mondjam, hidegebbek. Az utólagos színkorrekciót nem lehet megúszni vele.

A második szűrő csak az UV-t engedi át. Emiatt a keresőből történő fényképezést el lehet felejteni. Nem csak azért, mert a veszélyes sugarakat a szemnünkbe juttatja, hanem azért is, mert látható fény híjján csak feketeséget lehet látni. Be kell kapcsolni az élő képet, ha fókuszálni akarunk.

A szűrő önmagában mégsem elég. Az UV fotósok nagy bánatára a legtöbb modern objektív tartalmaz UV elnyelő réteget. Ezért hatalmas vadászat van mindenféle világháborús lencsék után, ahol még erre nem fordítottak elegendő figyelmet. Én egy jó öreg 40mm-es objektívvel használtam, mert azt olvastam, ez még elég jó választás, ha nem akarunk adapterekkel játszani. UV-ban egyébként főleg virágokat érdemes fotózni.

virag.jpg

szulak.jpg

A második képen folyandár szulák van. Igen, az a semmike kis gaz UV-ban elég érdekesen néz ki.

Végezetül ott van az infra tartomány, amivel olyan képek készülhetnek, mintha új metafizikai síkokat akarnánk feltérképezni. Szóval aki le akar menni a Homály első szintjére, egy 850nm-es szűrővel megteheti. A színek itt már eltűnnek. Viszont sokkal izgalmasabb az infrafotó, ha a látható fény közelében fényképezünk. Itt lesznek színek, és egy egyszerű színcserével meglepő képek születnek. A fák levelei (illetve minden fotoszintetizáló élőlény) ugyanis fény hatására gerjesztett állapotba kerül és az infravörös tartományban világít. Ezért lesznek a növények fehérek.

infra.jpg

Ezért nagyon kíváncsi vagyok, milyen képek készülnének késő ősszel, amikor a klorofil kezd lebomlani. A fenti kép igazából nem sikerült jól, valószínűleg megint a fehéregyensúllyal lehetett gond. Ha jól csináljuk, akkor ugyanis az ég kék lesz, nem ilyen ronda vörös. Doomba jó lenne háttérképnek.

 

Szólj hozzá!

Címkék: életmód

Textúra tömbök

2022.05.18. 10:02 Travis.CG

Elkezdtem írni a QBParty-ra a demót. Egy régi ötletet valósítok meg, aminek a lényege, hogy egy csomó fényképet felhasználva animációt készítek. Az ötlet nem új keletű, például a 2003-as Heart Shaped Box is ezen alapult. A különbség az lenne, hogy míg ott a képek időben egymás után jöttek fel, nálam egy időpillanatban több kép egyszerre lenne látható, majd ezeket különböző módon kombinálnám, ahogy egy grafikus programban a rétegeket szokták.

A képek keverésére programozástechnikai szempontból két módszert használhatunk. Az egyikben a CPU-n keverjük össze a pixel adatokat eggyé, majd ezt adjuk át a fragment shadernek textúraként, vagy mindegyik képet betöltjük a shaderbe, és ott összegezzük az információt. Az első módszer egyszerű, csak lassú. A másodikban viszont a GPU-n kombináljuk a képeket, ami gyorsabb, de a megvalósítása nem egyszerű. Természetesen a második megoldást fogom választani. Azonban, mint látni fogjuk, itt is több lehetőségünk van.

Eddig a demóimban a shaderekben a textúrákra egyszerű sampler2D típusú változókként hivatkoztam. Tehát a shader deklarációs részében ilyen sorok szerepeltek:

uniform sampler2D img;
uniform sampler2D mask;

Mivel eddig egy shaderen belül kevés textúrával játszottam, nem is volt szükségem másra. Most viszont 116 textúra egyidejű kezelésére lenne szükségem. Száztizenhatszor beírni, hogy uniform sampler2D még büntetésnek sem utolsó, de nincs is rá szükség, mert használhatunk tömböket.

uniform sampler2D img[116];

 Ez a része egyszerű. A bonyolult, hogy miként mondjuk meg a shadernek, hogy hol találja az adatokat? CPU oldalon a következő kódra van szükség.

GLint starids[116];
for(int i = 0; i  < 116; i++){
  glActiveTexture(GL_TEXTURE0 + i);
  glBindTexture(GL_TEXTURE_2D, texid[i]);
  starids[i] = i;
}
GLint loc = glGetUniformLocation(prgid, "img");
glUniform1iv(loc, 116, starids);

Mennyi textúrát vihetünk át? Ez a GPU függvénye, de lekérdezhetjük a számát a GL_MAX_COMBINED_TEXTURE_IMAGE_UNIT segítségével. Nálam ez 192, szóval a 116-al még benne vagyok a limitben. De ez nem jelenti azt, hogy ezt mind korlátlanul fel is használhatom. A fragment shader ennek a töredékét tudja csak használni. A GL_MAX_TEXTURE_IMAGE_UNIT mutatja meg ezt a számot, ami már csak 32 az én esetemben. (Bár meg kell jegyezni, az NVidia kártyák liberálisabbak, ott következmények nélkül használhattam mind a 116 textúrát, igaz elég lassú lett a végére. Mikor egy Intel UHD 620-as laptopon futtattam ugyan azt a kódot, a hátár átlépése után szabványos hibaüzenetet kaptam.) De még ezt a 32-t sem használhatom tetszőleges programkörnyezetben! Egyes (régebbi) videokártyák nem engedik, hogy cikluson belül használjuk őket. Szerencsére ez nálam nem gond.

De 32 textúra még mindig nem 116. Persze lehet több menetben is renderelni. Először 32 textúrát feldolgozok, majd az eredményt egy másik texturába mentem. Ezt megismétlem pár alkalommal, majd végső lépésben az előzőleg létrehozott textúrákat kombinálom. Ez nyakatekert, lassú, és értelmetlen, különösen, hogy az OpenGL biztosít egy szokatlan 3D textúrát, ahol az egyes rétegek nem keverednek. Ez a tömbtextúra (array texture).

Ez annyival más, mint az előzőleg használt tömb, ahol 32 volt a limit, hogy ott igazából csak az azonosítók voltak tömbbe rendezve. Itt viszont az adatok is, tehát nem váltunk a textúrák között, hanem egy textúrán belül lépkedünk. Akár 2048 textúrát is összefűzhetünk ily módon egy OpenGL 4.5 képes kártyán. Lássuk, hogyan is készül.

glGenTextures(1, &texid);
glBindTexture(GL_TEXTURE_2D_ARRAY, texid);
glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, GL_RGBA8, width, height, maxindex);
for(i = 0; i < 116; i++){
  image = load_from_file(...);
  glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, width, height, 1, GL_RGB, GL_UNSIGNED_BYTE, image);
  free(image);
}

Mint látható, csak egy textúra készült, egyetlen azonosítóval. Az egyes rétegeket a glTexSubImage3D-vel töltöttem fel. A fragment shaderben a következő módon kell használni:

uniform sampler2DArray image;
...
FragColor = texture(image, vec3(texcoord, level));

Tehát a koordináta három dimenziós lett, kiegészült a tömbindex-el. A módszerrel gond nélkül használhattam az összes textúrát, ráadásul sokkal gyorsabban.

Szólj hozzá!

Címkék: programozás demoscene opengl

Minek vegyek körvakut?

2022.05.09. 22:59 Travis.CG

Azt hiszem, senki nem nevezheti magát csináld-magad fotósnak, ha nem készít saját kezűleg egy körvakut. Eszméletlen mennyiségű különböző megoldás létezik. Kezdve a fényalagút módszertől egészen a LED lámpa gyilkolásig. Elhatároztam, hogy én külön utat fogok járni.

Először is be kellett szerezni a legdrágább alapanyagot, a LEDeket. Egy méter LED szalagot vettem, mert rövidebbet nem akartak eladni. Egy ezrest kellett kipengetni érte. Ha már úgyis villamossági boltban voltam, vettem vezetéket is. Mikor a projektet kezdtem, még nem volt annyi szétszerelt elektromos játék a szekrényembe, mint most, ezért kénytelen voltam a szép vékony vezeték helyett egy telefonkábelt venni, mert csak ez volt az üzletben. Akkor már egy kapcsolót is hozzácsaptam a csomaghoz.

A körvaku váza egy szétbontott merevlemezből a műanyag félkör alakú alkatrészek voltak, amelyek elválasztották az adat tároló korongokat. Egyik végükön fülek voltak, a másik végükön egy lyuk. A lyukakat összecsavaroztam, a két fület egy rugóval fogtam össze, amit a bigyóim között találtam.

A vázra ráragasztottam a LED szalagból levágott darabokat, majd a végeket a vezetékekkel összeforrasztottam. A tápegységből átalakított labortáppal ki is próbáltam.

korvaku1.jpg

Természetesen az első verzión a polaritásokat elrontottam, ezért nem világít minden egység. Némi utómunka után már mind a 12 világított. Még szerencse, hogy ezeket a LED szalagokat bolondbiztosra tervezték, mert még ez sem okozott kárt benne.

Utána jött a neheze, ugyanis szükségem volt áramforrásra. Már a szalag megvásárlásánál próbáltam alkudozni az eladóval, hogy olyat adjon, amelyiknek nem kell 12V, de nagyon furcsán nézett rám (ez van, ha az ember zéró tudással nekilát vásárolgatni). Végül úgy döntöttem, hogy majd később aggódok az áramellátás miatt, és megvettem a szalagot.

Egy másik boltban, szintén előzetes utánaolvasás nélkül, kértem 12V-os elemet. Nem tudtam, hogy van-e ilyen, de kiderült, hogy bizonyos riasztók 12V-os elemmel mennek. Az elem viszont olyan kicsi méretű volt, hogy attól féltem, nem lesz elég nafta benne, hogy 2 percnél tovább világítson. Végül próba-szerencse alapon hármat vettem, és párhuzamosan kötöttem őket.

korvaku2.jpg

Működött! Egy használt monitorból (vagy rizspapírból) még a diffúzort is lehetne rakni rá, hogy egy kis szórt fényt kapjak, de így is elégedett voltam a munkával. Lássunk egy tesztet.

Vaku nélkül:

noflash.jpg

Vakuval:

flash.jpg

A kép természetes napfény mellett készült, itt a vaku szerepe elhanyagolható volt. A záridő 1/160-ról 1/200-ra csökkenhetett 13-as rekesznél, ami nem egy nagy különbség. Rosszabb fényviszonyok mellett biztos nagyobb hasznát veszem majd.

Szólj hozzá!

Címkék: barkácsolás

Új élet a régi tápegységnek

2022.05.06. 22:15 Travis.CG

Habár a gépem régi tápegysége már nem tud ellátni egy számítógépet árammal, azért még nem teljesen használhatatlan. Arra gondoltam, jó lenne egyfajta labortápnak. Moduláris volta miatt könnyen lehetne használni több feladatra is, csak építeni kellene neki átalakítókat.

Azt tudtam, hogy az alaplapra csatlakozó 24 pin-es konnektor zöld vezetékét kell összekötni a fekete vezetékkel, és akkor bekapcsol. Egy dróttal ki is próbáltam, és örömmel láttam, hogy a hűtő ventillátor felpörög. Első nekifutásra le is vágtam a csatlakozót, kidobtam a kukába, majd összeforrasztottam a két vezetéket és vártam a csodát.

A csoda viszont elmaradt. A tápegység meg sem nyikkant. Én meg nem értettem, mi változott meg? Az előbb még működött! Kénytelen voltam kukázni egyet, és megnézni a csatlakozót még egyszer. Észrevettem, hogy néhány esetben két vezeték megy egy végpontba. Egy vastagabb és egy vékonyabb, mindkettő ugyan olyan színű.

tapveg.jpg

Bizonyára ez lehet a ludas! Kikerestem a vékonyabb vezetékeket, majd azokat is összeforrasztottam a vastagabb párjukkal. Most már ment! Először utána kellett volna olvasnom a modernebb tápegységeknek. Utólag meg is tettem, amiből megtudtam, hogy még egy dolog visszavan. Kell némi terhelést is adni neki, hogy leadja a megfelelő feszültséget.

Az első funkciója a telefon töltés lett. Az 5V-os ágra ráforrasztottam egy hibás telefon töltő microUSB csatlakozóját. A családban sajnos szaporodnak a hibás telefon töltők, de így azokat sem kell kidobni.

telotoltes.jpg

Elméletileg laptopot is lehetne tölteni, mert a legtöbb 12V-ot igényel. Mivel nincs hibás laptop töltőm, jót meg nem akartam szétbarmolni, ezért ezzel nem foglalkoztam, de a lehetőség megvan rá. Helyette két krokodil csipeszt illesztettem a VGA kártya 12 voltos ágára, mert ez egy olyan feszültség, amire gyakran van szükségem.

Egy diavetítő volt a második áldozat, amit sikeresen működtettem vele. A diavetítő egyszer csak megadta magát, és mivel nem találtam benne érintkezési hibát, a trafójára gyanakodtam. Mivel az égőnek csak 12V kellett, a krokodil csipeszes megoldásnak köszönhetően működtetni tudtam. (Az csak egy plusz poén, hogy a trafó hibátlan volt, a gondot egy oxidálódott vezető lemez okozta, ami úgy megnővelte az ellenállást, hogy a vetítő lámpája nem világított, de a multiméter nem jelzett érintkezési hibát.)

A jövőbeni terveim egyike, hogy két tűcsatlakozót is kap majd az egyik ág, hogy a próbapanelem is el tudjam látni árammal. Lehetne még USB A aljzatot is szerelni rá, hogy még több eszközt kapcsolhassak rá.

Az Amiga 1200-es meghajtására már eddig is voltak PC tápegység módosítások, ha tudnék szerezni egy Amiga csatlakozót, akkor azt is rá lehetne szerelni.

Az igazi viszont az lehetne, ha a moduláris kábeleket készíthetnék. Úgy értem, ahogy a moduláris tápegységhez is van merevlemez tápkábelek vagy VGA adapter kábelek, úgy én is készíthetnék USB-s kábeleket, krokodilcsipeszes kábeleket és mindig azt csatlakoztatnám rá, amire épp szükségem van.

Szólj hozzá!

Címkék: barkácsolás

Revision 2022, pályára állunk

2022.05.01. 22:32 Travis.CG

Mivel idén is az online térbe került a Revision, a szervezők csavartak egyet az eseményen, és helyi szatellit partik szervezésére bíztatták az embereket, hogy a semminél több legyen a party feeling. Magyarországon két helyszínen szerveztek buli pótlékot: Budapesten a Vault 51-ben és Gombán. Akit érdekel, itt elolvashatja Vickey élménybeszámolóját.

Idén nem készültem semmivel. A magyar indulókat Gargaj gyűjtötte össze ebben a cikkben.

Zenék

Gargaj első lett procedurális zenében. Ezt leszámítva számomra az összes zenei kompó teljesen felejtős volt. Próbáltam többször visszahallgatni őket, hátha valamelyik mégis megragad bennem, de nem volt eredménye. Furcsa módon még az oldscool zenék voltak azok, amelyek a legkevésbé borítottak ki, pedig hosszú távon nehezen szoktam elviselni a sok pittyegést.

Grafikák

Bármelyik grafikai kompót is néztem, egyik sem tetszett. A 3D rém primitív volt. A sok animált GIF unalmas. A fotók egy-két érdekes képtől eltekintve sablonosak voltak. Két fotó ráadásul jobban illett volna a grafikai kompókba, mert kizártnak tartom, hogy azokat a lézer-szerű vonalakat számítógép nélkül csinálták. Az egyiknél nem is mellékeltek eredeti képet (a szabályok szerint kellene), a másiknál meg olyan képeket mellékeltek, amelyik nem is hasonlít a végeredményre.

Animációk

Két produkciót érdemes csak megemlíteni. Ebből a Desert Dream 2022-be rengeteg energiát öltek, de egy elég szerencsétlen időszakban adták le. Most, hogy minden médiumon a háború szörnyűségei vannak, elég nehéz jól szórakozni egy idegen invázión. A második helyezett Dystopic Nightmare viszont minden ízében eltalált alkotás.

Intrók

Az Amigás intrók közül a Software Failure Antelogiumja olyan volt, mint egy mini demó. Annyi rész volt benne, hogy az ember azon gondolkodott, hogyan fértek el egy intróban? A másik kedvencem a LogicOS volt. A grafika nagyon egyszerűnek hatott, de ez ne tévesszen meg senkit. A hangüzenet biztos megnehezítette a méretkorlát fenntartását.

A PC4k. Ezen bealudtam. Ötletesek voltak, de nem volt semmi világmegváltó. A legjobban az Addict intrója tetszett, mert volt a legjobb a zene. Az első három helyezett zenéje elég szegényes lett. A győztes intró ráadásul olyan volt, mint egy procedurális grafika nyolc kameraállásból.

A 256b intrók tetszettek. A forgó Föld nagyon ötletes volt, de a Linerider volt az, ami belopta magát a szívembe.

Demók

Az idei Amiga demók rém gyengék voltak. A győztes Soul Strain nagyon repetitív volt. A demó fele szövegből állt. Egy intró szintjét ütötte csak meg. Mentségére legyen mondva, hogy kezdő Amigás csapatról van szó. Szerencsére az oldskool demók hozták a szintet. Nem kell nagy dologra gondolni, viszont korrekt munkák voltak. Kiemelném a Quantum Leap demót, mert KC 85-re írták, ami - kis utánanézést követően - kivívta nálam a legrondább számítógép díját. A Videoton ehhez képest iparművészeti alkotás.

Nem hittem volna, hogy valaha ilyet írok, de a PC-s demók mentették meg a napot. Tizennyolc alkotást adtak be, akadtak töltelék demók is közöttük, de egyharmada teljesen rendben volt. Kevin, a Spacepigs visszatérő főszereplője kezd kicsit megkopni, már fele annyira sem vicces, mint régen. A Futuris viszont nagyon magára talált az Unreal Engine-el. Egyre színvonalasabb alkotásokat láthatunk tőlük. Idén például ők nyerték a compót. Igaz, egyetlen erős csapat sem indult.

Szólj hozzá!

Címkék: demoscene

Búcsú a Tom Clancy-regényektől

2022.04.27. 20:30 Travis.CG

Kamaszkoromban elég sok Tom Clancy-regényt olvastam. Akkoriban a Hidegháború a vége felé közeledett, az internet gyerekcipőben járt, a CNN-ből meg nem értettem semmit, ezért ezek a regények egyfajta információ forrást jelentettek nekem, hogyan is működhet az amerikai vezetés. A világról sokkal kevesebbet tudtam, ezért az ott leírtakat el is hittem.

Ezekben a regényekben a világ azért működik, mert Amerika azt teszi, ami helyes. Amerika pedig azért teszi azt, ami helyes, mert olyan fehér férfiak irányítják, akik egy magasabb erkölcsi normának engedelmeskednek. Ez a küldetéstudatuk annyira erős, hogy egyes emberi törvényeket is áthághatnak érte.

A regények főhősei ezek az erkölcsileg megingathatatlan férfiak. Szakmájukban abszolút profik, keveset beszélnek, érzelmeiket elnyomják. Ha hasonszőrű férfival találkoznak, csak a szemébe néznek, és máris látják, hogy azok is ugyan olyan profik, mint ők. Miután végigmérték egymást, már csak apró biccentésekkel és kimondatlan szavakkal kommunikálnak. Ha mégis felbukkan egy női főszereplő, az csak egészségügyi dolgozó lehet. Ez alól csak Mary Pat Foley és Andrea Price a kivétel, de az ő karaktereik is inkább szoknyába bújtatott férfiak, mint nők.

Minden regényben az Egyesült Államoknak van egy dedikált ellensége, aki elkövet valami szemétséget, de végül egy hathatós katonai művelettel lerendezik azt. Az államnak nincsenek belső konfliktusai. Egy-két áruló azért akad, hogy a feszültséget fenntartsák, de őket csendben, bármilyen tárgyalás vagy vádemelés nélkül elteszik láb alól.

Minden annyira tökéletes ebben az Amerikai Álomban, hogy amikor a szerző mégis valami konfliktust próbál belecsempészni, az nagyon erőltetettnek hat. Például, mikor Jack Ryan elnők ellen merényletet szervez két fickó. Ez egy mellékszál a regényben, de végül nem vezet sehova. Egy rendőr szó szerint kiszagolja a robbanóanyagot és lekapcsolja a bajkeverőket.

Az első fekete elnök ellehetetlenítése is frucsa vargabetű volt, hiszen a regényekben nincs rasszizmus. (Ebben a világban ugyanis az FBI elfogta az összes Ku-Klux-Klán tagot, ami megszűntette az egész generációkon átívelő társadalmi problémát.) Ezért kellett egy öreg klán tag, akit elkerült a letartóztatás és ezért végrehajthatta a merényletet.

Az egészségügyi rendszerrel sincs semmi probléma. Amikor a terroristák Ebolával fertőzték meg az egész országot, az orvosoknak hála még csírájában elfolytották a járványt. Nem voltak Ebola-szkeptikusok, nem voltak szegények, akik rosszabb orvosi ellátást kaptak (esetleg olyanok, akiknek nincs egészségügyi biztosítása, ezért köztük a járvány erőteljesen tombolna.)

Aztán voltak a szerzőnek olyan megnyilvánulásai, ami után viszakozni kényszerült. Jack Ryan elnök ugyanis megoldotta a közel-keleti konfliktust is! Ez már tényleg annyira meseszerű lett, hogy a következő regényben volt egy lábjegyzet-szerű megjegyzés, hogy mégsem sikerült.

Az egész lufi számomra akkor pukkant ki, amikor a Tigris és Sárkány című regényben az Egyesült Államok pár nap alatt lealázta a Kínai Népköztársaság haderejét (igaz, ott volt az orosz hadsereg is, de csak mutatóban). Már a konfliktus eszkalálása is nagyon furcsa volt. A különböző diplomáciai manőverek ugyanis számtalan kiugrási pontot nyújtottak Kínának, akik ezzel egyszerűen nem éltek. A szerző meg elintézte annyival a kínai vezetés logikátlan lépéseit, hogy "ezek Klingonok". A kínaiak nem értették azokat az erkölcsi normákat, amelyek egy Clancy-regény főhősét mozgatják, míg a főhősök nem értették, a kínaiak mit nem értenek. A kínaiak még azt is figyelmen kívül hagyták, hogy Oroszországot felvették a NATO-ba.

Eközben az amerikai elnököt olyan dolgok foglalkoztatták, hogyan tudná megoldani, hogy a nők és férfiak ne éljenek szexuális életet a házasság előtt.

Végül kitört a háború, ami olyan lett, mint egy GI Joe rajzfilm, ahol a katonák mindig ki tudnak ugrani a szétlőtt járművekből. Az Egyesült Államok vesztesége 0(!) volt a teljes konfliktus ideje alatt. Az egyetlen izgalmas esemény, hogy majdnem megközelítettek vadászgépek egy AWACS-et. Az oroszok bezzeg tömegével halltak meg országukért. De azért nekik is kijutott a hősi cselekedetekből. Egy második világháborús veteránnak a hadsereg katonái megengedték, hogy lelőjön egy kínai tábornokot, mert ez a trófea még hiányzott az öreg listájáról.

Egyértelművé vált számomra, hogy Tom Clancy már nem tudja tartani a lépést a modern világgal. Át is adta a cselekmények vezetését először Grant Blackwoodnak, majd Mark Greaney-nek. A regény szereplői is kezdtek elöregedni, ezért ők is szép lassan lecserélődtek. Az események során ugyanis a karakterek elkezdtek egymás között házasodni, gyerekek születtek, mint valami telenovellában.

A cselekményformálás is szakított a régi formulával. Korábban ugyanis a szereplők oldalakon keresztül dumáltak egymással, terjedelmes belső monológok voltak, amelyen keresztül az olvasó megértette, mi miért történik. Az újabb regényekben több a csihi-puhi, amitől az regények kerete egy akciófilmre kezdett hasonlítani. Mintha egy forgatókönyvet olvasnánk. Az akciók is erősen emlékeztettek moziban látott jelenetekre. Például az egyik során a szuper titkos árnyék ügynökség teljes csapata háztetőkön keresztül menekült a rendőrség elől.

Az új regények egyik kellemes hozadéka volt, hogy megpróbálták az aktuálpolitikai eseményeket a narratíva részévé tenni. Itt is volt polónium-mérgezés, Donyecki-megszállás, kínai terheléses támadás kormányzati szervek ellen. Viszont az elképzelhetetlen elemek is megszaporodtak. Az egyik ilyen az volt, amikor az egyik főszereplőnek átadták a telje orosz haderő vezetését, mert ők nem tudták kezelni a krízist. (Pontosan az után, hogy egy áruló FSZB ügynök majdnem halálra kínozta.) De arra is felhúztam a szemöldököm, hogy ennek a szuper titkos ügynökségnek a tagja az elnök fia is, akit többen ismernek fel Hong-Kongban, mint hazájában. Ez a tény viszont egyáltalán nem megy a titkos műveletek rovására.

Talán nem is az a bajom, hogy a regények nem reálisak. Elvégre ha teljesen reális lenne, olvashatatlan volna. Inkább az a baj, hogy az internet segítségével olyan részletességgel kapunk információkat valódi konfliktusokról, hogy ezek a regények már bohózatnak tűnnek mellettük. Esetleg mégsem. Néha a valóság tűnik bohózatnak. Ha Ryan elnök robbanó fákról beszélne, a könyvet azonnal a falhoz csaptam volna. Akár mi is az igazság, a háború már nem tűnik szórakoztatónak.

Szólj hozzá!

Címkék: életmód

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