Jak wygląda składanie sekwencji w przypadku sekwencjonowania de novo? Jakie wykorzystuje się do tego narzędzia? Narzędzia: https://omictools.com/genome-assembly-category
W jaki sposób metodę NGS można wykorzystać do badania metylacji DNA? WGBS (ang. Whole Genome Bisulfite Sequencing) Reakcja z użyciem wodorosiarczanu IV sodu polega na konwersji niezmetylowanych cytozyn do uracylu (deaminacja oksydacyjna)
Od czego zależy jakość odczytów w sekwencjonowaniu nowej generacji i czemu jest ona niższa niż podczas sekwencjonowania metodą Sangera? Jakość zależy od: Pozycja w odczycie Przygotowanie biblioteki Platforma do sekwencjonowania wpływa m.in. na ilość artefaktów Dlaczego Sanger daje odczyty lepszej jakości? Jako wynik otrzymujemy jedną sekwencję konsensusową składaną podstawie chromatogramu W NGS każdy odczyt jest tylko w jednej kopii
Egzamin 4 czerwca, 9.15 Czas trwania: ~45 minut 15-20 krótkich pytań: otwartych (odpowiedz max 2-3 zdania), uzupełnianie, wymienianie, zaznacz zdanie prawdziwe, itp., proste obliczenia (może się przydać kalkulator) Pytania z wykładów oraz z części teoretycznej do materiału ćwiczeniowego
Wprowadzenie do programowania w języku Python oraz jego zastosowanie w bioinformatyce Wykład 10 Bioinformatyczna analiza danych Dr Wioleta Drobik-Czwarno
Języki programowania Język programowania to język stworzony do opisu kolejnych kroków, które mają być podjęte przez komputer. ~ instrukcja dawana komputerowi przez człowieka. Język używany przez procesor to kod maszynowy Kod pisany w języku programowania jest przetwarzany na kod maszynowy tak, by mógł zostać przetworzony przez procesor
Klasyfikacja Interpretowane Na bieżąco tłumaczone na język maszynowy komputera przez program zwany interpreterem Kompilowane Kod źródłowy jest tłumaczony na kod maszynowy (wykonywalny program) przez program zwany kompilatorem Jedna instrukcja w kodzie źródłowym to kilka (języki niskiego poziomu), kilkaset instrukcji (języki wysokiego poziomu) w kodzie maszynowym
Główne składowe każdego programu Zmienne Funkcje Sterowanie przepływem wykonywania programu instrukcje warunkowe pętle Schemat blokowy algorytmu Algorytm to jednoznaczny przepis wykonania pewnej czynności w skończonym czasie np. zmiana pewnych danych wejściowych do pewnych danych wynikowych
Dlaczego biotechnolodzy powinni coś wiedzieć o programowaniu? Jak opisać problem badawczy w języku informatyki? Potrzebna jest podstawowa wiedza programistyczna, która umożliwi wykonanie prostych zadań, które przyspieszą / wzbogacą prowadzone badania Dlaczego? Rosnąca lawinowo ilość danych Nowe formaty danych Automatyzacja pracy z plikami / innymi programami Wstępna ocena wyników bez żmudnego przeglądania setek plików Przewaga na rynku pracy
Dlaczego Python? Łatwy do nauki Największy potencjał w naukach biologicznych (alternatywy: R, Pearl, Julia) Bardzo dobry język do niemal wszystkich zastosowań od prostych skryptów do profesjonalnych, złożonych programów Darmowy Wszystkie systemy operacyjne Powszechnie używany na całym świecie
O języku Utworzony w 1991 roku przez Guido Van Rossum Jest językiem interpretowanym, ogólnego przeznaczenia, umożliwia zarówno programowanie funkcyjne jak i obiektowe Używany w wielu firmach (np. google, yahoo, Red Hat) oraz jednostkach badawczych na całym świecie (CERN, Nasa) Nazwa? Potrzebna była nazwa która jest krótka, unikalna, trochę tajemnicza
Jak korzystać z Pythona? Terminal i notatnik Ipython (Jupyter notebook) IDLE (Windows) proste zintegrowane środowisko graficzne (IDE) dla Pythona Napisane w Pythonie przy użyciu biblioteki Tkinter
Witaj Świecie Python to język o wyjątkowo prostej składni Najprostszą instrukcją jest print, które wypisuje linijkę tekstu na ekranie Instrukcja print jest inaczej traktowana w wersjach pythona 2.X, a inaczej 3.X Python 2.X: print Witaj Świecie Python 3.X: print( Witaj Świecie )
Najważniejsze typy zmiennych Zmienne to wydzielone miejsce w pamięci komputera, gdzie można zapisywać dane, mają swoją nazwę i zawartość (dane). Python jest językiem zorientowanym obiektowo każda zmienna jest obiektem Ciąg znaków (z ang. string) Używamy pojedynczego lub podwójnego cudzysłowu Np. dna = gcatgacgttattacgactctgtc Liczby Liczby całkowite (z ang. integer) Liczby rzeczywiste (z ang. float) najczęściej kodowane jako liczba zmiennoprzecinkowa tzn. zapisywane są z określoną (różną) dokładnością do miejsca po przecinku Typ logiczny (z ang. boolean) Wartości True lub False
Struktury danych Ciąg znaków (String)
Struktury danych Lista Zawsze używamy nawiasu kwadratowego [ ], kolejne elementy listy są oddzielone przecinkami Dane w jednej liście mogą być różnego typu Kolejność jest ważna, indeksowanie zaczynamy od 0 Niemodyfikowalną listę nazywamy krotką (z ang. tupla) element 0 element 1 element 2
Struktury danych Słownik Jest to zmienny (modyfikowalny), nieposortowany zestaw par klucz : wartość Wartości: dowolny obiekt w pythonie Klucze: są indeksami słownika może być to dowolny niezmienny typ np. liczby, ciągi znaków Klucze muszą być unikatowe jest to jedyna droga do odnalezienia w słowniku informacji ponieważ nie posiadają one porządku
Struktury danych Słownik Poniżej przykład dla kodów IUPAC dla aminokwasów:
Instrukcje warunkowe Operatory zwracają zawsze False lub True: == - sprawdź czy jest równe!= - sprawdź czy jest różne in czy obiekt znajduje się w liście lub innym obiekcie is sprawdza czy zmienne wskazuję na ten sam obszar w pamięci komputera not zmienia wartość wyrażenia logicznego na przeciwne Przykłady: x = 2 print x == 2 wypisze wartość True print x!= 2 wypisze wartość False print x == 3 wypisze wartość False print x < 3 wypisze wartość True imiona = [ Jan, Robert ] imie = Jan if imie in imiona: print Nazywasz się Jan lub Robert
Pętle Pętla for: Lista = [1,2,3,4,5] for i in Lista: print i 1 2 3 4 5 Pętla while: licznik = 0 while licznik < 5: print licznik 0 1 2 3 4 Zawsze zawiera warunek logiczny, pętla działa dopóki jest spełniony (wartość True) licznik += 1 # to samo co licznik = licznik + 1 Instrukcje: break - zakończenie pętli continue pozwala opuścić blok instrukcji niżej i wrócić do nagłówka
Jak wygląda program komputerowy napisany w języku Python? Zliczanie nukleotydów def oznacza deklarację nowej funkcji, składnia: def nazwa(argumenty): Transkrypcja Uwaga! Rozmieszczenie wcięć w tekście i ich głębokość są istotne! (intendancja) Sekwencja odwrotnie komplementarna
Pythonowy odpowiednik Bioconductora Zestaw narzędzi (bibliotek) opartych na języku python z zastosowaniem do obliczeniowej biologii molekularnej Wspiera liczne formaty danych takie jak: Fasta, Pliki wynikowe BLAST, ClustalW, GenBank, Pubmed, Medline, Unigene, SwissProt, ExPASy Przykład: from Bio import Seq >>> seq = Seq.Seq("ATGCATGCATGATGATCG") >>> print seq Seq('ATGCATGCATGATGATCG', Alphabet()) >>>
Zasoby Bardzo duża ilość darmowych publikacji, kursów, książek, wprowadzających do Pythona Programowania możemy nauczyć się wyłącznie przez praktykę
Rosalind jest serwerem do nauki bioinformatyki oraz programowania poprzez rozwiązywanie problemów Zainspirowany projektami takimi jak Euler i Google Code Jam Nazwa pochodzi od imienia Rosalind Franklin, której badania w dziedzinie krstalografii promieni X umożliwiły wykrycie podwójnej helisy DNA przez Watsona i Cricka. Portal dzieli się na następujące działy: Village nauka podstaw programowania w języku python Stronghold zestaw zadań do rozwiązania Armory rozwiązywanie problemów przy użyciu gotowych narzędzi
Rosalind Struktura problemów Projekty od najprostszych....... do coraz bardziej złożonych
Rosalind Działy tematyczne: kombinatoryka przyrównywanie sekwencji spektrofotometria mas programowanie dynamiczne asemblacja genomów rearanżacje genomów grafy dziedziczenie teoria zbiorów prawdopodobieństwo analiza sekwencji dynamika populacji
Przykładowe zadanie
Literatura Ekmekci B., McAnany Ch. E., Mura C. 2016. An Introduction to Programming for Bioscientists: A Python-Based Primer. PLOS One. Jones M. 2013. Python for Biologists. A programming course for complete beginners. Serwis learnpython.org https://www.learnpython.org/pl