Pytania kwiecień, maj Od czego zależy to czy jakość zasad w technice NGS jest zakodowana w skali phred 33 czy 64? Czy są jakieś kryteria wyboru tego kodowania? Z czego wynika dobór kodowania skali phred w ocenie jakości nukleotydów? Czy jest to uzależnione od wybranej metody sekwencjonowania i wtedy zawsze kodowanie będzie to samo, czy skala może być zmienna? Zależy od sekwenatora jakiego użyliśmy. Można zrobić przekodowanie. W jaki sposób wyliczona została jakość w tej skali i przypisana konkretnym symbolom w kodzie, które następnie odpowiadają nukleotydom w sekwencji? Czy jeśli prawdopodobieństwo błędnego odczytania nukleotydów jest wysokie to takie nukleotydy należy wyciąć? ASCII jest 7-bitowy kodowany jako liczby całkowite, float jest 32 bitowy W jaki sposób usuwane są adaptery (gdy nie robi tego sekwenator)? Jaki wpływ mają nieprawidłowo usunięte adaptery? Możemy je usunąć jeżeli znamy sekwencję, np. programmem trimmomatic. Nie usunięte adaptery mogą utrudniać mapowanie do genomu referencyjnego lub asemblacje sekwencje nie pochodzą od organizmu, który badamy, więc zmniejszają podobieństwo odczytów.
Pytania kwiecień, maj Czym się charakteryzuje genom referencyjny? Skąd możemy go pozyskać do badań/analizy? Czy możemy sami go wybrać? Czy musi spełniać jakieś konkretne wymagania? Co w momencie gdy marker według jednej z nich np. (Bonferoni'ego) osiąga wynik poniżej 0,05 i jest istotny, a wynik dla innej korekty (np Sidak) nie osiąga progu istotności? Wynik której korekty powinniśmy przyjąć? Czy w bioconductorze można znaleźć pakiet, który mógłby być wykorzystany do analizy różnicy w ekspresji genów, badanej metodą Real Time PCR? Tak, pakiety: ddct, EasyqpcR, HTqPCR (dla metod wysokoprzepustowych) Pakiety w Bioconduktorze charakteryzują się tym, że są bardziej rozbudowane niż pakiety w programie R. Czy oprócz tego są one dokładniejsze w analizie danych? Czy są one uznawane za bardziej rzetelne i profesjonalne przy publikowaniu wyników w artykułach?
Do odpowiedzi: Dlaczego program podaje kilka adnotacji, dla jednego wariantu dla tego samego genu? Jakie błędy można popełnić na etapie przygotowywania matrycy do sekwencjonowania NGS, a jakie na etapie amplifikacji klonalnej, które spowodują otrzymanie fałszywego wyniku lub jego braku?
Egzamin 20 czerwca 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 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? Liczenie 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ę
Roslind 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