Semestrální práce 2014/2015
Varování:
Toto není aktuální zadání práce. Je zde pouze k účelům archivace.
Proteiny
Tématem semestrální práce jsou proteiny. Vaším úkolem je v programu OpenSCAD napsat modul, který umí generovat modely proteinů na základě vstupních dat, vhodně připravit jeden z vám přidělených proteinů k tisku, vytisknout ho a provést případné dodatečné úpravy.
Generátor proteinů
Napište OpenSCAD modul protein
dodržující předepsané rozhraní, který na základě vstupních dat zobrazí protein.
module protein(aminos=[],bindings=[]) { ... }
Vektor (pole) aminos
obsahuje definice jednotlivých aminokyselin. Jednu aminokyselinu představuje koule se zadanou lokací středu a poloměrem. Data jsou uchovány v čtyřprvkových vektorech [x,y,z,r]
, kde první tři číslice udávají pozici středu koule a čtvrtá poloměr. Vektor aminos
je tedy vektor vektorů:
aminos = [[x1, y1, z1, r1], [x2, y2, z2, r2], ...];
Vektor bindings
obsahuje dvouprvkové vektory (dvojice) indexů vektoru aminos
. Tyto dvojice aminokyselin mají být spojeny vazbou, která bude popsána dále.
bindings = [[0, 1], [1, 8], ...]; // příklad
Vazba dvou aminokyselin je provedena pomocí středové koule, umístěné středem přesně doprostřed středů dvou aminokyselin, o poloměru avg(ra,rb)/2
, kde avg
je aritmetický průměr a ra
(respektive rb
) je poloměr první (respektive druhé) koule (aminokyseliny) figurující ve spojení. Se středovou koulí se provede hull()
s oběma koulemi ve spojení - s každou ale zvlášť. Pro pochopení obrázek znázorněný ve 2D:

A a B jsou středy dvou koulí ve spojení. Bod S leží ve středu úsečky AB. Poloměr středové koule je půl aritmetického průměru krajních koulí. Obě krajní koule se ohullí s tou prostřední, každá zvlášť.
Jednotlivé aminokyseliny a vazby se pochopitelně mohou libovolně překrývat. Vstupní data není potřeba nijak ošetřovat. Můžete předpokládat, že všechny aminokyseliny figurují v alespoň jedné vazbě. V odevzdaném kódu je zakázáno manipulovat s proměnnými $fn
, $fs
apod, pro vaše potřeby ale při testování doporučujeme $fn dočasně snížit - nezapomeňte jej před odevzdáním odmazat.
Příklad modulu zpracovávajícího vstupy z vektorů:
module echoprotein(aminos=[],bindings=[]) { for (binding = bindings) { echo("Koule A:"); echo("x", aminos[binding[0]][0]); echo("y", aminos[binding[0]][1]); echo("z", aminos[binding[0]][2]); echo("r", aminos[binding[0]][3]); echo("Koule B:"); echo("x", aminos[binding[1]][0]); echo("y", aminos[binding[1]][1]); echo("z", aminos[binding[1]][2]); echo("r", aminos[binding[1]][3]); } }
Příklad vstupních dat:
protein([ [0,0,0,3], [12,0,5,4], [14,-2,0,3.5], [-3,0,-3,1], [0,8,0,2], ], [ [0,2], [1,3], [1,4], [3,4], ] );


