Podstawy programowania, Python

advertisement
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
Download