Programování v jazyce C pro chemiky (C2160) - závěrečné cvičení 9. Graf úhlů peptidické páteře podle typu aminokyseliny Zadání Vytvořte program, který zobrazí graf úhlů peptidické páteře \\i a (p pro aminokyseliny jednotlivých typů. V grafu vyznačí oblasti charakteristické pro alf a-šroubovice a beta-listy. Program bude mít následující vlastnosti: • Bude načítat PDB soubor s proteinem (pouze standardní residua z řádků ATOM) • Budou určeny atomy peptidické páteře N, C a C-alfa • Bude implementována funkce pro výpočet torzního úhlu • Budou spočítány torzní úhly (p a \\i pro jednotlivá residua • Bude zobrazovat dva grafy, kde v prvním grafu budou zobrazeny hodnoty úhlu \\i pro jednotlivé typy residuí a v druhém totéž pro úhel (p. Body v grafu budou mít vždy barvu odpovídající typu residua. • V grafu budou barevně vyznačeny oblasti charakteristické pro alfa-šroubovice (-110° < cp < -40°, -80° < ijj < -20°) a beta-listy (-150° < cp < -50°, 90° < ijj < 170°) • Graf bude obsahovat barevnou legendu, nadpis a jméno PDB souboru • Jméno vstupního PDB souboru bude specifikováno jako parametr na příkazovém řádku • Program bude uživatele informovat o chybě při otevření souboru, načítání konfiguračního souboru, překročení maximální přípustné velikosti polí a pod. • Zdrojový kód programu bude opatřen komentáři Nepovinné rozšíření (+5 bodů): • Program bude načítat konfigurační soubor, ve kterém bude specifikováno jméno vstupního PDB souboru na řádku ve formátu "INPUT_FILE = jmeno_pdb_souboru", dále bude v konfiguračním souboru na samostatném řádku specifikována velikost okna ve formátu "WINDOW_SIZE = sirka, vyska" • Název konfiguračního souboru bude předán programu jako parametr na příkazovém řádku Program otestujte se strukturou crambinu (ljxy_noal.pdb) a enzymu haloalkan dehalogenáza (2dhc.pdb), které najdete mezi studijními materiály v IS MU ve složce „data". Graf uhlu peptidické pateré phi a jsi podle typu residua 180- 8 OO o y Q O psi 0- -fí- • e o O 6 O 0 0 0 b o o O o -90- n ALA ARG ASN ASP CYS GLN GLU GLY HIS IL E LEU LYS MET PHE PRO SER THR TRP TYR VAL 180-90 - 8 phi 0- -90- 6 Q O e Q O oo o @ O 0 0 Q S" o O o 8 0 ALA ARG ASN ASP CYS GLN GLU GLY HIS ILE LEU LYS MET PHE PRO SER THR TRP TYR YAL Alfa Leíixy E eta listy ^1 HtLxy nebri listy PDB soubor: ,faom^martinp/C21áO/datVljxy_no al.pdb GraE uMupepti&cke pateré phi a psi podle typu residua y T § í 8 0 e § -o-o B 0 e 8 O D 8 ° o Q o 8 t t Q O O o o O O 8 . g 0 6 o o 9 1 y 8 1 o o 8- __Q ALA ARG ASN ASP CYS GLN GLU GLY HIS IL E LEU LYS MET PHE PRO SER THR TRP TYR YAL O o O e o u * ft ■ S 9 9 1 (DO ( i O 8 § 1 1 B y y 1 1 B 1 i i ALA ARG ASN ASP CYS GLN GLU GLY HIS ILE LEU LYS MET PHE PRO SER THR TRP TYR VAL ^1 Alfahelixy Betalisty Helixynebc list/ PDB soubor: /home/msroiip/C2160/dat3/2dhc.pdb Dodržujte následující pravidla • Dbejte na správné odsazování textu • Pro reálné proměnné používejte typ double, ne f loat • Při každém použití operátoru dělení si ujasněte, zdali dochází k celočíselnému nebo reálnému dělení a jaký typ dělení požadujete • Proměnné vždy inicializujte vhodnou hodnotou • Při použití funkcí pro práci s řetězci a při práci s poli dbejte na to, aby nedošlo k překročení velikosti pole • Dobře zvažte, které proměnné budou lokální a které globální • Názvy globálních proměnných volte tak, aby z nich byl jasný význam proměnné, volte raději delší názvy • Názvy funkcí volte tak, aby z nich bylo jasné, jakou činnost funkce vykonává • Pro překlad programů používejte nástroj make (tj. vytvořte si příslušný Makefile) • Z programu odstraňte veškerý kód, který není nutný pro splnění zadání (např. pozůstatky z minulých cvičení, zakomentované části kódu). Ponechat můžete funkci pro zápis PDB • Program nesmí při překladu vypisovat žádné varovné hlášky (při použití parametrů -Wall - pedantic) • Na začátek programu umístěte stručný komentář obsahující jméno autora, rok vytvoření, popis funkce programu, parametry příkazového řádku, popř. formát konfiguračního souboru popisující činnost programu • Všechny funkce a proměnné opatřete komentářem Nápověda 1. Upravte funkci pro načítání PDB souboru tak, že bude načítat pouze řádky ATOM a nikoliv HETATM. 2. Ve struktuře proteinu vyhledejte pro každé residuum atomy peptidické páteře, tj. atomy se jménem " N ", " CA", " C ", " O " (vč. mezery na začátku a na konci) - viz. úloha 3 ze cvič. 9 3. Pro pohodlnější práci s těmito atomy přidejte do struktury RESIDUE čtyři celočíselné proměnné (např. atom_C , atom_c_alpha, atom_n, atom_o) které budou obsahovat index příslušných atomů v poli atomů (tj. pořadí v poli atomů). Hodnoty proměnných nastavte pro každé residuum ve funkci pro vyhledávaní residuí nebo v samostatné funkci. 4. Do struktury RESIDUE přidejte dvě proměnné, které budou obsahovat hodnoty torzního úhlu (p a ijj (pojmenované např. angle_phi, angle_psi). 5. Spočítejte hodnoty obou torzních úhlů pro každé residuum (s výjimkou prvního a posledního, pro které nejsou definovány). Uhel se počítá pro atomy peptidické páteře "N", "CA", "C" následovně: cp je uhel mezi atomy C(i-l) -N(i) - CA(i) - C(i) a iJj je uhel mezi atomy N(i) - CA(i) -C(i) - N(i+1) (i je pořadí residua v sekvenci) 6. Pro výpočet torzního úhlu vytvořte samostatnou funkci, které předáte indexy (tj. pořadí v poli atomů) čtyř atomů a funkce vrátí torzní úhel mezi nimi. Torzní úhel (https://en.wikipedia.org/wiki/Dihedral angle) vypočítáme následovně: Pro atomy se souřadnicemi pl, p2, p3, p4 spočítáme vektory b2 = p2-pl, b2 = p3-p2, b3 = p4-p3 (viz obrázek), torzní úhel pak spočítáme: uhel = atan2(|b2|-bl-[b2xb3], [blxb2] • [b2xb3]) kde |b2| je velikost vektoru b2, • symbolizuje skalární součin a x vektorový součin |b2| = sqrt(b2x2 + b2y2 + b2z2) a • b = ax • bx + ay • by + az • bz a x b = [aybz - az-by, az-bx-ax-bz, ax-by-aybx] Testovací data Příklad výpočtu torzního úhlu pro první torzní úhel (p residua THR2 ze struktury crambinu (ljxy_noal.pdb): pl = (15.614, 12.736, 5.075) p2 = (15.046, 11.539, 5.178) p3 = (13.824, 11.392, 5.952) p4 = (14.140, 10.687, 7.279) uhel(v radianech) = atan2(|b2|-bl-[b2xb3], [blxb2]-[b2xb3]) = atan2(1.454 • (-0.568, -1.197, 0.103) • (0.351, 1.866, 0.908), (-0.911, 0.314, -1.379) • (0.351, 1.866, 0.908)) = atan2(-3.401, -0.986) = -1.853 radiánu (tj. -106.2°) Úhly (p a iJj (ve stupních) pro prvních 5 residuí crambinu (soubor ljxy_noal.pdb): THR2: -106 2, 142 6 CYS3: -132 4, 136 0 CYS4: -124 0, 147 4 PR05: -76 2, -19 3 SER6: -157 9, 168 1