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
  • valódi asztrofizikai problémát szimuláljunk vele, pl.
  • 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
További segédanyagok:
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

  • Áttekintő cikk (H. Jasak et al, International Workshop on Coupled Methods in Numerical Dynamics IUC, Dubrovnik, Croatia, September 19th-21st 2007)
  • Az OpenFOAM koncepciója és nyelve. A teljes User Guide.
  • OpenFOAM tutorial . Ezeket a példákat próbáljuk feléleszteni.
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.
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:
Jegyzőkönyvek beküldése:
szammodmsc(kukac)gmail.com