Skip to content

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧬 InSilicGenesis

InSilicGenesis é um projeto acadêmico full stack para simular organismos artificiais a partir de sequências sintéticas de DNA. O sistema combina conceitos de biologia molecular, bioinformática e evolução computacional para gerar organismos, analisar padrões genéticos, identificar traits e calcular fitness.

A aplicação é composta por uma API REST em Java/Spring Boot, um frontend em Next.js/React e um ambiente Docker com MySQL para persistência.


✨ O que o projeto faz

  • Gera organismos com sequências de DNA personalizadas ou aleatórias.
  • Analisa genomas com base em motifs e padrões sobrepostos.
  • Identifica traits associadas a esses padrões.
  • Calcula um score de fitness evolutivo.
  • Aplica mutações estocásticas e recalcula a análise.
  • Mantém histórico de organismos com filtros e paginação.
  • Expõe a API com documentação automática via Swagger/OpenAPI.

🧠 Como o sistema funciona

O motor de simulação lê uma sequência composta por A, T, C e G e percorre a cadeia com uma janela deslizante de 1 base, gerando substrings sobrepostas de tamanho 2, 4, 8, 12 e 16.

A regra de ativação segue a prioridade:

  • 16 bases
  • 12 bases
  • 8 bases
  • 4 bases
  • 2 bases

Ou seja, a primeira correspondência encontrada tem prioridade, seguindo a lógica de “first match wins”.

Entendendo o conceito sem conhecer genética

Para quem não conhece biologia molecular, a ideia pode ser resumida assim:

  • O DNA funciona como um manual de instruções do organismo.
  • Um motif é uma palavra ou frase desse manual que pode indicar uma função especial.
  • Uma trait é a característica ou comportamento que esse padrão ativa no organismo simulado.
  • O fitness é uma nota de desempenho: o quão bem o organismo se adapta ao ambiente simulado.
  • O RNA representa uma cópia dessas instruções, usada para mostrar como a informação genética é processada no sistema.

Motifs, traits e fitness

  • Motif: padrão de sequência detectado no DNA.
  • Trait: efeito associado ao motif, como uma característica funcional ou fenotípica.
  • Fitness: soma dos scores das traits ativadas; valores positivos aumentam o desempenho, enquanto valores negativos representam instabilidade, degradação ou colapso.

Regras biológicas respeitadas

Mesmo sendo uma simulação simplificada, o projeto preserva regras básicas da biologia molecular:

  • DNA: apenas A, T, C e G; pareamento A-T e C-G.
  • RNA mensageiro: transcrição A-U, T-A, C-G e G-C.
  • RNA transportador: complementação A-U, U-A, C-G e G-C.
  • Validação das sequências no modelo Organism para garantir consistência.

Traits suportadas

A base de regras do projeto considera traits mapeadas em MotifDatabase e no enum Trait, organizadas por categorias:

  • Comuns (2 bases): Cellular Agility, Structural Stability, Metabolic Adaptability, Energy Efficiency, Resource Recycling, Environmental Sensing e Replication Instability.
  • Intermediários (4 bases): Cellular Exploration, Homeostasis, Phenotypic Plasticity, Energy Optimization, Systemic Balance, Biochemical Synergy, Cellular Communication e Metabolic Disorganization.
  • Raros (8 bases): Tissue Regeneration, Dual Functional Efficiency, Optimized Metabolism, Mutation Resistance, Cellular Error Evasion, Multi-System Coordination, Genomic Fragility, Metabolic Conflict, Regulatory Disruption e Signal Interference.
  • Épicos (12 bases): Energy Self Sufficiency, Functional Amplification, Error Resistance, Continuous Adaptation, Advanced Homeostasis, Functional Degradation, Repetitive Sequence Stress e Overexpression Strain.
  • Lendários (16 bases): Systemic Regeneration, Extreme Resilience, Stable Accelerated Evolution, Absolute Genomic Stability, Systemic Harmonization, Replication Collapse, Genomic Repetition Fatigue, Coding Region Instability, Periodic Expression Instability e Regulatory Element Collision.

🧪 Indução de mutação espontânea

A aplicação também oferece uma funcionalidade de mutação espontânea, acessada pelo modal de mutação na interface. Essa ação simula uma alteração estocástica no genoma e recalcula o estado do organismo.

