POLITECHNIKA RZESZOWSKA
im. I. Łukasiewicza
WYDZIAŁ ELEKTROTECHNIKI I INFORMATYKI
Katedra Informatyki i Automatyki
Opracowanie przykładów prezentujących zastosowania języka Python w bioinformatyce
Autor: Promotor:
Wiktor Pęczar dr inż. Krzysztof Świder
Rzeszów 2010
Spis treści
1 Wstęp 4
2 Biologiczne bazy danych 5
2.1 Przegląd baz sekwencji nukleotydowych 5
2.2 Algorytmy dopasowania sekwencji 11
2.3 Charakterystyka wybranych narzędzi 15
3 Język Python w zastosowaniach bioinformatycznych 19
3.1 Wybrane elementy języka 19
3.2 Przegląd zastosowań 28
3.3 Biblioteka Biopython 30
4 Aplikacje do analizy danych genetycznych 35
4.1 Przygotowanie danych do analizy 35
4.2 Wyszukiwanie i porównywanie sekwencji DNA 37
4.3 Porównywanie sekwencji białkowych 40
5 Podsumowanie 43
Bibliografia 44
Dodatek A 45
Bioinformatyka to nowoczesna dziedzina nauki zajmująca się rozwojem metod obliczeniowych służących do badania struktury oraz funkcji genów i białek. Jednocześnie rośnie popularność języków programowania takich jak Perl i Python wykorzystywanych w aplikacjach przetwarzających dane biologiczne. Coraz więcej badaczy zaczyna interesować się bioinformatyką, a wraz z rozwojem narzędzi takich jak Biopython ich liczba powinna się zwiększać.
Celem pracy jest krótka prezentacja biologicznych baz danych, wybranych narzędzi do analizy danych biologicznych oraz języka programowania Python ze szczególnym uwzględnieniem biblioteki Biopython. Część praktyczną stanowią trzy opracowane przez autora aplikacje do pobierania i analizy sekwencji DNA oraz sekwencji białkowych.
Rozdział 2 zawiera charakterystykę najważniejszych baz sekwencji nukleotydowych. Nawiązano do tego jak w odpowiedzi na potrzebę przechowywania informacji o sekwencjach powstały odpowiednie bazy danych oraz jak zbierane w nich dane były organizowane i zapisywane. Opisano również rodzaj przechowywanych informacji oraz strukturę rekordów. W dalszej części rozdziału znajduje się opis kilku najważniejszych algorytmów dopasowania sekwencji DNA oraz krótka charakterystyka narzędzi dostępnych za pośrednictwem strony NCBI (National Center for Biotechnology Information) służących do porównywania i analizy sekwencji.
Rozdział 3 w całości poświęcony jest językowi programowania Python. Omówiona została struktura języka oraz zaprezentowano możliwości biblioteki Biopython, która znacznie ułatwia przetwarzanie danych biologicznych jakimi są sekwencje DNA i sekwencje białkowe. W rozdziale wspomniano także o firmach i projektach, które stały się słynne na cały świat dzięki językowi Python.
W rozdziale 4 zaprezentowane zostały trzy aplikacje autora napisane w języku Python. Pierwsza z nich Entrez.py służy do wyszukiwania i pobierania informacji z biologicznych baz danych dostępnych przez Internet. Za pomocą kolejnej aplikacji Alg_S_W.py można wykonać porównanie dwóch sekwencji białkowych. Ostatnia, trzecia aplikacja BLAST.py umożliwia przeszukanie za pośrednictwem Internetu wybranej bazy sekwencją pytającą w celu odnalezienia sekwencji do niej podobnych. Pracę kończy krótkie podsumowanie.
Biologiczne bazy danych powstały w celu zaspokojenia rosnących potrzeb w zakresie przechowywania i przetwarzania informacji z tej dziedziny nauki. Na początku były wykorzystywane przez pojedynczych naukowców, umożliwiając wymianę informacji wąskiej grupie specjalistów z dziedziny nauk biomedycznych. Bazy powstały również w celu organizowania danych spływających z realizowanych projektów sekwencjonowania jak np. ustalanie kolejności (sekwencji) aminokwasów w polipeptydach i nukleotydów w kwasach nukleinowych. Stanowiły także pomoc dla firm farmaceutycznych w badaniach nad nowymi lekami.
Rolą pierwszych baz danych było zbieranie i opisywanie sekwencji wyznaczanych dostępnymi w tych czasach technikami sekwencjonowania. Gdy funkcjonowały już bazy danych, w których przechowywano sekwencje, zaczęto rozwijać metody analizy gromadzonych danych umożliwiając klasyfikowanie sekwencji, a tym samym katalogowanie rodzin białek i charakteryzowanie związków funkcyjnych między nimi. Obecnie takie metody analizy sekwencji odgrywają kluczową rolę w procesie opisywania genomów.
Masowy napływ informacji o genomach wywarł duży wpływ na badania biomedyczne. Dotychczas zgromadzone dane pozwalały naukowcom prowadzić poszukiwania nowych genów i białek, oceniać możliwości ich wykorzystania w terapii farmakologicznej oraz badać, dlaczego różni pacjenci reagują w różny sposób na takie same dawki leków. Ilość dotychczas zebranej informacji jest przytłaczająca. Ogromnym wyzwaniem staje się jej scalenie i przedstawienie w postaci, która pozwoli wykorzystać sekwencje genomów człowieka i innych gatunków do zrozumienia zawiłości biologii molekularnej, co z kolei umożliwi pełne zrozumienie związków pomiędzy określonymi zmianami genetycznymi a chorobami.
Struktura rekordów
Struktura rekordów jest ściśle określona dla poszczególnych baz danych. Dzięki temu dane mogą być wczytywane i automatycznie przetwarzane przez komputer. W tym celu konieczna jest informacja o tym, jakiego typu dane zawiera rekord i gdzie należy ich szukać. Z każdym rekordem w bazie danych wiąże się tzw. numer dostępu - niepowtarzalne i nie ulegające zmianie oznaczenie przypisywane rekordowi w chwili jego umieszczania w bazie. Numery dostępu są łatwo wyszukiwane i indeksowane przez komputery. Ponadto rekordom w niektórych bazach danych przypisuje się dodatkowy identyfikator tekstowy (ID), który w skróconej formie niesie informacje o zwartości określonego rekordu w sposób zrozumiały dla użytkownika.
Istotnym elementem definicji bazy danych jest struktura i zawartość rekordu. Każdy rekord bazy danych sekwencji nukleotydowych powinien zawierać nazwę genu, informacje o organizmie, z którego pochodzi, kto i kiedy go sekwencjonował, a także, jeśli to możliwe, jaka jest jego funkcja i struktura. Niewątpliwie cenna będzie również informacja o wszelkich publikacjach naukowych, które opisują wyniki badań dotyczących określonego genu. Wymienione rodzaje informacji są odmiennie traktowane w różnych bazach danych. Nie ma jednego sposobu umieszczania tych informacji w rekordach, ale ważne jest, aby konsekwentnie stosować raz ustalony sposób zapisu danych określonego typu. Im lepiej przemyślana struktura rekordów, tym łatwiej można je wykorzystać.
Sekwencja DNA - jest to kolejność nukleotydów w cząsteczce DNA. Oznaczana jest za pomocą skrótów od zasad wchodzących w skład nukleotydów np. CCGATTACGT. Analogicznie, sekwencja RNA to kolejność nukleotydów w cząsteczce RNA, z tym, że w RNA nie występuje tymina "T", a uracyl "U". Powyższa sekwencja wyglądałaby więc tak: CCGAUUACGU. Istnieje wiele baz danych zawierających sekwencje.
Chcąc wyświetlić zawartość pliku z pojedynczym rekordem danych trzeba przewinąć jego część zanim dotrze się do fragmentu z sekwencją. Zwykle w tej części rekordu liczba znaków jest ściśle ograniczona, a czasami kolejne reszty w sekwencji są podane w grupach po 10 znaków. Liczby podane na początku i na końcu kolejnych wierszy zawierających sekwencje ułatwiają zorientowanie się, w jakim miejscu aktualnie się znajdujemy. Wiele pakietów oprogramowania bioinformatycznego ma własny format zapisu sekwencji. Jednym z najprostszych jest format FASTA. Format ten składa się z jednej linii informacyjnej rozpoczynającej się od znaku „>”(większe niż) zawierającej opis całej sekwencji. W kolejnych wierszach jest podana właściwa sekwencja. Zaleca się aby wszystkie linie w pliku FASTA były nie dłuższe niż 80 znaków. Zawartość początkowego fragmentu pliku w formacie FASTA z sekwencją kodującą białko ludzkiego prionu przedstawiono na rys.1.
Rys.1 Fragment pliku w formacie FASTA
...
xyzgeo