Opracowanie przykładów prezentujących zastosowania języka Python w bioinformatyce

Wielkość: px
Rozpocząć pokaz od strony:

Download "Opracowanie przykładów prezentujących zastosowania języka Python w bioinformatyce"

Transkrypt

1 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: Wiktor Pęczar Promotor: dr inż. Krzysztof Świder Rzeszów 2010

2 2

3 Spis treści 1 WSTĘP BIOLOGICZNE BAZY DANYCH PRZEGLĄD BAZ SEKWENCJI NUKLEOTYDOWYCH ALGORYTMY DOPASOWANIA SEKWENCJI CHARAKTERYSTYKA WYBRANYCH NARZĘDZI JĘZYK PYTHON W ZASTOSOWANIACH BIOINFORMATYCZNYCH WYBRANE ELEMENTY JĘZYKA PRZEGLĄD ZASTOSOWAŃ BIBLIOTEKA BIOPYTHON APLIKACJE DO ANALIZY DANYCH GENETYCZNYCH PRZYGOTOWANIE DANYCH DO ANALIZY WYSZUKIWANIE I PORÓWNYWANIE SEKWENCJI DNA PORÓWNYWANIE SEKWENCJI BIAŁKOWYCH PODSUMOWANIE BIBLIOGRAFIA DODATEK A

4 1 Wstęp 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. 4

5 2 Biologiczne bazy danych 2.1 Przegląd baz sekwencji nukleotydowych 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ę 5

6 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 W przykładzie z rys.1 pierwszy wiersz zawiera numer dostępu (M13667), identyfikator tekstowy (HUMPRP0A), skrótową nazwę bazy (gb) oraz numer sekwencji (190469) który jest opcjonalny. Właściwie po znaku > można umieścić dowolny ciąg znaków, a większość z programów używanych w bioinformatyce do analizy sekwencji poprawnie rozpozna taki plik jako zapisany w formacie FASTA. 6

7 Pierwszymi bazami danych sekwencji nukleotydowych były EMBL i GenBank obie powstały w 1982 roku. Po nich, w roku 1986, powstała baza danych DDBJ i powiązana z nią baza danych INSD [5]. EMBL Baza danych EMBL jest podstawowym zbiorem sekwencji nukleotydowych w Europie. Jej zasoby zostały opublikowane po raz pierwszy w czerwcu 1982 roku i obejmowały 568 rekordów. Zarządzanie bazą danych zajmuje się European Bioinformaties Insttitute (EBI) mieszczący się w Histon, angielskiej placówce European Molecular Biology Laboratory (EMBL), którego główna siedziba jest zlokalizowania w Heidelbergu w Niemczech. Początkowo głównym źródłem wykorzystywanym do poszerzania zasobów bazy danych EMBL były sekwencje opublikowane w czasopismach naukowych. Obecnie jednak najczęstszą praktyką jest deponowanie sekwencji za pomocą Internetu. Taka elektroniczna forma deponowania jest ważna, gdyż przyjęte dla niej procedury narzucają określone standardy wprowadzania danych i pozwalają na ograniczenie liczby błędów w rekordach bazy danych. Znaczna część danych jest pozyskiwana również bezpośrednio z ośrodków sekwencjonowania. Wielkość bazy danych rośnie w oszałamiającym tempie w roku 2004 zawierała ona rekordy, dla porównania w roku 2006 baza ta posiadała już rekordów. Z uwagi na ogromną ilość gromadzonych danych, a także w celu ułatwienia zarządzania tymi danymi, zasoby bazy danych EMBL zostały podzielone na mniejsze części. Podstawą powstania większości działów EMBL była klasyfikacja taksonomiczna organizmu źródłowego sekwencji (np. bezjądrowce, grzyby, rośliny i ssaki). Zawartość pola rekordu bazy danych EMBL, mieści się zwykle w pojedynczym wierszu pliku. Na początku każdego wiersza znajduje się dwuznakowa etykieta opisująca typ danych zawarty w dalszej części wiersza. Istnieje ponad 20 różnych oznaczeń wierszy związanych z różnymi typami danych, np. w wierszu z etykietą ID znajduje się identyfikator rekordu, grupa taksonomiczna i długość sekwencji. Inne wiersze zawierają między innymi: numer dostępu (AC) podstawowe oznaczenie sekwencji, nie ulegające zmianie w kolejnych wydaniach bazy dnach, opis (DE) - zawiera symbole genów zawartych w sekwencji, lokalizacje genomową sekwencji, a także wiele innych informacji, odnośniki literaturowe (PN i RP) do publikacji z wynikami badań dotyczących określonej sekwencji, odsyłacze do rekordów z różnych baz danych (DR), które w jakiś sposób są związane z określoną sekwencją, komentarze (CC), hasła kluczowe (KW), które wskazując na zagadnienia funkcjonalne, strukturalne lub ważne z innych powodów własności sekwencji, mogą być wykorzystywane do tworzenia dodatkowych powiązań między rekordami tej samej bazy, tablice cech (FT), w których znajdują się adnotacje do określonej sekwencji z informacjami o położeniu sekwencji sygnałowych, sekwencji kodujących białko i innych znanych cech sekwencji. Tablica cech może również zabierać 7

8 opis wszelkich niejasności, na które zwrócono uwagę w trakcie opracowywania danych. GenBank GenBank jest bazą danych sekwencji nukleotydowych zarządzaną przez National Center for Biotechnology Information (NCBI) w Bethesda w USA. Jej zasoby zostały po raz pierwszy opublikowane w grudniu 1982 roku i obejmowały 606 rekordów. Dane gromadzone w bazie danych pochodzą od indywidualnych badaczy, z prowadzonych na dużą skalę projektów sekwencjonowania, z baz danych Genome Sequence Data Base w Santa Fe w USA oraz z różnych międzynarodowych biur patentowych, a także z bezpośredniej wymiany między partnerami zrzeszonymi w ramach INSD. Wielkość bazy danych GenBank rośnie w ogromnym tempie, głównie z powodu deponowania w niej sekwencji EST (Expressed Sequence Tags). Są to krótkie fragmenty genów, które zostały sklonowane i zsekwencjonowane, a następnie zdeponowane w publicznych genowych bazach danych). W lutym 2004 roku baza GenBank zawierała rekordów, natomiast w lutym 2008 roku ta sama baza posiadała już rekordów. W bazie tej można zaleźć między innymi sekwencje następujących gatunków: Homo sapiens (człowiek rozumny), Mus musculus (mysz domowa), Rattus norvegicus (szczur wędrowny) oraz Zea mays (kukurydza zwyczajna). Z uwagi na wielkość bazy danych oraz różnorodności źródeł danych, rekordy bazy danych GenBank zostały podzielone na działy odpowiadające w dużej części ustalonym grupom taksonomicznym, ale również typowi zawartych w nich sekwencji (EST, GSS, HTG, itd.). Aktualny podział bazy GenBank znajduje się w tab.1. Dział PRI ROD MAM VRT INV PLN BCT VRL PHG SYN UNA EST PAT STS GSS HTG HTC Typ sekwencji lub jej pochodzenie Z naczelnych Z gryzoni Z innych ssaków Z innych gryzoni Z bezkręgowców Roślinne, z grzybów i glonów Bakteryjne Wirusowe Z bakteriofagów Sztucznie wytworzone Nieopisane Znaczniki sekwencji ulegających ekspresji Opatentowane Miejsca markerowe sekwencji Sekwencje przeglądowe genomu Wysokoprzepustowe sekwencje genomowe Wysokoprzepustowe sekwencje cdna Tab.1 Działy bazy GenBank [4] Wiele serwisów sieciowych tworzy powiązania hipertekstowe do rekordów bazy GenBank zawierających sekwencję i towarzyszące jej adnotacje. Warto więc przyjrzeć się bliżej formatowi takiego rekordu. 8

9 Pola rekordu zwierają dane, których typ jest oznaczony etykietami. Zwartość niektórych pól mieści się w pojedynczych wierszach pliku z rekordem. W przypadku złożonych typów danych, pole rekordu może odpowiadać więcej niż jednemu wierszowi. Najbardziej złożonym typem danych, który wchodzi w skład rekordu bazy danych GenBank jest tablica cech sekwencji. W przykładowym rekordzie bazy, którego zawartość pokazano na rys.2, występuje 11 etykiet: LOCUS, DEFINITION, ACCESSION, VERSION, KEYWORDS, SOURCE, REFERENCE, COMMENT, PEATURES, BASE COUNT i ORGIN. Etykieta LOCUS pozwala zdefiniować kodowe oznaczenie dla określonego rekordu bazy (tu HUMPRP0A). Pole oznaczone tą etykietą, zwiera również inne istotne dane takie jak: liczba nukleotydów, źródło danych sekwencyjnych (mrna) oraz datę zdeponowania sekwencji w bazie. Pole DEFINITION zawiera zwięzły opis sekwencji (w omawianym przykładzie, human prion protein). Następne mamy pole ACCESSION zawierające numer dostępu - unikalne oznaczenie każdego rekordu. Po nim występuje pole VERSION, które zawiera informacje o liczbie zmian sekwencji oraz nr sekwencji nukleotydowej (ang. Genino identifier, tu GI: ). Pole KEYWORDS zawiera listę haseł kluczowych przypisanych sekwencji przez autora rekordu. Pole SOURCE zawiera informacje o źródle pochodzenia sekwencji. Etykietą ORGANISM oznaczono biologiczną klasyfikację organizmu. W polu REFERENCE są umieszczone informacje wiążące określone fragmenty sekwencji z podanymi publikacjami naukowymi. Pole COMMENT umożliwia umieszczenie w rekordzie rozmaitych komentarzy dotyczących danej sekwencji. Etykieta FEATURES wskazuje na początek tabeli cech, w której znajduje się szczegółowy opis sekwencji. Kolejne pole rekordu jest oznaczone etykietą BASE COUNT i zawiera informacje o nukleotydowym składzie sekwencji (tu 669 A, 500 C, 583 G, 668 T). W polu ORGIN jest podana, o ile jest to możliwe, informacja o lokalizacji genomowej pierwszego nukleotydu sekwencji. Rekord zakończony jest polem oznaczonym etykietą / / [4]. 9

