Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

☄️ AstroView API - Backend & Simulation Engine

AstroView Backend Banner

NASA Space Apps Challenge 2025 FastAPI Python Google Gemini

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.

🚀 Live API · 📖 Documentação · 🐛 Reportar Bug


🌟 Visão Geral

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.

🎯 Principais Responsabilidades

  1. Motor de Física: Calcula energia cinética (Megatons), crateras e ondas de choque baseando-se em densidade, velocidade e ângulo.
  2. Inteligência Artificial: Integração com Google Gemini 2.0 Flash para gerar briefings de emergência e atuar como assistente virtual.
  3. Análise Geoespacial: Processamento de dados raster (.tif) para estimar população afetada e impacto econômico no local da colisão.
  4. ML Pipeline: Download automático e execução de modelos .pkl para classificação de Asteroides Potencialmente Perigosos (PHAs).

Funcionalidades Chave

💥 Simulação de Impacto (Physics Engine)

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

🤖 Assistente de Defesa Planetária (IA)

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

🌍 Inteligência Geográfica

  • Módulo: app/services/geo_analysis.py
  • Utiliza Rasterio e GeoPandas para cruzar o raio de impacto com mapas de densidade populacional.
  • Estima prejuízos financeiros baseados na população atingida.

🛠️ Tech Stack

Framework Data Science Geo Spatial AI & ML
FastAPI Pandas Rasterio Gemini
Uvicorn NumPy Shapely Scikit-Learn

🚀 Instalação e Configuração

Pré-requisitos

  • Python 3.10 ou superior
  • Chave de API do Google (Gemini)

Passo a Passo

  1. 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
    
    
  2. Crie o Ambiente Virtual

    python -m venv venv
    # Windows
    .\venv\Scripts\activate
    # Linux/Mac
    source venv/bin/activate
  3. Instale as Dependências

    pip install -r requirements.txt
  4. Configure as Variáveis de Ambiente Crie um arquivo .env na raiz do projeto:

    GOOGLE_API_KEY="sua_chave_api_google_aqui"
  5. Dados de População O sistema espera um arquivo de dados populacionais. Certifique-se de que o arquivo existe em: data/population/data.tif

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

🔌 Endpoints da API

A documentação interativa (Swagger UI) está disponível em http://localhost:8000/docs.

1. Executar Simulação

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"
}

2. Chat com Agente

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

📂 Estrutura do Projeto

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íveis

🤝 Contribuindo

Contribuições são bem-vindas! Se você tem melhorias para o modelo físico ou novos prompts para a IA:

  1. Faça um Fork do projeto
  2. Crie sua Feature Branch (git checkout -b feature/MelhoriaFisica)
  3. Commit suas mudanças (git commit -m 'Add: Cálculo de Tsunami')
  4. Push para a Branch (git push origin feature/MelhoriaFisica)
  5. Abra um Pull Request

© 2025 Team Trifidia Squad | NASA Space Apps Challenge

About

AstroView API, uma API feita para o Hackthon da NASA. Com foco em escalabilidade e consumir um modelo de Machine Learning que prever o impacto do Asteroid em determinado local.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages