Laborvezetőknek
A 3. előadás laborkártyáit kérdezzük végig a hallgatóktól (és persze a korábbiakból is osszunk ki, amelyeket fontosnak érezünk). Ha indokolt, akkor bevezethető a több sebességes labor, ahol az előre készülő hallgatók későbbi feladatokkal dolgoznak, vagy kapcsolódó mélyebb feladatot kapnak. A "tömeg", azaz a labor main stream-je pedig szorosabban együtt dolgozik a laborvezetővel.
Hallgatóknak
Sosem árt előre készülni a laborra, nálam szereztek így kisbajnokság trófeát. Ha többen is elkészítik, akkor holtversenyben mindannyian megkapják a "trófeákat".
Tematika
Az alábbi témák legtöbbjét próbáljuk lefedni a második gyakorlaton:
- Beszéljük meg és teszteljük a g.c-t, itt azt kell kiemelni, hogy hármasával olvassuk a betűket a fájlból, de nagyon rossz gyakorlat, ha a ciklusban ciklusolgatni kezdünk... e helyett egyetlen ciklust használunk:
// a betűket 3-asával "olvasom": nem kell cifrázni! egy ciklus // elvégzi, amiben megjegyzem, hogy melyik hányadik betű volt // aki ciklusban ciklusolgat, az már bénázik :) int main (void) { // hányadik betűn állok? int hanyadik_betu = -1; // azon a helyen mit olvastam? int elso = 0, masodik = 0, harmadik = 0, i = 0, jegy = 0; while ((i = getchar ()) != EOF) { switch (i) { case 'T': jegy = 0; break; case 'C': jegy = 1; break; case 'A': jegy = 2; break; case 'G': jegy = 3; break; } hanyadik_betu = (hanyadik_betu + 1) % 3; if (!hanyadik_betu) elso = jegy; else if (!(hanyadik_betu - 1)) masodik = jegy; else { harmadik = jegy; printf ("%s", genetikai_kod (elso * 16 + masodik * 4 + harmadik)); } } }
vedd észre, hogy a kód pici továbbfejlesztése a progpater.blog.hu/2011/02/27/a_human_genom_projekt poszt bevezető progijának, csak ott kettesével olvasunk és két betűből készítettünk egy hexadecimális jegyet. - Feladat (kisebb sebességű): készíts "aminosav-hisztogramot", azaz a progi továbbfejlesztésével mond meg, melyik aminosav hányszor szerepel? (egy trófea, jöhet kommentben előre is)
- Hogy változik ez a szám, ha az első kódoló betűt törlöd a bemenő fájlból (azaz a 2. betűtől méred fel a 3 betűket) (egy trófea, jöhet kommentben előre is)
- Hogy változik ez a szám, ha az első két kódoló betűt törlöd a bemenő fájlból (azaz a 3. betűtől méred fel a 3 betűket) (egy trófea, jöhet kommentben előre is)
- Feladat (nagyobb sebességű): módosítsd a z.c-t, hogy ne 0, 1 betűkre menjen, hanem a 4 T, C, A, G betűre és így építs fát (ez már nem bináris fa lesz persze), mennyi a 2. kromóra az LZW fa ághosszainak átlaga és sztenderd hibája? (ez 5 trófeát ér, jöhet kommentben is)
- További két kisbajnokság, aki gyorsabbat ír:
[norbi@sgu tcag]$ time ./g <hs_alt_Hs_Celera_chr2.fa >aminosavak
real 0m17.428s
user 0m16.593s
sys 0m0.714s
BN laborján
Tekerj tovább, itt jön a g.c teljes kódja is: