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 Zawsze zawiera warunek logiczny, pętla działa dopóki jest spełniony (wartość True) • Pętla while: licznik = 0 while licznik < 5: print licznik licznik += 1 # to samo co licznik = licznik + 1 0 1 2 3 4 • 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 Transkrypcja def oznacza deklarację nowej funkcji, składnia: def nazwa(argumenty): 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