Vaše proteiny
Každému z vás byly přiděleny tři náhodně vygenerované proteiny. Máte je k dispozici jak ve formě dat pro modul protein()
, tak ve formě STL souboru. S velkou pravděpodobností nebudete schopni v rozumném čase renderovat pomocí vašeho modulu své vlastní proteiny, obsahující stovky vazeb a aminokyselin. To je v pořádku, proto máte k dispozici i model ve formátu STL. Pro otestování funkčnosti modulu můžete použít podmnožinu vašich dat - ověřte, že se modul chová dle zadání.
Pokud přecejen chcete testovat váš modul nad vám zadanými daty, testujte ho pouze v režimu Compile (F5) a v nastavení OpenSCADu řádově navyšte hodnotu Turn of rendering at. Také doporučujeme použít development snapshot OpenSCADu, náhled jednoho proteinu pomocí F5 trvá pouze několik vteřin.
Vaše proteiny najdete na adresách:
Kde místo XXX dosadíte číslice z tohoto seznamu:
xxx 000 001 002
Předzpracování
Vyberte si libovolný (podle vás nejednodušší) z vašich tří proteinů a připravte ho pro tisk. Můžete s ním dělat prakticky cokoliv (opravovat, otáčet, krájet, přidávat podpůrné struktury), ale je třeba zachovat při tisku rozměry proteinu. Výstupem je jeden nebo více STL souborů připravených na slicing a velmi stručný popis toho, co jste udělali a proč (ne nutně písemně, ale při odevzdávání je třeba postup vysvětlit a to i několik týdnů po vykonání vašich změn).
Slicing
Naslicujte libovolným programem vámi připravená tisková STLka s použitím vhodných nastavení. Pro Slic3r vyjděte z slic3r-config-bundle.ini.zip (tryska 3dráty, filament 1.75 ABS), pro KISSlicer jsou tady. Výstupem je použitý slicovací profil vyexportovaný z programu a jeden nebo více GCODE souborů. Pokud je to možné, vtěsnejte celý protein na jednu tiskovou plochu a odevzdávejte pouze jeden GCODE soubor.
Tisk a postprocessing
V zápočtových akcích vypsaných v KOSu, probíhajících ve zkouškovém období, budete v laboratoři tisknout proteiny z vámi připravených GCODE souborů. Po dotisknutí je třeba výtisk náležitě opracovat - oddělat podpory, slepit atp. Výsledný protein by měl vypadat co nejpodobněji zadanému modelu.
V případě absolutního selhání při tisku je možné tisk opakovat s novým GCODEm, ale pouze jednou. V případě technického problému na naší straně se samozřejmě o promarněný pokus nejedná.
Odevzdání, hodnocení a termíny
Do svého namespace na Eduxu nahrajte zip soubor libovolného vhodného jména, na který z vašeho namespacu povede odkaz. Veškeré slovní popisy uveďte přímo do svého namespace na Eduxu.
V souboru odevzdávejte:
- scad soubor s modulem
protein
- scad soubor volající modul
protein
s vašimi vybranými daty (který jste si stáhli z Eduxu) - STL soubor s vaším vybraným proteinem z Eduxu
- Tiskové STL soubory
- Tiskové GCODE soubory
- Profil pro slicovací program
- Případné další potřebné soubory
Termín odevzdání je do termíny na který jste přihlášeni (viz termíny v KOSu).
Hodnocení dle následující tabulky:
Modul pro OpenSCAD | 10 | |
---|---|---|
Modul funguje podle zadání | 7 | povinný v rámci části |
Zdrojový kód je vhodně členěn a komentován | 3 | |
Příprava na tisk | 10 | |
Vhodně připravená tisková STLka | 5 | povinný v rámci části |
Mesh ve všech tiskových STL je v pořádku | 5 | |
Slicing | 10 | |
Podpory (nejsou potřeba (5 b.), vhodné užití* (2.5 b.), zbytečné užití (0 b.)) | 5 | |
Vhodné nastavení parametrů tisku (perimetry, výplň, výška vrstvy) | 5 | |
Tisk | 20 | |
Jedná se o výtisk modelu dle zadání, výtisk je opracovaný (např. bez podpor, slepený atp.) | 5 | povinný v rámci části |
Výtisk neobsahuje vady zjevně způsobené nevhodnou přípravou modelu | 7.5 | |
Výtisk neobsahuje vady zjevně způsobené nevhodnou přípravou tiskárny (příprava tiskové plochy, nevhodné teploty) | 7.5 |
- Pouze za podpory vygenerované při slicování se strhávají body. Protože jsme v části slicing.
Důležité:
Pro ovládání tiskárny při odevzdávání potřebujete vlastní počítač se schopností připojit se na wifi nebo kabelem do lokální sítě.
Hodnocení je rozděleno na 4 dílčí části. Povinný v rámci části znamená, že bez splnění tohoto úkolu student za danou část nedostane žádné body. V případě opravného tisku se již neopravují hodnoty bodů v ostatních dílčích částech. Pokud tedy například nezvládnete slicing, dostanete z něj nula bodů a (celkem logicky) fatálně selže i tisk, můžete v náhradním termínu dostat body za tisk, za slicing už ale žádné body nedostanete.