Python
Funções e parâmetros
Declaração de rotina / função
parâmetros e “corpo”.
Exemplo:
def ola( nome ):
print(‘oi ‘, nome)
No caso acima, temos uma rotina e abaixo uma função:
def quadrado( n ): return( n*n )
Passagem de parâmetros
Parâmetros opcionais e variados
print 'a = %s\nb = %s\nargs = %s\nkwargs = %s' % (a,b,args,kwargs)
Variável local x global
qualquer função, portanto ele é global.
Mais global...
a uma função...
def add(value1, value2): result = value1 + value2
add(2, 4) print(result)
Mais global...
def add(value1, value2): result = value1 + value2
add(2, 4) print(result)
def add(value1, value2):
global result
result = value1 + value2
add(2, 4) print(result)
>>> 6
Funções de bibliotecas (built-in)
programa. Exemplo:
import math
print( math.sqrt(9) )
Lambda: é uma expressão que pode substituir uma função
Sintaxe
soma = lambda x, y: x + y
print( soma(2,3) )
Exemplo
def length_each(words):
return [len(w) for w in words]
# utilizando a função length_each palavras = ['teste', 'sol', 'carro', 'ilha', 'lua']
print( length_each(palavras) )
>>> [5, 3, 5, 4, 3]
length_each_lambda = lambda words: [len(w) for w in words]
print(length_each_lambda (palavras) )
>>> [5, 3, 5, 4, 3]
Exemplo: Um “sequence assembly” com lambdas
cm = lambda d,ds: max([m(d,e) for e in ds if e != d])
m = lambda d,e: max([(s(d,e,o),o,e,d) for o in range(1-len(e),len(d))])
s = lambda d,e,o: sum([1 for p in range(max(0-o,0), min([len(e)-o, len(e), len(d)-o])) if e[p] == d[p+o]])
con = lambda x,o,s,c : c[0:max(0,o)] + s + c[len(s)+o:]
a = lambda s, o : con(*cm(s, o)) if len(o) == 1 else a(con(*cm(s, o)), [ y for y in o if y != cm(s, o)[2]])
ah = lambda d : a(d[0],d[1:])
Executando...
reads = ['TCCCAGTGAACCCA', 'TTCCGTGCGGTTAAG', 'GTCCCAGTGAACCCACAA', 'TGAACCCACAAAACG', 'ACCCACAAAACGTGA', 'GAACCCACAAAACGTGA', 'TCCGTGCGGTTAAGC', 'TGAACCCACAAA', 'CCGTGCGGTTAAGCGTGA', 'TGACAGTCCCAGTGAA', 'AACCCACAAAACGTGA', 'AGTGAACCCACAAAACGT', 'GTTAAGCGTGA', 'CCGTGCGGTTAAGCGTGA', 'AGCGTGACAGT', 'TGCGGTTAAGCG', 'ACAAAACGTGATG', 'ACAGTCCCAGTGAACC', 'TAAGCGTGACAGTCCCA', 'TCGAATTCCGT', 'TTCTCGAATTCCGTGCG', 'ACAAAACGTG', 'CCACAAAACGTG', 'TGCGGTTAAG', 'GAACCCACAAAACGTGA', 'TCTCGAATTCC', 'ATTCCGTGCGGTTAA', 'ACCCACAAAAC', 'CGTGCGGTTAAGCGTGA', 'CCAGTGAACCCACAA', 'TGCGGTTAAGCGTG', 'CCCACAAAACG', 'TCTCGAATTC', 'AATTCCGTGCGGTT', 'ACAGTCCCAGTGA', 'GTCCCAGTGAACCCA', 'TGAACCCACAAA', 'CCCACAAAACGTG', 'TCCCAGTGAACCCACA', 'CTCGAATTCCGTGCG']
print(ah(reads))
# TGCGGACAAAACGTGTGAACGTGAGGTTAAGCGTGACAGTCCCAGTGAACCCACAAAACG
Referências
https://wiki.python.org.br/PrincipiosFuncionais
https://pythonforbiologists.com/a-terrible-genome-assembler-in-six-lines/