.. _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 `_.