Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧬 C++ DNA Profiler

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.

✨ Funcionalidades

  • Processamento Eficiente: Leitura de arquivos e contagem de repetições otimizadas utilizando C++ moderno (recursos como std::pair e Structured Bindings).
  • Arquitetura Orientada a Objetos: Código modular, organizado e de fácil manutenção.
  • Busca Rápida: Utiliza std::map para 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.

🛠️ Pré-requisitos

Para compilar e executar este projeto, você precisará de:

  • Um compilador C++ compatível com a norma C++17 (como g++ ou clang++).
  • Ferramenta make para utilizar o Makefile incluído.

🚀 Como Compilar

O projeto acompanha um Makefile já configurado. Para compilar o programa, abra o terminal na pasta raiz do projeto e execute:

make

Isso irá gerar o executável dnaprofiler.

Caso queira remover os arquivos de compilação (.o) e o executável:

make clean

💻 Como Usar

O 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)

Sintaxe

./dnaprofiler -d <caminho_para_o_csv> -s <caminho_para_a_sequencia_txt>

Exemplo

./dnaprofiler -d data/database.csv -s data/sequence.txt

Exemplo de Saída

Welcome 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.

🏗️ Estrutura do Projeto

  • 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).

👨‍💻 Autor

Desenvolvido por Hugo Araujo (2026).

GitHub: https://github.com/MrHuguitos

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages