Bioinformatyka: Wykład 2. Algorytm Smitha Watermana implementacja w języku Python

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

Download "Bioinformatyka: Wykład 2. Algorytm Smitha Watermana implementacja w języku Python"

Transkrypt

1 Bioinformatyka: Wykład 2 Algorytm Smitha Watermana implementacja w języku Python

2 Przyrównanie sekwencji Algorytm Smitha-Watermana dla pary sekwencji P i Q o długościach odpowiednio M i N. Zbuduj macierz prostokątną H o wymiarze MxN Wypełnij macierz tak, że H[i,j] jest miarą podobieństwa między i- tym aminokwasem z P i j-tym aminokwasem z Q Przetwórz macierz, zaczynając od górnego lewego roku używając wzoru H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] ( H [ i,k] GapPenalty( i, j,k) ) ( H [ k, j] GapPenalty( i, j,k) ) 0

3 Macierze podobieństwa aminokwasów Otrzymane z częstości obserwowanych mutacji M ij = a log 2 f ( A A ) i j ( ) ( )! " # $ # f A f A $ % i j & # Matrix made by matblas from blosum62.iij # * column uses minimum score # BLOSUM Clustered Scoring Matrix in 1/2 Bit Units # Blocks Database = /data/blocks_5.0/blocks.dat # Cluster Percentage: >= 62 # Entropy = , Expected =

4 A R N D C Q E G H I L K M F P S T W Y V A R N D C Q E G H I L K M F P S T W Y V

5 R Q E K D N H T S A G Y W F I L V M C P R Q E K D N H T S A G Y W F I L V M C P

6 A R N D C Q E G H I L K M F P S T W Y V A R N D C Q E G H I L K M F P S T W Y V

7 Przyrównanie sekwencji Algorytm Smitha-Watermana dla pary sekwencji P i Q o długościach odpowiednio M i N. Zbuduj macierz prostokątną H o wymiarze MxN Wypełnij macierz tak, że H[i,j] jest miarą podobieństwa między i- tym aminokwasem z P i j-tym aminokwasem z Q Przetwórz macierz, zaczynając od górnego lewego roku używając wzoru H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] ( H [ i,k] GapPenalty( i, j,k) ) ( H [ k, j] GapPenalty( i, j,k) ) 0

8 Przyrównanie sekwencji Algorytm Smitha-Watermana dla pary sekwencji P i Q o długościach odpowiednio M i N. Zbuduj macierz prostokątną H o wymiarze MxN Wypełnij macierz tak, że H[i,j] jest miarą podobieństwa między i- tym aminokwasem z P i j-tym aminokwasem z Q Przetwórz macierz, zaczynając od górnego lewego roku używając wzoru H i 1, j 1!! H [ i, j] = max k max k [ ]+ H [ i, j] H [ i,k] GapPenalty i, j, k H [ k, j] GapPenalty i, j, k ( ( )) ( ) ( ) 0 Znajdź wartość maksymalną Znajdź ścieżkę wiodącą od wartości 0 do wartości maksymalnej Znaleziona ścieżka jest najlepszym przyrównaniem lokalnym sekwencji P i Q

9 Algorytm Smitha Watermana Podany wzór jest ogólny jest prawdziwy dla dowolnej funkcji GapPenalty() Algorytm ma złożoność obliczeniową O(MxNx(M+N)) - dla każdego z MxN elementów macierzy musimy wyznaczyć maksimum funkcji dla kolumny i dla wiersza H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] ( H [ i,k] GapPenalty( i, j,k) ) ( H [ k, j] GapPenalty( i, j,k) ) 0

10 Algorytm Smitha Watermana Jeżeli funkcja GapPenalty() ma postać: GapPenalty() = GapOpening + k*gapextension gdzie k jest długością przerwy Istnieje wersja algorytmu ze złożonością obliczeniową O(MxN), zaproponowana przez Osamu Gotoha (1982) H [ i, j] = max H [ i 1, j 1]+ H i, j [ ] [ ] E i, j F i, j 0 [ ] E[ i, j] = max F[ i, j] = max E[ i, j 1] GapExt H [ i, j 1] GapOpen GapExt F[ i 1, j] GapExt H [ i 1, j] GapOpen GapExt

11 Algorytm SWalign w Pythonie Założenia implementacja wersji podstawowej - wersja Gotoh samodzielnie wczytujemy: macierz podobieństwa dwie sekwencje obliczamy algorytmem SW punktację - jeżeli jest powyżej poziomu odcięcia to wołamy algorytm raz jeszcze, w wersji z wyliczaniem przyrównania

12 Algorytm SWalign w Pythonie Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

13 Algorytm SWalign w Pythonie Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

14 Algorytm SWalign w Pythonie. Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

15 Algorytm SWalign w Pythonie. Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

16 Algorytm SWalign w Pythonie. Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

17 Algorytm SWalign w Pythonie. Funkcja w Pythonie implementująca taką sekwencję działań def SW_align(Matrix_name,s1_name,s2_name,GapOpen,GapExt,Threshold): result = read_blosum(matrix_name) SimMat = result[2] RevIndx = result[1] S1 = read_fasta(s1_name) S2 = read_fasta(s2_name) Score = SW_align_simple(S1,S2,SimMat,RevIndx,GapOpen,GapExt) if Score > Threshold: tmp = SW_align_trace(S1,S2,SimMat,RevIndx,GapOpen,GapExt) Ftrace = SW_build_traceback(tmp[0],tmp[1],tmp[2],tmp[3],tmp[4],S1,S2) Alignment = SW_build_alignment(Ftrace,S1,S2) return(alignment) else : print(' Below threshold (',Threshold,')') return()

18 read_blosum() Funkcje pomocnicze # Matrix made by matblas from blosum62.iij # * column uses minimum score # BLOSUM Clustered Scoring Matrix in 1/2 Bit Units # Blocks Database = /data/blocks_5.0/blocks.dat # Cluster Percentage: >= 62 # Entropy = , Expected = A R N D C Q E G H I L K M F P S T W Y V B Z X * A R N ~~~~ Y V B Z X *

19 Funkcje pomocnicze def read_blosum(name): Blosum_file = open(name,'r') MyMatrix=[] line_count =0 row='' header='' blosum = numpy.zeros((24,24)) revindx={} indx={} return(result)

20 Funkcje pomocnicze def read_blosum(name): Blosum_file = open(name,'r') MyMatrix=[] line_count =0 row='' header='' blosum = numpy.zeros((24,24)) revindx={} indx={} return(result) otwieranie pliku deklaracja listy użycie modułu numpy

21 Funkcje pomocnicze def read_blosum(name): for line in Blosum_file: if line[0]!= '#': line_count += 1 if line_count == 1: header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result)

22 Funkcje pomocnicze def read_blosum(name): for line in Blosum_file: if line[0]!= '#': line_count += 1 if line_count == 1: header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result) Czytanie z pliku linia po linii

23 Funkcje pomocnicze def read_blosum(name): for line in Blosum_file: if line[0]!= '#': line_count += 1 if line_count == 1: header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result)

24 Funkcje pomocnicze def read_blosum(name): for line in Blosum_file: if line[0]!= '#': line_count += 1 if line_count == 1: header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result) Wszystko jest obiektem

25 Funkcje pomocnicze def read_blosum(name): revindx={} indx={} for line in Blosum_file: if line[0]!= '#': header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result) Słownik utworzenie wypełenie

26 Funkcje pomocnicze def read_blosum(name): revindx={} indx={} for line in Blosum_file: if line[0]!= '#': header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result) Słownik utworzenie wypełenie

