foldseek - lncc-sered/manual-sdumont2nd GitHub Wiki

Table of Contents

FoldSeek

EM CONSTRUÇÃO

Página oficial do FoldSeek Documentação da versão 10-941cd33 e tutoriais disponíveis em: Tutoriais Oficiais FoldSeek v10

Tutorial utilizado: "Foldseek Exmples"

Testes utilizando os exemplos de nossa autoria: Realizamos uma comparação estrutural entre duas diferentes conformações tridimensionais da enzima triose-fosfato isomerase (TIM). Disponível para download no banco de dados Protein Data Bank - PDB sob os códigos PDB 1tim e 8tim: Referências: https://doi.org/10.2210/pdb1TIM/pdb e https://doi.org/10.2210/pdb8TIM/pdb

(recomenda-se executar primeiro o exemplo comparativo entre as proteínas 1tim e 8tim para validação)

Clone a partir do repositório do steineggerlab o programa foldseek. Nele você encontrará a pasta "exemple". Este diretório contem os arquivos necessários para realização deste Tutorial Básico.

mkdir tutorial-foldseek
cd tutorial-foldseek
git clone https://github.com/steineggerlab/foldseek.git
cd example
Ou copie o arquivo "1tim.pdb.gz", "8tim.pdb.gz" que estão disponível no caminho "/scratch/app/anaconda_module/envs/siesta_5.2.2_openmpi/Tutorial" para sua pasta de execução do teste com os comando abaixo:
mkdir tutorial-foldseek
cd tutorial-foldseek
cp /scratch/app/gpu/foldseek/10-941cd33/example/1tim.pdb.gz .
cp /scratch/app/gpu/foldseek/10-941cd33/example/8tim.pdb.gz . 

O exemplos abaixo utilizou 1 nó e apenas GPU. Os mesmos Procedimentos são aplicáveis a versão ARM do FoldSeek.

🗂️ Local da Instalação e Carregando Module

Instalação do FoldSeek V10 CPU+H100 localizada em: "/scratch/app/gpu/foldseek/10-941cd33/bin" Instalação do FoldSeek V10 ARM+HG200 localizada em :/scratch/app/arm/foldseek/10_arm64/bin"

Carregamento via módulo de ambiente: " Utilize os comando abaixo para carregar e visualizar todos os módulos compatíveis com GPUs:

module load arch_gpu/current 
module avail 

--------------------------------- /scratch/app/modulefiles_extra/gpu ----------------------------------
   amber/amber24+ambertools25_singularity        gromacs/2024.5_openmpi-4.1_gnu        (D)
   amber/amber24+ambertools25             (D)    lammps/3Nov2022_nv_container
   cp2k/9.1_nv_container                         lammps/15Jun2023_nv_container
   cp2k/2023.1_nv_container                      lammps/2024.8_openmpi-5.0_gnu         (D)
   cp2k/2023.2_nv_container                      namd/2.13-multinode_nv_container
   cp2k/2025.1_openmpi-5.0.6              (D)    namd/2.13-singlenode_nv_container
   cuda/11.8                                     namd/3.0_nv_container
   cuda/12.2                                     namd/3.0.1_multicore_cuda             (D)
   cuda/12.9                              (D)    quantum-espresso/7.3_nv_container
   fftw/3.3_nvhpc                                quantum-espresso/7.4                  (D)
>>>foldseek/10_avx2-gpu<<<                (L)    tensorflow/23.12-tf2-py3_nv_container

-------------------------------------------------------------------------------------------

Após localiza-lo, carregue o module o foldseek/10_avx2-gpu com o comando abaixo:

module load foldseek/10_avx2-gpu
Caso deseje carregar o module do FoldSeek para arquitetura ARM, utilize os comando abaixo:
module load arch_arm
module load foldseek/10_arm

🎓 Tutorial rápido para simulação de dinâmica molecular com Amber

🔰 Etapa 1: Preparar os arquivos de exemplo

O repositório oficial do Foldseek fornece exemplos que podemos utilizar. Para sua comodidade já realizamos este download. Então basta utilizar os comando abaixo para criar a pasta "tutorial-foldseek" e copiar os arquivos ".pdb" para o diretório criado. Vamos copiar os dois arquivos PDB compactados: 1tim.pdb.gz e 8tim.pdb.gz.

