Bioinformatyka, lab 1

advertisement
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
Instytut Informatyki i Matematyki Komputerowej UJ
opracowanie: Ewa Matczyńska, Jacek Śmietański
Zadania bioinformatyki
1.
Program kursu i zasady zaliczenia
Strona przedmiotu: http://jaceksmietanski.net/bioinformatyka
Program kursu przedstawiony został na pierwszym wykładzie. Tematyka laboratoriów będzie
się mniej więcej pokrywać z tematyką wykładów.
Szczegółowe zasady zaliczenia dostępne są w osobnym dokumencie na stronie przedmiotu.
Na stronie przedmiotu będą również umieszczane prezentacje z wykładów oraz materiały z
laboratoriów.
2.
Budowa nici DNA
Organizmy zbudowane są z komórek. Każda komórka to skomplikowany system
współdziałających ze sobą elementów. Szacuje się, że ciało człowieka zawiera ok 6*1023
komórek różnych typów. Istnieją organizmy jednokomórkowe, np. bakterie czy drożdże jak i
wielokomórkowe, np. człowiek.
Cała informacja potrzebna do konstrukcji i funkcjonowania komórki zakodowana jest w DNA
znajdującym się w jądrze komórkowym. DNA (Deoxyribonucleic acid) jest nośnikiem
informacji genetycznej u niemal wszystkich znanych organizmów żywych, ma strukturę
podwójnej helisy.
Helisa jest zbudowana z dwóch nici, z których każda składa się z powtarzalnych elementów
tzw. nukleotydów, które są zbudowane z cukru, reszty fosforanowej i zasady azotowej. W
DNA mamy 4 rodzaje zasad azotowych, są to adenina (A), guanina (G), cytozyna (C) i
tymina (T). Z powodu struktury chemicznej zasady azotowe mogą łączyć się w ściśle
określone pary: A łączy się z T, a C łączy się z G, jest to tzw. zasada komplementarności.
Wiązania wodorowe, które wytwarzają się między komplementarnymi zasadami stabilizują
helisę. Zróćmy uwagę, że obydwie nici tworzące helisę są w pewien sposób zorientowane. Na
schematycznym rysunku można zauważyć tzw. końce 5' i 3' – pochodzą one z nazewnictwa
chemicznego i informują jaka grupa jest dołączona na końcu nici. Jeśli jest to grupa
fosforanowa to mamy koniec 5', jeśli hydroksylowa (-OH) to mamy koniec 3'. Komórka
zawsze „czyta” sekwencję od końca 5' do końca 3' i domyślnie wszystkie sekwencje w bazach
danych zapisywane są w tą stronę. Długość nici DNA mierzona jest w ilości zasad
azotowych, ang. base pairs (bp).
Zadanie 1.
Obejrzyj jak wygląda struktura DNA w trójwymiarze:
http://www.rcsb.org/pdb/explore/jmol.do?structureId=1BNA
1
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
- najlepiej ustaw display options: Style - Ball and Stick, Color - By Element, zaznacz
checkbox H-bonds.
Jakie kolory odpowiadają poszczególnym atomom?
Autorami modelu podwójnej helisy są James Watson i Francis Crick, zaproponowali oni tą
strukturę w 1953 roku, otrzymując za nią później nagrodę Nobla.
W komórce organizmów eukariotycznych DNA zorganizowane jest w chromosomy, które są
bardzo dobrze widoczne podczas podziału komórki, gdyż wtedy DNA jest w nich bardzo
ciasno upakowane. Gdy komórka nie podlega podziałowi, DNA jest w luźnej postaci.
U człowieka mamy 23 pary chromosomów.
Gdyby rozwinąć DNA z 23 par chromosomów i połączyć, uzyskalibyśmy podwójną helisę
długości ok.2m.
Genomem nazywamy całą sekwencję DNA zawartą w pojedynczym zestawie chromosomów.
U człowieka genom ma długość ok 3.2 mld bp, przy czym sekwencja genomu jest w 99.9%
taka sama dla wszystkich ludzi. Natomiast 98% sekwencji jest identyczne jak u szympansa.
Wydawać by się mogło, że im bardziej skomplikowany organizm tym dłuższy powinien być
genom, jednak znane są genomy organizmów wiele razy dłuższe niż genom człowieka.
Rysunek 1. Wielkość wybranych genomów (źródło: http://blogs.biomedcentral.com/on-biology/wpcontent/uploads/sites/5/2014/03/genomelog030.jpg)
Zadanie 2.
Jakie dostrzegasz korzyści z tego, że DNA ma budowę podwójnej helisy? (w stosunku do nici
pojedynczej; weź pod uwagę, że DNA jest nośnikiem informacji)
Zadanie 3.
Odległość między nukleotydami na helisie DNA wynosi 0:34nm = 0:34 * 109m. Oblicz ile
bajtów można zapisać na 1 cm DNA?
3.
Budowa i znaczenie białek
2
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
Instrukcje zawarte w genomie potrzebne do funkcjonowania komórki jak i całego organizmu
to w istocie przepisy na budowę odpowiednich białek. Białka są kluczowe dla działania
naszego organizmu:
- katalizują reakcje chemiczne: enzymy
- odpowiadają za układ odpornościowy
- regulują pracę organizmu: hormony, np. insulina
- są receptorami światła, neuroprzekaźników
- pełnią funkcje transportowe, np. hemoglobina
- budują mięśnie, ścięgna, włosy
Białka są zbudowane z aminokwasów, których mamy 20 rodzajów oznaczanych przez litery
alfabetu: A R N D C E Q G H I L K M F P S T W Y V. Proces budowy białka polega na
sekwencyjnym dołączaniu kolejnych aminokwasów, które tworzą łańcuch. Na skutek
oddziaływań fizycznych, łańcuch aminokwasów zwija się i formuje strukturę przestrzenną
białka. Sekwencja aminokwasów determinuje strukturę 3D białka, a co za tym idzie, jego
funkcję.
Zadanie 4.
Obejrzyj strukturę białka. Struktury przechowywane są w bazie PDB (Protein Data Bank):
http://www.pdb.org
Możesz wybrać sobie np. hemoglobinę: nieutlenowana, id: 2HHB; utlenowana, id: 1HHO.
Dla zainteresowanych lektura:
http://www.pdb.org/pdb/101/motm.do?momID=41
4.
Kod genetyczny i centralny dogmat
Instrukcja budowy każdego białka czyli sekwencja aminokwasów białka jest zakodowana w
genomie. Fragment DNA, który zawiera przepis na taką sekwencję nazywamy genem. Geny
stanowią ok. 2% genomu człowieka, a ich liczbę szacuje się na ok. 20 tysięcy. Komórka
„wie” gdzie w genomie znajduje się gen danego białka, przepisuje tą instrukcję na chwilową,
jednoniciową kopię nazywaną mRNA. Cząsteczka mRNA jest bardzo podobna do DNA, z tą
różnicą, że zamiast nukleotydu z tyminą (T), mamy nukleotyd z uracylem (U).
Pozostaje pytanie, jak zakodowana jest sekwencja 20 aminokwasów za pomocą 4
nukleotydów. Tłumaczenie sekwencji mRNA na sekwencję aminokwasów odbywa się za
pomocą kodu genetycznego, który jest uniwersalny dla wszystkich organizmów. Każde 3
nukleotydy kodują aminokwas, bądź oznaczają koniec tłumaczenia, są to tzw. kodony stop.
Ponieważ mamy 43 = 64 możliwości na zakodowanie 20 aminokwasów, niektóre aminokwasy
są kodowane przez więcej niż jedną trójkę nukleotydów, jest to tzw. degeneracja kodu.
3
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
Rysunek 2. Kod genetyczny (źródło: http://adegene.com/content/standard-genetic-code)
Podsumowując, otrzymujemy tzw. centralny dogmat biologii molekularnej, który określa
przepływ informacji w komórce. Sekwencja genu w DNA jest przepisywana na mRNA, na
którego podstawie tworzone jest białko. Jeśli w danej chwili na podstawie genu produkowane
jest białko to mówimy, że ulega on ekspresji. Każda komórka organizmu posiada ten sam
genom, jednak różnią się one od siebie dlatego, że w komórkach różnych typów ekspresji
ulegają różne białka.
Bioinformatyka zajmuje się stosowaniem narzędzi matematycznych i informatycznych do
rozwiązywania problemów z nauk biologicznych. Obejmuje takie zagadnienia jak badanie
struktury, funkcji, ewolucji genów, białek, całych genomów. Podstawowe problemy to analiza
sekwencji, analiza struktur 3D białek, analiza ekspresji, interakcje molekularne,
projektowanie leków, modelowanie systemów biologicznych, analiza obrazów z
wysokoprzepustowych technik eksperymentalnych, obrazów medycznych i wiele innych.
Zadanie 5:
Jak sądzisz, dlaczego kod genetyczny jest zdegenerowany?
5.
Wprowadzenie do Pythona
Python to interpretowany, interaktywny język programowania stworzony przez Guido van
Rossuma w 1990. Nazwa pochodzi od Monty Pythona.
Główne cechy:
- dynamiczny system typów - zmienne nie mają przypisanych na sztywno typów, typ
zmiennej wynika z wartości jaką dana zmienna przechowuje;
4
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
- automatyczne zarządzanie pamięcią - garbage collector;
- wszystko jest obiektem: system typów w pythonie jest silnie powiązany z systemem klas,
klasa może dziedziczyć z dowolnego typu. Można więc dziedziczyć klasy z napisów czy
słowników, a nawet z liczb całkowitych, możliwe jest dziedziczenie wielokrotne;
- wszystkie wartości przekazywane są przez referencję;
- bloki kodu są wydzielane przez wcięcia, trzeba zwracać na to szczególną uwagę!
Na zajęciach będziemy korzystać również z pakietu biopython: http://biopython.org/
1. Podstawowe typy danych:
(a) logiczny
(b) liczby : int, float, long i complex np.
compl = 3+2.7j
(c) string
str = 'Hello World!'
(d) lista np.
list = ['banana', 'apple', 'mango']
(e) krotka, ang. tuple - w pewnym stopniu podobna do listy, ale dostęp do jej elementów jest
szybszy, jest niemodyfikowalna
tuple = ('abcd', 786 , 2.23, 'john', 70.2)
(f) słownik np.
dict = {'name': 'john', 'code':6734, 'dept': 'sales'}
2. Instrukcja warunkowa
if expression:
statement(s)
else:
statement(s)
--if expression1:
statement(s)
elif expression2:
statement(s)
elif expression3:
statement(s)
else:
statement(s)
--if n>0:
n+=2
else:
n-=2
5
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
3. Pętla while:
while expression:
statement(s)
--while n>0:
n-=1
4. Pętla for
for iterating_var in sequence:
statement(s)
else:
statement(s)
--for n in range(1, 10):
print(n)
else:
print("done")
--fruits = ['banana', 'apple', 'mango']
for fruit in fruits:
print('Current fruit :', fruit)
5. Definiowanie funkcji
def functionname(parameters):
...
return [expression]
--def fibonacci(n):
a, b = 0, 1
while a < n:
print(a)
a, b = b, a+b
return b
Zadanie 6:
Co wypisuje wskazana wyżej funkcja „fibonacci” i jaką wartość zwraca?
6. Importowanie modułów:
import module1[, module2[,... moduleN]
---
6
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
import math
from math import sin,cos
7. Podstawowe operacje na plikach:
file_object = open(file_name [, access_mode][, buffering]))
file_object.write(string)
file_object.read([count])
file_object.readline()
fileobject.close()
--for line in file_object:
print(line)
8. Standardowe wejście i wyjście
import sys
parameter = sys.argv[0]
s = sys.stdin.readline()
name = input("What is your name? ")
print(name)
9. „Hello world”
print("Hello protein world!")
w funkcji:
def hello():
print("Hello protein world!")
10. Proste operacje na stringach, listach i słownikach
str = 'AGGTTACT '
print(str)
# complete string
print(str[0])
# first character of the string
print(str[2:5])
# characters starting from 3rd to 6th
print(str[2:])
# string starting from 3rd character
print(str[-1])
# last character
print(str[0:len(str):2])# starting from first to last character with step 2
print(str[::-1])
# reverse string
print(str * 2)
# string two times
print(str + "TEST")
# concatenated string
print(len(str))
# length of string
print(min(str))
# smallest item
print(max(str))
# largest item
print(str.index("G"))
#index of the first occurence of G in string
print(str.count("T"))
#total number of occurences of T in string
print(str.rstrip())
#trailing whitespaces removed
print(str.split('A'))
#split using a delimeter
#i dużo innych
7
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
--list = [ 'ACCTGC', 786 , 3.14, 'Adenine' ]
tinylist = [123, 'DNA']
print(list)
# complete list
print(list[0])
# first element of the list
print(list[1:3])
# elements starting from 2nd to 4th
print(list[2:])
# elements starting from 3rd element
print(tinylist * 2)
# list two times
print(list + tinylist) # concatenated lists
print(list.append('1234'))
# appends new element
print(list.insert(2, "new")) #inserts new element
print(list.extend(["two", "elements"])) # extends with elements
--complementary_bases = {'A':'T', 'T':'A', 'C':'G', 'G':'C'}
print(complementary_bases['A'])
# value for 'A' key
print(complementary_bases)
# complete dictionary
print(complementary_bases.keys()) # all the keys
print(complementary_bases.values()) # all the values
#adds pair to the dictionary:
complementary_bases['human DNA length in bp'] = 3.2*10**9
Zadanie 7:
Niech a będzie dowolna sekwencją DNA (ciąg niezerowej długości, składający się z liter A,
C, G i T), np.: a=’TATATAAAAAAAAGGGGGAT”.
Wypisz:
a) ciąg w odwróconej kolejności;
b) pierwsze pięć nukleotydów w sekwencji
c) co trzeci nukleotyd
d) kolejne fragmenty ciągu pogrupowane po trzy znaki w jednym wierszu
Zadanie 8: (4 pkt)
Zarejestruj (zaloguj) się na portalu http://rosalind.info i dołącz do klasy „bioinformatyka”.
Wykonaj zadania oznaczone dzisiejszą datą.
Funkcję translate(sequence) zwracającą sekwencję aminokwasów, przetłumaczoną
zgodnie z kodem genetycznym wywołaj dla sekwencji z załączonego pliku (hemoglobin.txt).
Wykonaj tłumaczenie, rozpoczynając również od drugiego i od trzeciego nukleotydu, zobacz
jak wpływa to na zmianę wyprodukowanego białka.
8
Bioinformatyka, edycja 2016/2017, laboratorium 1
5.10.2016
Wskazówki:
1. Tabela kodu genetycznego:
gencode = { 'ATA':'I',
'ACA':'T',
'AAC':'N',
'AGC':'S',
‘CTA':'L',
'CCA':'P',
'CAC':'H',
'CGA':'R',
'GTA':'V',
'GCA':'A',
'GAC':'D',
'GGA':'G',
'TCA':'S',
'TTC':'F',
'TAC':'Y',
'TGC':'C',
'ATC':'I',
'ACC':'T',
'AAT':'N',
'AGT':'S',
'CTC':'L',
'CCC':'P',
'CAT':'H',
'CGC':'R',
'GTC':'V',
'GCC':'A',
'GAT':'D',
'GGC':'G',
'TCC':'S',
'TTT':'F',
'TAT':'Y',
'TGT':'C',
'ATT':'I',
'ACG':'T',
'AAA':'K',
'AGA':'R',
'CTG':'L',
'CCG':'P',
'CAA':'Q',
'CGG':'R',
'GTG':'V',
'GCG':'A',
'GAA':'E',
'GGG':'G',
'TCG':'S',
'TTA':'L',
'TAA':'*',
'TGA':'*',
'ATG':'M',
'ACT':'T',
'AAG':'K',
'AGG':'R',
'CTT':'L',
'CCT':'P',
'CAG':'Q',
'CGT':'R',
'GTT':'V',
'GCT':'A',
'GAG':'E',
'GGT':'G',
'TCT':'S',
'TTG':'L',
'TAG':'*',
'TGG':'W' }
Gwiazdka (*) oznacza kodon STOP. Po jego przeczytaniu, translacja powinna się zakończyć.
2. Funkcja line.rstrip() usunie znaki końca linii z pliku.
3. Funkcja range(start, stop, step) ułatwi iterowanie po sekwencji
4. Instrukcje testowe wykonywane poza zdefiniowanymi funkcjami, warto zawrzeć wewnątrz
konstrukcji:
if __name__ == "__main__":
Konstrukcja ta będzie wykonana tylko gdy plik będzie uruchamiany bezpośrednio (nie będzie
wykonywana, jeżeli nasz moduł zostanie zaimportowany przez inny program).
(więcej informacji tutaj:
http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie/Testowanie_modu%C5%82%C3%B3w)
9
Download