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. = #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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

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

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

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Systemy baz danych w zarządzaniu przedsiębiorstwem W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi Proces zarządzania danymi Zarządzanie danymi obejmuje czynności: gromadzenie

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

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

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access.

Konspekt do lekcji informatyki dla klasy II gimnazjum. TEMAT(1): Baza danych w programie Microsoft Access. Konspekt do lekcji informatyki dla klasy II gimnazjum. Opracowała: Mariola Franek TEMAT(1): Baza danych w programie Microsoft Access. Cel ogólny: Zapoznanie uczniów z możliwościami programu Microsoft Access.

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ęzyk programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy GIS Tworzenie zapytań w bazach danych Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE

Bardziej szczegółowo

Skrócona instrukcja obsługi

Skrócona instrukcja obsługi Web of Science Skrócona instrukcja obsługi ISI WEB OF KNOWLEDGE SM Można przeszukiwać ponad 9 00 czasopism w ponad językach z różnych dziedzin nauk ścisłych, społecznych i humanistycznych, aby znaleźć

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

Pojęcie systemu informacyjnego i informatycznego

Pojęcie systemu informacyjnego i informatycznego BAZY DANYCH Pojęcie systemu informacyjnego i informatycznego DANE wszelkie liczby, fakty, pojęcia zarejestrowane w celu uzyskania wiedzy o realnym świecie. INFORMACJA - znaczenie przypisywane danym. SYSTEM

Bardziej szczegółowo

Instalacja SQL Server Express. Logowanie na stronie Microsoftu

Instalacja SQL Server Express. Logowanie na stronie Microsoftu Instalacja SQL Server Express Logowanie na stronie Microsoftu Wybór wersji do pobrania Pobieranie startuje, przechodzimy do strony z poradami. Wypakowujemy pobrany plik. Otwiera się okno instalacji. Wybieramy

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

Podstawy bioinformatyki - biologiczne bazy danych

Podstawy bioinformatyki - biologiczne bazy danych Podstawy bioinformatyki - biologiczne bazy danych Czym jest bioinformatyka? Bioinformatyka Bioinformatyka jest interdyscyplinarną dziedziną nauki obejmującą wykorzystanie metod obliczeniowych do badania

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

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

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

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

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

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

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna)

IBM SPSS Statistics Wersja 22. Linux - Instrukcja instalacji (licencja wielokrotna) IBM SPSS Statistics Wersja 22 Linux - Instrukcja instalacji (licencja wielokrotna) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Instalowanie produktu............ 1 Praca

Bardziej szczegółowo

Alicja Marszałek Różne rodzaje baz danych

Alicja Marszałek Różne rodzaje baz danych Alicja Marszałek Różne rodzaje baz danych Rodzaje baz danych Bazy danych można podzielić wg struktur organizacji danych, których używają. Można podzielić je na: Bazy proste Bazy złożone Bazy proste Bazy

Bardziej szczegółowo

Zastanawiałeś się może, dlaczego Twój współpracownik,

Zastanawiałeś się może, dlaczego Twój współpracownik, Kurs Makra dla początkujących Wiadomości wstępne VBI/01 Piotr Dynia, specjalista ds. MS Office Czas, który poświęcisz na naukę tego zagadnienia, to 15 20 minut. Zastanawiałeś się może, dlaczego Twój współpracownik,

Bardziej szczegółowo

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej. Dział Zagadnienia Wymagania podstawowe Wymagania ponadpodstawowe Arkusz kalkulacyjny (Microsoft Excel i OpenOffice) Uruchomienie

Bardziej szczegółowo

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ

Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Funkcje wyszukiwania i adresu PODAJ.POZYCJĘ Mariusz Jankowski autor strony internetowej poświęconej Excelowi i programowaniu w VBA; Bogdan Gilarski właściciel firmy szkoleniowej Perfect And Practical;

Bardziej szczegółowo

Podręcznik użytkownika Publikujący aplikacji Wykaz2

