You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Oct 4, 2021. It is now read-only.
Dépôt du code python permettant la production de liste de prédiction Signaux Faibles.
4
+
5
+
⚠️ ce dépôt est aujourd'hui archivé est n'est plus en cours de développement ! En effet, la partie data science du projet Signaux Faibles a migrée sur le lac de données de la DGFiP dans le cadre d'une évolution du partenariat et a donc changé d'environnement technique.
6
+
3
7
## Dépendances / pré-requis
8
+
4
9
- python 3.6.4
5
-
- Docker (:construction_worker:)
6
10
- un accès à la base de données du projet
7
11
8
12
## Installation pour un développeur/data scientist :
### Optionnel : Pour les personnes qui travaillent sur le serveur labtenant avec un proxy
20
+
### Optionnel : Pour les personnes qui travaillent sur le serveur labtenant avec un proxy
16
21
17
22
Pour pouvoir télécharger les packages, leurs dépendances ainsi que la documentation de données de opensignauxfaibles, il est nécessaire de prendre en compte le proxy pour les personnes qui travaillent sur le serveur.
Pour éviter de fournir l'option --proxy à chaque fois, vous pouvez créer un fichier ~/.conf/pip/pip.conf
25
31
26
-
```
27
-
mkdir ~/.conf
28
-
mkdir ~/.conf/pip
32
+
```sh
33
+
mkdir -p ~/.config/pip
29
34
nano pip.conf
30
35
```
31
36
Et y ajouter la configuration suivante :
32
37
33
-
```
34
-
[global]
38
+
```config
39
+
35
40
proxy = socks5h://localhost:<PORT_INTERNET>
36
41
```
37
42
Cette configuration est cruciale pour l'installation automatique des packages indiqué dans requirements.
38
43
39
44
### créer un environnement virtuel python (recommandé)
40
-
exemple avec [pyenv](https://github.com/pyenv/pyenv):
41
-
```
45
+
46
+
Exemple avec [pyenv](https://github.com/pyenv/pyenv) :
47
+
48
+
```sh
42
49
pyenv install 3.6.4
43
50
pyenv virtualenv 3.6.4 sf
44
51
pyenv local sf
45
52
```
46
53
47
54
### installer les dépendences du projet
48
-
```
55
+
56
+
```sh
49
57
pip install -r requirements.txt
50
58
```
51
59
52
60
Note: la procédure sur le serveur est légèrement différente.
53
61
54
62
### activer les githooks
55
-
```
63
+
64
+
```sh
56
65
python -m python_githooks
57
66
```
58
67
@@ -68,37 +77,64 @@ Chaque run de modèle produit 2 fichiers dans `./model_runs/<model_id>` **qui n'
68
77
69
78
La variable d'environnement `ENV` permet de faire tourner le modèle en mode `develop` (utilisant moins de données, le défaut) ou bien en `prod`:
70
79
71
-
```sh
80
+
```sh
72
81
export ENV=prod
73
82
python -m predictsignauxfaibles
74
83
```
75
84
76
85
## Structure du Dépot
77
-
(librement inspiré du [cookiecutter data science](https://drivendata.github.io/cookiecutter-data-science))
78
-
79
-
-`lib` contient l'essentiel du code nécéssaire à la production de listes signaux faibles
80
-
-`bin` contient des scripts utiles au projet
81
-
-`models` contient les artefacts de modèle (entrainés et serialisés), ses prédictions, et son évaluation
82
-
-`notebooks` contient les notebooks Jupyter (exploration, documentation intéractive, tutoriels, ...)
83
-
-`tests` contient les tests du projet : tests unitaires, d'intégration, et "end-to-end" (e2e). Le module python utilisé pour les tests est `pytest`.
84
-
-`Makefile` contient les commandes make pour l'execution de taches communes (`make train`, `make predict`, etc.)
85
-
-`config.py` est module de gestion de configuration du projet
86
-
-`requirements.txt` liste les dépendences (et leurs versions) nécessaires à la production d'une liste signaux faibles, `requirements-dev.txt` y rajoute les dépendences optionnelles qui ne concernent que les développeurs (pour les tests, le linting, etc.)
87
-
-`.githooks.ini` et `.pylintrc` dont des fichiers de configuration pour les githooks et le linter.
86
+
87
+
Librement inspiré du [cookiecutter data science](https://drivendata.github.io/cookiecutter-data-science)
88
+
89
+
-`lib/` contient l'essentiel du code nécéssaire à la production de listes signaux faibles.
90
+
-`bin/` contient des scripts utiles au projet.
91
+
-`models/` contient les artefacts de modèle (entrainés et serialisés), ses prédictions, et son évaluation.
92
+
-`model_run/` contient les prédictions, et les métriques d'évaluation des modèles exécutés.
93
+
-`notebooks/` contient les notebooks Jupyter (exploration, documentation intéractive, tutoriels…)
94
+
-`tests/` contient les tests du projet : tests unitaires, d'intégration, et "end-to-end" (e2e). Le module python utilisé pour les tests est `pytest`.
95
+
-`Makefile` peut être utilisé pour l'execution de taches communes (`make train`, `make predict`, etc.) _Rq_ : Ceci n'est pas implémenté car déjà couvert par l'utilitaire en ligne de commandes.
96
+
-`setup.cfg` est un fichier contenant les métaonnées du projet utilisées par `setuptools` lors de l'installation du projet.
97
+
-`requirements.txt` liste les dépendences (et leurs versions) nécessaires à la production d'une liste signaux faibles.
98
+
-`.githooks.ini` et `.pylintrc` sont les fichiers de configuration pour les githooks et le linter.
88
99
89
100
## Documentation
90
101
102
+
### Démo
103
+
91
104
Un notebook jupyter interactif de démo est disponible [ici](./notebooks/00-get_started.ipynb).
92
105
93
-
Il est également possible de télécharger le listing des features disponibles pour le modèle Signaux Faibles, fichier json présent dans le dépôt Github opensignauxfaibles. Ce listing est utilisé dans le notebook de démo.
106
+
### Générer la documentation
107
+
108
+
La documentation peut être générée en exécutant la commande (toujours depuis `docs/`)
109
+
110
+
```sh
111
+
make html
112
+
```
113
+
114
+
pour obtenir un dossier formattant la documentation en html (type «readthedocs.io»). Celle-ci est ensuite navigable en ouvrant `docs/build_/html/index.html`
115
+
116
+
Beaucoup d'autres formats d'export sont disponibles (pdf, man, texinfo); pour plus d'informations, voir
94
117
118
+
```sh
119
+
make help
95
120
```
121
+
122
+
La documentation est générée grâce aux fichiers `.rst` contenus dans le dossier `docs/source`. Si besoin, ceux-ci peuvent être automatiquement générés à l'aide de `sphinx` : depuis le dossier `docs/`, exécuter
Il est également possible de télécharger la liste des features disponibles pour le modèle Signaux Faibles, fichier `json` présent dans le dépôt Github opensignauxfaibles. Ce listing est utilisé dans le notebook de démo.
Copy file name to clipboardExpand all lines: datascience_workflow.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -124,8 +124,18 @@ Les git hooks permettent de s'assurer que certains scripts tournent automatiquem
124
124
-`pytest`
125
125
- faire tourner et évaluer le modèle (ça peut juste être un rappel si c'est trop lourd)
126
126
127
-
L'évaluation du modèle peut produire un artefact "model_evaluation.json",
128
-
versionné dans git avec chaque nouvelle version du modèle.
127
+
L'évaluation du modèle peut produire un artefact "model_evaluation.json", versionné dans git avec chaque nouvelle version du modèle.
128
+
129
+
## Documentation
130
+
131
+
Une documentation du code peut être générée automatiquement grâce à `sphinx` (voir [README.md](./README.md)). Celle-ci se base sur les «docstrings» des modules, classes et autres objets pythons du code, il est donc très utile de bien les documenter !
132
+
133
+
Le format `napoleon` (variante google) est employé. Un exemple de ce format est disponible [ici](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html). Quelques éléments importants du format des docstrings :
134
+
- La première ligne est une courte description de l'objet.
135
+
- Des sauts de lignes séparent la première ligne, la description plus longue, les arguments, la valeur renvoyée.
136
+
- Si la ligne de description d'un argument dépasse la longueur maximale autorisée, on indente la ligne suivante de deux espaces.
137
+
- On préférera indiquer les types des variables d'entrée et de sortie directement dans la signature d'une fonction plutôt que dans la docstring.
138
+
- Il est possible d'intégrer des équations à l'aide de la directive `:math:`.
129
139
130
140
## Securité et Configuration :construction_worker:
0 commit comments