Számítógépes modellezés labor (MSc) (ff2n4i07/1,2)
1. Kozmológiai N-test szimuláció
A feladat célja, hogy a Gadget 2 professzionális kozmológiai N-test szimulációs programot önállóan- megértsük, mik a szimulációs algoritmus elméleti alapjait (feliratozott lokális másolat)
- a programot a szükséges segédkönyvtárakkal együtt telepítsük
- sikeresen lefordítsuk
- futtassuk 1 processzoron
- futtassuk párhuzamosítva az MPI keretrendszerben. MPI intro
- valódi asztrofizikai problémát szimuláljunk vele,
pl.
- galaxisok ütközése
- az Univerzum nagyskálás szerkezetének evolúciója
- nem-newtoni gravitáció
- az eredményeket kiértékeljük, ábrázoljuk
- egy rövid tanulmány és egy kiselőadás formájában összehezzük a tapasztalatokat, eredményeket
- Gadget File Viewer
- predictor-corrector módszer N-test szimulációkban (R. Gonsalves)
- Introduction to N-body simulation by P. Hut and J. Makino (local copy and code)
- Részletes útmutató egy másik kurzusból
- Kezdeti feltétel generátorok:
- Starscream: galaxisok generálása ütközéses szimulációkhoz
- 2LPTic: Kozmológiai szimulációkhoz
2. Hidrodinamikai szimulációk
A feladat célja, hogy az egyik legelterjedtebb általános célú hidrodinamikai szimulációs kóddal, az OpenFOAM-m megismerkedjünk (H. Jasak et al, International Workshop on Coupled Methods in Numerical Dynamics IUC, Dubrovnik, Croatia, September 19th-21st 2007)
3. Molekuladinamika
A feladat célja, hogy a gyakorlatban megismerjünk egy professzionális MD kódot. Szimuláció javaslatok: argon gáz fázisátalakulás, geometriai objektumok térkitöltése (packing)
- HOOMD-blue
- Áttekintés !! Figyelem, a példákban a régi verziót használja! Lásd lenn az új verzió telepítését.
- Molekula dinamika BSc labor anyag
- Packing - slides - Damanesco et al. Science 2012 - Tetrahedron packing (Haji-Akbari et al. Nature Lett. 2009)
- Így
kell telepíteni és futtatni az új verziót:
-
Először installálni kell a minicondát:
http://conda.pydata.org/docs/install/quick.html
itt linux alatt, mikor rákérdez, igent kell válaszolni, hogy beleírjon a .bashrc file-ba, majd újra kell indítani a terminált. -
Miniconda installálása után telepíthető a HOOMD-blue:
$ conda config --add channels glotzer
$ conda install hoomd -
Sikeres telepítés után célszerű feltelepíteni a
jupyter notebookot, és a példa scripteket:
$ conda install jupyter matplotlib
$ git clone https://bitbucket.org/glotzer/hoomd-examples.git
$ cd hoomd-examples
$ jupyter notebook - Ha elindult a jupyter, a basic mappában a Quick Start Tutorial.ipynb notebook futtatható, és meg lehet nézni hogy működik az új verzió, illetve a matplotlib-bel lehet ábrázolni a szimuláció kimenetét. A többi példában fresnel segítségével ábrázol, ezt viszont még nem sikerült telepítenünk, de talán elég lesz a matplotlib használata is.
-
Először installálni kell a minicondát:
X. Fotometrikus vöröseltolódás becslés
A feladat célja, hogy egy kihívás keretében, egymással versengve minél jobb fotometrikus vöröseltolódás becslő algoritmust fejlesszünk ki. A verseny egy sok más érdekes publikus kihívást is tartalmazó keretrendszeren át érhető el a Kaggle portálon (a "privát" verseny konkrét elérhetőségét a hallgatók megkapják).A portálon regisztráció után elérhető a feladat részletes leírása, a szükséges referencia adatok, illetve a jóslandó galaxisok paraméterei. A rendszer folyamatosan kiértékeli a beküldött becsléseket, és mutatja az aktuális "ranglistát".
A feladat tekinthető a mögöttes fizika nélkül "black box" jellegű "jóslásnak" melyhez hasonló (lásd a Kaggle többi kihívásait) a tudományok és gazdaság számos területén fellép. Az általános megoldási módszerekkel a számítástudomány machine learning és artificial intelligence területei fogalkoznak. Egy közelmúltbeli gondolatébresztő cikk a New Scientistből.
A félév végén meglátjuk ki nyert, illetve ki-ki egy jegyzőkönyv és kiselőadás keretében beszámol az általa alklamazott módszerekről.
X. PCA (Principal component analysis) és a LAPACK használata
Példa: arcfelismerés
A projekt célja, hogy C/C++ nyelven egy olyan kódot készítsünk el, amely LAPACK rutinokat használ és képek főkomponens analízisét végzi el.
Motivációk: http://www.face-rec.org/algorithms/
Eigenface, gappy face PCA
1. PCA háttéranyag:
- http://en.wikipedia.org/wiki/Principal_components_analysis. A PCA szoros
kapcsolatban áll a "Singular value decomposition"-nel
- (http://en.wikipedia.org/wiki/Singular_value_decomposition). Lásd még a Numerial Recipes megfelelő fejezetét.
- Dimensionality Reduction A Short Tutorial
- Dual PCA
2. LAPACK (Linear Algebra PACKage) http://www.netlib.org/lapack/ a számunkra érdekes rutinok a PCA-t elvégző rutinok, pl dgesvd(). Vannak külön AMD és Intel processzorokra optimalizált változatok!
Gyakorlás: generáljuk legalább 2 dim (de ne túl nagy N dimenziószámú) vektorokat (T darabot, T~100) olyan eloszlásból, mely egy kis zajjal egy kétdimenziós ellipszoidon helyezkednek el. Ezekből képezzünk egy mátrixok, melynek minden sora egy generált vektor (N hosszúságú). Végezzük el erre a PCA-t és ellenorizzük, hogy visszakaptuk-e az eredeti ellipszoid nagy- és kistengelyét.
3. arcfelismerés: http://www.face-rec.org oldalon olvasható általános bevezető (pl. az algorithms alatt a gyakran használt algoritmusok hivatkozásokkal) a /database alatt találhatók arc adatbázisok, érdemes valamelyik letölteni a továbbiakhoz. Célszerű egyelőre grayscalet használni az egyszerűség kedvéért, pl.
http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html. Ez
ráadásul ppm, egyszerűen olvasható grafikus formátum.
4. Az adatbázis alapján a PCA analízis elvégzése:
a. a képet tekintsük egyetlen vektornak (pl. ahogy a fileban tárolva is van, adatfolyamként. Figyelem: a fileban található header részt le kell választani, ehhez tessék megnézni a ppm formátum szabványát). Ezután minden vektort (magyarul egy-egy képet) átnormálunk úgy, hogy a vektor átlaga nulla legyen (ki lehet majd próbálni, hogy mennyire lesznek mások az eredmények, ha a normálás során a szórást 1-re állítjuk be)
b. konstruáljuk meg az X mátrixot úgy, hogy azok sorai az egyedi
képvektorok.
c. végezzük el a PCA analízist
d. elemezzük a sajátértékek eloszlását.
e. Csonkítsuk le az eredeti képek (vektorok) kifejtését az elso M sajátértékre (a legnagyobb sajátértéktol a kisebbek felé haladva). Állapitsuk meg, hogy mikor ad "jó" rekonstruálást a csonkítást. Nézzük meg, hogy milyen "messze" vannak a képek kifejtési együtthatói egymástól
f. Készítsünk egy az adatbázistól független képet (saját maguk, ismerős, barátnő, stb.) és fejtsük ki a képet az adatbázis által generált (csonkolt) sajátvektor bázison. Állapítsuk meg, milyen messze van az új kép, az adatbázis eretei képeitől. Figyeljünk arra, hogy a
kép ugyanolyan méretű legyen, mint az adatbázis képek!
e. Próbáljuk meg egy nem emberi arcképpel (pl. majom) a kifejtést, és rekonstruáljuk csonkolt bázison.
Háttéranyagok:
- Gadget 2
- Message Passing Interface (MPI)
- Asztrofizikai preprintek, háttéranyagok keresése az 1. és 2. témákhoz: astro-ph
- Kaggle és itt a megoldandó Photometric Redshift Estimation feladat