Podręcznik użytkownika Publikujący aplikacji Wykaz2 Podręcznik użytkownika Publikujący aplikacji Wykaz2 TiMSI Sp z o o ul Czapli 63, 02-781 Warszawa tel : +48 22 644 86 76, fax: +48 22 644 78 52 NIP: 951-19-39-800 Sąd Rejonowy dla mst Warszawy w Warszawie,

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

Podręcznik Użytkownika LSI WRPO

Podręcznik Użytkownika LSI WRPO Podręcznik użytkownika Lokalnego Systemu Informatycznego do obsługi Wielkopolskiego Regionalnego Programu Operacyjnego na lata 2007 2013 w zakresie wypełniania wniosków o dofinansowanie Wersja 1 Podręcznik

Bardziej szczegółowo

Wprowadzenie do Scilab: podstawy języka Scilab

Wprowadzenie do Scilab: podstawy języka Scilab Wprowadzenie do Scilab: podstawy języka Scilab Magdalena Deckert, Izabela Szczęch, Barbara Wołyńska, Bartłomiej Prędki Politechnika Poznańska, Instytut Informatyki Narzędzia Informatyki Narzędzia Informatyki

Bardziej szczegółowo

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ Wykład 3 Katedra Inżynierii Komputerowej Jakub Romanowski jakub.romanowski@kik.pcz.pl POBIERANIE DANYCH C/AL Poniższe funkcje używane są do operacji pobierania

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

WYMAGANIA EDUKACYJNE

WYMAGANIA EDUKACYJNE GIMNAZJUM NR 2 W RYCZOWIE WYMAGANIA EDUKACYJNE niezbędne do uzyskania poszczególnych śródrocznych i rocznych ocen klasyfikacyjnych z INFORMATYKI w klasie II gimnazjum str. 1 1. Algorytmika i programowanie

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED Podręcznik użytkownika Katowice 2010 Producent programu: KAMSOFT S.A. ul. 1 Maja 133 40-235 Katowice Telefon: (0-32) 209-07-05 Fax:

Bardziej szczegółowo

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy

Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Instrukcja obsługi Zaplecza epk w zakresie zarządzania tłumaczeniami opisów procedur, publikacji oraz poradników przedsiębiorcy Spis treści: 1 WSTĘP... 3 2 DOSTĘP DO SYSTEMU... 3 3 OPIS OGÓLNY SEKCJI TŁUMACZENIA...

Bardziej szczegółowo

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów Aplikacje internetowe KL. III Rok szkolny: 013/01 Nr programu: 31[01]/T,SP/MENIS/00.06.1 Okres kształcenia: łącznie ok. 170 godz. lekcyjne Moduł Bok wprowadzający 1. Zapoznanie z programem nauczania i

Bardziej szczegółowo

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych Szkolenie przeznaczone jest dla osób chcących poszerzyć swoje umiejętności o tworzenie rozwiązań internetowych w PHP. Zajęcia zostały przygotowane w taki sposób, aby po ich ukończeniu można było rozpocząć

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

Python wstęp. Michał Bereta www.michalbereta.pl

Python wstęp. Michał Bereta www.michalbereta.pl Python wstęp Michał Bereta www.michalbereta.pl Wprowadzenie... 1 Źródła wiedzy... 1 Uruchomienie interpretera Pythona... 2 Python jako kalkulator użycie interaktyne... 2 Uruchamianie skryptów z plików...

Bardziej szczegółowo

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++ Programowanie Wstęp p do programowania Klasa 3 Lekcja 9 PASCAL & C++ Język programowania Do przedstawiania algorytmów w postaci programów służą języki programowania. Tylko algorytm zapisany w postaci programu

Bardziej szczegółowo

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2

WyŜsza Szkoła Zarządzania Ochroną Pracy MS EXCEL CZ.2 - 1 - MS EXCEL CZ.2 FUNKCJE Program Excel zawiera ok. 200 funkcji, będących predefiniowanymi formułami, słuŝącymi do wykonywania określonych obliczeń. KaŜda funkcja składa się z nazwy funkcji, która określa

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy dwie Encje (tabele) prawym

