Um programa eficiente escrito em C++ moderno (C++17) capaz de identificar a qual perfil pertence uma sequência de DNA desconhecida.
O programa analisa a sequência de DNA informada buscando pela maior quantidade de repetições consecutivas (STRs - Short Tandem Repeats) de determinadas bases nitrogenadas. Em seguida, ele cruza esses dados com um banco de dados de perfis genéticos em formato CSV para encontrar a correspondência exata.
- Processamento Eficiente: Leitura de arquivos e contagem de repetições otimizadas utilizando C++ moderno (recursos como
std::paire Structured Bindings). - Arquitetura Orientada a Objetos: Código modular, organizado e de fácil manutenção.
- Busca Rápida: Utiliza
std::mappara armazenar e consultar perfis de DNA de forma eficiente. - Interface CLI Amigável: Feedback visual no terminal com cores e barra de carregamento.
- Segurança: Tratamento de erros para arquivos ausentes ou formatações corrompidas.
Para compilar e executar este projeto, você precisará de:
- Um compilador C++ compatível com a norma C++17 (como
g++ouclang++). - Ferramenta
makepara utilizar o Makefile incluído.
O projeto acompanha um Makefile já configurado. Para compilar o programa, abra o terminal na pasta raiz do projeto e execute:
makeIsso irá gerar o executável dnaprofiler.
Caso queira remover os arquivos de compilação (.o) e o executável:
make cleanO programa funciona via linha de comando e exige dois argumentos:
-d: caminho para o banco de dados (.csv)-s: caminho para a sequência de DNA (.txt)
./dnaprofiler -d <caminho_para_o_csv> -s <caminho_para_a_sequencia_txt>./dnaprofiler -d data/database.csv -s data/sequence.txtWelcome to the C++ DNA Profiler, v1.0
Copyright (C) 2026, Hugo Araujo
This program loads a DNA database and an unknown DNA sequence and tries
to find a match between the input DNA sequence and the DNA database.
[+] Loading DNA database file [data/database.csv] ... [OK]
[+] Loading unknown DNA sequence file [data/sequence.txt] ... [OK]
[+] Searching the database for a match... Please wait.
[==============================================================================] 100 %
Match ID (99.9%): Alice
Caso não encontre nenhum perfil, o programa exibirá:
Sorry, no match found in our database.
main.cpp: ponto de entrada da aplicação.- Database (
Database.cpp/Database.h): carrega o CSV, valida os dados e realiza a busca. - Dna (
Dna.cpp/Dna.h): processa a sequência de DNA e calcula as repetições máximas dos STRs. - Output (
Output.cpp/Output.h): responsável pela interface no terminal (cores ANSI, menus e mensagens).
Desenvolvido por Hugo Araujo (2026).
GitHub: https://github.com/MrHuguitos