Romain Avouac, Pierre Lamarche, Romain Lesur
L’activité du statisticien / datascientist tend à se rapprocher de celle du développeur :
Source : Peng R., Reproducible Research in Computational Science, Science (2011)
1️⃣ Qualité du code et structure des projets
2️⃣ Le contrôle de version
3️⃣ Normes de sécurité
4️⃣ Ouverture
R
: le Tidyverse style guideREADME
pour en finir avec ça :
ou ça :
ou encore ça :
prior <- read_csv(prior_path)
prior <- prior %>%
select(id, proba_inter, proba_build, proba_rfl) %>%
separate(id, into = c('nidt', 'grid_id'), sep = ":") %>%
group_by(nidt) %>%
mutate(
proba_build = proba_build/sum(proba_build),
proba_rfl = proba_rfl/sum(proba_rfl),
) %>%
unite(col = "id", nidt, grid_id, sep = ":")
# Test
# prior_test <- prior %>%
# mutate(
# proba_inter = round(proba_inter, 4)
# proba_build = round(proba_build, 4)
# proba_rfl = round(proba_rfl, 4)
# )
write_csv(prior_round, "~/prior.csv")
Pour arriver à ça :
Source : ThinkR
Git
, GitLab
, GitHub
?Git
: implémentation standard du contrôle de version
RStudio
) facilitent la prise en mainGitLab
: projets internesGitHub
(InseeFr et InseeFrLab) : projets open-sourceQue versionne-t-on ?
.html
, .pdf
, modèles…)Note
Pour définir des règles qui évitent de committer tel ou tel fichier, on utilise un fichier nommé .gitignore
.
Si on mélange du code et des éléments annexes (output, données…) dans un même dossier, il faut consacrer du temps à ce fichier.
Le site gitignore.io
peut vous fournir des modèles.
N’hésitez pas à y ajouter des règles conservatrices (par exemple *.csv
), comme cela est expliqué dans la documentation utilitR
.
Il faut distinguer deux types de processus de production :
Les tâtonnements supposent des allers et retours sur différentes hypothèses, par exemple dans le cas du calcul du taux de pauvreté dans SRCV :
⇒ deux notions essentielles : reproductibilité et traçabilité
Note
Quels sont, selon vous, les principaux risques de sécurité liés au développement en self ?
git
Notion de boîte de dialogue qui permet d’entrer le mot de passe sans l’inscrire dans le code
library(DBI)
library(RPostgresInsee)
library(rjson)
## import des éléments de connexion
connexion_details <- fromJSON(file = "X:/HAB-LOGFIDELI/Production en self/conf_servers_fideli.json")
## connexion au clone
connexion_clone <- do.call(dbConnect, args = c(connexion_details$clone[2:4],
list(drv = Postgres(),
password = rstudioapi::askForPassword("Mot de passe :"))))
KeePass :
.kdbx
chiffré.kdbx
sont protégés par un mot de passe maîtregit
(utiliser le fichier .gitignore
)On préférera toujours avoir des données stockées dans un unique espace pour lequel les droits d’accès sont gérés individuellement.
L’ensemble des bonnes pratiques qui ont été présentées sont issues de l’open source.
Sensibilisation aux bonnes pratiques de self