Bardziej szczegółowo

Być może jesteś doświadczonym programistą, biegle programujesz w Javie,

Być może jesteś doświadczonym programistą, biegle programujesz w Javie, Kompendium PHP 01 Być może jesteś doświadczonym programistą, biegle programujesz w Javie, C++, Pythonie lub jakimś innym języku programowania, których jak myślę, powstało już tyle, że chyba nie ma osoby,

Bardziej szczegółowo

Multiwyszukiwarka EBSCO Discovery Service - przewodnik

Multiwyszukiwarka EBSCO Discovery Service - przewodnik Multiwyszukiwarka EDS daje możliwość przeszukania większości baz udostępnianych przez Bibliotekę Główną Uniwersytetu Medycznego w Poznaniu. Odnajdziesz publikacje na potrzebny Ci temat szybko, łatwo i

Bardziej szczegółowo

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy

Bardziej szczegółowo

3.1. Na dobry początek

3.1. Na dobry początek Klasa I 3.1. Na dobry początek Regulamin pracowni i przepisy BHP podczas pracy przy komputerze Wykorzystanie komputera we współczesnym świecie Zna regulamin pracowni i przestrzega go. Potrafi poprawnie

Bardziej szczegółowo

POLITECHNIKA WARSZAWSKA

POLITECHNIKA WARSZAWSKA POLITECHNIKA WARSZAWSKA WYDZIAŁ ELEKTRONIKI I TECHNIK INFORMACYJNYCH Repozytorium PW Instrukcja importowania danych Opracowanie: mgr inż. Wacław Struk Warszawa, lipiec 2013 Spis treści 1. Generowanie formatu

Bardziej szczegółowo

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38 Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem zajęcia 1 dr Jakub Boratyński pok. A38 Program zajęć Bazy danych jako podstawowy element systemów informatycznych wykorzystywanych

Bardziej szczegółowo

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 ZAMAWIANIE I REZERWOWANIE

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 ZAMAWIANIE I REZERWOWANIE Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 ZAMAWIANIE I REZERWOWANIE Poznań 2011 Spis treści 1. Zamawianie i rezerwowanie definicja pojęć...3 2. Zasada działania systemu...4 3. Zamawianie

Bardziej szczegółowo

dziennik Instrukcja obsługi

dziennik Instrukcja obsługi Ham Radio Deluxe dziennik Instrukcja obsługi Wg. Simon Brown, HB9DRV Tłumaczenie SP4JEU grudzień 22, 2008 Zawartość 3 Wprowadzenie 5 Po co... 5 Główne cechy... 5 baza danych 7 ODBC... 7 Który produkt

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC.

Rozdział ten zawiera informacje o sposobie konfiguracji i działania Modułu OPC. 1 Moduł OPC Moduł OPC pozwala na komunikację z serwerami OPC pracującymi w oparciu o model DA (Data Access). Dzięki niemu można odczytać stan obiektów OPC (zmiennych zdefiniowanych w programie PLC), a

Bardziej szczegółowo

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy 1 Podstawowym przeznaczeniem arkusza kalkulacyjnego jest najczęściej opracowanie danych liczbowych i prezentowanie ich formie graficznej. Ale formuła arkusza kalkulacyjnego jest na tyle elastyczna, że

Bardziej szczegółowo

Baza danych. Modele danych

Baza danych. Modele danych Rola baz danych Systemy informatyczne stosowane w obsłudze działalności gospodarczej pełnią funkcję polegającą na gromadzeniu i przetwarzaniu danych. Typowe operacje wykonywane na danych w systemach ewidencyjno-sprawozdawczych

Bardziej szczegółowo

Użycie Visual Basic for Applications ("VBA")

Użycie Visual Basic for Applications (VBA) Użycie Visual Basic for Applications ("VBA") Przegląd SEE z modułem VBA Developer SEE używa języka programowania Visual Basic for Applications (VBA) pozwalającego tworzyć krótkie programy zwane "makrami".