27 Funkcje pomocnicze def read_blosum(name): revindx={} indx={} for line in Blosum_file: if line[0]!= '#': header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result) Słownik utworzenie wypełenie

28 Funkcje pomocnicze def read_blosum(name): Słownik revindx={} utworzenie indx={} wypełenie for line in Blosum_file: if line[0]!= '#': odwołanie header = line.strip('\n') hindex=header.split() indx={i : hindex[i] for i in range(0,len(hindex))} for i,v in indx.items(): revindx[v] = i else: row = line.rstrip('\n') CurrAA = row[0] row_items=row.split() for i in range(1,len(row_items)): blosum[line_count-2,i-1]=row_items[i] result = [indx,revindx,blosum] return(result)

29 Funkcje pomocnicze def read_fasta(name): Fasta_file = open(name,'r') MySeq='' first_line=fasta_file.readline() if first_line[0] == '>': #print('header found') for line in Fasta_file: MySeq=MySeq+line.rstrip('\n') Fasta_file.close() return(myseq) >sp P52789 HXK2_HUMAN HEXOKINASE, TYPE II (EC ) (HK II) (MUSCLE FORM HEXOKINASE) - Homo sapiens (Human). MIASHLLAYFFTELNHDQVQKVDQYLYHMRLSDETLLEISKRFRKEMEKG LGATTHPTAAVKMLPTFVRSTPDGTEHGEFLALDLGGTNFRVLWVKVTDN GLQKVEMENQIYAIPEDIMRGSGTQLFDHIAECLANFMDKLQIKDKKLPL

30 Problem Zmodyfikuj funkcję read_fasta() tak aby mogła wczytać plik w formacie FASTA zawierający dowolną liczbę sekwencji. Wynikiem powinny być dwie listy: Lista nagłówków Lista sekwencji >sp P52789 HXK2_HUMAN HEXOKINASE, TYPE II (EC ) (HK II) (MUSCLE FORM HEXOKINASE) - Homo sapiens (Human). MIASHLLAYFFTELNHDQVQKVDQYLYHMRLSDETLLEISKRFRKEMEKG LGATTHPTAAVKMLPTFVRSTPDGTEHGEFLALDLGGTNFRVLWVKVTDN GLQKVEMENQIYAIPEDIMRGSGTQLFDHIAECLANFMDKLQIKDKKLPL! >sp P52790 HXK3_HUMAN HEXOKINASE TYPE III (EC ) (HK III) - Homo sapiens (Human). MDSIGSSGLRQGEETLSCSEEGLPGPSDSSELVQECLQQFKVTRAQLQQI QASLLGSMEQALRGQASPAPAVRMLPTYVGSTPHGTEQGDFVVLELGATG

31 Przyrównanie sekwencji Algorytm Smitha-Watermana dla pary sekwencji P i Q o długościach odpowiednio M i N. Zbuduj macierz prostokątną H o wymiarze MxN Wypełnij macierz tak, że H[i,j] jest miarą podobieństwa między i- tym aminokwasem z P i j-tym aminokwasem z Q Przetwórz macierz, zaczynając od górnego lewego roku używając wzoru H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] ( H [ i,k] GapPenalty( i, j,k) ) ( H [ k, j] GapPenalty( i, j,k) ) 0

32 SW_align_simple MIAAQLLAY MIAAQEDLLAY MIAAQ--LLAY MIAAQEDLLAY H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] H [ i,k] GapPenalty i, j, k H [ k, j] GapPenalty i, j, k ( ) ( ) ( ) ( ) 0 _ M I A A Q E D L L A Y -[[ ] M[ ] I[ ] A[ ] A[ ] Q[ ] L[ ] L[ ] A[ ] Y[ ]]

33 SW_align_simple MIAAQLLAY MIAAQEDLLAY MIAAQ--LLAY MIAAQEDLLAY H [ i, j] = max k max k H [ i 1, j 1]+ H [ i, j] H [ i,k] GapPenalty i, j, k H [ k, j] GapPenalty i, j, k ( ( )) ( ) ( ) 0 _ M I A A Q E D L L A Y -[[ ] M[ ] I[ ] A[ ] A[ ] Q[ ] L[ ] L[ ] A[ ] Y[ ]]

34 SW_align_simple max{ H[i-1,j-1]+Blosum62[E,Q]=6+2 = 8 max(h[i,k]-gapopen-(j-k)*gapext) = =11 max(h[i,k]-gapopen-(j-k)*gapext) = =-6 0 max(0,8,11,-6) = 11 _ M I A A Q E D L L A Y -[[ ] M[ ] I[ ] A[ ] A[ ] Q[ ] L[ ] L[ ] A[ ] Y[ ]]

35 SW_align_simple max{ H[i-1,j-1]+Blosum62[E,Q]=4-2 = 2 max(h[i,k]-gapopen-(j-k)*gapext) = =9 max(h[i,k]-gapopen-(j-k)*gapext) = =-8 0 max(0,2,9,-8) = 9 _ M I A A Q E D L L A Y -[[ ] M[ ] I[ ] A[ ] A[ ] Q[ ] L[ ] L[ ] A[ ] Y[ ]]

36 SW_align_simple max{ H[i-1,j-1]+Blosum62[E,Q]=4-2 = 2 max(h[i,k]-gapopen-(j-k)*gapext) = =9 max(h[i,k]-gapopen-(j-k)*gapext) = =-8 0 max(0,2,9,-8) = 9 _ M I A A Q E D L L A Y -[[ ] M[ ] I[ ] A[ ] A[ ] Q[ ] L[ ] L[ ] A[ ] Y[ ]]

37 SW_align_simple import numpy import copy import sys! def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version without traceback # Create matrices H, E, F dim1=len(s1)+1 dim2=len(s2)+1 H = numpy.zeros((dim1,dim2)) E = numpy.zeros(dim1) F = numpy.zeros(dim2) MaxScore, MaxI, MaxJ, RowStart, ColStart = 0, 0, 0, 0, 0

38 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version without traceback # Create matrices H, E, F dim1=len(s1)+1 dim2=len(s2)+1 H = numpy.zeros((dim1,dim2)) E = numpy.zeros(dim1) F = numpy.zeros(dim2) MaxScore, MaxI, MaxJ, RowStart, ColStart = 0, 0, 0, 0, 0! #Fill matrix H for i in range(1,dim1): for j in range(1,dim2): H[i,j] = SimMat[RevIndx[s1[i-1]],RevIndx[s2[j-1]]]!

39 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version without traceback # Create matrices H, E, F dim1=len(s1)+1 Słownik dim2=len(s2)+1 H = numpy.zeros((dim1,dim2)) odwołanie E = numpy.zeros(dim1) F = numpy.zeros(dim2) MaxScore, MaxI, MaxJ, RowStart, ColStart = 0, 0, 0, 0, 0!! #Fill matrix H for i in range(1,dim1): for j in range(1,dim2): H[i,j] = SimMat[RevIndx[s1[i-1]],RevIndx[s2[j-1]]]

40 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version without traceback # Create matrices H, E, F #Fill matrix H for i in range(1,dim1): for j in range(1,dim2): #compute E #compute F diag = H[i-1,j-1]+H[i,j] H[i,j]=max(0,E[i],F[j],diag) if H[i,j] > MaxScore: MaxScore = H[i,j] return(maxscore)

41 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version without traceback # Create matrices H, E, F #Fill matrix H for i in range(1,dim1): for j in range(1,dim2): #compute E #compute F diag = H[i-1,j-1]+H[i,j] H[i,j]=max(0,E[i],F[j],diag) if H[i,j] > MaxScore: MaxScore = H[i,j] return(maxscore) Konstrukcja pętli for z iteratorem

42 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): for i in range(1,dim1): for j in range(1,dim2): #compute E E[i], RowStart = 0, 0 for col in range(0,j): tmp = H[i,col]-GapOpen-(j-col)*GapExt if tmp > E[i]: E[i] = tmp #compute F F[j] = 0 for row in range(0,i): tmp = H[row,j] - GapOpen-(i-row)*GapExt if tmp > F[j]: F[j] = tmp return(maxscore)

43 SW_align_simple def SW_align_simple(s1,s2,SimMat,RevIndx,GapOpen,GapExt): for i in range(1,dim1): for j in range(1,dim2): #compute E E[i], RowStart = 0, 0 for col in range(0,j): tmp = H[i,col]-GapOpen-(j-col)*GapExt if tmp > E[i]: E[i] = tmp #compute F F[j] = 0 for row in range(0,i): tmp = H[row,j] - GapOpen-(i-row)*GapExt if tmp > F[j]: F[j] = tmp return(maxscore)

44 SW_align_trace def SW_align_trace(s1,s2,SimMat,RevIndx,GapOpen,GapExt): # Version with traceback # Create matrices H, E, F dim1=len(s1)+1 Lista dim2=len(s2)+1 H = numpy.zeros((dim1,dim2)) E = numpy.zeros(dim1) F = numpy.zeros(dim2) Htrace =[None]*dim1 for i in range(dim1): Htrace[i]=[None]*dim2 MaxScore, MaxI, MaxJ, RowStart, ColStart = 0, 0, 0, 0, 0! tworzenie wypełnianie

45 SW_align_trace def SW_align_trace(s1,s2,SimMat,RevIndx,GapOpen,GapExt): for i in range(1,dim1): for j in range(1,dim2): #compute E E[i], RowStart = 0, 0 for col in range(0,j): tmp = H[i,col]-GapOpen-(j-col)*GapExt if tmp > E[i]: E[i], RowStart = tmp, col #compute F F[j] = 0 for row in range(0,i): tmp = H[row,j] - GapOpen-(i-row)*GapExt if tmp > F[j]: F[j], ColStart = tmp, row!!

46 SW_align_trace def SW_align_trace(s1,s2,SimMat,RevIndx,GapOpen,GapExt): for i in range(1,dim1): for j in range(1,dim2): #compute E E[i], RowStart = 0, 0 #compute F #find max and identify from where we arrived diag = H[i-1,j-1]+H[i,j] H[i,j]=max(0,E[i],F[j],diag) if H[i,j] == 0: Htrace[i][j]=(0,0) elif H[i,j] == diag: Htrace[i][j]=(i-1,j-1) elif H[i,j] == E[i]: Htrace[i][j]=(i,RowStart) else: Htrace[i][j]=(ColStart,j) if H[i,j] > MaxScore: MaxScore, MaxI, MaxJ = H[i,j], i, j return([h,maxscore,maxi,maxj,htrace])

47 SW_align_trace def SW_align_trace(s1,s2,SimMat,RevIndx,GapOpen,GapExt): for i in range(1,dim1): for j in range(1,dim2): #compute E E[i], RowStart = 0, 0 #compute F #find max and identify from where we arrived diag = H[i-1,j-1]+H[i,j] H[i,j]=max(0,E[i],F[j],diag) if H[i,j] == 0: Htrace[i][j]=(0,0) elif H[i,j] == diag: Htrace[i][j]=(i-1,j-1) elif H[i,j] == E[i]: Htrace[i][j]=(i,RowStart) else: Htrace[i][j]=(ColStart,j) if H[i,j] > MaxScore: MaxScore, MaxI, MaxJ = H[i,j], i, j return([h,maxscore,maxi,maxj,htrace])

48 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): Size = len(s1)+len(s2) Align_index = [None]*Size CurrI, CurrJ = MaxI, MaxJ Align_index[0]=(MaxI,MaxJ) count = 0 CONT = True while CONT: Next = Htrace[CurrI][CurrJ] if Next == (CurrI,CurrJ): CONT=0 CurrI, CurrJ = Next[0],Next[1] count +=1 Align_index[count]=(CurrI,CurrJ) if CurrI == 0: CONT=False if CurrJ == 0: CONT=False # Trace back is ready - now we invert it # We return index for the forward alignment return(f_index)

49 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): Size = len(s1)+len(s2) Align_index = [None]*Size CurrI, CurrJ = MaxI, MaxJ Align_index[0]=(MaxI,MaxJ) count = 0 CONT = True while CONT: Next = Htrace[CurrI][CurrJ] if Next == (CurrI,CurrJ): CONT=0 CurrI, CurrJ = Next[0],Next[1] count +=1 Align_index[count]=(CurrI,CurrJ) if CurrI == 0: CONT=False if CurrJ == 0: CONT=False # Trace back is ready - now we invert it # We return index for the forward alignment return(f_index)

50 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): Size = len(s1)+len(s2) Align_index = [None]*Size CurrI, CurrJ = MaxI, MaxJ Align_index[0]=(MaxI,MaxJ) count = 0 CONT = True while CONT: Next = Htrace[CurrI][CurrJ] if Next == (CurrI,CurrJ): CONT=0 CurrI, CurrJ = Next[0],Next[1] count +=1 Align_index[count]=(CurrI,CurrJ) if CurrI == 0: CONT=False if CurrJ == 0: CONT=False # Trace back is ready - now we invert it # We return index for the forward alignment return(f_index) wielokrotne przypisanie

51 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): Size = len(s1)+len(s2) Align_index = [None]*Size CurrI, CurrJ = MaxI, MaxJ pętla Align_index[0]=(MaxI,MaxJ) while count = 0 CONT = True while CONT: Next = Htrace[CurrI][CurrJ] if Next == (CurrI,CurrJ): CONT=0 CurrI, CurrJ = Next[0],Next[1] count +=1 Align_index[count]=(CurrI,CurrJ) if CurrI == 0: CONT=False if CurrJ == 0: CONT=False # Trace back is ready - now we invert it # We return index for the forward alignment return(f_index)

52 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): Size = len(s1)+len(s2) Align_index = [None]*Size CurrI, CurrJ = MaxI, MaxJ Align_index[0]=(MaxI,MaxJ) count = 0 CONT = True while CONT: Next = Htrace[CurrI][CurrJ] if Next == (CurrI,CurrJ): CONT=0 CurrI, CurrJ = Next[0],Next[1] count +=1 Align_index[count]=(CurrI,CurrJ) if CurrI == 0: CONT=False if CurrJ == 0: CONT=False # Trace back is ready - now we invert it # We return index for the forward alignment return(f_index)

53 SW_align_trace def SW_build_traceback(H,MaxScore,MaxI,MaxJ,Htrace,s1,s2): while CONT: # Trace back is ready - now we invert it F_index = [None]*(count) for i in range(1,(count+1)) : tmp=align_index[count-i] F_index[i-1]=(tmp[0]-1,tmp[1]-1) # We return index for the forward alignment return(f_index)

54 SW_align_trace >>>print('',s1,'\n',s2) MIAAQLLAY MIAAQEDLLAY >>>SWar=SW_align_trace(s1,s11,BL62,RevIndx,10,1) >>>H=SWar[0] >>>print(h) [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]

