ludwig krippahl, 2009 programação para as ciências experimentais 2008/9 teórica 5

74
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009

Programação para as Ciências Experimentais

2008/9

Teórica 5

Page 2: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 2

Na aula de hoje...

Estruturas. Vectores de estruturas (structure arrays). Leitura formatada. Recursividade Gráficos 3D

Page 3: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 3

Estruturas

Vectores e matrizes guardam valores de um só tipo.

Estruturas podem guardar valores de vários tipos.

Sintaxe:• variável.campo

Page 4: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 4

Estruturas Exemplo:

octave:7> prato.nome="filetes";octave:8> prato.preco=12.5;octave:9> prato.pedidos=[10,2,3,5,9,5,9];octave:10> pratoprato ={ nome = filetes pedidos = 10 2 3 5 9 5 9 preco = 12.500}

Page 5: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 5

Estruturas

prato =

{

nome = filetes

pedidos =

10 2 3 5 9 5 9

preco = 12.500

}

Estrutura

Page 6: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 6

Estruturas

prato =

{

nome = filetes

pedidos =

10 2 3 5 9 5 9

preco = 12.500

}

Campos

Page 7: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 7

Estruturas

prato =

{

nome = filetes

pedidos =

10 2 3 5 9 5 9

preco = 12.500

}

Valores

Page 8: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 8

Estruturas

Recapitulando• nome_da_variavel.campo1=val1

• nome_da_variavel.campo2=val2

• nome_da_variavel.campo3=val3

• Cada campo pode ter um valor de tipo diferente, incluindo ser outra estrutura.

Page 9: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 9

Estruturas Estrutura de estrutura...

octave:13> cliente.nome="Vitor Meireles";octave:14> cliente.prato=pratocliente ={ nome = Vitor Meireles prato = { nome = filetes pedidos = 10 2 3 5 9 5 9 preco = 12.500 }}

Page 10: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 10

Structure arrays

Podemos criar vectores de estruturas, desde que as estruturas tenham os mesmos campos

• (os valores do mesmo campo podem ser de tipos diferentes, mas não convém...)

x.a=1

x.b=2

y.a=3

y.b=“s”

V=[x,y]

Page 11: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 11

Structure arrays

Não podemos criar vectores de estruturas se os campos forem diferentes

y.c=4 (acrescentamos um campo c ao y)

V=[x,y] (dá erro...)

Page 12: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 12

Structure arrays

Um vector de estruturas funciona como um vector.

for f=1:10 x(f).a=f; endfor

x(2:2:10)

Nota: podemos criar um vector atribuindo valores aos seus elementos: v(1)=1, v(2)=1...

Page 13: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 13

Structure arrays

Se acrescentarmos um campo a um elemento acrescenta a todos, mas vazio.

for f=1:10 x(f).a=f; endfor

x(2:2:10)

x(2).b=0

Page 14: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 14

Structure arrays

Podemos também atribuir um valor a um campo de todos (ou alguns) elementos do vector

x(:).b=1

x(1:5).b=2

Page 15: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 15

Exemplo: massa molecular

Uma função que receba uma fórmula química e devolva a massa molecular.

massamol(“CHCl3”)

ans = 119.38

Page 16: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 16

Exemplo: massa molecular

Precisamos de:• Saber as massas atómicas

• Decompor a fórmula guardando o número de átomos (e.g. Cl3 são 3 àtomos de Cl)

• Somar tudo.

Page 17: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 17

Exemplo: massa molecular

Saber as massas atómicas• Ficheiro elementos.txt

(SQ Nome NA Massa GP)

Ac Actinium 89 227 0 7

Ag Silver 47 107.8682 11 5

Al Aluminium 13 26.9815386 13 3

Am Americium 95 243 0 7

Page 18: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 18

Exemplo: massa molecular

Saber as massas atómicas•Ficheiro elementos.txt

•Separado por tabs

Page 19: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 19

Exemplo: massa molecular

Leitura formatada (fscanf)

[simb,nome,na,massa,grupo,periodo]=

fscanf(id,"%s%s%d%f%d%d","C");

Variáveis onde guardar os valores.

Page 20: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 20

Exemplo: massa molecular

Leitura formatada (fscanf)

[simb,nome,na,massa,grupo,periodo]=

fscanf(id,"%s%s%d%f%d%d","C");

Identificador do ficheiro

Page 21: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 21

Exemplo: massa molecular

Leitura formatada (fscanf)

[simb,nome,na,massa,grupo,periodo]=

fscanf(id,"%s%s%d%f%d%d","C");