Bardziej szczegółowo

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W ELBLĄGU INSTYTUT INFORMATYKI STOSOWANEJ Sprawozdanie z Seminarium Dyplomowego Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bardziej szczegółowo

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt

Serwer WWW Apache. http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, 2.2.25, 2.0.65 zakończony projekt Serwer WWW Apache http://httpd.apache.org/ Plik konfiguracyjny httpd.conf Definiujemy m.in.: Katalog który ma być serwowany Moduły, które mają zostać uruchomione na serwerze m.in. PHP, mod_rewrite Wirtualne

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Deduplikacja danych. Zarządzanie jakością danych podstawowych

Deduplikacja danych. Zarządzanie jakością danych podstawowych Deduplikacja danych Zarządzanie jakością danych podstawowych normalizacja i standaryzacja adresów standaryzacja i walidacja identyfikatorów podstawowa standaryzacja nazw firm deduplikacja danych Deduplication

Bardziej szczegółowo

IBM SPSS Statistics Version 22. Windows - Instrukcja instalacji (licencja wielokrotna)

IBM SPSS Statistics Version 22. Windows - Instrukcja instalacji (licencja wielokrotna) IBM SPSS Statistics Version 22 Windows - Instrukcja instalacji (licencja wielokrotna) Spis treści Instrukcja instalacji.......... 1 Wymagania systemowe........... 1 Instalowanie produktu............ 1

Bardziej szczegółowo

Skorzystaj z Worda i stwórz profesjonalnie wyglądające dokumenty.

Skorzystaj z Worda i stwórz profesjonalnie wyglądające dokumenty. ABC Word 2007 PL. Autor: Aleksandra Tomaszewska-Adamarek Czasy maszyn do pisania odchodzą w niepamięć. Dziś narzędziami do edycji tekstów są aplikacje komputerowe, wśród których niekwestionowaną palmę

Bardziej szczegółowo

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga! Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)

Bardziej szczegółowo

Ogranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym

Ogranicz listę klasyfikacji budżetowych do powiązanych z danym kontem księgowym Zależności i kontrola danych budżetowych w systemie Sz@rk FK 1. Wstęp Począwszy od wersji Sz@rk FK 2011 (11.03.30) wprowadzono do programu finansowoksięgowego nowe możliwości dotyczące kontrolowania poprawności

Bardziej szczegółowo

PROGRAM RETROKONWERSJI ZDALNEJ

PROGRAM RETROKONWERSJI ZDALNEJ ul. Mołdawska 18, 61-614 Poznań tel. / fax. (-61) 656-44-10 adres do korespondencji: os. Stefana Batorego 13/27 60-969 POZNAÑ 60, skr. 40 PROGRAM RETROKONWERSJI ZDALNEJ dla systemów SOWA opracował zespół

Bardziej szczegółowo

1. Przypisy, indeks i spisy.

1. Przypisy, indeks i spisy. 1. Przypisy, indeks i spisy. (Wstaw Odwołanie Przypis dolny - ) (Wstaw Odwołanie Indeks i spisy - ) Przypisy dolne i końcowe w drukowanych dokumentach umożliwiają umieszczanie w dokumencie objaśnień, komentarzy

Bardziej szczegółowo

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki Studia Podyplomowe INFORMATYKA Podstawy Informatyki Wykład V Rzut okiem na języki programowania 1 Kompilacja vs. interpretacja KOMPILACJA Proces, który przetwarza program zapisany w języku programowania,

Bardziej szczegółowo

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie:

Zacznijmy więc pracę z repozytorium. Pierwsza konieczna rzecz do rozpoczęcia pracy z repozytorium, to zalogowanie się w serwisie: Repozytorium służy do przechowywania plików powstających przy pracy nad projektami we w miarę usystematyzowany sposób. Sam mechanizm repozytorium jest zbliżony do działania systemu plików, czyli składa

Bardziej szczegółowo