HMMER
Nesta seção:
Descrição
De acordo com a página HMMER, HMMER é usado para buscar em bancos de dados de sequências por homólogos e para realizar alinhamentos de sequências. Implementa métodos usando modelos probabilísticos chamados profile hidden Markov models (profile HMMs).
Versões Disponíveis
hmmer/3.1b2 (default)
Submissão de Jobs Seriais
#!/bin/bash
#SBATCH -J hmmer_serial
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 03:00:00
#SBATCH --mem=4G
export INPUT="globins4.hmm globins4.sto"
export OUTPUT="*.out *.hmm"
module load hmmer
job-nanny hmmbuild globins4.hmm globins4.sto
Submissão de Jobs com OpenMP
#!/bin/bash
#SBATCH -J hmmer_omp
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 06:00:00
#SBATCH --mem=16G
export INPUT="query.fasta database.fasta"
export OUTPUT="results.out"
module load hmmer
# Construir HMM
job-nanny hmmbuild --cpu $SLURM_CPUS_PER_TASK query.hmm query.fasta
# Buscar no banco de dados
job-nanny hmmsearch --cpu $SLURM_CPUS_PER_TASK query.hmm database.fasta > results.out
Principais Comandos HMMER
Comando |
Descrição |
|---|---|
|
Constrói perfil HMM a partir de alinhamento múltiplo |
|
Busca sequências em banco de dados usando perfil HMM |
|
Busca perfil HMM em banco de domínios usando sequência |
|
Alinha sequências a um perfil HMM existente |
|
Converte formatos de arquivos HMM |
|
Prepara banco de dados HMM para busca |
Exemplo Completo: Análise de Domínios
#!/bin/bash
#SBATCH -J hmmer_analysis
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 12:00:00
#SBATCH --mem=32G
export INPUT="proteins.fasta pfam.hmm"
export OUTPUT="pfam_results/"
module load hmmer
mkdir -p pfam_results
cd pfam_results
# Preparar banco de dados Pfam (se não estiver pronto)
# hmmpress /path/to/Pfam-A.hmm
# Buscar domínios Pfam nas proteínas
job-nanny hmmscan --cpu $SLURM_CPUS_PER_TASK \
--domtblout pfam_domains.tbl \
--tblout pfam_hits.tbl \
/path/to/Pfam-A.hmm ../proteins.fasta > pfam_scan.log
# Extrair hits significativos (E-value < 1e-5)
awk '$7 < 1e-5' pfam_domains.tbl > significant_hits.tbl
# Gerar relatório
echo "Número total de hits: $(wc -l < pfam_hits.tbl)" > report.txt
echo "Hits significativos: $(wc -l < significant_hits.tbl)" >> report.txt
Alinhamento com HMM
#!/bin/bash
#SBATCH -J hmmalign
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 02:00:00
#SBATCH --mem=4G
export INPUT="profile.hmm sequences.fasta"
export OUTPUT="aligned.sto"
module load hmmer
job-nanny hmmalign -o aligned.sto profile.hmm sequences.fasta
Construção de Perfil a partir de Alinhamento
#!/bin/bash
#SBATCH -J hmmbuild
#SBATCH -N 1
#SBATCH -c 8
#SBATCH -t 04:00:00
#SBATCH --mem=8G
export INPUT="alignment.sto"
export OUTPUT="profile.hmm"
module load hmmer
job-nanny hmmbuild --cpu $SLURM_CPUS_PER_TASK profile.hmm alignment.sto
Job Array para Múltiplas Buscas
#!/bin/bash
#SBATCH -J hmmer_array
#SBATCH --array=1-10
#SBATCH -N 1
#SBATCH -c 4
#SBATCH -t 08:00:00
#SBATCH --mem=8G
QUERIES=(
"kinase.hmm"
"protease.hmm"
"receptor.hmm"
"transporter.hmm"
"channel.hmm"
"factor.hmm"
"binding.hmm"
"enzyme.hmm"
"regulator.hmm"
"structural.hmm"
)
QUERY=${QUERIES[$SLURM_ARRAY_TASK_ID-1]}
export INPUT="$QUERY proteome.fasta"
export OUTPUT="results_${QUERY%.hmm}/"
module load hmmer
mkdir -p results_${QUERY%.hmm}
cd results_${QUERY%.hmm}
job-nanny hmmsearch --cpu $SLURM_CPUS_PER_TASK \
--tblout hits.txt \
../$QUERY ../proteome.fasta > search.log
Análise de Resultados
#!/bin/bash
#SBATCH -J analyze_hmmer
#SBATCH -N 1
#SBATCH -n 1
#SBATCH -t 01:00:00
#SBATCH --mem=4G
module load hmmer
# Extrair estatísticas dos resultados
for tbl in results_*/hits.txt; do
DIR=$(dirname $tbl)
HITS=$(grep -v "^#" $tbl | wc -l)
echo "$DIR: $HITS hits" >> summary.txt
done
# Calcular distribuição de E-values
cat results_*/hits.txt | grep -v "^#" | awk '{print $5}' > evalues.txt
# Gerar histograma com Python
cat > plot.py << 'EOF'
import numpy as np
import matplotlib.pyplot as plt
evalues = np.loadtxt('evalues.txt')
plt.figure()
plt.hist(np.log10(evalues), bins=50)
plt.xlabel('log10(E-value)')
plt.ylabel('Frequência')
plt.title('Distribuição de E-values')
plt.savefig('evalue_distribution.png')
EOF
python plot.py
Referências
Documentação: http://hmmer.org/documentation.html
Tutorial: http://hmmer.org/tutorial.html
Guia do Usuário: ftp://selab.janelia.org/pub/software/hmmer/3.1b2/Userguide.pdf
Ver também
blast - Alternativa para busca de sequências
ClustalW - Alinhamento múltiplo de sequências
Processando Simulações - Como submeter jobs