Formatação dos valores a ler (string, string, inteiro, fraccionário, inteiro, inteiro)

Page 22: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 22

Exemplo: massa molecular

Leitura formatada (fscanf)

O fscanf considera qualquer espaço em branco (espaço, tab, nova linha) como separando os valores e ignora-o. Por isso não precisamos dizer onde estão os tabs, etc. Mas se houver um espaço numa string o fscanf “pensa” que são duas.

Page 23: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 23

Exemplo: massa molecular

Leitura formatada (fscanf)

[simb,nome,na,massa,grupo,periodo]=

fscanf(id,"%s%s%d%f%d%d","C");

Para os códigos da formatação ver printf (14.2.4)

Page 24: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 24

Exemplo: massa molecular

Leitura formatada (fscanf)

[simb,nome,na,massa,grupo,periodo]=

fscanf(id,"%s%s%d%f%d%d","C");

Indica que é para funcionar como na linguagem C. É importante não esquecer isto.

Page 25: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 25

Exemplo: massa molecularfunction els=lerelementos(nome) id=fopen(nome,"r"); f=1; while !feof(id) [simb,nome,na,massa,grupo,periodo]=fscanf(id,"%s%s%d%f%d%d","C"); els(f).simb=simb; els(f).nome=nome; els(f).na=na; els(f).massa=massa; els(f).grupo=grupo; els(f).periodo=periodo; f=f+1; endwhile fclose(id);endfunction

Page 26: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 26

Exemplo: massa molecular

function els=lerelementos(nome)

id=fopen(nome,"r");

f=1;

