Specjalizowane języki programowania dr inż. Maciej Miłostan Harmonogram zajęć Wykłady i laboratoria odbywają się co drugi tydzień – 7 wykładów (w tygodniach nieparzystych - „nad kreską”) – 16 spotkań na laboratoriach – Lista tygodni: http://fc.put.poznan.pl/files/rozklady /tygodnie.pdf – Przedmiot kończy się zaliczeniem przed końcem semestru (tj. przed 29.01.2014) Zasady zaliczenia • Zgodnie z regulaminem studiów: 1. „Nieobecność studenta, nawet usprawiedliwiona, na więcej niż 1/3 zajęć, może być podstawą do niezaliczenia tych zajęć. Niewykonanie ćwiczeń określonych regulaminem laboratorium uniemożliwia zaliczenie zajęć laboratoryjnych.” 2. „Podstawą do zaliczenia wszystkich rodzajów ćwiczeń i wykładów niekończących się egzaminem są pozytywne wyniki bieżącej kontroli wiadomości. Formę tej kontroli określa prowadzący zajęcia i wystawia ocenę do końca semestru.” 3. „Studentowi, który w wyniku bieżącej kontroli wiadomości otrzymał ocenę niedostateczną, przysługuje prawo do jednego zaliczenia poprawkowego.” • Ergo: – – Można opuścić maksimum pięć laboratoriów, ale sprawozdania należy oddać ze wszystkich Na laboratoriach będą obowiązywały regularne sprawozdania z zajęć jako forma sprawdzania wiedzy, możliwe wejściówki Konsultacje i kontakt • Gdzie? – Centrum Wykładowo-Konferencyjne Politechniki Poznańskiej – Pokój 122 (na I piętrze) • Kiedy? – Czwartki od 8.15 do 9.40 Lub inny umówiony termin (np. w tygodniu parzystym przed laboratorium) • Informacje kontaktowe: [email protected] Tel.: +48-61-665-29-78 Plan przedmiotu • Treści kształcenia Języki programowania ukierunkowane na specyficzne zastosowania, ze szczególnym uwzględnieniem przetwarzania ciągów znaków. Języki skryptowe. Perl. Python. Przetwarzanie danych tekstowych. • Efekty kształcenia - umiejętności i kompetencje Student zna wybrane specjalizowane języki programowania w stopniu umożliwiającym swobodne pisanie programów, ze szczególnym uwzględnieniem przetwarzania danych tekstowych, w tym sekwencji nukleotydowych i aminokwasowych. Karta ETCS • Pokaż kartę ETCS Plan zajęć • Informacje organizacyjne i wprowadzenie do przedmiotu • Języki skryptowe i przetwarzanie tekstów (1x) • Perl i BioPerl (3x) • Python i BioPython (2x + 1/2x) • Zaliczenie (1/2x) Motywacja • Współczesne eksperymenty generują duże ilości danych, które wymagają zautomatyzowanego przetwarzania i gromadzenia w rozmaitych bazach danych Motywacja • Istnieje wiele formatów przechowywania podobnych danych – Np. formaty sekwencji aminokwasowych i nukleotydowych: • PIR • FASTA • Sama sekwencja (bare sequence) • Sekwencja z numeracją i spacjami Motywacja • Informacje z baz danych, w celu dalszej analizy, często muszą zostać pobrane i przekonwertowane do formatu kompatybilnego z wykorzystywaną aplikacją • Z plików danych musi zostać wyekstraktowana tylko część danych np. pojedynczy model białka z pliku PDB • Dane generowane przez różne aplikacje muszą zostać zagregowane Rodzaje danych biologicznych • • • • Sekwencje, np. dane genomowe Struktury przestrzenne Drzewa filogenetyczne Sieci / grafy – np. mapy interakcji białek, modelowanie oddziaływań • Szlaki metaboliczne • Dane z mikromacierzy i ekspresja genów • Dane obrazowe Źródło danych – rodzaje baz • Pochodzenie – Dane pochodzące bezpośrednio z eksperymentu – Dane wywiedzione z danych eksperymentalnych – Dane zagregowane • Jakość – Dane deponowane bezpośrednio – Dane deponowane przez „kuratorów” – Zarządzanie błędami – usuwanie błędnych danych lub ich znakowanie – Sprawdzanie błędów – Spójność, aktualizacje Organizacja danych • Pliki płaskie • Relacyjne bazy danych • Obiektowe bazy danych Dostępność danych • Dostępne (ang. available) publicznie bez restrykcji • Dostępne (ang. available), ale chronione prawami autorskimi • Dostępne (ang. accessible), ale bez możliwość pobrania • Dostępne dla środowiska akademickiego • Komercyjne Opiekunowie/kuratorzy baz • Duże instytucje publiczne (NCBI, EMBL) • Instytucje kwasi-akademickie (Swiss Institute of Bioinformatics) • Grupa akademicka lub naukowiec • Firma komercyjna Algorytmy i analizy 1) Proste operacje – wyszukiwanie ciągów znaków, zliczanie, itp. 2) Porównywanie sekwencji 3) Konstrukcja drzew (filogenetycznych) 4) Detekcja wzorców w sekwencjach 5) Modelowanie struktur 3D z sekwencji 6) Wnioskowanie dot. mechanizmów regulacji komórkowej 7) Przewidywanie lub determinacja funkcji białek i szlaków metabolicznych 8) Asemblacja fragmentów DNA Języki skryptowe • • • • Języki interpretowane Zwykle nie wymagają kompilacji Często stosują automatyczne typowanie Przykłady: – Powłoka systemu linux/unix np. język skryptów Bash – Pliki wsadowe .bat – AWK (Zobacz: http://www.cs.put.poznan.pl/jnawrocki/ics/0203/ 02wpr5-awk.ppt) – Perl – Python – Ruby Języki skryptowe • BioPerl jest zbiorem modułów Perl-a • Trzy paradygmaty projektowe w BioPerlu – Separacja interfejsów od implementacji – Dostarczenie bazowego wzorca (framework-u) dla odpowiednich operacji poprzez generalizacię typowych procedur do pojedynczego modułu – Wykorzystanie wzorców projektowych opracowanych przez Ericha Gamma: metoda wytwórcza i wzorzec strategii Języki skryptowe • Biopython jest zbiorem modułów Python • Kluczowe elementy projektu BioPython – tworzenie parserów do danych biologicznych – Projektowanie interfejsów użytecznych w przetwarzaniu sekwencji Języki skryptowe • BioPHP dawniej GenePHP, „seeks to encourage the use of PHP as a “glue” language to bind web-based bioinformatics applications and databases” • Funkcje zaimplementowane w BioPHP – Odczyt danych biologicznych w formatach GenBank-u, Swissprot-a, Fasta, alignment-ów Clustal-a (ALN) – Proste analizy sekwencji Języki skryptowe • Ruby jest obiektowym językiem skryptowym • Projekt BioRuby jest wspierany i finansowany przez – Human Genome Center na Uniwersytecie w Tokyo – Bioinformatics Center na Uniwersytecie w Kyoto XML i składowanie danych • XML jest uniwersalnym i roszerzalnym formatem przechowywania i wymiany danych oraz dokumentów ustrukturalizowanych • Dwie inicjatywy godne odnotowania: – Bioinformatics Sequence Markup Language (BSML) – BIOpolymer Markup Language (BioML) Programowanie deklaratywne i funkcyjne • Przykład czysto funkcyjnego języka • Pod nazwa Biohaskell zbierane są wszelkie programy i biblioteki związane z zastosowaniem haskell-a w biologii. Programowanie deklaratywne i funkcyjne • Biomedical Logic Programming (Blip) – Zbiór modułów stworzonych z myślą o zastosowaniach bioinformatycznych i biomedycznych – Zintregrowany system zapytań – Zaimplementowane w SWI-Prolog Programowanie deklaratywne i funkcyjne • BioBike jest interaktywnym (z interfejsem web) środowiskiem programistycznym, które umożliwia biologom analizę systemów biologicznych poprzez połączenie wiedzy i danych poprzez bezpośrednie programowanie dokonywane przez użytkownika końcowego • Zaimplementowano przy użyciu BioLisp (Lisp z dodatkiem funkcjonalności biologicznej) AWK - PRZYPOMNIENIE • Przypomnienie wykładu prof. J. Nawrockiego: http://www.cs.put.poznan.pl/jnawrocki/i cs/0203/02wpr5-awk.ppt