====== 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