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ę