O núcleo computacional por trás do sistema de defesa planetária AstroView.
Uma API de alta performance que integra modelos físicos de impacto, análise geoespacial de risco e inteligência artificial generativa.
A AstroView API é o "cérebro" da plataforma. Desenvolvida em FastAPI, ela é responsável por orquestrar simulações complexas de impacto de asteroides em tempo real. O sistema combina equações físicas validadas (Modelo PAIR) com aprendizado de máquina para prever riscos e utiliza LLMs (Google Gemini) para traduzir dados técnicos em relatórios de emergência compreensíveis.
- Motor de Física: Calcula energia cinética (Megatons), crateras e ondas de choque baseando-se em densidade, velocidade e ângulo.
- Inteligência Artificial: Integração com Google Gemini 2.0 Flash para gerar briefings de emergência e atuar como assistente virtual.
- Análise Geoespacial: Processamento de dados raster (
.tif) para estimar população afetada e impacto econômico no local da colisão. - ML Pipeline: Download automático e execução de modelos
.pklpara classificação de Asteroides Potencialmente Perigosos (PHAs).
- Módulo:
app/services/simulation_engine.py - Implementa o cálculo de Airburst vs Impacto no Solo.
- Calcula raios de dano térmico e sobrepressão (blast).
- Segurança: Regra híbrida que combina predição de ML com verificação física (limiar de 500 MT).
- Módulo:
app/services/llm_services.py - Gera relatórios de risco estruturados (Resumo, Análise Humana, Recomendações).
- Endpoint de Chatbot (
/ask-agent) contextualizado com os dados da simulação atual.
- Módulo:
app/services/geo_analysis.py - Utiliza
RasterioeGeoPandaspara cruzar o raio de impacto com mapas de densidade populacional. - Estima prejuízos financeiros baseados na população atingida.
- Python 3.10 ou superior
- Chave de API do Google (Gemini)
-
Clone o repositório
git clone [https://github.com/julianaivo/trifidia-squad-nasa-backend.git](https://github.com/julianaivo/trifidia-squad-nasa-backend.git) cd trifidia-squad-nasa-backend -
Crie o Ambiente Virtual
python -m venv venv # Windows .\venv\Scripts\activate # Linux/Mac source venv/bin/activate
-
Instale as Dependências
pip install -r requirements.txt
-
Configure as Variáveis de Ambiente Crie um arquivo
.envna raiz do projeto:GOOGLE_API_KEY="sua_chave_api_google_aqui"
-
Dados de População O sistema espera um arquivo de dados populacionais. Certifique-se de que o arquivo existe em:
data/population/data.tif -
Execute o Servidor O sistema baixará automaticamente o modelo de ML do Google Drive na primeira execução.
python main.py # Ou via uvicorn diretamente # uvicorn main:app --reload
A documentação interativa (Swagger UI) está disponível em http://localhost:8000/docs.
POST /api/v1/simulate
Calcula os danos físicos e gera o relatório de IA.
Input Exemplo:
{
"diameter_km": 0.4,
"velocity_km_s": 25,
"impact_angle": 45,
"impact_lat": -10.9,
"impact_lng": -37.0,
"asteroid_type": "Crystalline Rock"
}POST /api/v1/ask-agent
Permite conversar com a IA sobre os resultados da simulação.
Input Exemplo:
{
"question": "Quais seriam os efeitos de longo prazo deste impacto?",
"context": { ... dados da simulação ... }
}trifidia-squad-nasa-backend/
├── app/
│ ├── api/
│ │ └── endpoints/ # Rotas (simulation.py)
│ ├── core/
│ │ ├── config.py # Configurações e .env
│ │ └── constants.py # Constantes físicas e cenários
│ ├── models/ # Schemas Pydantic (Input/Output)
│ └── services/
│ ├── simulation_engine.py # Física e ML
│ ├── llm_services.py # Integração Google Gemini
│ └── geo_analysis.py # Análise de População/Raster
├── ml_models/ # Modelos .pkl (baixados automaticamente)
├── data/ # Dados geoespaciais (.tif)
├── main.py # Entrypoint da aplicação
├── requirements.txt # Dependências do Python
└── .env # Variáveis sensíveisContribuições são bem-vindas! Se você tem melhorias para o modelo físico ou novos prompts para a IA:
- Faça um Fork do projeto
- Crie sua Feature Branch (
git checkout -b feature/MelhoriaFisica) - Commit suas mudanças (
git commit -m 'Add: Cálculo de Tsunami') - Push para a Branch (
git push origin feature/MelhoriaFisica) - Abra um Pull Request
© 2025 Team Trifidia Squad | NASA Space Apps Challenge