Pular para o conteúdo

// pipeline de dados · API pública · em produção

Astraea

Pipeline de monitoramento de objetos próximos à Terra e eventos solares: ingestão das APIs da NASA, transformação com dbt Core, API pública REST e um modelo que estima a probabilidade de um asteroide ter a flag de PHA da NASA.

…Aproximações registradas
…Aproximações com flag PHA
…Eventos solares

Problema

O Astraea junta dados públicos da NASA sobre asteroides próximos à Terra e eventos solares em um pipeline, e os expõe numa API pública. Sobre esses dados há um modelo de machine learning, e foi ele que precisou ser refeito.

A versão anterior (1.0.0) previa o risk_label, que é calculado por regra sobre as mesmas colunas que o modelo recebia. A acurácia alta só mostrava que ele tinha reaprendido a regra. O alvo agora é a flag is_potentially_hazardous da NASA, usando só velocidade relativa, distância de aproximação em distâncias lunares e magnitude H, sem a flag como entrada (3 variáveis).

Dados

A ingestão é diária, via NASA NeoWs e DONKI. A transformação usa dbt Core em camadas staging e mart, e o PostgreSQL é o armazenamento central.

Decisões

O risco exibido é uma regra, não o modelo

O risco exibido é o risk_score por regra, uma heurística própria com limiares escolhidos por mim (20 km/s, 1.000.000 km, 0,5 km), e não uma metodologia da NASA. A pontuação soma 3 pontos se o asteroide é PHA, 2 se a velocidade passa de 20 km/s, 2 se a distância fica abaixo de 1.000.000 km e 1 se o diâmetro passa de 0,5 km. Com 6 pontos ou mais o risco é alto; com 3 ou mais, médio.

API

9 endpoints: 7 de dados com prefixo /v1, mais / e /health. Limite de 60 requisições por minuto por IP. Documentação em astraea-api.alexarnoni.com/docs.

Resultado

Stack e links

Python FastAPI dbt Core scikit-learn PostgreSQL Docker Nginx Oracle VM NASA APIs