Jdi na navigaci předmětu

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:

protein

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],
    ]
);
protein sample
printed protein

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 OpenSCAD10
Modul funguje podle zadání7povinný v rámci části
Zdrojový kód je vhodně členěn a komentován3
Příprava na tisk10
Vhodně připravená tisková STLka5povinný v rámci části
Mesh ve všech tiskových STL je v pořádku5
Slicing10
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
Tisk20
Jedná se o výtisk modelu dle zadání, výtisk je opracovaný (např. bez podpor, slepený atp.)5povinný v rámci části
Výtisk neobsahuje vady zjevně způsobené nevhodnou přípravou modelu7.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.