10 Rys. 2 Struktura przykładowego rekordu bazy GenBank dla białka ludzkiego prionu DDBJ Baza danych DDBJ (DNA Data Bank of Japan) powstała w 1986 roku w National Institute of Genetics (NIG) w Mishima w Japonii. DDBJ działa obecnie jako część INSD, a podstawowym źródłem jej poszerzających się zasobów są rozmaite ośrodki sekwencjonowania, przede wszystkim jednak międzynarodowe konsorcjum sekwencjonowania ludzkiego genomu. Wielkość bazy danych rośnie więc gwałtownie. Aby poradzić sobie z takim napływem danych, kuratorzy bazy danych wykorzystują lokalnie rozwijane oprogramowanie do masowej obsługi procesu deponowania i przetwarzania danych, co poprawia spójność danych i ogranicza rozprzestrzenianie się błędów. W lutym w 2004 roku DDBJ zawierała rekordy, natomiast w wrześniu 2010 roku baza ta posiadała już rekordów co świadczy o ciągłym napływie nowych informacji do bazy DDBJ. Dla wygodniejszego zarządzania powiększającą się bazą danych, podzielono ją na działy - w każdym z nich są 10

11 gromadzone sekwencje dla tego samego organizmu źródłowego. Dodatkowo znajduje się w niej oddzielny dział zawierający opatentowane dane zbierane i przetwarzane prze Japanease Patent Office. INSD Realizowane projekty sekwencjonowania dostarczały tak ogromne ilości danych, że pojedyncze grupy badawcze nie były w stanie na bieżąco ich kompletować. W lutym 1986 roku ludzie zajmujący się bazami danych EMBL i GenBank zadecydowali o podjęciu wspólnych działań w celu uproszczenia i standaryzacji procesów gromadzenia sekwencji. W roku 1987 projektem objęto również zasoby baz danych DDBJ. Obecnie w każdej z tych trzech baz danych deponowana jest część generowanych na całym świecie danych sekwencyjnych, a zawartość baz danych jest codziennie synchronizowana za pośrednictwem Internetu. Na rys.3 przedstawiono strukturę bazy INSD. Rys. 3 Struktura bazy danych INSD obejmująca bazy EMBL, GenBank, DDBJ Wynikiem nawiązanej współpracy było powstanie baza danych INSD (International Nucleotide Sequence Database), dzięki której bazy: EMBL, GenBank i DDBJ charakteryzują się obecnie taką samą ilością i jakością danych, a użytkownicy, deponując dane w jednej z tych baz danych, maja pewność, że będą one dostępne również i w pozostałych bazach danych. Zasoby wszystkich baz danych wchodzących w skład INSD powiększają się w wyniku bezpośredniego deponowania danych przez pojedyncze laboratoria oraz realizacji prowadzonych na dużą skalę projektów sekwencjonowania. W roku 2005 zawierała ona sekwencje DNA ponad organizmów, a liczba ta ciągnie rośnie [4]. 2.2 Algorytmy dopasowania sekwencji W bioinformatyce, dopasowanie sekwencji jest sposobem dopasowania struktur pierwszorzędowych DNA, RNA, lub białek do zidentyfikowania regionów wykazujących podobieństwo, mogące być konsekwencją funkcjonalnych, strukturalnych, lub ewolucyjnych powiązań pomiędzy sekwencjami. Zestawione sekwencje nukleotydów lub aminokwasów są zazwyczaj przedstawione jako wiersze macierzy. Pomiędzy reszty wprowadzane są przerwy, tak że reszty zbliżonych do siebie sekwencji tworzą kolejne kolumny. Na rys.4 przedstawiono jeden ze sposobów porównywania ludzkich białek. 11

12 Rys. 4 Przykład dopasowania sekwencji, dwóch ludzkich białek Jeśli dwie dopasowywane sekwencje mają wspólne pochodzenie, niedopasowania mogą być interpretowane jako mutacje punktowe, a przerwy jako indele (mutacje polegające na delecji jeden lub więcej nukleotydów wypada z sekwencji DNA lub insercji jeden lub więcej nukleotydów zostaje wstawionych do sekwencji DNA), które zaszły w jednej lub obu liniach od czasu, kiedy obie sekwencje uległy rozdzieleniu. Pokazano to na rys.5. W przypadku dopasowywania sekwencji białek, stopień podobieństwa pomiędzy aminokwasami zajmującymi konkretną pozycję, może stanowić miarę tego, jak konserwatywny jest dany region lub motyw. Brak substytucji lub obecność jedynie konserwatywnych substytucji (tj. zamiany reszty na inną, ale o podobnych właściwościach chemicznych) w określonym regionie sekwencji sugeruje, że jest on ważny strukturalnie lub funkcjonalnie. 12 Rys. 5 Mutacje w informacji genetycznej Bardzo krótkie lub bardzo podobne sekwencje mogą być dopasowane ręcznie. Często jednak konieczne jest dopasowanie licznych, bardzo długich i zmiennych sekwencji, które nie mogą być dopasowane tylko i wyłącznie ludzkim wysiłkiem. Zamiast tego, wysiłek wkładany jest w opracowanie algorytmów umożliwiających wysokiej jakości dopasowania, ewentualnie wprowadzanie poprawek do uzyskanych w ten sposób rezultatów. Ogólnie, podejścia obliczeniowe do dopasowywania sekwencji mogą być dwojakiego rodzaju: dopasowań globalnych i dopasowań lokalnych. Obliczanie dopasowania globalnego jest formą optymalizacji globalnej, w której dopasowanie musi obejmować całą długość wszystkich analizowanych sekwencji. Przeciwnie, dopasowanie lokalne identyfikuje podobne regiony w obrębie długich

13 sekwencji, które rozpatrywane w całości nie muszą wykazywać znacznego podobieństwa. Dopasowanie lokalne jest bardziej znaczące do porównywania białek z różnych rodzin, gdyż pozwala wykryć powtarzające się fragmenty (motywy), które często maja wpływ na funkcjonalność białka. Dopasowania lokalne są zazwyczaj preferowane, ale ich obliczenie może być trudniejsze z uwagi na dodatkowe wyzwanie określenia regionów wykazujących podobieństwo. Różnorodne algorytmy są stosowane do dopasowań sekwencji, w tym powolne, ale formalnie optymalizujące metody, jak programowanie dynamiczne, także efektywne metody heurystyczne. Zarys problemu Dopasowanie par sekwencji wykonuje się zwykle zakładając, że są one homologiczne, czyli że wywodzą się od wspólnego przodka. Do wyznaczenia najlepszego dopasowania sekwencji potrzeba systemu punktacji. Wiadomo, że dopasowywane sekwencje zawierają litery z alfabetu dopuszczalnych znaków. W przypadku DNA na alfabet składają się znaki A, C, G, T. W przypadku białek alfabet liczy aż 20 znaków odpowiadających jednoliterowym symbolom aminokwasów. Jednym z elementów systemu punktacji są oceny dopasowań dla każdej możliwej pary S α, β. W przypadku DNA punktacja par zasad jest bardzo znaków w alfabecie ( ) prosta: S (, ) = 1, jeśli α i β są takimi samymi nukleotydami oraz S (, ) = 0 α β α β, gdy nukleotydy α i β są różne. Jak wiadomo sekwencje DNA mogą zawierać przerwy. Ich występowanie pozwala tak przesuwać względem siebie fragmenty sekwencji, że odcinki sekwencji charakteryzujące się wysokim lokalnym podobieństwem staną się łatwo widoczne. Drugim elementem systemu punktacji jest funkcja kary za przerwy. W ogólnym przypadku można zdefiniować W (l) jako funkcję kary za przerwę o długości l znaków. Najprościej przedstawić W (l) w postaci funkcji linowej. W ( l) = g * l, co oznacza, że kara za jeden znak przerwy w dopasowaniu sekwencji jest równa g, a kara za całą przerwę jest równa iloczynowi g i długości przerwy. W rzeczywistości jednak przerwa obejmująca trzy reszty może nie być trzykrotnie mniej prawdopodobna niż przerwa o jednostkowej długości. Dłuższa z tych przerw mogła być przecież wynikiem pojedynczego zdarzenia w ewolucji. Prawdopodobieństwo, że tak się stało zależy zatem od charakteru odpowiedzialnej za to mutacji, czyli błędu w replikacji DNA, którego skutek jest widoczny jako przerwa w dopasowaniu dwóch homologicznych sekwencji genu. Chociaż nie ma teoretycznych podstaw, które mogły by pomóc w wyborze funkcji kary za przerwy, to jednak poczyniono w tej kwestii pewien postęp, analizując empiryczny rozkład długości przerw ( Benner, Cohen i Gonnet, 1993). Z praktycznych względów funkcja punktacji przerw ma zwykle dość prostą postać. W praktyce najpowszechniej wykorzystywanym sposobem punktacji przerw jest afiniczna funkcja kary za przerwy, której przebieg znajduje się na rys.6. Zakładamy w tym przypadku, że kara za utworzenie nowej przerwy jest równa g open, natomiast kara za jednostkowe wydłużenie istniejącej przerwy jest równa g ext. Zatem kara za przerwę o długości l to W ( l) = gopen + gext ( l 1). Przebieg takiej funkcji pokazano na rys.6 linią koloru niebieskiego. Z powodów opisany powyżej zazwyczaj gext jest mniejsze od g open. Właściwie przebieg afinicznej funkcji kary za przerwy niewiele różni się od oczekiwanego przebiegu uogólnionej funkcji kary za przerwy [4]. 13