mkdir tutorial-foldseek
cd tutorial-foldseek
cp /scratch/app/gpu/foldseek/10-941cd33/example/1tim.pdb.gz .
cp /scratch/app/gpu/foldseek/10-941cd33/example/8tim.pdb.gz . 

✍️ Etapa 2: Criar os bancos de dados

O Foldseek requer que os arquivos de estrutura sejam convertidos em um formato de banco de dados interno.

# Criar banco de dados para o arquivo 1tim.pdb.gz
foldseek createdb 1tim.pdb.gz 1tim_db

# Criar banco de dados para o arquivo 8tim.pdb.gz
foldseek createdb 8tim.pdb.gz 8tim_db

Após a conversão o terminal irá reporta os seguinte resultados. Para sua comodidade escrevemos comentários ao lado de cada linha do resultado para facilitar a compreensão:

[rafaelfs@sdumont2nd5 tutorial-foldseek]$ foldseek createdb 1tim.pdb.gz 1tim_db --gpu 1 # Comando para criar banco de dados a partir do arquivo PDB
createdb 1tim.pdb.gz 1tim_db  # Confirmação do comando executado

MMseqs Version:             	941cd33ff0771cd2e3f144e3293e22a2b87e9fda  # Versão do software Foldseek/MMseqs2
Use GPU                     	1  # Indica que foi utilizada 1 GPU para esta operação
Path to ProstT5             	   # Caminho para modelo ProstT5 (vazio = não usado)
Chain name mode             	0  # Modo de nomeação de cadeias (0 = padrão)
Createdb extraction mode    	0  # Modo de extração de dados (0 = padrão)
Interface distance threshold	8  # Limiar de distância para interfaces (8Å)
Write mapping file          	0  # Não gerou arquivo de mapeamento adicional
Mask b-factor threshold     	0  # Limiar para filtro por fator B (0 = desativado)
Coord store mode            	2  # Modo de armazenamento de coordenadas (2 = compacto)
Write lookup file           	1  # Gerou arquivo de lookup (mapeamento de IDs)
Input format                	0  # Formato de entrada (0 = PDB)
File Inclusion Regex        	.*  # Regex para inclusão de arquivos (todos)
File Exclusion Regex        	^$  # Regex para exclusão de arquivos (nenhum)
Threads                     	96  # Número de threads utilizadas
Verbosity                   	3  # Nível de detalhe do output (3 = detalhado)

Output file: 1tim_db  # Nome do arquivo de saída principal
[=================================================================] 100.00% 1 eta -  # Barra de progresso (completa)
Time for merging to 1tim_db_ss: 0h 0m 0s 4ms  # Tempo para gerar estrutura secundária
Time for merging to 1tim_db_h: 0h 0m 0s 4ms  # Tempo para gerar dados de hélices
Time for merging to 1tim_db_ca: 0h 0m 0s 4ms  # Tempo para gerar coordenadas CA
Time for merging to 1tim_db: 0h 0m 0s 4ms  # Tempo para gerar banco principal
Ignore 0 out of 2.  # Número de cadeias ignoradas (0 de 2)
Too short: 0, incorrect: 0, not proteins: 0.  # Razões para ignorar cadeias
Time for processing: 0h 0m 0s 60ms  # Tempo total de processamento

[rafaelfs@sdumont2nd5 tutorial-foldseek]$ foldseek createdb 8tim.pdb.gz 8tim_db  # Comando para segunda proteína sem utilizar GPU (para fins de teste e comparação)
createdb 8tim.pdb.gz 8tim_db  # Confirmação do comando

MMseqs Version:             	941cd33ff0771cd2e3f144e3293e22a2b87e9fda  # Mesma versão
Use GPU                     	0  # GPU não utilizada
Path to ProstT5             	   # ProstT5 não utilizado
Chain name mode             	0  # Mesmo modo de nomeação
Createdb extraction mode    	0  # Mesmo modo de extração
Interface distance threshold	8  # Mesmo limiar
Write mapping file          	0  # Sem arquivo de mapeamento
Mask b-factor threshold     	0  # Fator B desativado
Coord store mode            	2  # Mesmo modo de armazenamento
Write lookup file           	1  # Gerando lookup file
Input format                	0  # Mesmo formato de entrada
File Inclusion Regex        	.*  # Mesma regex inclusão
File Exclusion Regex        	^$  # Mesma regex exclusão
Threads                     	96  # Mesmo número de threads
Verbosity                   	3  # Mesmo nível de verbosidade

Output file: 8tim_db  # Nome do segundo banco de dados
[=================================================================] 100.00% 1 eta -  # Barra de progresso
Time for merging to 8tim_db_ss: 0h 0m 0s 4ms  # Tempo estrutura secundária
Time for merging to 8tim_db_h: 0h 0m 0s 4ms  # Tempo dados de hélices
Time for merging to 8tim_db_ca: 0h 0m 0s 4ms  # Tempo coordenadas CA
Time for merging to 8tim_db: 0h 0m 0s 3ms  # Tempo banco principal
Ignore 4 out of 6.  # 4 cadeias ignoradas de 6
Too short: 4, incorrect: 0, not proteins: 0.  # Razões (4 cadeias muito curtas)
Time for processing: 0h 0m 0s 61ms  # Tempo total

🔍 Etapa 3: Realizar a busca de similaridade estrutural

Agora, vamos comparar a estrutura de 1tim.pdb.gz contra 8tim.pdb.gz utilizando a função "easy-search". Crie um diretório temporário para armazenas dos dados durante a execução do comando "foldseek": Em seguida execute o comando com a função easy-search, indicando a pasta de arquivos temporários criada "tmp" e utilize a flag --gpu 1 para realizar os cálculos na GPU disponível:

mkdir tmp

foldseek easy-search 1tim.pdb.gz 8tim.pdb.gz result.tsv tmp --gpu 1

Será gerado o arquivo "result.tsv": Contendo os resultados da busca.

📖 Interpretação do Arquivo result.tsv

O Foldseek, por padrão, gera uma saída tabular com os seguintes campos:

query  target  fident  alnlen  mismatches  gapopens  qstart  qend  tstart  tend  evalue  bits

Em nosso exemplo ao visualizar os resultados no arquivo "result.tsv" com o comando cat, o retorno foi:

1tim_B	8tim_B	0.967	247	8	0	1	247	1	247	1.050E-43	1554
1tim_B	8tim_A	0.967	247	8	0	1	247	1	247	2.723E-42	1488
1tim_A	8tim_A	0.967	247	8	0	1	247	1	247	5.412E-43	1530
1tim_A	8tim_B	0.967	247	8	0	1	247	1	247	1.188E-42	1515

Colunas principais: fident (0.967): 96.7% de identidade estrutural - muito alta, indicando estruturas muito similares

alnlen (247): 247 resíduos alinhados (tamanho total da proteína)

evalue (1.050E-43): Valor E extremamente baixo, indica que a similaridade não é por acaso

bits (1554): Score alto, confirma a alta similaridade

O arquivo mostra 4 alinhamentos significativos entre as cadeias:

👀 Interpretação dos Campos de Resultado
Coluna Exemplo Significado
query 1tim_B Nome do modelo/entrada da estrutura de origem (arquivo 1tim.pdb, cadeia B)
target 8tim_B Nome da estrutura de destino (arquivo 8tim.pdb, cadeia B)
fident 0.967 Fração de identidade (96.7% dos resíduos são idênticos no alinhamento)
alnlen 247 Comprimento do alinhamento (número total de resíduos alinhados)
mismatches 8 Número de resíduos diferentes (substituições)
gapopens 0 Número de aberturas de gap (inserções/deleções) no alinhamento
qstart 1 Início do alinhamento na sequência da query
qend 247 Fim do alinhamento na query
tstart 1 Início do alinhamento na target
tend 247 Fim do alinhamento na target
evalue 1.050E-43 Valor-E: probabilidade de obter esse resultado por acaso (quanto menor, melhor)
bits 1554 Score em bits (quanto maior, mais significativa a similaridade)
⬇️ Arquivos de Entrada
Arquivo Descrição
1tim.pdb.gz Arquivo PDB compactado contendo a estrutura da triose-fosfato isomerase (forma 1)
8tim.pdb.gz Arquivo PDB compactado contendo a estrutura da triose-fosfato isomerase (forma 8)
⬆️ Arquivos de Saída
   Para 1tim_db 
