09.12.15 Bioinformatyka Laboratorium 8 Rozwiązania należy

advertisement
09.12.15
Bioinformatyka
Laboratorium 8
Rozwiązania należy przesłać najpóźniej do dn. 22.12.15
Zadanie 1. Korzystając z programu RNAfold (http://rna.tbi.univie.ac.at/cgi-bin/RNAfold.cgi) wykonaj
przewidywanie struktury drugorzędowej dla sekwencji RNA :
GAGAGAGCUUCCUUGAGUCCAUUCACAGGUCGUGAUAUGAUUCAAUUAGCUUCCGACUCA
UUCAUCCAAAUACCGAGUCGCCAAAAUUCAAACUAGACUCGUUAAAUGAAUGAAUGAUGC
GGUAGACAAAUUGGAUCAUUGAUUCUCUUUGAUUGGACUGAAGGGAGCUCCCUC
oraz seq2a.fasta
Zadanie 2.
W Bioinformatyce stale posługujemy się literami alfabetu, które oznaczają np. DNA, RNA, aminokwasy,
proteiny itp. Przy analizie sekwencji DNA, RNA i białek, będziemy korzystać z alfabetów IUPAC
(Międzynarodowa Unia Chemii Czystej i Stosowanej). Wykorzystywany obiekt "Alfabet" Biopython
przechowuje w module Bio.Alphabet.
Przykład:



dla białek istnieje podstawowa klasa IUPACProtein, ale jest też specjalna klasa
ExtendedIUPACProtein obejmująca elementy tj. „U” (lub „Sec”) , „O” (lub „Pyr") oraz
niejednoznaczne symbole „B” (lub „Asx” ), „Z” (lub „Glx” ), „J” (lub „Xle”) oraz „X” (lub
„Xxx”);
dla DNA można wybrać alfabet IUPACUnabiguousDNA, który uwzględnia tylko podstawowe
zasady, IUPACAmbiguousDNA (który uwzględnia wszystkie zasady niejednoznaczne), oraz
ExtendedIUPACDNA, który zezwala na stosowanie liter dla zmodyfikowanych zasad;
dla RNA mamy alfabety IUPACAmbiguousRNA i IUPACUnambiguousRNA.
Sprawdź jakie litery alfabetu są używane do oznaczania DNA, białek (praca w konsoli)
>>> import Bio.Alphabet
>>> Bio.Alphabet.ThreeLetterProtein.letters
>>> from Bio.Alphabet import IUPAC
>>> IUPAC.unambiguous_dna.letters
>>> IUPAC.ambiguous_dna.letters
>>> IUPAC.ExtendedIUPACProtein.letters
Istotny element analiz stanowi sekwencja np. DNA czy białek dlatego w Biopythonie sekwencja (Seq) jest
obiektem, zawartym w module o nazwie Bio.Seq
Zadanie 3.
Przypisz zmiennej A następującą sekwencję " AGTACACTGG " (fragment DNA).
>>> from Bio.Seq import Seq
>>> import Bio.Alphabet
>>>seq = Seq("AGTACACTGG ", Bio.Alphabet.IUPAC.unambiguous_dna)
>>>seq
>>> print(seq)
>>> seq.alphabet
Zadanie 4
Wykonaj translację i transkrypcję sekwencji seq wykorzystując metody: .transcribe(), .translate()
>>> seq.transcribe()
>>> seq.translate()
Zadanie 5


RNA nie można transkrybować, ale podlega ono translacji. Wykonaj translację sekwencji RNA:
"CCGGGUU" (uwaga zapisując sekwencję pod dowolną zmienną użyj:
Bio.Alphabet.IUPAC.unambiguous_rna).
korzystając z metody .back_transcribe(), transkrybuj RNA do DNA
Zadanie 6
W wielu przypadkach możemy postępować z obiektem Seq, tak jak byłby to zwykły ciąg znaków. Dla
sekwencji
seq = Seq(’CCGGGTTAACGTA’,Bio.Alphabet.IUPAC.unambiguous_dna)
sprawdź wynik działania funkcji:
>>> seq[:5]
>>> len(seq)
>>> print(seq[-1])
>>> seq[-1]
>> seq.count("AA")
 oblicz procent zasad G i C
>>from Bio.SeqUtils import GC
>>GC(seq)
 podaj zasady komplementarne do sekwencji seq i zasad komplementarnych w odwróconej
sekwencji
>>seq.complement()
>>seq.reverse_complement()
Praca bioinformatyka wiąże się z obróbką rekordów sekwencji, które zapisywane są w postaci wielu
różnych formatów plików. W/w rekordy zawierają istotne informacje biologiczne, ale zanim będą mogły
być opracowywane za pomocą języka programowania (np. Python), konieczne należy je sparsować.
Zadanie 7
 Przeszukaj bazę danych NCBI Nucleotide dla kwerendy „Serritermitidae”, zapisz wynik
wyszukiwań do pliku o nazwie Serriter.fasta.
Następnie wpisz następujący kod:
>>>from Bio import SeqIO
>>> for rekord_sek in SeqIO.parse("Serriter.fasta", "fasta"):
>>>print(rekord_sek.id)
>>>print(repr(rekord_sek.seq))
>>>print (len(rekord_sek))

Wczytaj i zapisz w/w kweredę w formacie GenBank (wykonaj odpowiednie korekty):
>>>for rekord_sek in SeqIO.parse("termit.gb", "genbank")
>>>print(rekord_sek.id)
>>>print(repr(rekord_sek.seq))
>>>print (len(rekord_sek))
 Napisz skrypt o nazwie pobierz.py, który będzie parsował sekwencję o ścieżce dostępu
(np.C:\Users\....) i formacie (fasta, genbank) podanym przez użytkownika. Program powinien
umożliwiać następująca komunikację z użytkownikiem:
Podaj nazwe pliku lub sciezke do sekwencji:
>>>C:\Users\daniel\Desktop\sekwencja.fasta
Podaj format pliku:
>>>fasta itd
Zadanie 8
Dla sekwencji wczytanej z bazy danych NCBI Nucleotide dla kwerendy „Protein A19” podaj:
 sekwencję komplementarną
 odwróconą sekwencję komplementarną
 długość
Zadanie 9
Wycinanie fragmentów sekwencji
Przykład:
>>>from Bio.Seq import Seq
>>>moja_sek = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC",
Bio.Alphabet.IUPAC.unambiguous_dna)
>>> moja_sek[4:12]
Seq(’GATGGGCC’, Bio.Alphabet.IUPAC.unambiguous_dna)
Pierwszy element w/w sekwencji jest zero. Po wycięciu pierwszy element jest włączany do nowej
sekwencji, a ostatni pomijany. Utworzona sekwencja zachowuje cechy swojego pierwowzoru tj. jest
obiektem Seq o alfabecie Bio.Alphabet.IUPAC.unambiguous_dna.
Podobnie jak w Pythonie, można użyć do wycinania sekwencji opcje start, stop i stride (wielkość kroku
wybrana domyślnie jako 1). Możemy np. uzyskać pozycje 1., 2. i 3. kodonu sekwencji:
>>> moja_sek[0::3]
Seq(’GCTGTAGTAAG’, Bio.Alphabet.IUPAC.unambiguous_dna)
>>> moja_sek[1::3]
Seq(’AGGCATGCATC’, Bio.Alphabet.IUPAC.unambiguous_dna)
Można też odwrócić sekwencję stosując ujemny krok (stride=-1):
>>> moja_sek[::-1]
Zamiana obiektów Seq na ciągi znaków
Jeżeli chcemy zamienić obiekt Seq na zwykły ciąg znaków (string) stosujemy funkcję str:
>>> str(moja_sek)
’GATCGATGGGCCTATAT’
lub funkcję print:
>>> print moja_sek
GATCGATGGGCCTATAT

Utwórz skrypt o nazwie wytnij.py, który będzie z podanej przez użytkownika sekwencji zapisanej
w alfabecie Bio.Alphabet.IUPAC.unambiguous_dna wycinał fragment o podanych przez użytkownika
współrzędnych (indeks początkowy i końcowy)
Program powinien umożliwiać następującą komunikację z użytkownikiem:
Podaj sekwencje DNA:
>>>CCAAATGTTACTTAGCT
Podaj indeks początkowy:
>>>5
Podaj indeks końcowy:
>>>10
Uzyskany wycięty fragment to: TGTTAC
Utwórz nowy skrypt kroczek.py, który dla zadanej przy użytkownika sekwencji będzie podawał co trzecią
zasadę DNA począwszy od 0 i 3 litery sekwencji, a na końcu odwróci tą sekwencję. Skorzystaj przy tym z
alfabetu IUPAC.unambiguous_dna.
Program powinien umożliwiać następująca komunikację z użytkownikiem:
Podaj sekwencje DNA:
>>>GGGTACGGTAAACGT
Zasady od 0 przy kroku równym 3:
>>>GTGAC
Zasady od 1 przy kroku równym 3:
>>>GAGAG
Zasady od 2 przy kroku równym 3:
>>>GCTAT
Sekwencja odwrócona:
>>>TGCAAATGGCATGGG
Zadanie 10
Łączenie i dodawanie sekwencji
Obiekty Seq mogą być ze sobą łączone ( podobnie jak zwykłe ciągi znaków) lecz nie można łączyć ze sobą
sekwencji o niekompatybilnych alfabetach (np. sekwencja białkowa i nukleotydowa). Gdyby jednak
bardzo nam na tym zależało, to najpierw należy przypisać obu
sekwencjom alfabet ogólny (generic alphabet). Poniższy przykład dotyczy dodania sekwencji DNA z
alfabetem ogólnym do sekwencji DNA z alfabetem jednoznacznym IUPAC, co daje w rezultacie
sekwencję z alfabetem niejednoznacznym:
>>> from Bio.Seq import Seq
>>> from Bio.Alphabet import generic_nucleotide
>>> from Bio.Alphabet import IUPAC
>>> nuk_sek = Seq("GATCGATGC", generic_nucleotide)
>>> dna_sek = Seq("ACGT", IUPAC.unambiguous_dna)
>>> nuk_sek
Seq(’GATCGATGC’, NucleotideAlphabet())
>>> dna_sek
Seq(’ACGT’, IUPACUnambiguousDNA())
>>> nuk_sek + dna_sek
Seq(’GATCGATGCACGT’, NucleotideAlphabet())

Napisz skrypt dodaj.py, który będzie łączył dwie sekwencje nukleotydowe podane przez
użytkownika skryptu (skorzystaj z alfabetu generic_nucleotide), wyświetl wynik tj. połączoną
sekwencję
Download