14 Rys. 6 Funkcje kary za przerwy W (l) - liniowa, afiniczna i uogólniona [4] Dysponując kompletną definicją systemu punktacji, można wyznaczyć ocenę dopasowania pary sekwencji: ocena = dopasowane _ pary S( α, β ) przerwy W ( l) Metoda Smitha Watermana Algorytm Smitha-Watermana - to algorytm bazujący na programowaniu dynamicznym umożliwiający poszukiwanie optymalnych lokalnych dopasowań sekwencji. Wydaje się całkiem naturalne, aby traktować ocenę dopasowań par sekwencji jako miarę prawdopodobieństwa między tymi sekwencjami. Często zdarza się, że interesuje nas określona sekwencja i chcemy wiedzieć, czy istnieją inne, podobne do niej sekwencje. W tym celu należy wyznaczyć dopasowania określonej sekwencji (sekwencji pytającej query sequence) kolejno z poszczególnymi sekwencjami w bazie danych, za każdym razem zapamiętując ocenę dopasowania. Takie oceny należy następnie uporządkować w kolejności malejącej i zwrócić użytkownikowi szczegółowe informacje o sekwencji zajmujących czołowe miejsca na liście trafień. Algorytm FASTA Algorytm FASTA rozpoczyna swoje działanie od wyszukania w bazie danych fragmentów sekwencji o minimalnej długości ktup (dla sekwencji białek i DNA domyślne wartości ktup są równe, odpowiednio, 2 i 6 reszt) dokładnie pasujących do odpowiednich fragmentów sekwencji w zapytaniu. Następnie w macierzy ocen cząstkowych dopasowania są identyfikowane tzw. ciągi diagonalne (diagonal runs), które zawierają największa liczbę fragmentów ktup położonych względnie blisko siebie. W dalszych etapach algorytmu jest wykorzystana informacja o 10 takich najlepiej ocenionych ciągach diagonalnych. Odpowiadają one wysoko ocenionym lokalnym dopasowaniem bez przerw. Algorytm ustala następnie, które z ciągów diagonalnych mogą być ze sobą połączone w jednym dopasowaniu, gdzie będzie dopuszczalne występowanie przerw. Ocena wyznaczonych w taki sposób przybliżonych dopasowań jest potem wykorzystywana do uporządkowania sekwencji z bazy danych według ich malejącego podobieństwa do zadanej sekwencji. Dla sekwencji zajmujących czołowe miejsca na liście jest uruchamiana procedura wyznaczania dopasowania metodą programowania dynamicznego. W ten sposób najbardziej czasochłonne obliczenia są 14

15 wykonywane jedynie dla sekwencji w bazie danych, których podobieństwo do sekwencji w zapytaniu uznano za stosunkowo duże. Algorytm BLAST Za pomocą algorytm Blast (Basic Local Alignment Serach Tool) wyznacza się najlepiej ocenione, pozbawione przerw lokalne dopasowanie sekwencji w zapytaniu i kolejnych sekwencji z bazy danych. W algorytmie jest zdefiniowana wartość parametru długości słowa w mającego podobne znaczenie, jak ktup w algorytmie FASTA. Zwykle długość w jest równa 3 dla sekwencji białkowych oraz 12 dla sekwencji nukleotydowych. BLAST przeszukuje bazę danych sekwencji w celu zidentyfikowania słów o długości w, których ocena dopasowania ze słowami z sekwencji pytającej przekracza ustaloną wartość progową T. Następnie wyznacza się lokalne dopasowanie przez rozbudowę prowadzoną na obu końcach słowa. Niezależnie od kierunku rozbudowy, wydłużanie dopasowania jest przerywane w chwili, kiedy wielkość oceny obniży się względem wcześniej osiągniętego maksimum o więcej niż pewną zadaną wartość. Z pośród wyznaczonych w taki sposób dopasowań lokalnych jest zwracane to najwyżej ocenione [6]. 2.3 Charakterystyka wybranych narzędzi Entrez to system służący do uzyskiwania danych, rozwijany przez National Center for Biotechnology Information (NCBI). Zapewnia zintegrowany dostęp do różnych dziedzin danych, takich jak literatura, sekwencje nukleotydów i protein, kompletne genomy, czy struktury trójwymiarowe. Entrez obsługuje wiele baz danych, m.in.: PubMed, GenBank, EMBL, OMIA, PubChem Compound, PubChem Substance. Jest jednym z najpowszechniej używanych systemów uzyskiwania danych z biologicznych internetowych baz danych. Zasady korzystania z systemów NCBI Dostęp do genetycznych baz danych firmy NCBI jest całkowicie darmowy, wystarczy tylko przestrzegać kilku prostych zasad: nie należy przeciążać systemów NCBI, użytkownicy, którzy zamierzają wysyłać liczne zapytania lub pobierać wiele rekordów danych powinni wykonywać te operację w weekendy między godziną 9 popołudniu a 5 rano, w dni powszechne żadna seria nie może przekraczać 1000 zapytań, nie wolno wysyłać więcej niż 3 zapytania w ciągu 1 sekundy, podczas wysyłania zapytań powinno się podać adres skrzynki pocztowej aby firma NCBI mogła w razie wystąpienia jakichkolwiek problemów skontaktować się z użytkownikiem w celu ich eliminacji. Jeśli użytkownik nie będzie przestrzegał tych zasad, jego dostęp do zasobów NCBI może zostać zablokowany [8]. Wyszukiwanie informacji ze wszystkich dostępnych w serwisie NCBI baz danych odbywa się w podobny sposób, za pomocą interfejsu Entrez (rys.7). Użytkownik ma możliwość wyboru rodzaju bazy, którą chce przeszukać. Istnieje także 15

16 możliwość przeszukania wszystkich baz jednocześnie. Po wybraniu rodzaju bazy należy wpisać hasło, które ma być wyszukane, np. yeast mitochondrial ribonuclease (bez znaków ), wyszuka sekwencję, w których opisie występują te trzy słowa. Jeżeli chcemy aby złożona fraza traktowana była jako całość, należy wziąć ją w cudzysłów. Autorów publikacji wyszukuje się wpisując nazwisko i inicjały imienia, bez znaków przestankowych. Na rys.8 przedstawiono przykładowy wynik uzyskany po przeszukaniu podanym powyżej przykładowym hasłem bazy sekwencji białek. Kliknięcie dowolnego z numerów dostępu wyświetli pełną informację o sekwencji w formacie GenBank. Rys. 7 Wyszukiwanie informacji w serwisie NCBI 16 Rys. 8 Lista wyszukanych w bazie danych sekwencji

17 Można także łączyć kilka sekwencji w jedną stronę do wyświetlenia w kilku wybranych formatach, zapisywać je na dysku lub w schowku systemowym. Sekwencje wybiera się zaznaczając je w boksach po lewej stronie. Na samym dole strony mamy przycisk Sent to. Naciśnięcie tego przycisku wyśle zaznaczone sekwencje do wcześniej wybranego celu (plik lub schowek systemowy). W ten sposób można łatwo zapisać kilka wybranych sekwencji do jednego pliku w formacie FASTA i później poddawać je różnym analizom. Serwer BLAST Poza wyszukiwaniem sekwencji na podstawie jej opisu, podstawowym sposobem korzystania z biologicznych baz danych jest wyszukiwanie sekwencji homologicznych do podanej przez użytkownika. Najczęściej stosowanym narzędziem do poszukiwania homologii w bazach danych jest algorytm BLAST. Serwis BLAST jest dostępny pod tym adresem: w kilku wariantach (rys.9), zależnie od tego, jaki charakter ma sekwencja użyta do przeszukiwania oraz rodzaj przeszukiwanej bazy danych. Warianty BLAST: nucleotide blast wyszukiwanie sekwencji DNA w bazie sekwencji nukleotydowych protein blast służy do przeszukiwania zapytaniem białkowym bazy sekwencji białkowych blastx stosowany jest w zapytaniach nukleotydowych, które tworzy translację wpisanego zapytania i porównuje uzyskany wynik z bazą sekwencji białkowych tblastn w wariancie tym zapytaniem jest sekwencja nukleotydowa, która jest poddawana translacji i stosowana do przeszukiwania bazy sekwencji nukleotydowych Rys. 9 Lista dostanych wariantów przeszukiwań w serwisie BLAST 17

18 Po wybraniu odpowiedniego wariantu przeszukiwania pojawia się nam kolejne okno w którym należy wprowadzić sekwencje pytającą (query sequence). Obsługa i parametry wszystkich wariantów są bardzo podobne. Zapytanie można wprowadzić na dwa sposoby wklejając w odpowiednie okienko programu sekwencje w formacie FASTA, albo podając numer dostępu, jeżeli jest to wpisana już do bazy danych sekwencja. Przykład podstawowego ekranu wprowadzania danych dla sekwencji nukleotydowych przedstawia rys.10. Poza polem do wprowadzania sekwencji pytającej, znajduje się tu również lista dostępnych baz danych. Skład tej listy zależy od tego, czy mamy do czynienia z bazami sekwencji DNA, czy białkowymi. Po tych czynnościach pozostaje użytkownikowi kliknąć na przycisk Blast, co zaowocuje wyświetleniem znalezionych informacji. Rys. 10 Podstawowy interfejs serwisu BLAST i lista dostępnych baz danych 18

19 3 Język Python w zastosowaniach bioinformatycznych 3.1 Wybrane elementy języka Python jest współczesnym językiem programowania, którego znaczenie i wartość rośnie dzisiaj bardzo szybko. Cechą wyróżniającą Python na tle innych języków jest składnia języka ściśle związana z formatowaniem - dzięki temu kod jest bardziej czytelny. Dodatkowe zalety to dynamiczne typy danych, programowanie funkcyjne, automatyczne zarządzanie pamięcią i możliwość praktycznego programowania w locie, dzięki dostępności linii poleceń interpretera. Python nie wymusza stylu programowania. W Pythonie możemy programować obiektowo, strukturalnie i funkcyjnie. Jest pod pewnymi względami podobny do Perl'a, jednakże wyróżnia go prostsza składnia, czytelna nawet dla osób nie znających języka. Zmienne Pyhona mają dynamiczne typy, wszystkie wartości przekazywane są przez referencję w praktyce każda zmienna jest "wskaźnikiem" do pewnego elementu w pamięci zarządzanej dynamicznie. Posiadanie dwóch kopii tej samej wartości wymaga dokonania operacji kopiowania tej pamięci, o czym należy pamiętać. W praktyce ten mechanizm zmniejsza zużycie pamięci przez programy i zwiększa ich wydajność. Standardowa biblioteka Pythona stanowi zbiór różnorodnych komponentów. Zawiera ona definicje typów danych, takie jak liczby i listy, które można zaliczyć do "jądra" języka. Dla tych typów jądro języka definiuje formy literałów i narzuca pewne zasady dotyczące ich składni, lecz w pełni tej składni nie definiuje. Jądro języka definiuje natomiast takie własności składniowe, jak pisownia i priorytety operatorów. Biblioteka standardowa zawiera również wbudowane funkcje i wyjątki - obiekty, które mogą być użyte przez jakikolwiek kod Pythona bez potrzeby stosowania operacji importu. Niektóre z nich są zdefiniowane przez jądro języka, lecz wiele z nich nie ma znaczenia dla podstawowej składni języka. Na większą część biblioteki składa się zbiór modułów. Zbiór ten można podzielić na wiele sposobów. Istnieją moduły napisane w C i wbudowane w interpreter Pythona, inne są napisane w Pythonie i importowane w postaci kodu źródłowego. Niektóre moduły udostępniają interfejsy bardzo specyficzne dla Pythona, takie jak wypisywanie stosu wywołań. Część modułów udostępnia interfejsy specyficzne dla szczególnego systemu operacyjnego, jak na przykład dostęp do specjalizowanego sprzętu. Inne moduły zawierają interfejsy specyficzne dla konkretnej dziedziny oprogramowania np. World Wide Web. Kod Pythona można tworzyć w dowolnym edytorze tekstowym, który umożliwia zapis i odczyt plików tekstowych stosujących kodowanie znaków ASCII lub UTF-8 Unicode. Domyślnie pliki Pythona stosują kodowanie UTF-8 obejmujące 19

20 większy zbiór znaków niż ASCII. Za pomocą kodowania UTF-8 można przedstawić każdy znak w każdym języku. Pliki Pythona zwykle mają rozszerzenie.py, chociaż w niektórych systemach z rodziny Unix (na przykład Linux i Mac OS X) pewne aplikacje Pythona nie mają rozszerzenia pliku. W niniejszej pracy moduły Pythona oraz programy zawsze mają rozszerzenie.py. Wszystkie przykłady zaprezentowane w tejże pracy można w niezmienionej postaci uruchomić na każdej platformie sprzętowej z zainstalowanym interpreterem języka Python 2.6. Składnia Wyróżnikiem Pythona na tle innych języków jest jego składnia oparta na wydzielaniu bloków przez wcięcia. Brak jest nawiasów klamrowych, czy słów "begin" i "end". Krytycy Pythona uważają to za cofnięcie się do czasów kart perforowanych, gdzie układ kodu był istotny dla prawidłowego programowania. Zwolennicy zaś twierdzą, że profesjonalne programowanie i tak narzuca standard kodowania, przez co Python z automatu w tej kwestii jest pomocny. Poniżej przedstawiono kod zawierający definicję funkcji silnia. def silnia(x): Funkcja obliczająca silnię if x == 0: # Blok instrukcji warunkowej return 1 else: return x * silnia(x-1) Komentarze w Pythonie rozpoczynają się znakiem "#" i obowiązują do końca linii. Komentarze wielowierszowe ograniczone są znakami """. Ustawione w pierwszej linii klasy lub funkcji oraz na początku modułu stanowią element docstring, będący częścią automatycznego systemu dokumentacji pydoc. Typy liczbowe Istnieją cztery różne typy liczbowe: zwykłe liczby całkowite (int), długie liczby całkowite (long), liczby zmiennoprzecinkowe (float) i liczby zespolone (complex). Dodatkowo jako podtyp typu całkowitego został zdefiniowany typ logiczny. Zwykłe liczby całkowite są zaimplementowane z wykorzystaniem typu long języka C, który daje przynajmniej 32 bitową precyzję. Długie liczby całkowite mają nieograniczoną precyzję. Liczby zmiennoprzecinkowe są zaimplementowane z wykorzystaniem typu double języka C. Python w pełni obsługuje arytmetykę na różnych typach: w przypadku, gdy operator dwuargumentowy posiada operandy różnych typów liczbowych, operand "węższego" typu zostaje przekonwertowany do typu drugiego operandu, to znaczy zwykła liczba całkowita jest węższego typu od długiej liczby całkowitej, która jest węższego typu od liczby zmiennoprzecinkowej, która z kolei jest węższego typu od liczby zespolonej. Każdy typ liczbowy obsługuje wszystkie operacje zamieszczone w tab.2. Ułożone są one według rosnącego priorytetu (operacje w tej samej komórce posiadają równy priorytet). Wszystkie operacje liczbowe posiadają wyższy priorytet od operacji porównania. 20

21 Operacja wynik x + y suma x i y x - y różnica x i y x * y iloczyn x i y x / y iloraz x i y x % y reszta z ilorazu x / y -x zanegowane x +x x nie zmienione abs(x) wartość bezwzględna x int(x) x przekonwertowany na liczbę całkowitą long(x) x przekonwertowany na długą liczbę całkowitą float(x) x przekonwertowany na liczbę zmiennoprzecinkową complex(re,im) liczba zespolona z częścią rzeczywistą re, częścią urojoną im im domyślnie przyjmowane jest jako zero. c.conjugate() conjugate of the complex number c divmod(x, y) para (x / y, x % y) pow(x, y) x do potęgi y x ** y x do potęgi y Tab.2 Możliwe operacje liczbowe w języku Python Ciągi znakowe czyli napisy Oprócz liczb Python może również manipulować ciągami znaków, które można wyrazić na parę sposobów. Mogą one być objęte pojedynczym lub podwójnym cudzysłowem. >>> 'A\'propos' "A'propos" >>> "A'propos" "A'propos" >>> '"Tak," powiedział.' '"Tak," powiedział.' >>> "\"Tak,\" powiedział." '"Tak," powiedział.' Ciągi znaków mogą być ujęte w pary potrójnych cudzysłowów: """ lub '''. Końce linii nie muszą być w takim przypadku cytowane, lecz zostaną dosłownie włączone do ciągu. print """ UŜytkowanie: cienias [OPCJE] -h PokaŜ ten opis poleceń -H nazwaserwera Nazwa serwera, z którym chcesz się połączyć""" Powyższy kod spowoduje następującą odpowiedź interpretera: UŜytkowanie: cienias [OPCJE] -h PokaŜ ten opis poleceń -H nazwaserwera Nazwa serwera, z którym chcesz się połączyć Łańcuchy znaków mogą być indeksowane. Podobnie jak w C, pierwszy znak w ciągu ma indeks (numer porządkowy) 0. Nie istnieje osobny typ oznaczający znak - znak jest po prostu napisem o długości jeden. Podciągi znaków mogą zostać wyodrębnione za pomocą operatora segmentowania co doskonale widać na kolejnym przykładzie [10]. 21

22 >>> slowo = 'Pomoc' + 'A' >>> slowo[5] 'A' >>> slowo[0:2] 'Po' >>> word[2:5] 'moc' Wbudowane typy danych W języku Python istnieje pewna liczba złożonych typów danych, używanych do grupowania innych wartości. Najbardziej użytecznym typem jest lista, którą można zapisać jako listę elementów poprzedzielanych przecinkiem, umieszczoną w kwadratowych nawiasach. Elementy listy nie muszą być tego samego typu. >>> a = ['wędzonka', 'jaja', 100, 1234] >>> a ['wędzonka', 'jaja', 100, 1234] Podobnie jak indeksy łańcuchów znaków, indeksy listy rozpoczynają się od wartości 0. Listy mogą być przedmiotem operacji segmentacji, sklejania itd. >>> a[0] 'wędzonka' >>> a[3] 1234 >>> a[-2] 100 >>> a[1:-1] ['jaja', 100] >>> a[:2] + ['bekon', 2*2] ['wędzonka', 'jaja', 'bekon', 4] Możliwe jest zagnieżdżanie list (tworzenie list, której elementami są inne listy). >>> q = [2, 3] >>> p = [1, q, 4] >>> len(p) 3 >>> p[1] [2, 3] >>> p[1][0] 2 W tab.3 zamieszczono kilkanaście najważniejszych metod dostępnych dla listy. 22

23 Wybrane metody listy list(s) s.append(x) s.extend(t) s.count(x) s.index(x) s.pop([i]) s.remove(x) s.reverse() s.sort([funkcja]) s.capitalize() s.center(długość) s.count(sub) s.replace(old, new) s.rstrip() s.split(separator) s.isdigit() s.islower() s.isspace() s.isupper() s.join(t) konwertuje sekwencję s na listę dodaje nowy element x na końcu s dodaje nową listę t na końcu s zlicza wystąpienie x w s zwraca najmniejszy indeks i, gdzie s[i] == x zwraca i-ty element i usuwa go z listy odnajduje x i usuwa go z listy s odwraca w miejscu kolejność elementów s Sortuje w miejscu elementy zmienia pierwszą literę na dużą Centruje napis w polu o podanej długości zlicza wystąpienie podciągu sub w napisie s zastępuje stary podciąg nowym usuwa końcowe białe znaki dzieli napis używają podanego separatora sprawdza czy wszystkie znaki są cyframi sprawdza czy wszystkie litery są małe sprawdza czy wszystkie znaki są białymi znakami sprawdza czy wszystkie litery są duże łączy wszystkie napisy na liście t używając s jako separatora Tab.3 Metody, które są dostępne dla listy Kolejnym użytecznym typem jest krotka, którą można zapisać jako listę elementów poprzedzielanych przecinkiem, umieszczoną w okrągłych nawiasach. Elementy listy nie muszą być tego samego typu. >>> a = ( pierwszy,2, trzeci ) >>> print Pierwszy element krotki to %s % a[0] Pierwszy element krotki to pierwszy >>> print Drugi element krotki to %i % a[1] Drugi element krotki to 2 >>> print Trzeci element krotki to %s % a[2] Trzeci element krotki to trzeci Krotki różnią się tym od list, że nie można zmieniać wartości elementów krotki po jej utworzeniu. Ostatnim ważnym typem danych o którym warto wspomnieć jest słownik. Słownik to w innych językach takich jak PHP tablica asocjacyjna (haszująca) zawierająca obiekty poindeksowane za pomocą kluczy co doskonale pokazuje poniższy fragment kodu [2]. >>> slownik = {"imie" : "jurek", "nazwisko" : "lepper", "wiek" : "54 lata", "zawod" : "polityk"} >>> print slownik["imie"] jurek >>> for i in slownik: print i + " - " +slownik[i] imie - jurek nazwisko - lepper 23

24 zawod - polityk wiek - 54 lata Słowniki podobne są do list, aby wyświetlić określony wpis wystarczy podać jego klucz nazwa_słownika["nazwa_klucza"]. Próba odwołania się do nieistniejącego klucza spowoduje błąd wykonywania skryptu. Jeżeli może zdarzyć się sytuacja, że klucz może nie istnieć, to warto skorzystać z metody słownika has_key. W tab.4 pokazano kilka wybranych metod obsługiwanych przez słowniki. >>> if bar.has_key("imie"): print bar["imie"] jurek Metody obsługiwane przez słowniki d.clear() d.copy() d.get(k) Usuwa wszystkie elementy z słownika Zwraca kopię słownika Zwraca wartość przypisaną kluczowi k lub wartość none jeśli klucz k nie istnieje d.items() d.keys() d.pop(k) Zwraca widok wszystkich par (klucz-warość) Zwraca widok wszystkich kluczy słownika d Zwraca wartość przypisaną kluczowi k i usuwa element, którego kluczem jest k. d.values() Zwraca widok wszystkich wartości w słowniku Tab.4 Wybrane metody, które są dostępne dla każdego słownika Podejmowanie decyzji Python wyposażony jest w zestaw wielu instrukcji, za pomocą których programista ma kontrolę nad kolejnością wykonywania poszczególnych poleceń. Najbardziej znaną instrukcją jest instrukcja if. Ogólna składnia polecenia if w Pythonie jest następująca. if wyraŝenie_boolean1: instrukcje_1 elif wyraŝenie_boolean2: instrukcje_2... elif wyraŝenie_booleann: instrukcje_n else: instrukcje_else Można wstawić zero lub więcej części elif, a część else jest opcjonalna. Słowo kluczowe elif jest skrótem instrukcji else if '. Sekwencja if... elif... elif... zastępuje instrukcje switch lub case spotykane w innych językach programowania. b = 2 a = 1 if a > b: print b else: print a c = 2 if a > b and a > c: print a 24

25 elif c == b: print "C i B rowne" else: print b Po wykonaniu tego skryptu otrzymamy: >>> 1 C i B rowne Należy zwrócić uwagę na wcięcia - są one obowiązkowe. Struktura blokowa jest elementem składni Pythona (w C/C++ czy np. PHP odpowiednikiem są nawiasy klamrowe). Polecenie while jest używane w celu wykonywania instrukcji dowolna liczbę razy, chodź może wystąpić sytuacja, w której instrukcje w ogóle nie zostaną wykonane. Ilość powtórzeń zależy od stanu wyrażenia boolowskiego w pętli while. Poniżej przedstawiono składnię tego polecenia. While wyraŝenie_boolean: Instrukcje Składnia pętli while jest trochę bardziej skomplikowana gdyż obsługiwane są słowa kluczowe break i continue. Ponadto w pętli może znajdować się opcjonalnie klauzura else. Polecenie break powoduje opuszczenie bieżącej pętli. Z kolei polecenie continue przekazuje kontrolę nad programem do początku pętli. while True: element = pobierz_element() if not element: break powtorz_element(element) Powyższa pętla while ma bardzo typową strukturę i działa aż do chwili przetworzenia wszystkich elementów przeznaczonych do tego celu [11]. Instrukcja for różni się trochę w Pythonie od tego, co spotykane jest w C lub Pascalu. Nie prowadzi się iteracji od liczby do liczby (jak w Pascalu). Instrukcja for w Pythonie powoduje iterację po elementach jakiejkolwiek sekwencji (np. listy, krotki lub łańcucha znaków), w takim porządku, w jakim są one umieszczone w danej sekwencji. Na przykład: # Mierzy pewne napisy a = ['kot', 'okno', 'wypróŝnić'] for x in a: print x, len(x) kot 3 okno 4 wypróŝnić 9 Nie jest bezpiecznym modyfikacja sekwencji, która właśnie jest przedmiotem iteracji (można to zrobić tylko dla mutowalnego typu sekwencji, tzn. listy). Jeśli chce się ją modyfikować, np. duplikować wybrane jej elementy, to należy wtedy przeprowadzić iterację na jej kopii. Jeśli zajdzie potrzeba iteracji określonej zakresem liczbowym (czyli iteracji na sekwencji liczb w Pythonie), można użyć wbudowanej w 25

26 interpreter funkcji range(). Wynikiem jej działania jest lista zawierająca ciąg arytmetyczny, tzn.: >>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Aby przeglądnąć wszystkie elementy listy często łączy się funkcje range() i len(), tak jak pokazano poniżej: >>> a = ['Marysia', 'miała', 'małego', 'baranka'] >>> for i in range(len(a)): print i, a[i] 0 Marysia 1 miała 2 małego 2 baranka Definiowanie funkcji Słowo kluczowe def wprowadza definicję funkcji. Musi po nim następować nazwa funkcji i lista jej parametrów formalnych umieszczonych w nawiasach okrągłych. Instrukcje, które tworzą ciało funkcji, są oczywiście wsunięte w stosunku do wiersza zawierającego nazwę funkcji i muszą zaczynać się w nowym wierszu. Opcjonalnie, pierwszy wiersz ciała funkcji może być gołym napisem (literałem): jest to tzw. napis dokumentujący lub inna nazwa tego zjawiska - docstring. >>> def fib(n): """ Funkcja wypisuje ciąg liczb Fibonacciego aŝ do n. Funkcja ta jest bardzo prosta """ a, b = 0, 1 while b < n: print b, a, b = b, a+b >>> # Teraz, wywołajmy funkcję, którą przed chwilą zdefiniowaliśmy: fib(2000) Istnieją pewne narzędzia, które używają napisów dokumentacyjnych (docstringów) do automatycznego tworzenia drukowanej dokumentacji albo pozwalają użytkownikowi na interaktywne przeglądanie kodu. Dobrym zwyczajem jest pisane napisów dokumentacyjnych w czasie pisania programu gdyż dzięki temu można w każdej chwili w łatwy i szybki sposób sprawdzić do czego służy dana funkcja, co przedstawione jest poniżej. >>> print fib. doc Funkcja wypisuje ciąg liczb Fibonacciego aŝ do n. Funkcja ta jest bardzo prosta Zmienne w definicji funkcji mogą mieć przypisane wartości domyślne (jeżeli w wywołaniu funkcji nie podamy wartości parametru to użyta zostanie wartość domyślna). Zmienne utworzone wewnątrz funkcji nie są dostępne poza nią, lecz można je zdefiniować jako zmienne globalne za pomocą operatora global [1]. 26

27 Klasy i obiekty Instrukcja class pozwala definiować klasy - używane w programowaniu obiektowym. Klasy to w uproszczeniu zbiory funkcji powiązanych między sobą, co pozwala na tworzenie w łatwy i niezależny sposób wielu komponentów złożonej aplikacji przez wielu programistów. class koszyk: def init (self): self.koszyk = [] def dodaj(self,obiekt): self.koszyk.append(obiekt) def rozmiar(self): return len(self.koszyk) s = koszyk() s.dodaj("pierwszy wpis") s.dodaj("drugi wpis") print s.rozmiar() del s Metody klasy definiowane są za pomocą def. Pierwszy argument każdej metody odnosi się do obiektu i zazwyczaj stosuje się nazwę "self". Wszystkie operacje wykorzystujące atrybuty obiektu muszą odwoływać się do nich poprzez tą zmienną. Metody poprzedzone to metody specjalne, które można definiować w klasach. Nie wywołujemy ich bezpośrednio z naszego kodu (jak zwykłe metody). Wywołuje je za nas Python w określonych okolicznościach lub gdy użyjemy określonej składni np. init jest wykonywana przy utworzeniu obiektu klasy (wywołaniu klasy - s = koszyk()) [1]. Organizacja programów - moduły W chwili gdy zakończy się pracę w interpreterze Python i ponownie rozpocznie, wszystkie definicje, które wprowadzono (funkcje i zmienne) zostają stracone. Dlatego też, jeśli chce się napisać dłuższy program, lepiej będzie gdy użyje się edytora tekstów do przygotowania poleceń dla interpretera i uruchomi go z przygotowanym plikiem na wejściu. Nazywa się to tworzeniem skryptu. W miarę, jak program staje się dłuższy, pojawia się konieczność podzielenia go na kilka plików w celu lepszej czytelności kodu. Dzięki temu można użyć funkcji, które wcześniej zostały napisane w paru innych programach bez potrzeby wklejania ich w każdy program z osobna. Python wspomaga te działania poprzez mechanizm umieszczania definicji w pliku i używania ich w skrypcie lub w interaktywnej postaci interpretera. Taki plik nazywany jest modułem, a definicje z modułu mogą być importowane do innych modułów lub do głównego modułu. Moduł jest plikiem zawierającym definicje Python i jego instrukcje. Nazwa pliku jest nazwą modułu pozbawionego rozszerzenia.py. Jeśli programista stworzy plik o nazwie fibo.py i umieści go w bieżącym katalogu z następującą zawartością: # Moduł liczb Fibonacciego def fib(n): # wypisz ciąg Fibonacciego aŝ do n a, b = 0, 1 while b < n: print b, a, b = b, a+b def fib2(n): # zwróć ciąg Fibonacciego aŝ do n wybik = [] 27

28 a, b = 0, 1 while b < n: wynik.append(b) a, b = b, a+b return wynik to po uruchomieniu interpretera Python można zaimportować ten moduł za pomocą następującego polecenia: >>> import fibo W ten sposób nie zaimportuje się nazw funkcji zdefiniowanych w module fibo wprost do bieżącej tablicy symboli - to polecenie wprowadza tylko nazwę fibo do tej tablicy. Aby dostać się do owych funkcji, trzeba użyć polecenia nazwa_modułu.nazwa_funkcji(). >>> fibo.fib(1000) >>> fibo.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo. name 'fibo' Istnieje również możliwość importu wszystkich obiektów modułu. Można tego dokonać używając poniższego polecenia. >>> from fibo import * Po wykonaniu tego polecenia wszystkie obiekty importowanego modułu są dostępne bezpośrednio tzn. nie trzeba już poprzedzać nazwy funkcji nazwą modułu [10] Przegląd zastosowań Python jest językiem programowania ogólnego przeznaczenia, który może zostać uruchomiony w każdym nowoczesnym systemie operacyjnym. Można go w łatwy sposób wykorzystać do przetwarzania tekstu, liczb, obrazów, danych naukowych, czy czegokolwiek innego, co można zapisać na komputerze. Python jest wykorzystywany przez wiele znaczących firm niekoniecznie związanych z usługami sieciowymi. Google, Yahoo, Nokia, IBM czy NASA wykorzystują Pythona w swoich wartych wiele milionów, czy też miliardów dolarów aplikacjach i projektach. Microsoft oraz Apple oferują pełne wsparcie dla Pythona w swoich systemach operacyjnych i platformach programistycznych. Wiele stron internetowych takich jak YouTube czy Grono napisanych jest w Pythonie. NASA wykorzystuje Pythona w swoich aplikacjach od wielu lat. Jednym z dobrze opisanych wdrożeń jest zastosowanie aplikacji napisanych w Pythonie do zarządzania kontrolą startową wahadłowców. Także niedawno upubliczniony został projekt Nebula - to rozproszone środowisko obliczeniowe przystosowane do wykonywania skomplikowanych obliczeń łączące wiele modułów i aplikacji

29 Pythonowych (framework Django, Trac, API dla LUSTRE, RabbitMQ, Subversion) z innymi językami i technologiami (np. Solr w Javie do pełno tekstowego wyszukiwania). YouTube - popularny serwis z klipami wideo jest w większości napisany w Pythonie. Twórcy serwisu (wykupionego przez Google) podkreślali wydajność jaką oferuje Python, a także szybkie implementowanie nowych funkcjonalności poprzez czytelny kod, który łatwo rozszerzać i aktualizować. Google używa Pythona w wielu swoich aplikacjach i usługach takich jak Google App Engine, czy Google Wave. Zatrudnia nawet twórcę języka - Guido van Rossuma. Również silnik wyszukiwarki internetowej Google jest po części napisany w języku Python. Firma Nokia stworzyła, wydała i teraz wykorzystuje platformę Python for S60 do tworzenia różnorodnych aplikacji dla telefonów z systemem operacyjnym Symbian. Tworzenie dynamicznych stron internetowych jest bardzo łatwe i efektywne dzięki frameworkom takim jak Django, Pylons, czy kombajnowi aplikacji Zope/Plone. Python znalazł zastosowanie przy efektywnym i szybkim tworzeniu nowoczesnych stron internetowych bogatych w funkcjonalności. Dzięki wszechstronnej kolekcji modułów i bibliotek serwisy "web 2.0" napisane w Pythonie mogą łatwiej oferować funkcjonalności znane np. z aplikacji desktopowych w porównaniu do np. PHP. Platforma Google App Engine dla rozproszonego hostingu aplikacji internetowy oparta została o Pythona i oferuje serwisom www taką samą skalowalność, jaką posiadają wszystkie aplikacje i usługi tej firmy. Bez administracji serwerami i bez ich konfigurowania. Chmura automatycznie skaluje się do generowanego na stronie ruchu. GAE jest darmowe i tylko za zużycie większej ilości zasobów należy płacić (a darmowe limity i tak są w miarę wysokie). Usługi i serwisy społecznościowe to obecnie podstawa dla wielu serwisów www. Za pomocą Pythona bezproblemowo można wykorzystać API/usługi serwisów takich jak Twitter, Blip.pl, Facebook, aplikacji Google (Maps, Docs i innych przez GData), czy Google Wave. Przykładowo biblioteka PyFacebook pozwala w prosty sposób tworzyć aplikacje dla tego serwisu społecznościowego, a API Google Wave umożliwia tworzenie aplikacji dla tej platformy, czy integrowanie własnych stron i aplikacji z Wave. Biopython jest dojrzałym, w pełni darmowym (open source) projektem, który powstał z ochotniczej inicjatywy. Biopython to biblioteka wspomagająca wszelakiego rodzaju badania i analizy danych biomedycznych. Zawiera moduły do zapisu i odczytu sekwnwcji DNA, sekwencji białkowych w różnych formatach, oraz ułatwia pobierania danych z baz, które zawierają informacje biologiczne. Obecnie Biopython jest wykorzystywany przez wielu naukowców, którzy zajmują się bioinformatyka i ewolucją molekularną. 29

30 3.3 Biblioteka Biopython Biopython jest dość popularna biblioteka języka Python, która ma ułatwiać codzienną pracę bioinformatyka, pozwalając mu na łatwe wywoływanie typowych funkcji z poziomu języka skryptowego. Dzięki tej bibliotece można: czytać pliki o rozszerzeniach (*.fasta,*.gbk), dokonywać analizy składniowej plików (FASTA, gbk) z sekwencjami, wyszukiwać informacje w biologicznych bazach danych, pobierać poszczególne informacje oraz całe rekordy z biologicznych baz danych, tworzyć sekwencje DNA, RNA oraz wykonywać na nich różne operacje (complement DNA, revers DNA, translation, transcryption itp.), tworzyć konwersje pomiędzy danymi w formacie FASTA i gbk, tworzyć całe rekordy w różnych formatach i zapisywać je do pliku, porównywać sekwencje DNA lub sekwencje białkowe. Czytanie plików z danymi biologicznymi Biopython umożliwia programistom wczytywanie do pamięci plików FASTA i genbank zawierających sekwencje DNA lub sekwencje białkowe. Aby tego dokonać należy najpierw z biblioteki Biopython zaimportować moduł seqio, który posiada gotowe funkcje do czytania i analizy składniowej takich plików. Za pomocą funkcji for można czytać pliki FASTA lub genbank rekord po rekordzie, dokonywać rozbioru (parsing) i wypisywać ważne dla bioinformatyków informacje na ekran monitora lub zapisywać wyodrębnione dane na dysk w celu późniejszej analizy. #import odpowiedniego modułu from Bio import SeqIO #czytanie w pętli pliku fasta rekord po rekordzie for seq_record in SeqIO.parse("ls_orchid.fasta", "fasta"): #wypisanie na ekran nr ID sekwencji print seq_record.id #wypisanie na ekran sekwencji DNA print repr(seq_record.seq) #wypisanie długośći sekwencji print len(seq_record) Po wykonaniu powyższego kodu na ekranie monitora powinno pojawić się cos podobnego do tego co widnieje na rys Rys. 11 Zrzut ekranu, na którym widnieje efekt przetworzenia pliku ls_orchid.fasta Wyszukiwanie informacji w biologicznych bazach danych Następnym modułem wchodzącym w skład biblioteki Biopython, o którym warto wspomnieć, jest moduł Entrez. Dzięki temu modułowi można z łatwością wyszukiwać różne informację, poprzez Internet lub lokalnie jeśli mamy na komputerze

31 zainstalowaną jakąś biologiczna bazę danych. Wystarczy tylko znać nazwę bazy (np. nucleotide, protein, pubmed), która musi być podana małymi literami oraz frazę pytającą (np. biopython, homo sapiens itd.). Po zakończeniu wyszukiwania informacji powinno się poinformować użytkownika ile pozycji znaleziono oraz wypisać ich nr ID, co ułatwi później pobranie całego rekordu z bazy danych. Jeśli liczba znalezionych pozycji jest duża można ograniczyć ilość wyświetlanych nr ID dodając do funkcji esearch dodatkowy parametr o nazwie retmax i podając mu dowolna wartość [7]. Na rys.12 pokazano przykładowy wynik przeszukania jednej z biologicznych baz danych. #import odowiedniego modułu from Bio import Entez #podanie nazwy bazy i szukanego terminu handle = Entrez.esearch(db="pubmed", retmax=10, term="biopython") #zapisanie znalezionych informacji do zmiennej record record = Entrez.read(handle) #wypisanie ilość znalezionych pozycji print "Znaleziono "+record["count"]+" publikacji o nastepujacych nr ID: " #wypisanie nr ID znalezionych pozycji print record["idlist"] Rys. 12 Wynik przeszukania bazy PubMed frazą pytającą biopython Pobierane całego rekordu z bazy danych Biblioteka Biopython pozwala również na pobieranie całych rekordów z biologicznych baz danych. Wystarczy tylko mieć dostęp do Internetu. Za pobieranie danych z bazy odpowiada funkcja efetch, która jest częścią modułu Entrez. W celu pobrania całego rekordu należy podać w parametrach funkcji efetch nazwę bazy, typ w jakim ma zostać zwrócona informacja (FASTA, gb) oraz nr ID rekordu, który poznaliśmy dzięki skryptowi opisanego w powyższym fragmencie nim mniejszej pracy. Pobrany rekord można wyświetlić na ekranie lub zapisać do pliku. #!/usr/bin/env python #import odowiedniego modułu from Bio import Entrez #poinformowanie NCBI kim jesteś( moŝe być dowolny, ale musi być) Entrez. = "A.N.Other@example.com" #uzyskanie uchwytu do rekordu bazy nucleotide o podanym nr ID handle = Entrez.efetch(db="nucleotide", id=" ", rettype="gb") #wyswietlenie pobranego rekordu w formacie genbank print handle.read() Efekt działania powyższego fragmentu kodu ukazano na rys

32 Rys. 13 Fragment pobranego rekordu z bazy wyświetlony w formacie genbank Operacje na sekwencjach DNA, RNA oraz sekwencjach białkowych Kolejnymi modułami, którym warto się bliżej przyglądnąć są moduły Seq i Alphabet. Umożliwią one tworzenie własnych sekwencji oraz wykonywać różne operację na sekwencjach za pomocą gotowych funkcji, oczywiście wszystko odbywa się zgodnie z zasadami obowiązującymi w naturze. Poniższy fragment kodu pokazuje jak skorzystać z owych funkcji i wypisać efekt ich działań na ekranie monitora [8]. #import odowiednich modułów from Bio.Seq import Seq from Bio.Alphabet import IUPAC #stworzenie własnej sekwencji DNA my_seq = Seq("GATCGATGGGCCTATATAGGATCGAAAATCGC", IUPAC.unambiguous_dna) #wypisanie utworzonej sekwencji print "My DNA: "+my_seq #utworzenie komplementarnego DNA my_seq_comp = my_seq.complement() #wypisanie komplementarnego DNA print "Complemet DNA: "+my_seq_comp #utworzenie reves DNA my_seq_rev_comp = my_seq.reverse_complement() #wypisanie revers DNA print "Revers DNA: "+my_seq_rev_comp Gdy interpreter języka Python przetworzy ten skrypt na ekranie powinno pojawić się dokładnie to, co widnieje na rys Rys. 14 Efekt przetworzenia powyższego skryptu przez interpreter języka Konwersja pomiędzy plikami FASTA i genbank Moduł SeqIO, o którym było wspomniane na początku tego podrozdziału umożliwia również konwersję pomiędzy plikami FASTA i genbank w obydwie strony. Aby tego dokonać wystarczy napisać kilka linijek kodu.

33 Rys. 15 Zawartość folderu przed wykonaniem konwersji Rys. 16 Zawartość folderu po wykonaniu konwersji #import odpowiednich modułów from Bio import SeqIO #utworzenie uchwytu do pliku w formacie genbank input_handle = open("ls_orchid.gbk") #utworzenie uchwytu do nowego pliku output_handle = open("ls_oechid_convert.fasta", "w") #zapisanie przeparsowanego pliku do zmiennej sequence sequence = SeqIO.parse(input_handle,"genbank") #zapisanie w formacie fasta całej strukury przeparsowanego pliku na dysk SeqIO.write(sequence,output_handle, "fasta") #zamknięcie plików output_handle.close() input_handle.close() Wykonanie tego skryptu zaowocuje powstaniem nowego pliku w folderze, w którym został wykonany skrypt, o czym można się przekonać porównując rys.15 z rys.16. Tworzenie nowych rekordów z danymi Dzięki bibliotece Biopython, znając strukturę plików FASTA lub genbank, można tworzyć całe rekordy z danymi biologicznym i zapisywać je do pliku lub do bazy. Jeśli chcemy tego dokonać najpierw należy wykonać import czterech modułów: Seq, SeqRecord, generic_protein, SeqIO. Następnie można przejść do wpisywania danych do rekordu. Jeśli chcemy aby nasz plik zawierał kilka rekordów wystarczy stworzyć kilka zmiennych i do nich zapisywać wprowadzone dane. Później trzeba stworzone rekordy zapisać do jednej listy i wykorzystują moduł SeqIO zapisać dane na dysk [9]. #import odpowiednich modułów from Bio.Seq import Seq from Bio.SeqRecord import SeqRecord from Bio.Alphabet import generic_protein from Bio import SeqIO #stworzenie pierwszego rekordu z danymi rec1 = SeqRecord(Seq("MMYQQGCFAGGTVLRLAKDLAENNRGARVLVVCSEITAVTFRGPSETHLDSMVGQ ALFGD" \ +"GAGAVIVGSDPDLSVERPLYELVWTGATLLPDSEGAIDGHLREVGLTFHLLKDVPGLISK" \ +"NIEKSLKEAFTPLGISDWNSTFWIAHPGGPAILDQVEAKLGLKEEKMRATREVLSEYGNM" \ +"SSAC", generic_protein), id="gi gb AAK AF376133_1", 33

Bioinformatyka. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl

Bioinformatyka. Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl Bioinformatyka Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Bazy danych biologicznych Bazy danych sekwencji nukleotydowych Pierwotne bazy danych (ang. primary database) Wykorzystywane do zbierania

Bardziej szczegółowo

Bioinformatyka. Michał Bereta

Bioinformatyka. Michał Bereta Bioinformatyka Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Bazy danych biologicznych Bazy danych sekwencji nukleotydowych Pierwotne bazy danych (ang. primary database) Wykorzystywane do zbierania

Bardziej szczegółowo

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python Język PYTHON Podstawowe informacje Python to język skryptowy, interpretowany - co oznacza, że piszemy skrypt, a następnie wykonujemy go za

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji. Bioinformatyka Ocena wiarygodności dopasowania sekwencji www.michalbereta.pl Załóżmy, że mamy dwie sekwencje, które chcemy dopasować i dodatkowo ocenić wiarygodność tego dopasowania. Interesujące nas pytanie

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Bazy danych - wykład wstępny

Bazy danych - wykład wstępny Bazy danych - wykład wstępny Wykład: baza danych, modele, hierarchiczny, sieciowy, relacyjny, obiektowy, schemat logiczny, tabela, kwerenda, SQL, rekord, krotka, pole, atrybut, klucz podstawowy, relacja,

Bardziej szczegółowo

Krzysztof Kadowski. PL-E3579, PL-EA0312,

Krzysztof Kadowski. PL-E3579, PL-EA0312, Krzysztof Kadowski PL-E3579, PL-EA0312, kadowski@jkk.edu.pl Bazą danych nazywamy zbiór informacji w postaci tabel oraz narzędzi stosowanych do gromadzenia, przekształcania oraz wyszukiwania danych. Baza

Bardziej szczegółowo

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych

Laboratorium Technologii Informacyjnych. Projektowanie Baz Danych Laboratorium Technologii Informacyjnych Projektowanie Baz Danych Komputerowe bazy danych są obecne podstawowym narzędziem służącym przechowywaniu, przetwarzaniu i analizie danych. Gromadzone są dane w

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Umieszczanie kodu. kod skryptu

Umieszczanie kodu. kod skryptu PHP Definicja PHP jest językiem skryptowym służącym do rozszerzania możliwości stron internetowych. Jego składnia jest bardzo podobna do popularnych języków programowania C/C++, lecz jest bardzo uproszczona

Bardziej szczegółowo

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski

Informatyka- wykład. Podstawy programowania w Pythonie. dr Marcin Ziółkowski Informatyka- wykład Podstawy programowania w Pythonie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 23 listopada 2015 r. JĘZYK PYTHON Język Python jest

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

QUERY język zapytań do tworzenia raportów w AS/400

QUERY język zapytań do tworzenia raportów w AS/400 QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

2017/2018 WGGiOS AGH. LibreOffice Base

2017/2018 WGGiOS AGH. LibreOffice Base 1. Baza danych LibreOffice Base Jest to zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego programu komputerowego,

Bardziej szczegółowo

Przewodnik Szybki start

Przewodnik Szybki start Przewodnik Szybki start Program Microsoft Access 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Zmienianie rozmiaru ekranu lub

Bardziej szczegółowo

Python. Skąd taka nazwa? Kurs systemu UNIX 1

Python. Skąd taka nazwa? Kurs systemu UNIX 1 Python Skąd taka nazwa? Kurs systemu UNIX 1 Cechy języka marketing Obiektowy (dużo prostszy od C++) Darmowy Nie tylko Unix (choć tam najpopularniejszy) Wiele bibliotek (np. Tkinter, czyli interfejs do

Bardziej szczegółowo

ECDL Podstawy programowania Sylabus - wersja 1.0

ECDL Podstawy programowania Sylabus - wersja 1.0 ECDL Podstawy programowania Sylabus - wersja 1.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu Podstawy programowania. Sylabus opisuje, poprzez efekty uczenia się, zakres wiedzy

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring

Python dla początkujących. Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring Python dla początkujących Małgorzata Niewiem AGH, GGiOŚ, Katedra Geoinformatyki i Informatyki Stosowanej SATIM Satelitarny Monitoring Wstęp Stworzony w latach 90 przez Guido van Rossum Nazwa pochodzi od

Bardziej szczegółowo

WPROWADZENIE DO BAZ DANYCH

WPROWADZENIE DO BAZ DANYCH WPROWADZENIE DO BAZ DANYCH Pojęcie danych i baz danych Dane to wszystkie informacje jakie przechowujemy, aby w każdej chwili mieć do nich dostęp. Baza danych (data base) to uporządkowany zbiór danych z

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

5.5. Wybieranie informacji z bazy

5.5. Wybieranie informacji z bazy 5.5. Wybieranie informacji z bazy Baza danych to ogromny zbiór informacji, szczególnie jeśli jest odpowiedzialna za przechowywanie danych ogromnych firm lub korporacji. Posiadając tysiące rekordów trudno

Bardziej szczegółowo

Programowanie robota mobilnego E-puck w języku Python

Programowanie robota mobilnego E-puck w języku Python Programowanie robota mobilnego E-puck w języku Python Joanna Ratajczak Mirela Kaczmarek 1 Zasady bezpieczeństwa W trakcie pracy z robotem E-puck, rys. 1, należy zachować ostrożność. Pod żadnym pozorem

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej.

PROLOG WSTĘP DO INFORMATYKI. Akademia Górniczo-Hutnicza. Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej. Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk PROLOG www.agh.edu.pl Pewnego dnia przyszedł na świat komputer Komputery

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Uzupełnij pola tabeli zgodnie z przykładem poniżej,

Uzupełnij pola tabeli zgodnie z przykładem poniżej, 1. Wykonaj bazę danych biblioteki szkolnej, Otwórz MS Access a następnie z menu plik wybierz przycisk nowy, w oknie nowy plik wybieramy pusta baza danych nadaj jej nazwę Biblioteka i wybierz miejsce w

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka C++

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Python wstęp do programowania dla użytkowników WCSS

Python wstęp do programowania dla użytkowników WCSS Python wstęp do programowania dla użytkowników WCSS Dr inż. Krzysztof Berezowski Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Wprowadzenie CHARAKTERYSTYKA JĘZYKA Filozofia języka

Bardziej szczegółowo

Dopasowanie sekwencji (sequence alignment)

Dopasowanie sekwencji (sequence alignment) Co to jest alignment? Dopasowanie sekwencji (sequence alignment) Alignment jest sposobem dopasowania struktur pierwszorzędowych DNA, RNA lub białek do zidentyfikowanych regionów w celu określenia podobieństwa;

Bardziej szczegółowo

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia ZP/ITS/11/2012 Załącznik nr 1a do SIWZ ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia Przedmiotem zamówienia jest: Przygotowanie zajęć dydaktycznych w postaci kursów e-learningowych przeznaczonych

Bardziej szczegółowo

Baza danych. Baza danych to:

Baza danych. Baza danych to: Baza danych Baza danych to: zbiór danych o określonej strukturze, zapisany na zewnętrznym nośniku (najczęściej dysku twardym komputera), mogący zaspokoić potrzeby wielu użytkowników korzystających z niego

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0 ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 6.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu ECDL/ICDL Użytkowanie baz danych. Sylabus opisuje zakres wiedzy

Bardziej szczegółowo

TP1 - TABELE PRZESTAWNE od A do Z

TP1 - TABELE PRZESTAWNE od A do Z TP1 - TABELE PRZESTAWNE od A do Z Program szkolenia 1. Tabele programu Excel 1.1. Wstawianie tabeli 1.2. Style tabeli 1.3. Właściwości tabeli 1.4. Narzędzia tabel 1.4.1. Usuń duplikaty 1.4.2. Konwertuj

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0 ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu ECDL/ICDL Użytkowanie baz danych. Sylabus opisuje zakres wiedzy

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 8. Perl find

Systemy operacyjne. Laboratorium 8. Perl find Systemy operacyjne Laboratorium 8 Perl find Temat obejmuje przeszukiwanie drzew katalogowych z użyciem perla oraz podstawowe zdolności w używaniu referencji, tablic asocjacyjnych i mechanizmów typu stat.

Bardziej szczegółowo

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Studia podyplomowe dla nauczycieli INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE Przedmiot JĘZYKI PROGRAMOWANIA DEFINICJE I PODSTAWOWE POJĘCIA Autor mgr Sławomir Ciernicki 1/7 Aby

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty

Informatyka Ćwiczenie 10. Bazy danych. Strukturę bazy danych można określić w formie jak na rysunku 1. atrybuty Informatyka Ćwiczenie 10 Bazy danych Baza danych jest zbiór informacji (zbiór danych). Strukturę bazy danych można określić w formie jak na rysunku 1. Pracownik(ID pracownika, imie, nazwisko, pensja) Klient(ID

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.

Bardziej szczegółowo

Spis treści. Przedmowa... XI. Wprowadzenie i biologiczne bazy danych. 1 Wprowadzenie... 3. 2 Wprowadzenie do biologicznych baz danych...

Spis treści. Przedmowa... XI. Wprowadzenie i biologiczne bazy danych. 1 Wprowadzenie... 3. 2 Wprowadzenie do biologicznych baz danych... Przedmowa... XI Część pierwsza Wprowadzenie i biologiczne bazy danych 1 Wprowadzenie... 3 Czym jest bioinformatyka?... 5 Cele... 5 Zakres zainteresowań... 6 Zastosowania... 7 Ograniczenia... 8 Przyszłe

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6 Zawartość Wstęp... 1 Instalacja... 2 Konfiguracja... 2 Uruchomienie i praca z raportem... 6 Wstęp Rozwiązanie przygotowane z myślą o użytkownikach którzy potrzebują narzędzie do podziału, rozkładu, rozbiórki

Bardziej szczegółowo

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny Informatyka klasa III Gimnazjum wymagania na poszczególne oceny Algorytmika i programowanie Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie podejścia algorytmicznego

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Biblioteka Wirtualnej Nauki

Biblioteka Wirtualnej Nauki Biblioteka Wirtualnej Nauki BAZA SCOPUS Scopus jest największą na świecie bibliograficzną bazą abstraktów i cytowań recenzowanej literatury naukowej, wyposażoną w narzędzia bibliometryczne do śledzenia,

Bardziej szczegółowo

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23)

Wprowadzenie (17) Część I. Makra w Excelu - podstawy (23) Wprowadzenie (17) Omówione zagadnienia (18) Co trzeba wiedzieć? (18) Co trzeba mieć? (18) Układ książki (18) o Część I. Makra w Excelu - podstawy (19) o Część II. Praca ze skoroszytami (19) o Część III.

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Wykresy i interfejsy użytkownika

Wykresy i interfejsy użytkownika Wrocław, 07.11.2017 Wstęp do informatyki i programowania: Wykresy i interfejsy użytkownika Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Instrukcje sterujące Biblioteka

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Bazy danych Karta pracy 1

Bazy danych Karta pracy 1 Bazy danych Karta pracy 1 Bazy danych Karta pracy 1 1. Utwórz katalog Bazy danych służący do przechowywania wszelkich danych dotyczących kursu. 2. W katalogu Bazy danych stwórz podkatalog BD1 służący jako

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Języki skryptowe w programie Plans

Języki skryptowe w programie Plans Języki skryptowe w programie Plans Warsztaty uŝytkowników programu PLANS Kościelisko 2010 Zalety skryptów Automatyzacja powtarzających się czynności Rozszerzenie moŝliwości programu Budowa własnych algorytmów

Bardziej szczegółowo

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017

Systemy operacyjne. Laboratorium 9. Perl wyrażenia regularne. Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Systemy operacyjne Laboratorium 9 Perl wyrażenia regularne Jarosław Rudy Politechnika Wrocławska 28 lutego 2017 Temat obejmuje wykorzystanie wyrażeń regularnych w perlu. Wyrażenia same w sobie są w zasadzie

Bardziej szczegółowo

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI LABORATORIUM TECHNOLOGIA SYSTEMÓW INFORMATYCZNYCH W BIOTECHNOLOGII Aplikacja bazodanowa: Cz. II Rzeszów, 2010 Strona 1 z 11 APLIKACJA BAZODANOWA MICROSOFT ACCESS

Bardziej szczegółowo

World Wide Web? rkijanka

World Wide Web? rkijanka World Wide Web? rkijanka World Wide Web? globalny, interaktywny, dynamiczny, wieloplatformowy, rozproszony, graficzny, hipertekstowy - system informacyjny, działający na bazie Internetu. 1.Sieć WWW jest

Bardziej szczegółowo

I. Interfejs użytkownika.

I. Interfejs użytkownika. Ćwiczenia z użytkowania systemu MFG/PRO 1 I. Interfejs użytkownika. MFG/PRO w wersji eb2 umożliwia wybór użytkownikowi jednego z trzech dostępnych interfejsów graficznych: a) tekstowego (wybór z menu:

Bardziej szczegółowo

Bazy danych TERMINOLOGIA

Bazy danych TERMINOLOGIA Bazy danych TERMINOLOGIA Dane Dane są wartościami przechowywanymi w bazie danych. Dane są statyczne w tym sensie, że zachowują swój stan aż do zmodyfikowania ich ręcznie lub przez jakiś automatyczny proces.

Bardziej szczegółowo

Od programowania wizualnego do tekstowego

Od programowania wizualnego do tekstowego Od programowania wizualnego do tekstowego Krzysztof Chechłacz Nowa podstawa programowa z informatyki w świetle reformy oświaty - Konferencja w ramach XII edycji Akademii Technologii Informacyjnej i Komunikacyjnej

Bardziej szczegółowo

Technologie informacyjne: Arkusz kalkulacyjny

Technologie informacyjne: Arkusz kalkulacyjny Wrocław, 11.05.2018 Technologie informacyjne: Arkusz kalkulacyjny Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Podstawy korzystania z arkuszy kalkulacyjnych. 1/68

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Zintegrowany System Zarządzania Biblioteką SOWA2/MARC21 OBSŁUGA CZASOPISM

Zintegrowany System Zarządzania Biblioteką SOWA2/MARC21 OBSŁUGA CZASOPISM Zintegrowany System Zarządzania Biblioteką SOWA2/MARC21 OBSŁUGA CZASOPISM Poznań 2011 Spis treści 1. Wstęp...3 2. Tworzenie informacji o zasobach czasopisma...4 3. Rekord karty wpływu...5 4. Tworzenie

Bardziej szczegółowo

5. Bazy danych Base Okno bazy danych

5. Bazy danych Base Okno bazy danych 5. Bazy danych Base 5.1. Okno bazy danych Podobnie jak inne aplikacje środowiska OpenOffice, program do tworzenia baz danych uruchamia się po wybraniu polecenia Start/Programy/OpenOffice.org 2.4/OpenOffice.org

Bardziej szczegółowo

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Zakres treści Czas. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 011/01 Nr programu: 31[01]/T,SP/MENIS/004.06.14 Okres kształcenia: łącznie ok. 180 godz. lekcyjne Wojciech Borzyszkowski Zenon Kreft Moduł Bok wprowadzający Podstawy

Bardziej szczegółowo

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25

MS Excel 2007 Kurs zaawansowany Obsługa baz danych. prowadzi: Dr inż. Tomasz Bartuś. Kraków: 2008 04 25 MS Excel 2007 Kurs zaawansowany Obsługa baz danych prowadzi: Dr inż. Tomasz Bartuś Kraków: 2008 04 25 Bazy danych Microsoft Excel 2007 udostępnia szereg funkcji i mechanizmów obsługi baz danych (zwanych

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi

OpenOfficePL. Zestaw szablonów magazynowych. Instrukcja obsługi OpenOfficePL Zestaw szablonów magazynowych Instrukcja obsługi Spis treści : 1. Informacje ogólne 2. Instalacja zestawu a) konfiguracja połączenia z bazą danych b) import danych z poprzedniej wersji faktur

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu 1 Algorytmika i programowanie Rozwiązywanie problemów i podejmowanie decyzji z wykorzystaniem komputera, stosowanie

Bardziej szczegółowo

Tabela wewnętrzna - definicja

Tabela wewnętrzna - definicja ABAP/4 Tabela wewnętrzna - definicja Temporalna tabela przechowywana w pamięci operacyjnej serwera aplikacji Tworzona, wypełniana i modyfikowana jest przez program podczas jego wykonywania i usuwana, gdy

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności

Bardziej szczegółowo

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ WWW.KACZMARSKI.PL INSTRUKCJA UŻYTKOWNIKA

WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ WWW.KACZMARSKI.PL INSTRUKCJA UŻYTKOWNIKA WPROWADZANIE ZLECEŃ POPRZEZ STRONĘ WWW.KACZMARSKI.PL INSTRUKCJA UŻYTKOWNIKA WSTĘP... 2 1 UWARUNKOWANIA TECHNICZNE... 2 2 UWARUNKOWANIA FORMALNE... 2 3 LOGOWANIE DO SERWISU... 2 4 WIDOK STRONY GŁÓWNEJ...

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop. 2017 Spis treści Przedmowa 11 1. Jak w programie 21 Czym jest program? 21 Uruchamianie interpretera języka Python 22 Pierwszy

Bardziej szczegółowo

Jak zaimportować bazę do system SARE

Jak zaimportować bazę do system SARE Jak zaimportować bazę do system SARE Jeżeli przed importem bazy nie mamy stworzonej odpowiedniej grupy, możemy ją dodać z poziomu Adresy -> przeglądaj grupy, klikając w przycisk dodaj grupę (elementy zaznaczone

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI DOPASOWANIE SEKWENCJI 1. Dopasowanie sekwencji - definicja 2. Wizualizacja dopasowania sekwencji 3. Miary podobieństwa sekwencji 4. Przykłady programów

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane Algorytmy i struktury danych Wykład 4 Tablice nieporządkowane i uporządkowane Tablice uporządkowane Szukanie binarne Szukanie interpolacyjne Tablice uporządkowane Szukanie binarne O(log N) Szukanie interpolacyjne

Bardziej szczegółowo

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave Politechnika Wrocławska Wydział Elektroniki Mikrosystemów i Fotoniki Przetwarzanie sygnałów laboratorium ETD5067L Ćwiczenie 1. Wprowadzenie do programu Octave Mimo że program Octave został stworzony do

Bardziej szczegółowo

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

BIOINFORMATYKA BIOLOGICZNE BAZY DANYCH

BIOINFORMATYKA BIOLOGICZNE BAZY DANYCH http://theta.edu.pl/ Podstawy Bioinformatyki II BIOINFORMATYKA BIOLOGICZNE BAZY DANYCH 1 Czym jest bioinformatyka? 2 Bioinformatyka Bioinformatyka jest interdyscyplinarną dziedziną nauki obejmującą wykorzystanie

Bardziej szczegółowo