<-^^->

Povinné úkoly

Hotové úkoly

Jméno Úkol 1 Úkol 2 Úkol 3 Úkol 4 Bonus Docházka Součet
Radka 4 4 4 4 0 8 24
Jakub 4+ 4+ 4+ 2 8 5 27
Pepa 4 4 4 2 0 6 20
* "+" znamená obzvlášť pěkné provedení s výhledem na bonusové body na konci semestru.

Zadání

Budou doplňovány v průběhu semestru.

  1. Deadline: 2008-10-04 23:59:59
    • Naimplementujte třídu SumarniVzorec, odvozenou o Pythoní třídy dict, která bude sloužit k uložení informací o sumárním vzorci. Třída bude umět zpracovat v konstruktoru string ve formátu např. "H2CO3". Vzhledem k odvození od dict, bude možné se ptát na jednotlivé prvky a půjde o mapování "symbol_prvku"=>"počet". Naimplementujte metodu __str__, která vrátí textovou verzi sumárního vzorce v Hillově pořadí. Naimplementujte metodu __add__, která umožní sčítat sumární vzorce.
      >>> x = SumarniVzorec( "ClHO3")
      >>> print x
      HClO3
      >>> print x['Cl']
      1
      >>> print x['O']
      3
      >>> y = x + SumarniVzorec( "NaCl")
      >>> print y
      HCl2NaO3
      
      Při implementaci předpokládejte, že symboly prvků budou vždy uvedeny s velkým počátečním písmenem. Nepoužívejte žádný seznam povolených prvků - "GuGaGo" je také platný vstup.
  2. Deadline: 2008-10-18 23:59:59
    • Naimplementujte třídy Graf a Vrchol, které budou sloužit pro jednoduchý popis grafu.
      Graf
      Třída Graf bude obsahovat seznam vrcholů v listu, metody pro přidávání vrcholů, mazání vrcholů, spojování vrcholů a metodu __str__, která bude vracet informace o grafu - počet vrcholů a hran.
      Vrchol
      Třída Vrchol bude obsahovat seznam sousedů, metody pro přidávání sousedů, odebírání sousedů, počítání stupně a metodu __str__, která bude vracet informace o vrcholu - stupeň.
    • Pro třídu Graf naimplementujte metody pro čtení a zápis jednoduchého textového formátu - 6;1-2,2-3,3-4,4-5,5-6,6-1, tedy počet_vrcholů;číslo_vrcholu-číslo_vrcholu,...
    • Pro třídu Graf naimplementujte metodu pro značkování vrcholů.
    • Na základě metody pro značkování vrcholů naimplementujte metodu, která vrátí počet connected components.
    • Na základě předchozí metody naimplementujte metodu pro výpočet počtu cyklů v grafu.
    • Naimplementujte metodu pro značkování vrcholů pomocí vzdálenosti od vybraného vrcholu.
    • Naimplementujte metodu, která na základě předchozí metody vypočte nejkratší vzdálenost mezi dvěma zadanými vrcholy.
  3. Deadline: 2008-11-27 11:00:00
    • Rozšiřte třídu Vrchol o atributy pro uložení 3D koordinát (x,y,z) a metody pro jejich nastavení a přečtení (get a set).
    • Rozšiřte třídu Vrchol o atribut pro uložení symbolu atomu.
    • Naimplementujte metodu pro čtení Molfile ze souboru - řád vazeb ignorujte, čtěte pouze symboly atomů, jejich koordináty a spojení mezi atomy.
    • Naimplementujte metodu, která vygeneruje jednoduché SVG, které bude představovat obrázek grafu. Vrcholy budou reprezentovány kroužky, hrany čárami mezi nimi (podobně jako zde, ale bez animace a JavaScriptu).
    • Naimplementujte metodu, která vygeneruje jednoduché SVG, které bude představovat obrázek molekuly. Atomy budou reprezentovány jejich symbolem, vazby čárami mezi nimi.
  4. Deadline: 2008-12-15 8:00:00
    • Napište GUI aplikaci v PyGTK, která bude obsahovat zakladní okno z tlačítkem pro výběr souboru a místo pro zobrazení obrázku a nějakých dat. Po stisknutí tlačítka se zobrazí dialog pro výběr souboru. Když si uživatel vybere soubor, soubor se pokusíte načíst OpenBabelem. Pokud se načtení povede, zobrazíte pod tlačítkem obrázek molekuly (vygenerujete PNG do temp souboru a ten pak zobrazíte) + souhrnné informace - molekulová hmotnost, sumární vzorec, SMILES a InChI.
    • Napište funkci, která bez použití možností openbabelu pro vyhledávání substruktur zjistí, zda se v molekule vyskytuje nějaký derivát karboxylové kyseliny.
    • S využitím funkce z předchozího bodu přidejte do statistických informací ve svém GUI informaci kolik karboxylových skupin molekula obsahuje.
    • Přidejte do GUI entry, do něhož bude lze zadati SMARTS a program mi řekne, zda je daná podstruktura součástí této struktury.
    • Do statistických informací o molekule přidejte počet kruhů.