.. _euclid:
Spécificités Euclid
###################
.. contents:: Table des matières
..
1 Developers' Workshops
2 Librairies EDEN
3 Git et GitLab
Le `consortium Euclid `_ a mis en place un
référentiel de développement propre, :abbr:`EDEN (Euclid Development
ENvironment)`, visant à standardiser les formats utilisés, les règles
de codage en vigueur, les outils accessibles aux développeurs, etc.,
dans le cadre du :abbr:`SGS (Science Ground Segment)`. Ce référentiel
est incarné dans les environnements de production :abbr:`CODEEN
(COllaborative DEvelopment Environment)` et de développement
:abbr:`LODEEN (LOcal DEvelopment ENvironment)`, livrés sous forme de
machine virtuelle.
.. Note:: Python est avec C++ l'un des deux langages de programmation
officiels d'Euclid.
.. Attention:: les contraintes de développement imposées par Euclid ne
s'appliquent qu'aux codes développés dans le cadre du SGS. Un code
d'analyse post-SGS n'est pas tenu de s'y plier, mais il peut certainement
gagner à s'en inspirer (développement continu, tests, documentation, style,
etc.).
Developers' Workshops
=====================
- `Developers' Workshop #1
`_
(nov. 2014)
- `Developers' Workshop #2
`_
(oct. 2015)
- `C++ and Python Programming Sessions
`_
(mai 2016)
- `Developers' Workshop #3
`_
(oct. 2016)
- `Developers' Workshop #4
`_
(oct. 2017)
- `Developers' Workshop #5
`_
(nov. 2018)
- `Developers' Workshop #6
`_
(oct. 2019)
- `C++ and Python Programming Sessions #2
`_
(nov. 2019)
- `Developers' Workshop #7
`_
(oct. 2020)
.. Warning:: certains liens de cette page requièrent un accès à l'`Euclid
Redmine `_.
Librairies EDEN
===============
`EDEN `_ est un
environnement contraint incluant un nombre restreint de bibliothèques Python
officiellement supportées. Dans sa version `v2.1
`_ (printemps
2020), il contient notamment:
- pile numérique usuelle: `numpy`, `scipy` et `matplotlib`, ainsi que `pandas`;
- quelques bibliothèques spécialisées, p.ex. :pypi:`pyFFTW` (*Fastest Fourier
Transform in the West*), `scikit-learn `_ (*machine
learning*), :rtfd:`emcee` (*MCMC*), :rtfd:`iminuit` (minimisation);
- `cython `_ pour de l'optimisation statique de code;
- entrées/sorties FITS: `fitsio `_ (plus
rapide que :mod:`astropy.io.fits`);
- librairies astronomiques: :rtfd:`healpy` (une interface à `HEALPix
`_, pour l'analyse et la visualisation de
données sur une sphère), :rtfd:`astropy` et `pyEphem
`_ (éphémérides)
- :abbr:`GUI (Graphical User Interface)`: `PyQt
`_
- tests: `PyTest `_
.. Attention:: Dans le cadre du SGS, vous ne devez donc pas développer
de code dépendant d'autres bibliothèques que celles-ci.
Toutefois, si une librairie absolument cruciale manque, il est possible de
demander son inclusion via une procédure de `Change requests
`_,
qui sera examinée et arbitrée par le :abbr:`CCB (Change Control Board)`.
Git et GitLab
=============
Le développement du code est géré par `git `_, et hébergé
par le `euclid-gitlab `_.