====== Skládání proteinů: specifikace ====== Skript ''fold.py'' musí fungovat v Pythonu 3.4.x! Odevzdávat budete 2 skripty (oba nepovinně): * ''fold.py'' realizující algoritmus skládání sekvence aminokyselin a * ''display.py'', vizualizační část. ===== Hodnocení ===== * až 3 body za pokročilost algoritmu skládání, * až 3 body za zobrazovací funkci, * až 4 body za výsledky, kterých dosáhnete v porovnání s vašimi kolegy (za postavení v žebříčku). ===== Specifikace pro fold.py ===== Úkolem skriptu ''fold.py'' je pro danou sekvenci aminokyselin najít co nejlepší konfiguraci z hlediska minimalizace volné energie. * **Vstup:** sekvence aminokyselin uložená v souboru ''sequence.txt''. * **Výstup:** navržená konfigurace uložená v souboru ''folding.txt''. Další požadavky: * Navržená konfigurace musí mít o 1 prvek méně než vstupní sekvence aminokyselin. * Navržená konfigurace se nesmí křížit (na jedné pozici může být vždy jen jedna aminokyselina). Bude-li se sekvence křížit, je to považováno za chybu! * Skript má na nalezení konfigurace pro jednu sekvenci aminokyselin vždy **max 1 sekundu**. * Skript bude testován na sekvencích s délkou až 100 aminokyselin. * Skript by pro žádnou myslitelnou sekvenci aminokyselin neměl skončit s chybou nebo neošetřenou výjimkou. Způsob hodnocení: * Skript odevzdáte (ve společném archivu s ''display.py'') do BRUTE. * Funkci skriptu v ideálním případě předvedete a vysvětlíte cvičícímu na posledním cvičení. * Skript se v BRUTE zúčastní turnaje. Pořadí v turnaji se určuje podle následujících pravidel: * Skripty se seřadí vzestupně **podle počtu chyb** (tj. podle počtu testovacích sekvencí, pro něž skript skončil s chybou). * Při rovnosti se skripty seřadí vzestupně **podle počtu time-outů** (tj. podle počtu testovacích sekvencí, pro něž skript neukončil svou činnost včas). * Při rovnosti se skripty seřadí vzestupně **podle součtu volných energií přes všechny sekvence**, pro něž výslednou konfiguraci našel včas. ===== Specifikace pro display.py ===== Úkolem skriptu ''display.py'' je co nejpřehledněji zobrazit danou sekvenci aminokyselin v dané konfiguraci. * **Vstupy:** sekvence aminokyselin v souboru ''sequence.txt'' a konfigurace v souboru ''folding.txt''. * **Výstup:** přehledné zobrazení složené sekvence aminokyselin, ať už v textovém nebo grafickém režimu. Způsob hodnocení: * Skript odevzdáte (ve společném archivu s ''fold.py'') do BRUTE. * Skript předvedete a vysvětlíte cvičícímu na posledním cvičení! * Skript nebude nijak automaticky testován/hodnocen. Další info: * Protože k řešení tohoto kroku můžete využívat i knihovny, které nejsou standardní součástí Pythonu (viz [[courses:b4b33rph:cviceni:protein_folding:vizualizace|]]), musíte sami zajistit, abyste byli schopni vizualizaci na posledním cvičení předvést, tj. např. přinést si vlastní notebook. ===== Formát souborů ===== Obě části úlohy zpracovávají (čtou nebo vytvářejí) soubory ''sequence.txt'' a ''folding.txt''. Oba soubory očekávejte/vytvářejte ve stejném adresáři, jako skripty ''fold.py'' a ''display.py''. Jejich formát je následující: * Soubor ''sequence.txt'' bude obsahovat vždy jednu sekvenci aminokyselin, tj. bude obsahovat jeden řádek, na němž budou jedničky a nuly oddělené mezerami, např. 0 1 1 1 1 0 * Soubor ''folding.txt'' bude obsahovat navrženou konfiguraci, tedy jeden řádek obsahující sekvenci jednotkových komplexních čísel (''1'', ''-1'', ''1j'', nebo ''-1j'') oddělených mezerami, tedy např. 1 1 -1j -1 -1