Desenvolvido por Rui Lima - PUC Minas
Interface web moderna e intuitiva para anotação genômica bacteriana utilizando Bakta - uma ferramenta rápida e precisa para anotação de genomas.
- Visão Geral
- Funcionalidades
- Screenshots
- Quick Start
- Instalação
- Uso
- Arquitetura
- API
- Deploy
- Troubleshooting
- Contribuição
O Bakta Flow é uma plataforma completa para anotação de genomas bacterianos, desenvolvida como projeto acadêmico da Pontifícia Universidade Católica de Minas Gerais (PUC Minas).
| Característica | Bakta | Prokka | RAST |
|---|---|---|---|
| Velocidade | 🚀 ~10x mais rápido | Moderado | Lento |
| Precisão | ⭐⭐⭐⭐⭐ Excelente | ⭐⭐⭐⭐ Boa | ⭐⭐⭐ Regular |
| Padrões | NCBI + INSDC | GenBank | Proprietário |
| Database | AMRFinder+, COG | UniProt | SEED |
| Manutenção | ✅ Ativo (2024) | ✅ Ativo |
- 🎨 Interface Web Moderna - Design responsivo com Bootstrap 5
- 📁 Upload Drag & Drop - Arraste arquivos FASTA diretamente
- 📈 Dashboard em Tempo Real - Acompanhe o progresso da anotação
- 🧬 6 Templates NCBI - Genomas de referência pré-carregados
- 📊 Visualização Circular - Representação gráfica do genoma
- 📥 Download Completo - GFF3, JSON, FAA, FFN, GenBank
- 🐳 Docker Ready - Deploy em minutos
- ⚡ Async Processing - Processamento não-bloqueante
✅ CDS (Coding Sequences) → Prodigal
✅ tRNA → tRNAscan-SE 2.0
✅ tmRNA → Aragorn 1.2
✅ rRNA → INFERNAL 1.1
✅ ncRNA → INFERNAL + Rfam
✅ CRISPR → PILER-CR
✅ oriC/oriV/oriT → DnaA-based
✅ AMR Genes → AMRFinderPlus
✅ Virulence Factors → VFDB
✅ Secondary Metabolites → antiSMASH
| Feature | Descrição |
|---|---|
| 🎨 Modern UI | Bootstrap 5 com tema PUC Minas |
| 📤 Drag & Drop | Upload intuitivo de arquivos |
| 📊 Live Progress | Barra de progresso em tempo real |
| 📋 Job History | Histórico completo de anotações |
| 🔍 Job Details | Estatísticas detalhadas por job |
| 💾 Multi-format | Download em todos os formatos |
| 📱 Responsive | Funciona em desktop, tablet e mobile |
Dashboard Principal
Lista de templates + Área de upload + Estatísticas
Progresso da Anotação
Barra de progresso em tempo real com status detalhado
Resultados
Tabela de jobs com badges de CDS, tRNAs, rRNAs + download
# 1. Clone o repositório
git clone https://github.com/seu-usuario/bakta-flow.git
cd bakta-flow/deployment
# 2. Inicie com Docker Compose
docker-compose up --build
# 3. Acesse no navegador
open http://localhost:5000# 1. Criar ambiente
conda env create -f environment.yml
conda activate bakta_env
# 2. Baixar database (apenas primeira vez, ~1.3GB)
bakta_db download --type light --output ./bakta-light
# 3. Iniciar servidor
cd backend
python app.py
# 4. Acesse
open http://localhost:5000Use esta opção para compartilhar temporariamente a aplicação via URL pública.
# 1. Com a aplicação já rodando em http://localhost:5000
ngrok http 5000
# 2. Copie a URL "https://...ngrok-free.app" exibida no terminal
# e compartilhe com quem for acessarSe o comando ngrok http 5000 não iniciar e fechar com código 1, normalmente já existe outra sessão ngrok ativa.
# Verificar túnel ativo (endpoint local do ngrok)
curl http://127.0.0.1:4040/api/tunnels
# Encerrar processos ngrok (Windows PowerShell)
taskkill /IM ngrok.exe /F
# Encerrar processos ngrok (Linux/macOS)
pkill ngrok| Componente | Mínimo | Recomendado |
|---|---|---|
| CPU | 2 cores | 4+ cores |
| RAM | 4 GB | 8+ GB |
| Disco | 5 GB | 20+ GB |
| OS | Linux/Mac/Windows | Linux Ubuntu 22.04 |
| Network | Opcional | Para download NCBI |
# Instalar Docker (Ubuntu)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Instalar Docker Compose
sudo apt install docker-compose-plugin
# Verificar instalação
docker --version
docker compose version# Download Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# Recarregar shell
source ~/.bashrc
# Verificar
conda --version# Clone
git clone https://github.com/seu-usuario/bakta-flow.git
cd bakta-flow
# Criar ambiente
conda env create -f environment.yml
conda activate bakta_env
# Verificar Bakta
bakta --version
# Baixar database
bakta_db download --type light --output ./bakta-light
# Preparar diretórios
mkdir -p resultados data/uploads
python data/download_templates.py --output data/templates --dummy- Acesse http://localhost:5000
- Escolha uma opção:
- 🧬 Selecione um template de genoma (E. coli, B. subtilis, etc.)
- 📤 Ou faça upload de seu próprio arquivo FASTA
- Configure o prefixo para os arquivos de saída (opcional)
- Clique em "Iniciar Anotação"
- Acompanhe o progresso em tempo real
- Visualize e baixe os resultados quando concluído
# Usar o pipeline diretamente
python backend/pipeline.py \
--db ./bakta-light \
--output ./resultados \
--threads 4 \
./data/templates/ecoli_k12.fasta
# Listar jobs anteriores
python backend/pipeline.py --list-jobs# Verificar status
curl http://localhost:5000/api/status
# Upload de arquivo
curl -X POST -F "[email protected]" http://localhost:5000/api/upload
# Iniciar anotação
curl -X POST \
-H "Content-Type: application/json" \
-d '{"source":"upload","filename":"20260314_235645_genome.fasta"}' \
http://localhost:5000/api/annotate┌─────────────────────────────────────────────────────────────────┐
│ CLIENTE (Browser) │
│ HTML5 + Bootstrap 5 + JavaScript (ES6+) │
└─────────────────────────────────────────────────────────────────┘
│
│ HTTP/REST
▼
┌─────────────────────────────────────────────────────────────────┐
│ SERVIDOR FLASK (Python) │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ API REST (Flask) │ Pipeline (BaktaPipeline) │ File IO │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│
│ Subprocess
▼
┌─────────────────────────────────────────────────────────────────┐
│ MOTOR BAKTA (Bioinformática) │
│ Prodigal │ tRNAscan-SE │ Aragorn │ INFERNAL │ HMMER │ Diamond │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ ARMAZENAMENTO │
│ ├─ Bakta DB (~1.3GB) → Database de anotação │
│ ├─ resultados/ → Saída das anotações │
│ ├─ data/uploads/ → Uploads de usuários │
│ └─ data/templates/ → Templates de genomas │
└─────────────────────────────────────────────────────────────────┘
📚 Veja docs/ARQUITETURA.md para detalhes completos da arquitetura.
| Endpoint | Método | Descrição |
|---|---|---|
/api/status |
GET | Health check |
/api/templates |
GET | Listar templates |
/api/upload |
POST | Upload FASTA |
/api/annotate |
POST | Iniciar anotação |
/api/jobs |
GET | Listar jobs |
/api/jobs/<id> |
GET | Detalhes do job |
/api/jobs/<id>/status |
GET | Status do job |
/api/jobs/<id>/files/<type> |
GET | Download arquivo |
/api/jobs/<id> |
DELETE | Remover job |
/api/stats |
GET | Estatísticas gerais |
📚 Veja docs/API.md para documentação completa da API.
cd deployment
docker-compose up -dcd deployment
docker-compose --profile with-nginx up -d# Exemplo AWS EC2
docker run -d \
-p 80:5000 \
-v /mnt/data/resultados:/app/resultados \
-v /mnt/data/bakta-db:/app/bakta-light \
--name puc-bakta \
pucminas/bakta:latest📚 Veja docs/DEPLOY.md para guia completo de deploy.
| Organismo | Acesso NCBI | Tamanho |
|---|---|---|
| Escherichia coli K-12 | NC_000913.3 | ~4.6 Mb |
| Bacillus subtilis 168 | NC_000964.3 | ~4.2 Mb |
| Staphylococcus aureus | NC_007795.1 | ~2.8 Mb |
| Pseudomonas aeruginosa | NC_002516.2 | ~6.3 Mb |
| Salmonella enterica | NC_003198.1 | ~4.9 Mb |
| pUC19 Plasmid | L09137.1 | ~2.7 Kb |
# Solução: Baixar database
bakta_db download --type light --output ./bakta-light# Solução: Corrigir permissões
sudo chown -R $USER:$USER resultados/ data/# Solução: Usar porta diferente
FLASK_RUN_PORT=8080 python backend/app.py# Solução: Aumentar memória do Docker
# Editar docker-compose.yml:
deploy:
resources:
limits:
memory: 16G📚 Veja docs/DEPLOY.md#troubleshooting para soluções detalhadas.
Bakta/
├── backend/ # API Flask
│ ├── app.py # Servidor web
│ └── pipeline.py # Lógica Bakta
├── frontend/ # Interface web
│ ├── index.html
│ └── static/
│ ├── app.js
│ └── styles.css
├── data/ # Dados
│ ├── download_templates.py
│ ├── templates/ # Templates FASTA
│ └── uploads/ # Uploads de usuários
├── deployment/ # Docker
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── entrypoint.sh
├── docs/ # Documentação
│ ├── ARQUITETURA.md
│ ├── API.md
│ └── DEPLOY.md
├── resultados/ # Saída das anotações
├── environment.yml # Conda environment
└── README.md # Este arquivo
Contribuições são bem-vindas! Siga os passos:
- Fork o projeto
- Crie uma branch (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -am 'Add nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
- 📝 Siga o estilo de código PEP 8
- 🧪 Adicione testes para novas features
- 📚 Atualize a documentação
- 🐛 Reporte bugs via Issues
Se você usar este projeto em sua pesquisa, por favor cite:
Este projeto foi desenvolvido por Rui Lima como trabalho da disciplina Algoritmos de Bioinformática do curso de Pós-Graduação da PUC Minas.
@article{schwengers2021bakta,
title={Bakta: rapid and standardized annotation of bacterial genomes via alignment-free sequence identification},
author={Schwengers, Oliver and Jelonek, Lukas and Dieckmann, Marius Alan and Beyvers, Sebastian and Blom, Jochen and Goesmann, Alexander},
journal={Microbial Genomics},
volume={7},
number={11},
pages={000685},
year={2021},
publisher={Microbiology Society}
}Este projeto é licenciado sob GPLv3 - veja o arquivo LICENSE para detalhes.
O Bakta original também é licenciado sob GPLv3.
PUC Minas - Pontifícia Universidade Católica de Minas Gerais
Pós-Graduação | Disciplina: Algoritmos de Bioinformática
Desenvolvido por Rui Lima como projeto acadêmico para anotação genômica bacteriana
Feito com ❤️ em Belo Horizonte, Brasil
2026 - PUC Minas