matlab– noções introdutórias roteiro para aulas no ppg em bioinformática - ufpr roberto tadeu...
TRANSCRIPT
Matlab– Noções introdutórias
Roteiro para aulas no PPG em Bioinformática - UFPR
Roberto Tadeu Raittz Dr.
Matlab- Origens
Universidades- Novo México e Stanford Década de 70 Ambiente de Computação técnica Facilidade para manipulação e
visualização de dados
Matlab- Ambiente
Interativo Semelhante DOS/Linux Interpretadores
Matlab- Ambiente
cd \ dir ls whos clear ans quit ...
Matlab- Variáveis
Pode-se criar variáveis na área de trabalho
Comandos encerrados com ; não geram eco na área de trabalho
>> a = 65a = 65>> a = 65;>> |
Matlab- Variáveis
>>whos Name Size Bytes Class
Attributes
a 1x1 8 double >>|
Matlab- Operadores
= +, -, *, /, ^ ==, ~=, >, >=, <, <= &, |, ~ ;, ‘vírgula’, ‘espaço’, [, ] : (, ) .’
Matlab- Operadores
O índice do primeiro elemento em um vetor é 1 Operadores aritméticos, lógicos e relacionais
podem ser usados em conjunto A vírgula, o ponto e vírgula, o espaço e [... ] são
usados na inicialização de matrizes : define intervalos, ex: 3:5 é como [3 4 5] Índices de matrizes são definidos pelo uso de () . (ponto) é usado para definir produto escalar ‘ (apóstrofo) gera a matriz transposta
Matlab- Matrizes
Vetor linha:v1 = [3 8 40 5.3 6] %ou [3, 8, 40, 5.3, 6]
Vetor colunav2 = [3; 8; 40; 5.3; 6]
v1’ é igual a v2 % v1 ‘ (transposto) Quem é v2(1)*v1(4)? v1 + v2 %não funciona mas: v1 + v2’ %no caso igual a 2*v1
Matlab- Matrizes
Operador :início:incremento(opcional):final
>> a = (2:2:6)a = 2 4 6>>| Quem é a(2:3)?
Matrizes bi-dimensionais
m = [1 4 3; 3 2 1] ponto e vírgula separa as linhas portanto:>> mm = 1 4 3 3 2 1>>|
Matrizes- operador :
no exemplo anterior m(1,:) corresponde à primeira linha de m: [1 4 3]
ainda m(:,2) é [4; 2], a segunda coluna pode-se fazer suprimir uma linha ou
coluna de uma matriz fazendo-se uma atribuição de [] a ela:m(:, 2) = [] % [1 3; 3 1] ...m
o operador : é uma das mais fortes características de Matlab
O comando .
O ponto é usado para realizar operações com matrizes elemento a elemento
Para multiplicar a primeira coluna pela terceira coluna da matriz m original:m(:,1).*m(:,3) % [3; 3] (coluna)
O comando ´ (apóstrofo) É usado para obter a matriz transposta>>m
1 4 3 3 2 1
>>m ‘3 12 41 3
>>m(1,1:2).*m(:,3)’3 4
Concatenação de matrizes
Para adicionar colunas a uma matriz basta fazer a justaposição da matriz original com a que contém as colunas extras dentro de colchetes [... ]
u = 1:100; u = [u 1:5]; % u é um vetor linha 1x105 a = [(1:100)’ ((1:100).^2)’] %...o que
é?
Strings
São matrizes de bytes ‘A’ + 1 %... 66
>>s = ‘Bioinfo ‘;>>s’
ans =
Bioinfo
>>|
Strings
>>s(4) + 1 % i==105ans = 106>> s(4) = s(4) + 1s =Biojnfo % troca o I por j
>>[s s s s]ans =Biojnfo Biojnfo Biojnfo Biojnfo
>>
Strings
>>u = [s’ s’ s’ s’]u =
BBBBiiiioooojjjjnnnnffffoooo
`>> u(4,:)
ans =jjjj
Matlab– comandos úteis
ones(ilin, jcol) % virgula, não : zeros(ilin, jcol) % idem rand(ilin,jcol) % ibidem ... linspace(início,final,número) logspace(início,final,número)
Matlab- Funções
A maioria das funções Matlab recebem matrizes como parâmetros
exp(1:3) % [2.7183 7.3891 20.0855] sqrt(m) % é uma matriz com as raízes %quadradas de cada elemento de m sum(1:100) % retorna a soma de 1 a 100
plot(sin(linspace(1,100,50))) % ?
plot(sin(linspace(1,100,50)))
0 5 10 15 20 25 30 35 40 45 50-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Carregando variáveis
Se no diretório atual existe um arquivo texto, matriz.dat, que contém valores:
>> load matriz.dat carrega o arquivo em memória. Agora existe a
variável matriz na área de trabalho com os dados do arquivo
>> whos matriz Name Size Bytes Class Attributes matriz 300x5 12000 double
Salvando variáveis
Uma variável da memória pode ser salva em um arquivo por meio do comando save
e depois carregada com o comando load save arquivo.ext variável –ascii save matriz.dat matriz –ascii
há outras formas de entrada e saída E/S com arquivos binários Arquivos FASTA ...
Matlab- Gráficos x = 1:100; plot(x) Gera um gráfico da função identidade a forma geral de plot:
plot(x1, y1, s1, x2, y2, s2,... ) Exemplos on-line
Gráficos figure hold on grid on legend(´leg x´,´leg y´,... ) title(´texto´) xlabel(´... ´) ylabel(´... ´) subplot etc.
Gráfico- exemplo
Se as linhas a seguir forem copiadas de um editor de textos e coladas na área de trabalho...
x = linspace(1,30,50);y = x.^2;plot(x,y,'r');title('y = x^2');xlabel('eixo x');ylabel('eixo y');grid on
Gráficos- exemplo
0 5 10 15 20 25 300
100
200
300
400
500
600
700
800
900y = x2
eixo x
eixo
y
Criando scripts
Copiar e colar na área de trabalho uma lista de comandos
Editor do Matlab Salvar como ‘nome_scrpt.m’ Executar usando o nome dado Funções do Matlab
Scripts– controle de programa for if else end var = input(‘mensagem’)
Comandos- for
for var=vetor var percorre todos os elementos de
vetor for clássico:
for i=1:n...
end
Comandos- if
if condição...
else...
end
Criando funções Devem ser gravadas com o nome da
função e a extensão .m Podem ser acessadas do diretório corrente
ou da toolbox Forma geral
function mret = nome_funcao(parametros)script
A função devolve o valor da variável indicada (mret no caso)
Obviamente mret pode ser uma matriz Todas as variáveis utilizadas são locais
Exemplo de função
function mret = med_desv(vetor)mret = [mean(vetor) std(vetor)];
Para chamá-la:
>> med_desv(rand(1,100))
ans =
0.5280 0.2970
Estrutura fasta
Tool box de bioinformática exemplo:>>q(1).Header = ‘Teste sala – ct1’>>q(1).Sequence = ‘AACCTGCATTTAG’>>q(2).Header = ‘Teste sala – ct2’>>q(2).Sequence = ‘GGGGTTATGGCCAT’>>fastawrite(‘q.fas’,q)>>q1 = fastaread(‘q.fas’)
Algumas funções úteis para Bioinformática e strings
seqrcomplement(Seq) fastaread(‘arq’) fastawrite(‘arq’,var_fas) strfind(s1,s2) % índices de s2 em s1 upper(s) lower(s) find(v) % retorna índices de v diferentes
de zero ...
Operadores lógicos e matrizes Operações lógicas Podem ser realizadas em
matrizes. Por exemplo: s == ‘g’ % retorna 0 para os índices de s
diferentes de ‘g e 1 para os elementos iguais a ‘g’.
>>s = ‘acttcgtttcgatctaagt’;>>s==‘g’
ans = 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1
0
Contando bases no DNA
Exercício:Com uma linha de comando apenas contar quantos Gs estão presentes em uma sequência de DNA
GSkew
A quantidade de Gs e de Cs em uma região de DNA pode ser significativamente diferente.
A medida da proporção da diferença é de fato uma medida útil utilizada em genômica.
A medida predominância da quantidade de Gs em relação aos Cs é chamada G-Skew e é dada por:
gskew = (g-c)/(g+c) Exercício 1) Construir uma função Matlab que
recebe uma sequência de DNA e retorna o seu gskew.
Gskew de um conjunto de genes O gskew acumulado de várias subsequências
menores de uma grande sequência é um indicador de consistência de montagens de genomas.
Se o gskew de uma sequência é positivo então o gskew de sua complementar reversa é negativo e vice-versa.
Exercício 2) Dado um arquivo FASTA com genes fora de ordem de um determinado genoma construir o gráfico do gskew acumulado destes genes.
Gskew
Exercício 3) Construir um novo arquivo FASTA dos genes do exercício anterior considerando o seguinte critério: se o gskew do gene é positivo manter o gene no sentido atual senão incluí-lo no sentido complementar-reverso ao seu.
Exercício 4) Gerar o gráfico do exercício 2 com os genes obtidos no exercício 3.