55 SW_align_trace >>>Htrace=SWar[4] >>>for i in range(10): print(i,htrace[i]) 0 [None, None, None, None, None, None, None, None, None, None, None, None] 1 [None, (0, 0), (0, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 7), (0, 8), (0, 0), (0, 0)] 2 [None, (1, 0), (1, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (1, 7), (1, 8), (1, 9), (0, 0)] 3 [None, (0, 0), (0, 0), (2, 2), (2, 3), (3, 3), (0, 0), (0, 0), (0, 0), (2, 8), (2, 9), (0, 0)] 4 [None, (0, 0), (0, 0), (3, 2), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (3, 9), (3, 10)] 5 [None, (0, 0), (0, 0), (3, 3), (4, 4), (4, 4), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5)] 6 [None, (5, 0), (5, 1), (0, 0), (4, 4), (5, 5), (5, 5), (6, 6), (5, 7), (5, 8), (5, 9), (5, 10)] 7 [None, (6, 0), (6, 1), (6, 2), (4, 4), (5, 5), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (6, 10)] 8 [None, (0, 0), (7, 1), (7, 2), (7, 3), (5, 5), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 10)] 9 [None, (0, 0), (0, 0), (0, 0), (8, 3), (5, 5), (8, 5), (8, 6), (8, 7), (8, 8), (8, 10), (8, 10)]! >>>Ftrace=SW_build_traceback(SWar[0],SWar[1],SWar[2],SWar[3],SWar[4],s1,s2)! >>>print(ftrace) # values offset by -1 [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (4, 6), (5, 7), (6, 8), (7, 9), (8, 10)]

56 SW_align_trace 9 [None, (0, 0), (0, 0), (0, 0), (8, 3), (5, 5), (8, 5), (8, 6), (8, 7), (8, 8), (8, 10), (8, 10)]! >>>for i in range(10): print(i,htrace[i]) 0 [None, None, None, None, None, None, None, None, None, None, None, None] 1 [None, (0, 0), (0, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 7), (0, 8), (0, 0), (0, 0)] 2 [None, (1, 0), (1, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (1, 7), (1, 8), (1, 9), (0, 0)] 3 [None, (0, 0), (0, 0), (2, 2), (2, 3), (3, 3), (0, 0), (0, 0), (0, 0), (2, 8), (2, 9), (0, 0)] 4 [None, (0, 0), (0, 0), (3, 2), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (3, 9), (3, 10)] 5 [None, (0, 0), (0, 0), (3, 3), (4, 4), (4, 4), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5)] 6 [None, (5, 0), (5, 1), (0, 0), (4, 4), (5, 5), (5, 5), (6, 6), (5, 7), (5, 8), (5, 9), (5, 10)] 7 [None, (6, 0), (6, 1), (6, 2), (4, 4), (5, 5), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (6, 10)] 8 [None, (0, 0), (7, 1), (7, 2), (7, 3), (5, 5), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 10)] >>>print(h) [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]

57 SW_build_traceback 9 [None, (0, 0), (0, 0), (0, 0), (8, 3), (5, 5), (8, 5), (8, 6), (8, 7), (8, 8), (8, 10), (8, 10)]! >>>for i in range(10): print(i,htrace[i]) 0 [None, None, None, None, None, None, None, None, None, None, None, None] 1 [None, (0, 0), (0, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 7), (0, 8), (0, 0), (0, 0)] 2 [None, (1, 0), (1, 1), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (1, 7), (1, 8), (1, 9), (0, 0)] 3 [None, (0, 0), (0, 0), (2, 2), (2, 3), (3, 3), (0, 0), (0, 0), (0, 0), (2, 8), (2, 9), (0, 0)] 4 [None, (0, 0), (0, 0), (3, 2), (3, 3), (4, 4), (4, 4), (4, 4), (4, 4), (4, 4), (3, 9), (3, 10)] 5 [None, (0, 0), (0, 0), (3, 3), (4, 4), (4, 4), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5), (5, 5)] 6 [None, (5, 0), (5, 1), (0, 0), (4, 4), (5, 5), (5, 5), (6, 6), (5, 7), (5, 8), (5, 9), (5, 10)] 7 [None, (6, 0), (6, 1), (6, 2), (4, 4), (5, 5), (6, 5), (6, 6), (6, 7), (6, 8), (6, 9), (6, 10)] 8 [None, (0, 0), (7, 1), (7, 2), (7, 3), (5, 5), (7, 5), (7, 6), (7, 7), (7, 8), (7, 9), (8, 10)] >>>print(h) [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]! >>>Ftrace=SW_build_traceback(SWar[0],SWar[1],SWar[2],SWar[3],SWar[4],s1,s2)! >>>print(ftrace) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (4, 6), (5, 7), (6, 8), (7, 9), (8, 10)]

58 SW_build_alignment!! def SW_build_alignment(Ftrace,s1,s2): Len = len(ftrace) Align = [None]*(2*Len) s1_pos, s2_pos = Ftrace[0][0],Ftrace[0][1] s1_nxt, s2_nxt = 0,0 curr_indx = 0 nxt_indx = curr_indx+1 Align[0]=(s1[s1_pos],s2[s2_pos]) curr_align=0 while curr_indx < (Len-1): FinalAlign = [None]*(curr_align+1) Als1, Als2 = '', '' for i in range(curr_align+1): FinalAlign[i]=Align[i] Als1 = Als1 + Align[i][0] Als2 = Als2 + Align[i][1] return([finalalign,als1,als2])

59 def SW_build_alignment(Ftrace,s1,s2): while curr_indx < (Len-1): nxt_indx = curr_indx+1 s1_nxt = Ftrace[nxt_indx][0] s2_nxt = Ftrace[nxt_indx][1] if ( (s1_nxt == s1_pos+1) & (s2_nxt == s2_pos+1) ): #We go along diagonal elif (s1_nxt == s1_pos) : #break in sequence 1 (s1) elif (s2_nxt == s2_pos) : # break in sequence 2 (s2) else : #Error - we never should get here print(s1_pos,s1_t,s1_nxt,' :: ',s2_pos,s2_t,s2_nxt) print('alignment error, exiting\n') sys.exit(1) return([finalalign,als1,als2])

60 def SW_build_alignment(Ftrace,s1,s2): while curr_indx < (Len-1): nxt_indx = curr_indx+1 s1_nxt = Ftrace[nxt_indx][0] s2_nxt = Ftrace[nxt_indx][1] if ( (s1_nxt == s1_pos+1) & (s2_nxt == s2_pos+1) ): #We go along diagonal s1_pos,s2_pos = s1_nxt,s2_nxt curr_indx = nxt_indx curr_align +=1 Align[curr_align] = (s1[s1_pos],s2[s2_pos]) elif (s1_nxt == s1_pos) : #break in sequence 1 (s1) elif (s2_nxt == s2_pos) : # break in sequence 2 (s2) else : #Error - we never should get here return([finalalign,als1,als2])

61 def SW_build_alignment(Ftrace,s1,s2): while curr_indx < (Len-1): if ( (s1_nxt == s1_pos+1) & (s2_nxt == s2_pos+1) ): #We go along diagonal elif (s1_nxt == s1_pos) : #break in sequence 1 (s1) while s2_pos < s2_nxt: # we fill the gap with '-' signs s2_pos += 1 curr_align +=1 Align[curr_align] = ('-',s2[s2_pos]) # End of break curr_indx = nxt_indx elif (s2_nxt == s2_pos) : # break in sequence 2 (s2) else : #Error - we never should get here return([finalalign,als1,als2])

