Zadání Vytvořte program, který určí aminokyseliny proteinu, jejichž atomy peptidické páteře jsou vzájemně spojeny vodíkovou vazbou. Ve schématu budou tato residua spojena barevně rozlišenou čárou. Program bude mít následující vlastnosti: • Bude načítat PDB soubor s proteinem (pouze standardní residua z řádků ATOM) • Určí atomy N a O peptidické páteře a na základě jejich vzdálenosti odhadne přítomnost vodíkové vazby mezi N jednoho residua a O druhého residua (vzdálenost do 3.2 Å, nepočítá se pro sousedící residua) • Zobrazí sekvenci residuí proteinu dvakrát nad sebou, kde jednotlivá residua budou barevně označena a také budou vyznačena čísla residuí (pořadí v sekvenci) způsobem zobrazeným na obrázku • Mezi oběma sekvencemi budou pomocí čar spojena residua mezi kterými existuje vodíková vazba, barevné značení čar bude založeno na vzdálenosti residuí v sekvenci: červeně je-li vzdálenost 4 residua (typické pro alfa-helixy), oranžově pro 3 a fialově pro 5 residuí (typické pro nestandardní alfa-helixy), ostatní modře. Čáry spojující residua budou vždy začínat nahoře u residua s nižším číslem, tj. budou vždy směřovat doprava • 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 (1jxy_noal.pdb) a enzymu haloalkan dehalogenáza (2dhc.pdb), které najdete mezi studijními materiály v IS MU ve složce „data“. Dodržujte následující pravidla • Dbejte na správné odsazování textu • Pro reálné proměnné používejte typ double, ne float • 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 dělá • 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 Programování v jazyce C pro chemiky (C2160) – závěrečné cvičení 4. Schéma zobrazující propojení aminokyselin vodíkovou vazbou 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.Vytvořte funkci, která vyhledá atomy peptidické páteře vázané vodíkovými vazbami. Vodíková vazba vzniká mezi atomem peptidické páteře "O" a vodíkem na "N" jiného residua. Přesné určení vodíkové vazby vyžaduje znalost polohy H atomů (které často nejsou v PDB souborech obsaženy) a úhlů mezi atomy. Pokud stačí přibližné určení vodíkových vazeb, počítáme pouze vzdálenost mezi atomy "N" a "O", která by měla být < 3.2 Å. V programu nejdříve vytvořte strukturu PEPTIDE_HBOND, která bude obsahovat dvě proměnné (např. residue1 a residue2), které budou indexem do pole residuí. Definujeme dostatečně velké pole PEPTIDE_HBOND hbonds[] a proměnnou int hbonds_count. Budeme počítat vzdálenosti atomů peptidické páteře, vždy každého atomu O a N residua s atomy O a N ostatních residuí (vždy porovnáváme jen N s O, ne O s O ani N s N), pokud je hodnota < 3.2 (tj. je mezi nimi vodíková vazba), uložíme záznam do pole peptide_hbonds[] (a zvětšíme hodnou hbonds_count o 1). 5.Nakreslete graf tak, jak je zobrazeno na obrázcích. Spojující čáry budou kresleny vždy směrem doprava dolů. Testovací data Seznam dvojic residuí (celkem 27), která jsou vázána vodíkovou vazbou pro strukturu crambinu (1jxy_noal.pdb): THR1 - ILE35 CYS3 - ILE33 CYS4 - ASN46 SER6 - ARG10 ILE7 - ARG10 ILE7 - SER11 VAL8 - ASN12 ALA9 - PHE13 ARG10 - PHE13 ARG10 - ASN14 SER11 - VAL15 ASN12 - CYS16 PHE13 - CYS16 PHE13 - ARG17 VAL15 - ARG17 VAL15 - LEU18 ARG17 - GLY20 SER22 - ALA24 SER22 - ILE25 SER22 - CYS26 GLU23 - CYS26 GLU23 - ALA27 ILE25 - TYR29 CYS26 - THR30 ALA27 - GLY31 PRO41 - ASP43 PRO41 - TYR44