while !feof(id) [simb,nome,na,massa,grupo,periodo]=fscanf(id,"% ....

els(f).simb=simb;

[...]

f=f+1;

endwhile

fclose(id);

endfunction

Abre o ficheiro

Page 27: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 27

Exemplo: massa molecular

function els=lerelementos(nome)

id=fopen(nome,"r");

f=1;

while !feof(id) [simb,nome,na,massa,grupo,periodo]=fscanf(id,"% ....

els(f).simb=simb;

[...]

f=f+1;

endwhile

fclose(id);

endfunction

Enquanto não chega ao fim lê cada linha para várias variáveis

Page 28: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 28

Exemplo: massa molecular

function els=lerelementos(nome)

id=fopen(nome,"r");

f=1;

while !feof(id) [simb,nome,na,massa,grupo,periodo]=fscanf(id,"% ....

els(f).simb=simb;

[...]

f=f+1;

endwhile

fclose(id);

endfunction

e constrói o elemento f do vector de estruturas

Page 29: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 29

Exemplo: massa molecular

function els=lerelementos(nome)

id=fopen(nome,"r");

f=1;

while !feof(id) [simb,nome,na,massa,grupo,periodo]=fscanf(id,"% ....

els(f).simb=simb;

[...]

f=f+1;

endwhile

fclose(id);

endfunction

Incrementa f para o próximo elemento

Page 30: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 30

Exemplo: massa molecular

Precisamos de:• Saber as massas atómicas

• Decompor a fórmula guardando o número de átomos

• Somar tudo.

Page 31: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 31

Exemplo: massa molecular

Decompor a fórmula:• Retirar da primeira letra até à primeira

maiúscula.

• Decompor o resto, se sobrar.

• Função recursiva.

Page 32: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 32

Exemplo: massa molecular

Decompor a fórmula:• Retirar da primeira letra até à primeira

maiúscula.

• Decompor o resto, se sobrar.

• Função recursiva.

Decompor CH3Cl é • C, e decompor H3Cl

Page 33: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 33

Recursividade

Factorial:• N! = N * (N-1) * (N-2) *..

• N! = N * (N-1)!

Page 34: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 34

Recursividade

Factorial:function f=factorial(n) if n<=1 f=1; else f=n*factorial(n-1); endifendfunction

Condição de paragem. É importante ser primeiro (ou antes de chamar a função novamente)

Page 35: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 35

Recursividade

Factorial:function f=factorial(n) if n<=1 f=1; else f=n*factorial(n-1); endifendfunction

Chamada recursiva.

N!= N* (N-1)!

Page 36: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 36

Exemplo: massa molecular

function le=decompor(formula) le=[]; if length(formula)>0

Guarda o 1º elemento, incluindo o número. Em p guarda a posição do próximo elemento

if p<=length(formula) le=[le,decompor(formula(p:length(formula)))]; endif endifendfunction

Page 37: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 37

Exemplo: massa molecular le(1).el=formula(1); quant=""; p=length(formula)+1; for f=2:length(formula) if isdigit(formula(f)) quant=[quant,formula(f)]; elseif islower(formula(f)) le(1).el=[le(1).el,formula(f)]; else p=f; break; endif endfor

Guarda 1ª letra. A quantidade é string vazia e assume que não há próxima

Page 38: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 38

Exemplo: massa molecular le(1).el=formula(1); quant=""; p=length(formula)+1; for f=2:length(formula) if isdigit(formula(f)) quant=[quant,formula(f)]; elseif islower(formula(f)) le(1).el=[le(1).el,formula(f)]; else p=f; break; endif endfor

A partir do 2º caracter, se for digito vai para a string da quantidade

Page 39: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 39

Exemplo: massa molecular le(1).el=formula(1); quant=""; p=length(formula)+1; for f=2:length(formula) if isdigit(formula(f)) quant=[quant,formula(f)]; elseif islower(formula(f)) le(1).el=[le(1).el,formula(f)]; else p=f; break; endif endfor

senão, se for minúscula vai para o elemento.

Page 40: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 40

Exemplo: massa molecular le(1).el=formula(1); quant=""; p=length(formula)+1; for f=2:length(formula) if isdigit(formula(f)) quant=[quant,formula(f)]; elseif islower(formula(f)) le(1).el=[le(1).el,formula(f)]; else p=f; break; endif endfor

Caso contrário há próximo. Guarda-se a posição em p e termina-se este ciclo

Page 41: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 41

If, caso geral (if, elseif, else)

if cond1

se a cond1 for verdadeira

elseif cond2

se a cond1 for falsa e a cond2 verdadeira

elseif ...

....

else

caso nenhuma seja verdadeira

endif

Page 42: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 42

Exemplo: massa molecular

if !strcmp(quant,"")

le(1).quant=str2num(quant);

else

le(1).quant=1;

endif Terminado o ciclo guarda-se o número na quantidade, ou 1 se nenhuma quantidade foi encontrada

Page 43: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 43

Exemplo: massa molecular

Precisamos de:• Saber as massas atómicas

• Decompor a fórmula guardando o número de átomos

• Somar tudo.

Page 44: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 44

Exemplo: massa molecular Encontrar a massa de um elemento na tabela

function m=massael(simbolo,lista) m=0; for f=1:length(lista) if strcmp(lista(f).simb,simbolo) m=lista(f).massa; break endif endforendfunction

Page 45: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 45

Exemplo: massa molecular Calcular tudo

function m=massamol(formula) lista=lerelementos("elementos.txt") c=decompor(formula); m=0; for f=1:length(c) m=m+massael(c(f).el,lista)*c(f).quant; endforendfunction

Page 46: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 46

Resumindo

Leitura formatada (fscanf) Estruturas e vectores de estruturas Recursividade Massa molecular

• Ler os dados

• Partir a fórmula química em elementos e número

• Percorrer o vector encontrando a massa de cada elemento e somando

Page 47: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 47

Gráficos 3D Função meshgrid: cria matrizes para x, y

• [xx,yy]=meshgrid(1:3,4:6)xx = 1 2 3 1 2 3 1 2 3

yy = 4 4 4 5 5 5 6 6 6

Page 48: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 48

Gráficos 3D

Função mesh: traça o gráfico 3D “rede”

x=-10:10;

y=-10:10;

[xx,yy]=meshgrid(x,y);

mesh(xx,yy,xx.^2-yy.^2+xx.*yy)

Page 49: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 49

Gráficos 3D

Page 50: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 50

Gráficos 3D

Função surf: traça o gráfico 3D “sólido”

x=-10:10;

y=-10:10;

[xx,yy]=meshgrid(x,y);

surf(xx,yy,xx.^2-yy.^2+xx.*yy)

Page 51: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 51

Gráficos 3D

Page 52: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 52

Gráficos 3D

Resumo:• usar meshgrid para criar as matrizes para o x

e y a partir dos vectores.

• calcular o z a partir das matrizes criadas com o meshgrid.

• mesh(x,y,z) para desenhar a rede

• surf(x,y,z) para superfície sólida.

Page 53: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 53

Resumindo...

Estruturas e vectores de estruturas• Secção 6.1 Data Structures

Leitura formatada• Secção 14.2 C-Style I/O Functions

if – elseif – else • Secção 10 Statements (10.1 para o if)

Recursividade Gráficos 3D

• Secção 15.1 Plotting Basics

Page 54: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 54

Próximas teóricas...

6: apresentação do trabalho 1 7: revisões e dúvidas

Page 55: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 55

Próxima prática

Cálculo do ponto isoeléctrico de proteínas.• Trabalho 1 de 07-08

Page 56: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 56

Problema

Proteínas• Sequência de aminoácidos

http://en.wikipedia.org/wiki/Amino_acid

Page 57: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 57

Problema

Ponto isoeléctrico• Dois grupos protonáveis

pKa=10

pKa=2

Page 58: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 58

Problema

Ponto isoeléctrico• Henderson-Hasselbalch

http://en.wikipedia.org/wiki/Henderson-Hasselbalch_equation

Page 59: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 59

Problema

Ponto isoeléctrico• pH=0, carga +1

pKa=10

pKa=2

+1

0

Page 60: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 60

Problema

Ponto isoeléctrico• pH=2, carga +0.5

pKa=10

pKa=2

+1

-0.5

Page 61: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 61

Problema

Ponto isoeléctrico• pH=7, carga 0

pKa=10

pKa=2

+1

-1

Page 62: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 62

Problema

Ponto isoeléctrico• pH=10, carga -0.5

pKa=10

pKa=2

+0.5

-1

Page 63: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 63

Problema

Ponto isoeléctrico• pH=12, carga -1

pKa=10

pKa=2

0

-1

Page 64: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 64

Problema

Proteínas

Page 65: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 65

Problema

Proteínas

Page 66: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 66

Problema

Proteínas

+1

-1

Page 67: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 67

Problema

Proteínas

http://www.biology.arizona.edu/biochemistry/problem_sets/aa/aa.html

Page 68: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 68

Ficheiro pKas.txt

Codigo COOH NH3 C.L. Carga(Desp)A 2.3 9.9 - - C 1.8 10.8 8.6 -1 D 2 10 4.5 -1 E 2.2 9.7 4.5 -1 F 1.8 9.1 - - ...V 2.3 9.6 - - W 2.4 9.4 - - Y 2.2 9.1 9.8 -1

Page 69: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 69

Simplificação

Calcular a carga a cada pH considerando:• NH3 do primeiro da sequência

• Tem carga 0 desprotonado

• COOH do último da sequência• Tem carga -1 desprotonado

• Cadeias laterais dos intermédios• Ler a carga na tabela

Page 70: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 70

Cargas em função do pH

Page 71: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 71

Ficheiro seqs.txt>UniProt/Swiss-Prot|P00273|DESR_DESGI DesulforedoxinANEGDVYKCELCGQVVKVLEEGGGTLVCCGEDMVKQ>UniProt/Swiss-Prot|P14073|FER_BUTME FerredoxinAYKITDECIACGSCADQCPVEAISEGSIYEIDEALCTDCGACADQCPVEAIVPED>UniProt/Swiss-Prot|Q46495|DESR_DESBR DesulfoferrodoxinMPERLQVYKCEVCGNIVEVLNGGIGELVCCNQDMKLMSENTVDAAKEKHVPVIEKIDGGYKVKVGAVAHPMEEKHYIQWIELLADDKCYTQFLKPGQAPEAVFLIEAAKVVAREYCNIHGHWKAEN>UniProt/Swiss-Prot|P14393|GLB_APLJU GlobinALSAADAGLLAQSWAPVFANSDANGASFLVALFTQFPESANFFNDFKGKSLADIQASPKLRDVSSRIFARLNEFVSNAADAGKMGSMLQQFATEHAGFGVGSAQFQNVRSMFPGFVASLSAPAADAAWNSLFGLIISALQSAGK>UniProt/TrEMBL|Q4VSD1|Q4VSD1_9HIV1 ProteaseSSCSFPQITLWQRTLVTVKIGGQLKEALLDTGADDTVLEDINLPGKWKPRMIGGIGGFIKVKQYDQILIEICGKKAIGTVLVGPTPVNIIGRNMLTQIGCTLNFPISPI

Page 72: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 72

Ler sequências de proteínas.

O formato FASTA é um formato de texto para guardar sequências.

As linhas começadas por “>” identificam a molécula (proteína, RNA, ou DNA):

>UniProt/Swiss-Prot|P00273|DE....

Page 73: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 73

Objectivo da aula

Perceber o problema Compreender as funções e ficheiros

fornecidos Planear como “encaixam” Implementar o que falta para pôr

tudo a funcionar:• Ler o ficheiro das sequências e produzir

um ficheiro com os pontos isoeléctricos.

Page 74: Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 5

Ludwig Krippahl, 2009 74

Dúvidas