62 def SW_build_alignment(Ftrace,s1,s2): while curr_indx < (Len-1): if ( (s1_nxt == s1_pos+1) & (s2_nxt == s2_pos+1) ): #We go along diagonal elif (s1_nxt == s1_pos) : #break in sequence 1 (s1) elif (s2_nxt == s2_pos) : # break in sequence 2 (s2) while s1_pos< s1_nxt: # we fill the gap with '-' signs s1_pos += 1 curr_align +=1 Align[curr_align] = (s1[s1_pos],'-') # End of break curr_indx = nxt_indx! else : #Error - we never should get here return([finalalign,als1,als2])

63 SW_build_alignment! >>>print(h) [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]! >>>print(ftrace) [(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (4, 6), (5, 7), (6, 8), (7, 9), (8, 10)]! >>>SWal=SW_build_alignment(Ftrace,s1,s11) >>>print(swal[0]) [( M','M'),('I','I'),('A','A'),('A','A'),('Q','Q'),('-','E'),('-',D'), ( L,'L'),('L','L'),('A','A'),('Y','Y')]! >>>print('',swal[1],'\n',swal[2]) MIAAQ--LLAY MIAAQEDLLAY

64 Problem Zmodyfikuj funkcję SW_align_simple() aby zmienić złożoność obliczeniową z O(N*M*(N+M)) do O(N*M) Wskazówka: zauważ, że w wierszach i kolumnach odchodzących od diagonali wartości w miarę odchodzenia od diagonali spadają o wartość GapExt [[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]

65 Problem - cd Zmodyfikuj funkcję SW_align_simple() aby zmienić złożoność obliczeniową z O(N*M*(N+M)) do O(N*M) Wskazówka: zauważ, że w wierszach i kolumnach odchodzących od diagonali wartości w miarę odchodzenia od diagonali spadają o wartość GapExt Dla każdej komórki [i,j] zmienna E[i] (lub F[j]) może być uzyskana na dwa sposoby pomniejszenie o wartość GapExt wartości E[i] = E[i-1]-GapExt : F[j] = F[j-1]-GapExt rozpoczęcie nowej przerwy E[i] = H[i,j-1]-GapOpen F[j] = H[j,i-1]-GapOpen

66 Problem -cd Zamiast liczyć funkcję max() po wszystkich możliwych wartościach wystarczy dla każdej komórki sprawdzić dwie wartości E i dwie F (czyli wersja algorytmu wg. Osamu Gotoha) H [ i, j] = max H [ i 1, j 1]+ H i, j [ ] [ ] E i, j F i, j 0 [ ] E[ i, j] = max F[ i, j] = max E[ i, j 1] GapExt H [ i, j 1] GapOpen GapExt F[ i 1, j] GapExt H [ i 1, j] GapOpen GapExt

67 Problem -cd Zamiast liczyć funkcję max() po wszystkich możliwych wartościach wystarczy dla każdej komórki sprawdzić dwie wartości E i dwie F (czyli wersja algorytmu wg. Osamu Gotoha)! Trzeba jedynie zapamiętać wiersz ostatnich wartości F (dla E nie jest to konieczne - liczymy na bieżąco).! Dodatkowe uproszczenie W wersji bez śledzenia powrotu nie trzeba przechowywać macierzy kwadratowych - wartości H[] można obliczać na bieżąco.

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 4. 23 października 2015 Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Plan wykładu 1 2 Pliki tekstowe Trwałość obiektów CSV Strumienie Protokół iteracyjny Producent Umiem dostarczać

Bardziej szczegółowo

Dopasowywanie sekwencji (ang. sequence alignment) Metody dopasowywania sekwencji. Homologia a podobieństwo sekwencji. Rodzaje dopasowania

Dopasowywanie sekwencji (ang. sequence alignment) Metody dopasowywania sekwencji. Homologia a podobieństwo sekwencji. Rodzaje dopasowania Wprowadzenie do Informatyki Biomedycznej Wykład 2: Metody dopasowywania sekwencji Wydział Informatyki PB Dopasowywanie sekwencji (ang. sequence alignment) Dopasowywanie (przyrównywanie) sekwencji polega

Bardziej szczegółowo

Python. Wprowadzenie. Jolanta Bachan

Python. Wprowadzenie. Jolanta Bachan Python Wprowadzenie Jolanta Bachan Zainstaluj i przetestuj Pythona https://www.python.org/downloads/ print 'Hello world!' operatory numeryczne: + - * / // % ** operatory porównania: ==!= > < >=

Bardziej szczegółowo

Wykład 5 Dopasowywanie lokalne

Wykład 5 Dopasowywanie lokalne Wykład 5 Dopasowywanie lokalne Dopasowanie par (sekwencji) Dopasowanie globalne C A T W A L K C A T W A L K C O W A R D C X X O X W X A X R X D X Globalne dopasowanie Schemat punktowania (uproszczony)

Bardziej szczegółowo

Dopasowania par sekwencji DNA

Dopasowania par sekwencji DNA Dopasowania par sekwencji DNA Tworzenie uliniowień (dopasowań, tzw. alignmentów ) par sekwencji PSA Pairwise Sequence Alignment Dopasowania globalne i lokalne ACTACTAGATTACTTACGGATCAGGTACTTTAGAGGCTTGCAACCA

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI

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

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI WYKŁAD 4 DOPASOWANIE SEKWENCJI

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

Bardziej szczegółowo

Bioinformatyka. Ocena wiarygodności dopasowania sekwencji.

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

Bardziej szczegółowo

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS Program szkoleniowy Microsoft Excel VBA Poziom Podstawowy 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS 1. Nagrywanie makr Procedura nagrywania makra Nadanie odpowiedniej nazwy Przypisanie

Bardziej szczegółowo

Bioinformatyka. (wykład monograficzny) wykład 5. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM

Bioinformatyka. (wykład monograficzny) wykład 5. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM Bioinformatyka (wykład monograficzny) wykład 5. E. Banachowicz Zakład Biofizyki Molekularnej IF UM http://www.amu.edu.pl/~ewas lgorytmy macierze punktowe (DotPlot) programowanie dynamiczne metody heurystyczne

Bardziej szczegółowo

Wprowadzenie do Python

Wprowadzenie do Python Wprowadzenie do Python Marcin Orchel 1 Środowisko Python Zalecane korzystanie z dystrybucji Anaconda. W systemie linux może być już dostępny Python. Sprawdzenie wersji Pythona, python -V. Uruchomienie

Bardziej szczegółowo

Wykresy i interfejsy użytkownika

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

Bardziej szczegółowo

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy)

a) ile wynosiła populacja najbardziej i najmniej ludnego z województw (oraz jakie były ich nazwy) Spis treści 1 TI:WTBD/Ćwiczenia 14 1.1 Sprawdzian 2 - SQL. 1.1.1 Grupa 1 1.1.2 przykład rozwiązania dla zadania gr. 1 1.1.3 Grupa 2 1.1.4 przykład rozwiązania dla gr. 2 TI:WTBD/Ćwiczenia 14 Sprawdzian

Bardziej szczegółowo

Język Python. Język Python 1/35

Język Python. Język Python 1/35 Język Python Język Python 1/35 Język Python 2/35 Wstęp Uruchamianie interpretera python Skrypty wykonywalne #!/usr/bin/python #!/usr/bin/env python lub #!/usr/bin/python3 #!/usr/bin/env python3 chmod +x

Bardziej szczegółowo

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML

Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Kurs języka Python Wykład 8. Przetwarzanie tekstu Wyrażenia regularne Biblioteka urllib Parsowanie html'a XML Wyrażenia regularne c:\> dir *.exe $ rm *.tmp Wyrażenia regularne 'alamakota' '(hop!)*' { '',

Bardziej szczegółowo

Przyrównywanie sekwencji

Przyrównywanie sekwencji Instytut Informatyki i Matematyki Komputerowej UJ, opracowanie: mgr Ewa Matczyńska, dr Jacek Śmietański Przyrównywanie sekwencji 1. Porównywanie sekwencji wprowadzenie Sekwencje porównujemy po to, aby

Bardziej szczegółowo

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Podstawy programowania w języku Visual Basic dla Aplikacji (VBA) Instrukcje Język Basic został stworzony w 1964 roku przez J.G. Kemeny ego i T.F. Kurtza z Uniwersytetu w Darthmouth (USA). Nazwa Basic jest

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

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 3 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Wartości boolowskie

Bardziej szczegółowo

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski Podstawy Pythona Krzysztof Gdawiec Instytut Informatyki Uniwersytet Śląski Słownik jest typem mutowalnym. Każdy element to para: klucz wartość. W celu stworzenia słownika pary klucz wartość umieszczamy

Bardziej szczegółowo

rozdział 4: ZMIENNE I INSTRUKCJE

rozdział 4: ZMIENNE I INSTRUKCJE rozdział 4: ZMIENNE I INSTRUKCJE ostatnia modyfikacja: 04.12.18 definicja: zmienna to nazwany kontener służący do przechowywania danych na razie skupimy się na zmiennych przechowujących dane liczbowe i

Bardziej szczegółowo

Listy, krotki, słowniki, funkcje

Listy, krotki, słowniki, funkcje Listy, krotki, słowniki, funkcje Listy Lista jest najbardziej elastycznym typem obiektu uporządkowanej kolekcji. Może zawierać różne typy danych - liczby, łańcuchy znaków, a nawet inne listy. Tworzy się

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 6 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 21 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

System operacyjny Linux

System operacyjny Linux Paweł Rajba pawel.rajba@continet.pl http://kursy24.eu/ Zawartość modułu 6 Język bash Pierwszy skrypt Rozwinięcia parametryczne Bloki instrukcji Dwa przydatne polecenia Tablice Sprawdzanie warunków Instrukcje

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 2. 13 października 2017 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Plan wykładu Klasy i obiekty 1 Klasy i obiekty 2 3 4 Deklaracja klasy Klasy i obiekty Przykłady class Figura: Pierwsza

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 1. 6 października 2017 Plan wykładu 1 2 3 4 Plan wykładu 1 2 3 4 Wykładowca: Termin wykładu: piątek, 10:15 12:00, sala 119 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/python Materiały

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych 4. Łódź 2018 Suma szeregu harmonicznego - Wpisz kod programu w oknie edycyjnym - Zapisz kod w pliku harmonic.py - Uruchom skrypt (In[1]: run harmonic.py) - Ten program wykorzystuje

Bardziej szczegółowo

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW http://metodycy.torun.pl/ m.informatyka@metodycy.torun.pl 1. Wprowadzenie do Pythona podstawowe informacje Python to język programowania wysokiego poziomu,

Bardziej szczegółowo

Przyrównanie sekwencji. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Przyrównanie sekwencji. Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Przyrównanie sekwencji Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu Sequence alignment - przyrównanie sekwencji Poszukiwanie ciągów znaków (zasad nukleotydowych lub reszt aminokwasowych),

Bardziej szczegółowo

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne Materiały dostępne są na stronie: Materiały Technologie baz danych aragorn.pb.bialystok.pl/~gkret Wykład 5: Kursory jawne. Podprogramy. Małgorzata Krętowska Wydział Informatyki Politechnika Białostocka

Bardziej szczegółowo

Dopasowanie sekwencji Sequence alignment. Bioinformatyka, wykłady 3 i 4 (19, 26.X.2010)

Dopasowanie sekwencji Sequence alignment. Bioinformatyka, wykłady 3 i 4 (19, 26.X.2010) Dopasowanie sekwencji Sequence alignment Bioinformatyka, wykłady 3 i 4 (19, 26.X.2010) krzysztof_pawlowski@sggw.pl terminologia alignment 33000 dopasowanie sekwencji 119 uliniowienie sekwencji 82 uliniowianie

Bardziej szczegółowo

PRZYRÓWNANIE SEKWENCJI

PRZYRÓWNANIE SEKWENCJI http://theta.edu.pl/ Podstawy Bioinformatyki III PRZYRÓWNANIE SEKWENCJI 1 Sequence alignment - przyrównanie sekwencji Poszukiwanie ciągów znaków (zasad nukleotydowych lub reszt aminokwasowych), które posiadają

Bardziej szczegółowo

Politechnika Wrocławska. Dopasowywanie sekwencji Sequence alignment

Politechnika Wrocławska. Dopasowywanie sekwencji Sequence alignment Dopasowywanie sekwencji Sequence alignment Drzewo filogenetyczne Kserokopiarka zadanie: skopiować 300 stron. Co może pójść źle? 2x ta sama strona Opuszczona strona Nadmiarowa pusta strona Strona do góry

Bardziej szczegółowo

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie Operacje na plikach Otwarcie i zamknięcie pliku: fh = open('plik', 'r') Atrybuty: 'r' odczyt 'w' zapis 'a' dopisanie 'r+'

Bardziej szczegółowo

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP

Dzi kuj za uwag! Spotkania z Pythonem. Cz ± 1 - podstawy - rozwi zania zada« Michaª Alichniewicz. Gda«sk 2014. Studenckie Koªo Automatyków SKALP Spotkania z Pythonem Cz ± 1 - podstawy - rozwi zania zada«michaª Alichniewicz Studenckie Koªo Automatyków SKALP Gda«sk 2014 Dzi kuj za uwag! Na licencji Creative Commons Attribution-NonCommercial-ShareAlike

Bardziej szczegółowo

Podstawy Programowania C++

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

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 2 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 października 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Dopasowanie sekwencji Sequence alignment. Bioinformatyka, wykłady 3 i 4 (16, 23.X.2012)

Dopasowanie sekwencji Sequence alignment. Bioinformatyka, wykłady 3 i 4 (16, 23.X.2012) Dopasowanie sekwencji Sequence alignment Bioinformatyka, wykłady 3 i 4 (16, 23.X.2012) krzysztof_pawlowski@sggw.pl terminologia alignment 33000 dopasowanie sekwencji 119 uliniowienie sekwencji 82 uliniowianie

Bardziej szczegółowo

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach: Skrypty powłoki Skrypty są zwykłymi plikami tekstowymi, w których są zapisane polecenia zrozumiałe dla powłoki. Zadaniem powłoki jest przetłumaczenie ich na polecenia systemu. Aby przygotować skrypt, należy:

Bardziej szczegółowo

Oracle PL/SQL. Paweł Rajba.

Oracle PL/SQL. Paweł Rajba. Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?

Bardziej szczegółowo

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa.

Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa. Przedmiot: Informatyka w inżynierii produkcji Forma: Laboratorium Temat: Zadanie 4. Instrukcja warunkowa. Celem ćwiczenia jest nabycie umiejętności wykorzystania w praktyce instrukcji warunkowych programowania

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Rekurencja, metoda dziel i zwyciężaj Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk(Wydział Fizyki) WP w. VIII Jesień 2014 1 / 27 Rekurencja Recursion See Recursion. P. Daniluk(Wydział

Bardziej szczegółowo

Pakiety Matematyczne - R Zestaw 2.

Pakiety Matematyczne - R Zestaw 2. Pakiety Matematyczne - R Zestaw 2. Część przykładów pochodzi z helpa do R i z książki: R.Biecek, Przewodnik po pakiecie R, GIS 2014, strona www: http://www.biecek.pl, Instrukcje warunkowe Składnia instrukcji

Bardziej szczegółowo

Bloki anonimowe w PL/SQL

Bloki anonimowe w PL/SQL Język PL/SQL PL/SQL to specjalny język proceduralny stosowany w bazach danych Oracle. Język ten stanowi rozszerzenie SQL o szereg instrukcji, znanych w proceduralnych językach programowania. Umożliwia

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

do MATLABa programowanie WYKŁAD Piotr Ciskowski

do MATLABa programowanie WYKŁAD Piotr Ciskowski Wprowadzenie do MATLABa programowanie WYKŁAD Piotr Ciskowski instrukcje sterujące instrukcja warunkowa: if instrukcja wyboru: switch instrukcje iteracyjne: for, while instrukcje przerwania: continue, break,

Bardziej szczegółowo

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK.

Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK. Aktywacja zakładki Developer. Plik->Opcje->Zakladka Główne->Dostosuj Wstążkę Zaznaczamy kwadracik Developer na liscie po prawej stronie. Klikamy OK. Rejestracja makr. Klikamy Zakladke Developer. Klikamy

Bardziej szczegółowo

Podstawy programowania w Pythonie

Podstawy programowania w Pythonie Podstawy programowania w Pythonie Wykład 5 dr Andrzej Zbrzezny Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 7 listopada 2012 dr Andrzej Zbrzezny (IMI AJD) Podstawy programowania

Bardziej szczegółowo

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana)

Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Wstęp do Informatyki i Programowania (kierunek matematyka stosowana) Jacek Cichoń Przemysław Kobylański Instytut Matematyki i Informatyki Politechnika Wrocławska Na podstawie: M.Summerfield.Python 3. Kompletne

Bardziej szczegółowo

Dopasowanie par sekwencji

Dopasowanie par sekwencji BIOINFORMTYK edycja 2016 / 2017 wykład 3 Dopasowanie par sekwencji dr Jacek Śmietański jacek.smietanski@ii.uj.edu.pl http://jaceksmietanski.net Plan wykładu 1. Idea i cele dopasowania sekwencji 2. Definicje

Bardziej szczegółowo

SQL 4 Structured Query Lenguage

SQL 4 Structured Query Lenguage Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...

Bardziej szczegółowo

PODSTAWY BIOINFORMATYKI 8 DOPASOWYWANIE SEKWENCJI AMINOKWASÓW

PODSTAWY BIOINFORMATYKI 8 DOPASOWYWANIE SEKWENCJI AMINOKWASÓW PODSTAWY BIOINFORMATYKI 8 DOPASOWYWANIE SEKWENCJI AMINOKWASÓW DOPASOWYWANIE SEKWENCJI 1. Miary podobieństwa sekwencji aminokwasów 2. Zastosowanie programów: CLUSTAL OMEGA BLAST Copyright 2013, Joanna Szyda

Bardziej szczegółowo

Kurs rozszerzony języka Python

Kurs rozszerzony języka Python Wykład 3. 20 października 2017 Plan wykładu 1 2 Rodzaje kolekcji Przetwarzanie kolekcji 3 4 5 i funkcje Efektywność list Koniec Plan wykładu 1 2 Rodzaje kolekcji Przetwarzanie kolekcji 3 4 5 i funkcje

Bardziej szczegółowo

Podstawowe I/O Liczby

Podstawowe I/O Liczby Podstawowe I/O Liczby Informatyka Jolanta Bachan Implementacja algorytmów, cd. I/O: Keyboard in, screen out, no loops Jolanta Bachan 2 Implementacja algorytmów, cd. I/O: Keyboard in, screen out, no loops

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 4 Piotr Błaszyński Wydział Inmatyki Zachodniopomorskiego Uniwersytetu Technologicznego 16 lutego 2018 i zawieranie się, gromadzenie elementów nowa klasa powstaje przez użycie obiektów klas już istniejących,

Bardziej szczegółowo

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce!

(kod ten służy wprowadzeniu definicji mediany, nie jest to optymalna ani nawet szczególnie dobra implementacja obliczania mediany w praktyce! Spis treści 1 TI:WTBD/Kolokwium Poprawkowe 1.1 zadanie 1 1.1.1 1.2 zadanie 2 1.2.1 1.3 zadanie 3 1.3.1 TI:WTBD/Kolokwium Poprawkowe zadanie 1 Medianę sekwencji liczb można zdefiniować za pomocą następującego

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

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

Bardziej szczegółowo

Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Cheatsheet PL/SQL Andrzej Klusiewicz  1/9 Declare y integer; z varchar2(50); d date; null; Declare x integer:=10; null; x integer; x:=10; dbms_output.put_line('hello world'); for x in 1..10 loop Deklaracja 4 zmiennych. Jednej typu rzeczywistego,

Bardziej szczegółowo

Zaawansowane bazy danych i hurtownie danych semestr I

Zaawansowane bazy danych i hurtownie danych semestr I Podprogramy Wydział Informatyki Politechnika Białostocka Zaawansowane bazy danych i hurtownie danych semestr I Procedury do przeprowadzenia akcji Funkcje do obliczania wartości Pakiety do zbierania logicznie

Bardziej szczegółowo

Bioinformatyka Laboratorium, 30h. Michał Bereta

Bioinformatyka Laboratorium, 30h. Michał Bereta Bioinformatyka Laboratorium, 30h Michał Bereta mbereta@pk.edu.pl www.michalbereta.pl 1 Wyszukiwanie sekwencji Jak wyszukad z baz danych bioinformatycznych sekwencje podobne do sekwencji zadanej (ang. query

Bardziej szczegółowo

Programowanie robota mobilnego E-puck w języku Python

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

Bardziej szczegółowo

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

Dokowanie molekularne. Andrzej Bąk

Dokowanie molekularne. Andrzej Bąk Dokowanie molekularne Andrzej Bąk Import bibliotek sys, pybel, openbabel oraz gzip niezbędnych do wykonania ćwiczenia. import sys sys.path.append('/usr/lib/pymodules /python2.6') try: import sys import

Bardziej szczegółowo

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python.

Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python. Technologie Informacyjne Mechatronika 2012/2013 Błędy obliczeń. Python. 1. Cel laboratorium Celem laboratorium jest znalezienie przez studentów przykładów błędów popełnianych przez komputery podczas prostych

Bardziej szczegółowo

Język Python (2) Język Python (2) 1/36

Język Python (2) Język Python (2) 1/36 Język Python (2) Język Python (2) 1/36 Język Python (2) 2/36 Podstawy funkcji Pojęcia podstawowe Instrukcja def tworzy obiekt funkcji i przypisuje go do nazwy Instrukcja return przekazuje obiekt wynikowy

Bardziej szczegółowo

Wykład 10 2008-04-30. Bioinformatyka. Wykład 9. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM

Wykład 10 2008-04-30. Bioinformatyka. Wykład 9. E. Banachowicz. Zakład Biofizyki Molekularnej IF UAM Bioinformatyka Wykład 9 E. Banachowicz Zakład Biofizyki Molekularnej IF UAM http://www.amu.edu.pl/~ewas 1 Konsekwencje zestawieo wielu sekwencji - rodziny białkowe, domeny, motywy i wzorce 2 Bioinformatyka,

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby Wykład 1 Marcin Młotkowski 3 października 2012 Plan wykładu Sprawy organizacyjne Wykład Źródła wiedzy Zaliczenia O języku Historia i pochodzenie języka O języku Instrukcje złożone

Bardziej szczegółowo

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej. Wrocław, 28.11.2017 Wstęp do informatyki i programowania: liczby pierwsze Wydział Matematyki Politechniki Wrocławskiej Andrzej Giniewicz Dzisiaj na zajęciach... Zajmiemy się liczbami pierwszymi... liczby

Bardziej szczegółowo

2.8. Algorytmy, schematy, programy

2.8. Algorytmy, schematy, programy https://app.wsipnet.pl/podreczniki/strona/38766 2.8. Algorytmy, schematy, programy DOWIESZ SIĘ co oznaczają pojęcia: algorytm, schemat blokowy, język programowania, jakie są sposoby obliczania największego

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 5. 30 października 2013 Plan wykładu 1 2 3 4 yield from Zamiast Example for item in iterable: yield item: można pisać Example yield from iterable Plan wykładu 1 2 3 4 Przykłady wyrażeń regularnych

Bardziej szczegółowo

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach. Nazwa implementacji: Gra w życie Autor: Piotr Fiorek Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach. Zaprojektuj prostą grę, której celem

Bardziej szczegółowo

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku

Bardziej szczegółowo

Kurs języka Python. Wykład 5. Marcin Młotkowski. 9 listopada Rodzaje parametrów funkcji. 2 Biblioteka Tk. 3 Układanie kontrolek w oknie

Kurs języka Python. Wykład 5. Marcin Młotkowski. 9 listopada Rodzaje parametrów funkcji. 2 Biblioteka Tk. 3 Układanie kontrolek w oknie Wykład 5. 9 listopada 2009 1 Rodzaje parametrów funkcji 2 3 4 Parametry domyślne Wartość domyślna parametrów def log(val, base=2.718281):... def foo(arg1=[], arg2="dwa", arg3=3): print log(34, 10), log(12)

Bardziej szczegółowo

Pytania dla języka Python

Pytania dla języka Python XIV OIJ, zawody I stopnia, tura testowa 16 września 2019 1 stycznia 2020 Poniżej znajdują się pytania testowe z zawodów I stopnia XIV Olimpiady Informatycznej Juniorów () na teście wiedzy (do rozwiązania

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Funkcje Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. V Jesień 2013 1 / 32 Funkcje Funkcje w matematyce f : D W D dziedzina W zbiór wartości Funkcja może

Bardziej szczegółowo

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux Administracja sieciowymi systemami operacyjnymi III Klasa - Linux SKRYPTY POWŁOKI mgr inż. Tomasz Borowiec SKRYPTY POWŁOKI - PODSTAWY W Linuksie skrypt jest plikiem tekstowym zawierającym polecenia systemowe

Bardziej szczegółowo

Programowanie w Scilab

Programowanie w Scilab 5 styczeń, 2006 Programowanie w Scilab Slajd 1 Programowanie w Scilab 5 styczeń, 2006 Programowanie w Scilab Slajd 2 Plan zajęć Wprowadzenie -operatory porównawcze: Pętle Przerywanie pętli Warunki Definiowanie

Bardziej szczegółowo

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną. Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną. Tomasz Chwiej 9 sierpnia 18 1 Wstęp 1.1 Dyskretyzacja n y V V 1 V 3 1 j= i= 1 V 4 n x Rysunek 1: Geometria układu i schemat siatki obliczeniowej

Bardziej szczegółowo

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe. 1. Wektory i macierze: a. Przykład

Bardziej szczegółowo

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH Michał Bujacz bujaczm@p.lodz.pl B9 Lodex 207 godziny przyjęć: środy i czwartki 10:00-11:00 http://www.eletel.p.lodz.pl/bujacz/ 1 Pytania weryfikacyjne:

Bardziej szczegółowo

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania).

Funkcje są prawdopodobnie najważniejszą częścią każdego poważnego programu (w każdym języku programowania). Funkcje w Pythonie Funkcje to części programu wielokrotnego użytku. Pozwalają nam nadad nazwę blokowi wyrażeo, a następnie uruchamiad ten blok używając tej nazwy gdziekolwiek w programie, dowolną ilośd

Bardziej szczegółowo

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki Informatyka I Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Operacje relacji (porównania) A

Bardziej szczegółowo

Operacje na wektorach i macierzach.

Operacje na wektorach i macierzach. (C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz Operacje na wektorach i macierzach. Ponieważ wymiary wektorów i macierzy w MathCADzie są w pełni dynamiczne często zachodzi potrzeba ich ustalenia np. przy

Bardziej szczegółowo

Programowanie w Ruby

Programowanie w Ruby Programowanie w Ruby 1 Marcin Młotkowski 8 października 2018 Plan wykładu 1 2 Źródła wiedzy Zaliczenia 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 432 Informacje organizacyjne Strona wykładu http://www.ii.uni.wroc.pl/~marcinm/dyd/ruby/

Bardziej szczegółowo

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std; Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu

Bardziej szczegółowo

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty Zadanie Zawijasy LOGIA 18 (2017/18), etap 2 Treść zadania Tablica Polibiusza jest kwadratową tabelą zawierającą litery alfabetu łacińskiego. Kolumny numerujemy od 0 do 4, a wiersze od 1 do 5. Kodujemy

Bardziej szczegółowo

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY. Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY SZKOLENIE JEST DLA OSÓB, KTÓRE: nigdy wcześniej nie programowały lub nie miały styczności z programowaniem od dłuższego czasu,

Bardziej szczegółowo

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Lekcja 3: Pierwsze kroki z Pythonem. Pętle #SuperKoderzy www.superkoderzy.pl Mikrobitowcy Autorzy: Filip Kłębczyk Lekcja 3: Pierwsze kroki z Pythonem. Pętle Podczas lekcji uczniowie zapoznają się z dwoma rodzajami pętli - for i while - analizując

Bardziej szczegółowo

Języki i metody programowania

Języki i metody programowania Języki i metody programowania Wykład 4 dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie hab. Andrzeja Zbrzezngo Podstawy języka Python

Bardziej szczegółowo

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy

Bardziej szczegółowo

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Wstęp do informatyki Ćwiczenia. Piotr Fulmański Wstęp do informatyki Ćwiczenia Piotr Fulmański Piotr Fulmański 1 e-mail 1: fulmanp@math.uni.lodz.pl Wydział Matematyki i Informatyki, Uniwersytet Łódzki Banacha 22, 90-238, Łódź Polska Data ostaniej modyfikacji:

Bardziej szczegółowo

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36

Wstęp do Pythona. Janusz Szwabiński. Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36 Wstęp do Pythona Janusz Szwabiński szwabin@ift.uni.wroc.pl Python w obliczeniach numerycznych (C) 2005 Janusz Szwabiński p.1/36 Wstęp do Pythona Zasoby w sieci Python jako zaawansowany kalkulator Pierwszy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

MATLAB Z3. Rafał Woźniak. Warsaw, Faculty of Economic Sciences, University of Warsaw

MATLAB Z3. Rafał Woźniak. Warsaw, Faculty of Economic Sciences, University of Warsaw Faculty of Economic Sciences, University of Warsaw Warsaw, 09-03-2017 Generowanie liczb losowych rand(1) rand(1) generuje liczbę losową z przedziału (0,1) Jak można uzyskać liczby losowe z przedziału 1

Bardziej szczegółowo