O fluxo é:

  1. O sistema recupera o organismo atual.
  2. Uma nova sequência de DNA é gerada com alterações aleatórias.
  3. O backend recalcula RNAs, motifs, traits e fitness.
  4. A interface atualiza o novo estado do organismo.

Essa funcionalidade demonstra a dinâmica evolutiva do projeto: organismos podem ganhar ou perder vantagens conforme o genoma é alterado.


🏗️ Arquitetura

A aplicação segue uma arquitetura full stack com separação clara de responsabilidades:

  • Frontend: interface web para criar, visualizar e interagir com organismos.
  • Backend: API REST com controllers, services, DTOs, repositories e modelos de domínio.
  • Banco de dados: MySQL para persistência de organismos, ocorrências e histórico.

Fluxo principal:

  1. O usuário cria ou gera um organismo.
  2. O backend valida e persiste o registro.
  3. O motor genético analisa a sequência.
  4. Traits e fitness são recalculados.
  5. O resultado é retornado ao frontend ou disponibilizado pela API.

Camadas principais do backend

  • Controller: recebe requisições HTTP e delega operações ao service.
  • Service: centraliza regras de negócio, análise genética, mutação e histórico.
  • Mapper: converte entidades em DTOs para resposta da API.
  • Repositories: encapsulam acesso ao banco de dados.
  • Serviços auxiliares: MotifDetectionService e FitnessService complementam o fluxo de análise.

🧰 Stack tecnológica

Backend

Tecnologia Uso
Java 25 Linguagem principal
Spring Boot 4.0.7 Framework backend
Spring Web MVC API REST
Spring Data JPA Persistência
Hibernate ORM
MySQL Connector Conexão com MySQL
Validation Validação de entrada
Lombok Redução de boilerplate
SpringDoc OpenAPI Documentação Swagger
Maven Build e dependências

Frontend

Tecnologia Uso
React 19 Biblioteca para interfaces
Next.js 16.2.10 Framework web
TypeScript Tipagem estática
Tailwind CSS v4 Estilização
Framer Motion Animações
shadcn/ui Componentes visuais
Axios Comunicação com a API

Infraestrutura

Tecnologia Uso
Docker Containerização
Docker Compose Orquestração de serviços
MySQL 9.7.1 Banco relacional

📂 Estrutura do repositório

InSilicGenesis/
├── Backend/
│   ├── src/main/java/
│   │   ├── controller/
│   │   ├── service/
│   │   ├── repository/
│   │   ├── dto/
│   │   ├── model/
│   │   └── util/
│   └── pom.xml
├── Frontend/
│   ├── app/
│   ├── components/
│   ├── lib/
│   └── package.json
├── docker-compose.yml
└── README.MD

🚀 Como executar o projeto

1. Clone o repositório

git clone https://github.com/Skrewed/InSilicGenesis.git
cd InSilicGenesis

2. Suba a infraestrutura

docker compose up --build -d

3. Acesse os serviços

4. Acompanhe os logs

docker compose logs -f backend
docker compose logs -f frontend
docker compose logs -f mysql

🔌 Endpoints principais da API

Método Endpoint Finalidade
GET /api/health Verifica o status da API
POST /api/organisms Cria um organismo com DNA personalizado
POST /api/organisms/random Gera e analisa um organismo com genoma aleatório
GET /api/organisms Lista todos os organismos cadastrados
GET /api/organisms/{id} Busca um organismo específico por ID
GET /api/organisms/{id}/traits Lista as traits detectadas
GET /api/organisms/{id}/analysis Retorna a análise genética completa
PUT /api/organisms/{id}/mutate Aplica uma mutação ao genoma
DELETE /api/organisms/{id} Remove um organismo
GET /api/organisms/history Histórico paginado com filtros

🗄️ Banco de dados

Configurações padrão do ambiente Docker:

  • Host: localhost
  • Porta: 3306
  • Banco: inSilicGenesis
  • Usuário: admin
  • Senha: insilicgen

🎯 Objetivo acadêmico

Este projeto foi desenvolvido como uma aplicação de referência para explorar princípios de:

  • engenharia de software full stack;
  • API REST e documentação automática;
  • persistência relacional;
  • simulação genética computacional;
  • visualização de dados evolutivos em interface web.

Além disso, ele atende à proposta da atividade ao demonstrar um sistema completo com frontend, backend, banco de dados, integração entre camadas, CRUD, documentação técnica e instruções de execução.

About

Proojeto acadêmico full stack para simular organismos artificiais a partir de sequências sintéticas de DNA.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages