Um analisador completo de arquivos FASTA desenvolvido em Java que implementa as principais funcionalidades de bioinformática para análise de sequências de DNA.
-
📏 Estatísticas Básicas da Sequência
- Tamanho total da sequência
- Contagem de nucleotídeos (A, T, C, G, N)
- GC Content (percentual de Guanina + Citosina)
- Frequência relativa de cada nucleotídeo
-
🔍 Validação e Limpeza de Dados
- Detecção de caracteres inválidos
- Identificação de nucleotídeos ambíguos (N, R, Y, S, W, K, M, B, D, H, V)
- Limpeza automática da sequência
- Relatório de qualidade dos dados
-
🧬 Tradução DNA → Proteína
- Tabela completa de códons genéticos
- Tradução em múltiplos frames de leitura
- Análise de aminoácidos resultantes
- Identificação de códons de parada
-
🧭 Busca por Padrões (Motifs)
- Start codons (ATG)
- Stop codons (TAA, TAG, TGA)
- Regiões promotoras (TATA box, CAAT box, GC box)
- Sites de restrição (EcoRI, BamHI, HindIII, NotI)
- Busca customizada de qualquer motif
-
🧪 Detecção de ORFs (Open Reading Frames)
- Análise nos 6 frames de leitura (3 positivos, 3 negativos)
- Configuração de tamanho mínimo de ORF
- Identificação de ORFs completos e incompletos
- Tradução automática para proteínas
-
📊 Análise de Distribuição (Sliding Window)
- GC content por região
- Identificação de hotspots de mutação
- Análise de estabilidade genômica
- Detecção de regiões de interesse
-
🧬 Detecção de Mutações
- Identificação de SNPs (Single Nucleotide Polymorphisms)
- Detecção de inserções e deleções
- Comparação entre sequências
- Análise de padrões de mutação
-
📈 Exportação de Resultados
- Exportação CSV para análise em planilhas
- Exportação JSON para integração com sistemas
- Relatório detalhado em formato texto
- Métricas consolidadas
- Java 17 ou superior
- Maven 3.6 ou superior
# Clone o repositório
git clone <repositorio-do-projeto>
cd leitor-de-fasta
# Compile o projeto
mvn compile
# Execute a análise
mvn exec:java -Dexec.mainClass="br.com.webmatte.App"java -cp "target/classes;dependencias/*" br.com.webmatte.analyzer.FastaAnalyzerO programa apresentará um menu com as seguintes opções:
- Listar sequências carregadas
- Analisar todas as sequências
- Analisar sequência específica
- Comparar duas sequências
- Exportar métricas
- Sair
# Análise completa
java -cp "target/classes;dependencias/*" br.com.webmatte.analyzer.FastaAnalyzer arquivo.fasta --all
# Análise com exportação
java -cp "target/classes;dependencias/*" br.com.webmatte.analyzer.FastaAnalyzer arquivo.fasta --all resultados// Para uso programático
FastaAnalyzer analyzer = new FastaAnalyzer();
analyzer.loadFromFile("arquivo.fasta");
analyzer.analyzeAll();
analyzer.exportMetrics("resultados");src/main/java/br/com/webmatte/
├── App.java # Ponto de entrada principal
├── FastaAnalyzer.java # Classe principal orquestradora
├── SequenceStats.java # Estatísticas básicas
├── SequenceValidator.java # Validação e limpeza
├── ProteinTranslator.java # Tradução DNA→Proteína
├── MotifFinder.java # Busca de padrões
├── ORFDetector.java # Detecção de ORFs
├── SlidingWindowAnalyzer.java # Análise por janelas
├── MutationDetector.java # Detecção de mutações
└── MetricsExporter.java # Exportação de resultados
Sequence_ID,Length,A_Count,T_Count,C_Count,G_Count,N_Count,GC_Content,ORF_Count,Start_Codon_Count,Stop_Codon_Count,Avg_Protein_Length,Mutation_Count,Ambiguous_Percentage
NG_005905.2,193689,53732,52696,43262,43999,0,45.05,61,2890,9339,140.2,0,0.00{
"analysis_date": "2026-03-23",
"total_sequences": 1,
"sequences": [
{
"sequence_id": "NG_005905.2",
"length": 193689,
"nucleotide_counts": {
"A": 53732, "T": 52696, "C": 43262, "G": 43999, "N": 0
},
"gc_content": 45.05,
"orf_count": 61,
"start_codon_count": 2890,
"stop_codon_count": 9339,
"avg_protein_length": 140.2
}
],
"global_statistics": {
"average_length": 193689.0,
"average_gc_content": 45.05,
"total_orfs": 61,
"total_mutations": 0
}
}>NG_005905.2 Homo sapiens BRCA1 DNA repair associated
ATGGATTTATCTGCTCTTCGCGTTGAAGAAGTACAAAATGTCATTAATGCTATGC...
=== ESTATÍSTICAS BÁSICAS DA SEQUÊNCIA ===
Sequence ID: NG_005905.2
Length: 193689
Contagem de Nucleotídeos:
A: 53732
T: 52696
C: 43262
G: 43999
N (ambíguos): 0
GC Content: 45.0%
=== DETECÇÃO DE ORFs ===
Total de ORFs encontrados: 61
Maiores ORFs:
ORF POSITIVE_3: posição 123341-126652 (3312 nt, 1104 aa) [completo]
ORF NEGATIVE_2: posição 72449-73027 (579 nt, 193 aa) [completo]
- Tamanho mínimo de ORF: Padrão 300 nucleotídeos (100 aminoácidos)
- Tamanho da janela Sliding Window: Padrão 500 nucleotídeos
- Tamanho do passo: Padrão 100 nucleotídeos
- Thresholds de GC Content: Alto >60%, Baixo <30%
// Configurar tamanho mínimo de ORF
ORFDetector orfDetector = new ORFDetector(sequence, 600); // 600 nucleotídeos
// Configurar sliding window
SlidingWindowAnalyzer windowAnalyzer = new SlidingWindowAnalyzer(sequence, 1000, 200);Percentual de Guanina e Citosina na sequência. Importante para:
- Estabilidade do DNA
- Características do organismo
- Regiões codificantes
Região que pode ser traduzida em proteína:
- Começa com códon de iniciação (ATG)
- Termina com códon de parada (TAA, TAG, TGA)
- Múltiplos frames de leitura
Padrões de sequência com função biológica:
- ATG: Start codon
- TATAAA: TATA box (promotor)
- GAATTC: Site de restrição EcoRI
-
Arquivo não encontrado
FileNotFoundException: arquivo.fastaSolução: Verifique o caminho do arquivo e use caminhos absolutos se necessário.
-
Memória insuficiente
OutOfMemoryError: Java heap spaceSolução: Aumente a memória JVM:
java -Xmx4g -cp "target/classes;dependencias/*" br.com.webmatte.analyzer.FastaAnalyzer -
Sequência muito grande Para arquivos >100MB, considere processar em partes ou aumentar o tamanho da janela.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto está licenciado sob a MIT License - veja o arquivo LICENSE para detalhes.
- Pequenas sequências (<10KB): <1 segundo
- Sequências médias (10KB-1MB): 1-10 segundos
- Grandes genomas (>1MB): 10-60 segundos
- Base: ~50MB
- Por 100KB de sequência: +10MB
- Sliding Window: +20-50MB dependendo do tamanho
Desenvolvido para análise profissional de dados genômicos 🧬✨