MySQL – Utilizando Banco de Dados para
organizar e interpretar seus dados
Análise de transcriptoma usando a base de dados Kegg Orthology
$ megablast
-i h.sapiens.nuc –d tumor.seq
–D 3 –F F –a 4 –p 96 –s 100 –o megakegg
Legenda:
-i = input
-d = database
-D 3 = saida
tabulada
-F F = filtro de baixa complexidade
desligado (F = False)
-a 4 = use 4 processadores
-p 96 = mínima identidade 96% (seqüenciamento
pode ter até 4% de erro)
-s 100 = mínimo escore 100
-o = nome do arquivo de saída
$ cat megakegg | awk ‘{print $1}’ | sort | uniq –c | sort –k 1,1 –n –r >
resultado
Legenda:
awk = nenhuma condição (aspas)
e ação de imprimir coluna 1 (chaves)
sort = ordena as queries (já estão ordenadas, só pra garantir)
uniq = mostra cada query uma
única vez
uniq –c = idem, mas mostra quantas de
cada haviam
sort –k 1,1 = ordena pela coluna 1, que é o
número de ocorrências das queries
sort –n = entende valores como números
sort –r = reverso, ordena do maior
para o menor
3. Selecione algum hit
e procure a identificação no arquivo h.sapiens.nuc
$ cat h.sapiens.nuc | grep “hsa:1234”
Não é muito pratico proceder dessa
forma para cada CDS. É necessário fazer a analise em larga escala então esta na
hora de aprender um pouco de MySQL.
Para isso vamos preparar os arquivos e tabelas a serem utilizadas.
1) No seu /home/SEU_NOME/ crie um novo
diretório e entre nele:
mkdir mysql_aula
cd mysql_aula
2) Copie o conteúdo de mysql_aula
para seu novo diretório
cp /home/bacharelado/mysql_aula/*
. {opag}
3) Crie um arquivo
tabulado com apenas algumas colunas do blast:
cat megakegg |
awk -v OFS="\t" '($1 != "#") {print $1,$2,$3,$11,$12}' > megakegg_tab
-v OFS à insere um
tabulador (\t) entre as colunas selecionadas
4) Acesse o MySQL, user name
e senha serão fornecidos em sala
mysql -u <username> -p <ENTER>
Informe a senha. Digite sem medo, o
cursor não se move.
5) Comandos básicos.
Como listar bancos de dados disponíveis?
Lembre-se: todos os comandos MySQL devem terminar com ponto e
virgula (;).
show databases;
6) Crie um banco para
você:
create database SEU_NOME;
7) Informe ao MySQL que você quer usa-la
use <username>;
8) Verifique que o
banco ainda está vazio (sem tabelas):
show tables;
9) Crie uma tabela para
armazenar os dados selecionados do BLAST (arquivo megakegg_tab):
create table result_blast (cds varchar(15), subject varchar(50), identity
double(5,2), evalue varchar(10),
score int, index cds_idx (cds));
o comando index cds_idx (cds) adiciona um index na
coluna cds, o que facilita as consultas.
10) Verifique sempre
que quiser a estrutura das tabelas criadas:
desc result_blast;
11) Carregue o
resultado do blast para a tabela:
load data local infile '/home/SEU_NOME/mysql_aula/megakegg_tab'
into table result_blast;
12) Verifique o
conteúdo da tabela:
select * from result_blast limit 10;
Veja que o mesmo arquivo agora se
encontra em colunas no banco de dados.
13) A consulta
anterior utilizando awk|sort|uniq já nos informou
quais hsas deram mais hits e portanto estão mais
presentes nessa amostra de tumor. Que tal utilizar o
banco pra isso?
select *, count(*) from result_blast group by cds limit 10;
- mais simples né?
14) Crie uma tabela
dessa contagem de hsas. Basta adicionar o comando create table ao comando anterior:
create table hsa_count select cds, count(*) as hits from result_blast
group by cds;
15) Sempre verifique
uma tabela criada:
select * from hsa_count limit 10;
16) Cansado de ver
apenas símbolos, sem saber o que eles são? Crie uma tabela contendo descrições
dos genes:
create table hsa_description (cds varchar(15), description varchar(400), index cds_idx (cds));
17) Carregue as
descrições na tabela recém criada:
load data local infile 'hsa_description' into
table hsa_description;
18) Mesmo uma tabela
já criada pode ser alterada para conter mais informação. Altere a primeira
tabela hsa_count para conter tambem
uma coluna de descrição do gene:
alter table hsa_count add column
description varchar(400);
19) Visualize a nova
estrutura da tabela, ta bom.. so
se quiser:
desc hsa_count;
20) Combinar tabelas é
algo comum e muito usado
update hsa_count, hsa_description set hsa_count.description = hsa_description.description where hsa_count.cds = hsa_description.cds;
- tranqüilo ne?
21) Verifique a tabela agora com
dados novos:
select * from hsa_count limit 10;
- ahhh,
agora sim!
22) Qual o nome do CDS que da mais
hit mesmo?
select * from hsa_count order by
hits desc limit 10;
-Ordenamos pela coluna hits e
mostramos do maior para o menor (descendente).
23) Agora vamos relacionar nossos hsas a grupos KO? Crie uma tabela que relaciona KO e CDS:
create table hsa_ko (cds varchar(15), ko varchar(11), hits bigint default
0, index cds_idx (cds), index ko_idx(ko));
24) Perdido? Não sabe quantas tabelas
já criou?
show tables;
25) Carregue os dados na tabela recém
criada:
load data local infile '/home/SEU_NOME/mysql_aula/hsa_ko.list'
into table hsa_ko;
26) Inclua a contagem de CDS na
tabela recém criada:
update hsa_ko, hsa_count set hsa_ko.hits
= hsa_count.hits where hsa_ko.cds = hsa_count.cds;
27) Verifique o numero de pares hsa x ko (inclusive os CDS que
não tiveram hits):
select count(*)
from hsa_ko;
28) Vamos excluir pares hsa x ko cujo CDS não obtiveram
hits e não nos interessa:
delete from hsa_ko where hits =
0;
29) Verifique o numero de pares hsa x ko restantes:
select count(*)
from hsa_ko;
Muito menos né,
claro, nem todos hsas estão presentes na amostra
30) Qual KO danadinho deu mais hit?
select * from hsa_ko order by
hits desc limit 10;
31) Agora crie mais uma tabela
contendo o numero de CDS e o total de hits para cada KO. Assim podemos mapear
os KOs mais representativos na amostra e quais via
metabólicas correspindentes.
create table ko_hits select ko, count(distinct cds) as total_cds, sum(hits) as total_hits
from hsa_ko group by ko;
32) Verifica tabela criada:
select * from ko_hits limit 10;
33) Já sei, mais uma vez cansado de
ver identificadores sem saber o que eles são neh.
Então, pra finalizar, crie maaaais uma tabela com descrições e vias metabólicas dos KOs:
create table ko_description (ko varchar(11) primary key,
description varchar(170), path_desc
varchar(150));
34) Popule
(em mysqelês) essa tabela:
load data local infile
'/home/SEU_NOME/mysql_aula/ko_data' into table ko_description;
35) Adicione colunas
de descricao e pathway do ko na tabela ko_hits, ta lembrado
como neh?
alter table ko_hits add column ko_desc varchar(400);
alter table ko_hits add column path_desc varchar(150);
36) Atualize a tabela ko_hits:
update ko_hits, ko_description set ko_hits.ko_desc = ko_description.description where ko_hits.ko = ko_description.ko;
update ko_hits, ko_description set ko_hits.
path_desc = ko_description.
path_desc where ko_hits.ko = ko_description.ko;
37) qual KO tem mais hits? A qual via
ele pertence?
select * from ko_hits order by total_hits desc limit 10;
38) Efetue a busca LIKE na tabela de KOs:
select * from ko_hits where ko_desc like '%ATP%' limit 45;
Pense em outras proteinas
e repita a consulta.
Agora voce ja sabe usar
diversos comandos MySQL: select, create, show, load, alter, order by, update,
limit, where, like, count ... Tudo que um biólogo precisa saber
certo?
APRENDEU A “PERGUNTAR BEM”???