# about.md
# Projet Python avancé
> Antonin Blin, lead dev
> Brendan Poirier, dev
> Charles Paulas Victor, Data Scientist
## Source des données du catalogue Messier
https://www.datastro.eu/explore/dataset/catalogue-de-messier/table/?disjunctive.objet&disjunctive.mag&disjunctive.english_name_nom_en_anglais&disjunctive.french_name_nom_francais&disjunctive.latin_name_nom_latin&sort=-annee
*Description*:
110 lignes x 14 colonnes
Nom des colonnes:
- Messier (nomenclateur de Messier)
- NGC (https://fr.wikipedia.org/wiki/New_General_Catalogue)
- Object type / Type d'objet
- Season / Saison
- Magnitude (https://www.futura-sciences.com/sciences/definitions/univers-magnitude-6/)
- Size / Dimensions (https://fr.wikipedia.org/wiki/Taille_apparente)
- Distance (l.y / a. l.)
- RA (Right Ascension) (https://fr.wikipedia.org/wiki/Ascension_droite)
- Dec (Declinaison) https://fr.wikipedia.org/wiki/D%C3%A9clinaison_(astronomie)
- Constellation (EN)
- Constellation (FR)
- Constellation (Latin)
- Discoverer / Découvreur
- Year / Année
- Image
## Features
### Version minimale (1)
- Start
- Stop
- Gracefull shutdown (Attention à bien kill les processes en cas d'erreur de connection Mongo)
- Lecture d'objet céleste
- Quelques routes sans filtrage (saison, magnitude, etc.)
- GET only
- Population de la base au préalableion pour aider à l'écriture des route
- Indiquer les marges d'erreurs pour chaque colonne au max
- Donner une métrique de complétude pour chaque colonne
- Gestion du cache
### Version idéale (2)
- Schéma des tables plus complexes (plusieurs tables)
- Action
- GET avec filtrage
- POST
- UPDATE
- DELETE
- Ajout de galaxie
- Test unitaire sur :
- API
- CRUD
## Vision de la stack :
- Antonin :
- BDD : Postgre (+ SQLAlchemy) / Mongo (à voir avec les données)
- API : Flask
- Tests : pytest / unittest
- Charles :
- BDD : Postgre / Mongodb / Tinydb (https://tinydb.readthedocs.io/en/latest/index.html)
- ORM : SQLAlchemy/Jardin/Pymongo
- API : FastAPI ou Flask
- Test unitaire : pytest
- Brendan :
- BDD : PostgreSQL (Perso je vois pas l'interet d'un Mongo ici)
- API : Flask / FastAPI
- Test unitaire : je fais pas de tests ._.
### Routes
#### GET /catalog
**Description :** Get the list of all galaxies and star clusters.
**Parameters :** page=1, limit=10, season=null
#### GET /catalog/{id}
**Description :** Get a specific astronomic element by it's id
#### POST /catalog/add
**Description :** Insert an entry
#### GET /discoverers
**Description :** Get the list of all discoverers : Messier, Bévis, Bode, ...
**Parameters :** page=1, limit=10
#### GET /discoverers/{id}
**Description :** Get information about the discoverer
## Déploiement
- Google Cloud Run : https://alexolivier.me/posts/deploy-container-stateless-cheap-google-cloud-run-serverless
- Heroku
- Netlify
---
# Meta data
- Biography data for 'Decouvreur' on Wikipedia
- Marge d'erreur par colonne : http://messier.obspm.fr/xtra/supp/m_NED.html#m50
- A scraper : http://ned.ipac.caltech.edu/cgi-bin/objsearch?search_type=Obj_id&objid=259433&objname=1&img_stamp=YES&hconst=73.0&omegam=0.27&omegav=0.73&corr_z=1#ObjNo1
- Redshift pour les galaxies du catalogue de Messier : http://messier.obspm.fr/xtra/supp/redshift.html
- PDF Catalogue de Messier :
http://www.faaq.org/clubs/straymond/docs/messier.pdf
- API SIMBAD : http://simbad.u-strasbg.fr/guide/simbad.htx
- Images célestes NASA : https://www.nasa.gov/content/goddard/hubble-s-messier-catalog
- Events astonomie : https://ipgeolocation.io/documentation/astronomy-api.html
---
## Modèle relationnel de la base de données
Ce modèle décrit les champs de la base de données
**Les clés primaires sont en gras**
*Les clés étrangères sont en italique*
#### Table : object
- **id**
- messier (M61, ...)
- ngc (NGC 9176)
- magnitude
- size
- *season_id*
- *object_type_id*
- *discoverer_id*
#### Table : object_type
- **id**
- type (Nebula, Open Cluster, ...)
#### Table : season
- **id**
- name (Winter, Summer, Autumn, ...)
#### Table : discoverer
- **id**
- firstname
- lastname
- biography