Professional Documents
Culture Documents
Biologia Computacional
Introduo
Programao em
Python aplicada
Bioinformtica
Paulo J. Martel
2015
mestradocbm1415@gmail.com
Biologia Computacional
4/15/2015
O que o Python ?
Biologia Computacional
4/15/2015
Extensibilidade
Python
MMTK
matplotlib
Biologia Computacional
Scipy
...
4/15/2015
Numpy
Biopython
Legibilidade
Cdigo em Java:
public class Hello
{
public static void main(String[] args) {
System.out.printf(Hello World!);
Biologia Computacional
4/15/2015
Cdigo em Python:
}
}
5
Biologia Computacional
4/15/2015
Porqu programar?
Procedure:
Incubate the reactions at 37 C for one hour
Add 2.5 uL loading dye and incubate another 15 min
Load 20 uL of the digestion mixture onto a minigel
Biologia Computacional
Materials:
5.0 L Lambda DNA
2.5 L 10x Buffer
16.5L H20
1.0 L EcoRI
4/15/2015
Biologia Computacional
4/15/2015
Conceitos fundamentais
Variveis
Declarao de variveis
Estruturas de controle
if, if else, for, while
Biologia Computacional
aritmtica em Python
4/15/2015
O interpretador de Python
Biologia Computacional
4/15/2015
O interpretador de Python
10
Estruturados:
Strings (ATGCCCAATTG)
Ordenados (sequenciais)
Listas ([ 1 ,5 , 0.2, A, xxx ])
Tuplas ( (1, 2, 3) )
Conjuntos ( set([A,T,G,C]) )
No
Dicionrios ( { A : Ala, V : Val, I : Ile, L : Leu} ) Ordenados
Biologia Computacional
4/15/2015
Numricos:
11
Descrio
Soma
Subtraco
Multiplicao
Diviso
**
Exponenciao
Biologia Computacional
Smbolo
4/15/2015
Operaes numricas
12
>>> 10.0/4
Notar a diferena entre diviso inteira e real!
>>> 2.345**300
1.1037078090771378e+111
Comparar:
>>> 15.0**400
>>> 15**400
Biologia Computacional
>>> 12323*3242
39951166
>>> 10**20
10000000000L
>>> 2147483647+1
2147483648L
>>> 10/4
4/15/2015
Exemplos
13
>>> EcoRI = 1
1
>>> print ecoRI
Traceback (most recent call last):
File "<pyshell#334>", line 1, in <module>
print ecori
NameError: name 'ecori' is not defined
Biologia Computacional
4/15/2015
Variveis
14
Variveis
Biologia Computacional
>>> Ala+ = 10
SyntaxError: invalid syntax
>>> new_seq = 'ATTTGGC'
>>> Ala = 10
>>> Ala+new_seq
Traceback (most recent call last):
File "<pyshell#345>", line 1, in <module>
new_seq+Ala
TypeError: cannot concatenate 'str' and 'int' objects
>>> str(Ala)+new_seq
'10ATTTGGC'
4/15/2015
>>> 1aa = 12
SyntaxError: invalid syntax
15
Strings
Biologia Computacional
>>> seq1='ATGGGCA'
>>> seq2='AATTAAAT'
>>> seq1 + seq2
'ATGGGCAAATTAAAT'
>>> poly_alanine='A'*100
>>> len(poly_alanine)
100
>>> poly_alanine
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
>>> seq1[0]
'A'
>>> seq1[3:6]
'GGC'
4/15/2015
16
Descrio
x in s
True se x pertence a s
x not in s
True se x no pertencer a s
s+t
Concatenao
s*n
Produz n repeties de s
s[i]
i-simo elemento de s
s[i:j]
Slice: elementos de i a j
s[i:j:k]
len(s)
Comprimento de s
min(s)
Menor elemento de s*
max(s)
Maior elemento de s*
Biologia Computacional
Operao
4/15/2015
Strings (operations)
17
* Implica a existncia de uma relao de ordem entre os elementos de s
Biologia Computacional
>>> seq1
'ATGGGCA'
>>> 'A' in seq1
True
>>> 'X' in seq1
False
>>> len(seq1)
7
>>> min(seq1)
'A'
>>> max(seq1)
'T'
>>> seq1*3
'ATGGGCAATGGGCAATGGGCA'
4/15/2015
Strings (operations)
18
Descrio
str.capitalize()
str.count(s)
str.index(s,[start, [end]])
Retorna a posio de s
str.replace(s,r)
Subsitui s por r
str.split(sep)
str.lower()
str.strip()
str.isalpha()
str.upper()
Biologia Computacional
Mtodo
4/15/2015
Strings (methods)
19
Biologia Computacional
4/15/2015
Strings (methods)
20
>>>
>>>
>>>
[1,
>>>
3
>>>
>>>
[1,
>>>
[1,
my_list = [1,2,3,4]
other_list = ['A','T','G','C']
my_list+other_list
2, 3, 4, 'A', 'T', 'G', 'C']
my_list[2]
my_list[2]=100
# as listas so mutveis!
my_list
2, 100, 4]
my_list[2]= other_list
# qual ser o resultado ?
2, ['A', 'T', 'G', 'C'], 4]
Biologia Computacional
4/15/2015
Listas
21
Descrio
l.append(x)
l.count(x)
l.index(x)
Retorna a posio de x em l
l.insert(index,x)
l.remove(x)
l.reverse(x)
l.sort(x)
l.pop(i)
Biologia Computacional
Operao
4/15/2015
Operaes em listas
22
Exemplo:
>>> aa_code = {'A':'Ala', 'G':'Gly', 'V':'Val', 'L':'Leu'}
>>> print "The code for amino %s is %s" % ('A', aa_code['A'])
The code for amino A is Ala
>>> aa_code['V']
'Val'
>>> aa_code['W'] = 'Trp'
>>> aa_code.keys()
['A', 'W', 'L', 'G', 'V']
>>> aa_code.values()
['Ala', Trp', 'Leu', 'Gly', 'Val']
Biologia Computacional
4/15/2015
Dicionrios
23
Descrio
len(a)
Nmero de elementos em a
a[k]
a[k] = v
del a[k]
a.clear()
Limpa o dicionrio a
k in a
k not in a
a.items()
a.keys()
Lista de keys de a
a.values()
Lista de valore de a
a.get(k[,x])
a.pop(k[,x])
Biologia Computacional
Mtodo
4/15/2015
Dicionrios (operaes)
24
Input / Output
Problema:
>>> n = raw_input("Introduza um nmero: ")
Introduza um nmero: 5
>>> print "o quadrado do nmero introduzido ", n*n
o quadrado do nmero introduzido
Traceback (most recent call last):
File "<pyshell#507>", line 1, in <module>
print "o quadrado do nmero introduzido ", n*n
TypeError: can't multiply sequence by non-int of type 'str'
Biologia Computacional
4/15/2015
25
Input / Output
Biologia Computacional
4/15/2015
26
Input / Output
>>> x=55.23456
>>> print O valor de x %5.2f % x
O valor de x 55.23
>>> print O valor de x %08.3f % x
O valor de x 0055.235
VARIVEIS
Biologia Computacional
4/15/2015
27
Descrio
%nd
%ns
%n.mf
%n.mg
%n.me
Float
%nx
%no
%nc
%%
Produz um um nico %
Biologia Computacional
Mtodo
4/15/2015
Formatos
28
Biologia Computacional
4/15/2015
Exerccios
29
dna_seq = "ATTAGGGATTTAAATTGAATCFGGCGCCCAGGGGGCCCAAT"
g_count = dna_seq.count('G')
c_count = dna_seq.count('C')
length = len(dna_seq)
Biologia Computacional
4/15/2015
dna_seq = ATTGGGAAAAACCCGTCTTACGGG
rna_seq = dna_seq.replace('T','U')
print "A sequncia traduzida : ", rna_seq
30
Descrio
a<b
a <= b
a>b
a >= b
a == b
a != b ou a <> b
not a
a or b
a and b
Biologia Computacional
Expresso
4/15/2015
Expresses booleanas
31
Biologia Computacional
>>> 1 > 2
False
>>> not 1 > 2
True
N.B. : no confundir estas duas situaes no
>>> a = 2
primeiro caso temos uma atribuio de valor a
>>> a == 2
uma varivel, no segundo um teste lgico de
igualdade
True
>>> (a>0) and (a<3)
True
>>> (a>0) or (a<-100) #Qual ser o resultado ?
True
4/15/2015
Expresses booleanas
32
Biologia Computacional
4/15/2015
Estruturas de controle
33
Biologia Computacional
4/15/2015
34
Biologia Computacional
>>>
[0,
>>>
[3,
4/15/2015
35
Exerccio
Biologia Computacional
4/15/2015
36
>>> a=2
>>> if a > 1:
print " maior que 1"
else:
print "no maior que 1"
maior que 1
>>>
Biologia Computacional
if EXPRESSION:
Block1
else:
Block2
Exemplo:
4/15/2015
37
Biologia Computacional
if EXPRESSION:
Block1
elif EXPRESSION2:
Block2
elif EXPRESSION3:
Block3
else:
Block4
4/15/2015
38
Biologia Computacional
4/15/2015
Exemplo:
39
Exerccio:
Biologia Computacional
4/15/2015
40
Exemplo:
>>> a=10
>>> while a < 40:
a = a + 10
10
20
30
Biologia Computacional
4/15/2015
41
Exerccio
Biologia Computacional
http://pastebin.com/fkLm3dve
4/15/2015
42
Funes
Exemplo:
>>> def mul(n):
"""Multiplica um nmero por 10"""
return n*10
Biologia Computacional
4/15/2015
>>> mul(3)
30
>>> help(mul)
43
Exerccio:
Biologia Computacional
4/15/2015
44
Exerccio:
Biologia Computacional
4/15/2015
45
l n bytes do ficheiro
l uma linha do ficheiro
l as linhas do ficheiro para uma lista
escreve o string no ficheiro
vai para a posio n do ficheiro
fecha o ficheiro
Biologia Computacional
A leitura e escrita de ficheiros pode ser feita com a funo open, cuja forma
geral
filehandle = open(filename,mode)
4/15/2015
Leitura/Escrita de Ficheiros
46
Leitura/Escrita de Ficheiros
Biologia Computacional
>>> fh = open(file.txt,r)
>>> fh.readlines()
['This is the first line\n', 'This is the second line\n', 'This
is the third line\n', '123\n', '456\n', 'This is the last
line\n']
>>> fh.readlines()
[]
>>> fh.seek(0)
# volta ao incio do ficheiro
>>> fh.readline()
'This is the first line\n
>>> fh.readline()
'This is the second line\n
>>> fh.readline()
'This is the third line\n'
4/15/2015
Exemplo:
47
Exerccio
Biologia Computacional
4/15/2015
48
Biologia Computacional
4/15/2015
Classes
49
Classes
Biologia Computacional
class Nome([parent_class]):
Descrio opcional da classe
variable1 =
variable2 =
def __init__(self, var1, var2, ):
self.attribute1 = .
self.attribute2 = .
def method1(self,var1,var2,.):
def method2(self,var1,var2,.):
4/15/2015
50
Classes
Biologia Computacional
class Rectangle(object):
"""
This class defines rectangles.
"""
4/15/2015
Exemplo simples:
def area(self):
return self.a*self.b
def perimeter(self):
return 2*(self.a+self.b)
51
Classes
Biologia Computacional
class Sequence:
TranscriptionTable = {"A":"U","T":"A","C":"G","G":"C"}
4/15/2015
52
Exemplo:
>>> import math
>>> math.pi
3.141592653589793
>>> math.sin(0.2)
0.19866933079506122
>>> math.asin(0.19866933079506122)
0.2
>>> dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2',
'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1',
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isinf', 'isnan',
'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh', 'trunc']
>>> math.sqrt(2)
1.4142135623730951
Biologia Computacional
4/15/2015
53
A biblioteca Biopython
Descrio
Bio.Alphabet
Bio.Seq
Bio.Align
Manipulao de alinhamentos
Bio.SeqIO
Bio.Blast
Bio.Data
Bio.Entrez
Bio.SeqUtils
Bio.PDB
Bio.Prosite
Bio.Restriction
Bio.SubstMat
Alignment matrices
Bio.pairwise2
Sequence alignment
Biologia Computacional
Mdulo
4/15/2015
54
Biologia Computacional
4/15/2015
Bio.Alphabet
55
Bio.Seq
Biologia Computacional
4/15/2015
56
Bio.Seq
Biologia Computacional
4/15/2015
57
Bio.SeqUtils
Biologia Computacional
4/15/2015
58
Bio.SeqIO
Biologia Computacional
4/15/2015
59
Bio.Data
| U
| C
| A
| G
|
--+---------+---------+---------+---------+-U | UUU F
| UCU S
| UAU Y
| UGU C
| U
U | UUC F
| UCC S
| UAC Y
| UGC C
| C
U | UUA L
| UCA S
| UAA Stop| UGA W
| A
U | UUG L
| UCG S
| UAG Stop| UGG W
| G
--+---------+---------+---------+---------+-C | CUU L
| CCU P
| CAU H
| CGU R
| U
C | CUC L
| CCC P
| CAC H
| CGC R
| C
C | CUA L
| CCA P
| CAA Q
| CGA R
| A
C | CUG L
| CCG P
| CAG Q
| CGG R
| G
--+---------+---------+---------+---------+-A | AUU I(s)| ACU T
| AAU N
| AGU S
| U
A | AUC I(s)| ACC T
| AAC N
| AGC S
| C
A | AUA M(s)| ACA T
| AAA K
| AGA Stop| A
A | AUG M(s)| ACG T
| AAG K
| AGG Stop| G
--+---------+---------+---------+---------+-G | GUU V
| GCU A
| GAU D
| GGU G
| U
G | GUC V
| GCC A
| GAC D
| GGC G
| C
G | GUA V
| GCA A
| GAA E
| GGA G
| A
G | GUG V(s)| GCG A
| GAG E
| GGG G
| G
--+---------+---------+---------+---------+--
Biologia Computacional
4/15/2015
60
Bio.pairwise2
from Bio import pairwise2
alignments = pairwise2.align.globalxx("ACCGT", "ACG")
from Bio.pairwise2 import format_alignment
for a in pairwise2.align.globalxx("ACCGT", "ACG"):
...
print(format_alignment(*a))
ACCGT
|||||
AC-GScore=3
<BLANKLINE>
ACCGT
|||||
A-CGScore=3
<BLANKLINE>
Biologia Computacional
>>>
>>>
>>>
>>>
4/15/2015
61
Bio.SubsMat
Biologia Computacional
>>>
>>>
17
>>>
>>>
4/15/2015
62
Bio.Restriction
Biologia Computacional
4/15/2015
63
Bio.Entrez
Biologia Computacional
4/15/2015
Pesquisar no pubmed
64
Bio.Entrez
Biologia Computacional
4/15/2015
65
66
Biologia Computacional
4/15/2015