Arquivo Descrição
1tim_db Banco de dados principal contendo informações da proteína
1tim_db.dbtype Define o tipo de banco de dados
1tim_db.index Índice para acesso rápido ao banco de dados
1tim_db.lookup Mapeamento de identificadores
1tim_db.source Informações sobre a origem dos dados
1tim_db_ca Coordenadas dos átomos de carbono alfa
1tim_db_ca.dbtype Tipo do banco de coordenadas CA
1tim_db_ca.index Índice para coordenadas CA
1tim_db_h Informações sobre hélices
1tim_db_h.dbtype Tipo do banco de hélices
1tim_db_h.index Índice para informações de hélices
1tim_db_ss Estrutura secundária
1tim_db_ss.dbtype Tipo do banco de estrutura secundária
1tim_db_ss.index Índice para estrutura secundária
  Para 8tim_db 
Arquivo Descrição
8tim_db Banco de dados principal contendo informações da proteína
8tim_db.dbtype Define o tipo de banco de dados
8tim_db.index Índice para acesso rápido ao banco de dados
8tim_db.lookup Mapeamento de identificadores
8tim_db.source Informações sobre a origem dos dados
8tim_db_ca Coordenadas dos átomos de carbono alfa
8tim_db_ca.dbtype Tipo do banco de coordenadas CA
8tim_db_ca.index Índice para coordenadas CA
8tim_db_h Informações sobre hélices
8tim_db_h.dbtype Tipo do banco de hélices
8tim_db_h.index Índice para informações de hélices
8tim_db_ss Estrutura secundária
8tim_db_ss.dbtype Tipo do banco de estrutura secundária
8tim_db_ss.index Índice para estrutura secundária

📚 Documentação Adicional

Com o módulo carregado, acesse ajuda com o comando abaixo:

  module help foldseek

--------------------------- Module Specific Help for "foldseek/10_avx2-gpu" ---------------------------

   Foldseek v10 (GPU-accelerated) 
--------------------------------------

O QUE E FOLDSEEK?
Foldseek e uma ferramenta para busca e comparacao ultra-rapida de estruturas proteicas.
Compara estruturas 3D de proteinas de forma muito mais rapida que metodos tradicionais.

PRINCIPAIS APLICACOES:
  - Identificacao de proteinas com estrutura similar
  - Analise de relacoes evolutivas
  - Predicao de funcao proteica
  - Deteccao de dobras proteicas remotamente relacionadas

CONFIGURACAO ATUAL:
  - Versao: 10 (compilada com CUDA 12.4)
  - Suporte GPU: NVIDIA (H100 compativel)
  - Otimizado para bancos de dados estruturais em larga escala

COMO USAR (EXEMPLOS PRATICOS):
  # Busca basica (CPU):
  foldseek easy-search query.pdb target.pdb resultados tmp

  # Busca acelerada por GPU (recomendado):
  foldseek easy-search queryDB targetDB resultDB tmp_dir --gpu 1

  # Criar banco de dados a partir de PDBs:
  foldseek createdb arquivo.pdb nome_banco

  # Alinhamento com visualizacao HTML:
  foldseek easy-search query.pdb target.pdb resultado.html tmp --format-mode 3 --gpu 1

OPCOES AVANCADAS:
  --gpu 1          : Ativa aceleracao GPU
  --threads N      : Controla numero de threads CPU
  --format-mode 3  : Gera saida visual em HTML

REFERENCIAS E LINKS UTEIS:
  - Repositorio Oficial: https://github.com/steineggerlab/foldseek
  - Artigo Cientifico: Nature Biotechnology (2023)
    'Fast and accurate protein structure search with Foldseek'
    Autores: van Kempen et al. DOI: 10.1038/s41587-023-01773-0

PRECISA DE AJUDA?
Execute 'foldseek --help' para ver todas as opcoes ou consulte a documentacao online.
Ou acesso nosso guia rapido no GitHub -> https://github.com/lncc-sered/manual-sdumont2nd/wiki/foldseek
--------------------------------------
⚠️ **GitHub.com Fallback** ⚠️