2353 shaares
Ressources intéressantes
Pas mal de quizz. Ya l'afrique, mais ya aussi plein d'autres tests
Pacman, pong et space invaders dans le même jeu. M'a l'air compliqué à jouer...
Ça c'est un titre d'article. Bon, faut que je lise le papier.
Ben putain, ça ça serait une révolution.
(via sebsauvage)
(via sebsauvage)
Très bon article, qui met bien les choses au point. Je me le garde sous le coude pour m'y référer dans mes réponses aux solliciteurs.
En ce qui me concerne, je n'aime pas bien le "pull-request welcome" dans mes projets perso (je n'ai pas mis mes projets sur github précisément pour éviter ça -- je suis sous git, mais en local sur ma machine).
En ce qui me concerne, je n'aime pas bien le "pull-request welcome" dans mes projets perso (je n'ai pas mis mes projets sur github précisément pour éviter ça -- je suis sous git, mais en local sur ma machine).
Marrant: ils ont mis le code civil sur github. Toutes les modifs depuis napoléon sont enregistrées comme des commits!
Alors ça, ça m'intéresse!
Ah? à trouver et à lire. L'idée d'interfacer SIG et R pour ce type de calcul me paraît effectivement une idée à suivre.
À voir...
À voir...
La revue Nature est formelle : le changement climatique pourrait favoriser le retour de certaines espèces qu’on croyait éteintes, voire n’ayant jamais existé!
(via Nirmala)
(via Nirmala)
À lire
Sur les highest posterior density intervals. À récupérer et à lire.
Doing Bayesian Data Analysis: Why to use highest density intervals instead of equal tailed intervals
Tiens je n'y avais jamais pensé, mais il existe plusieurs façons de définir des intervalles crédibles en bayésien. L'approche la plus courante consiste à définir l'intervalle comme défini par les quantiles (alpha/2, et 1-alpha/2) de la posterior. Mais elle a des inconvénients, comme illustré ici.
Une meilleure approche consiste à rechercher la valeur k telle que l'intégrale de P(x|theta) sur les valeurs de x telles que P(x|theta)>k = 1-alpha. Alors, l'intervalle crédible "highest posterior density intervals" consiste à l'ensemble des x tels que P(x|theta)>k. L'avantage de cette approche est qu'elle renvoie les intervalles les plus petits. En outre, elle contient le mode de la distribution, ce qui n'est pas forcément le cas de la méthode par les quantiles (qui elle incluera nécessairement la médiane). Voir p. 38 du Gelman et al.
Edit: pas si évident que ce soit la meilleure approche. Dans certains cas, en gestion de la faune par exemple, le fait de disposer d'IC basés sur des quantiles pourrait être jugé comme plus juste par les différentes parties. Comme les distributions à postériori sur les effectifs dans des sites sont souvent asymétriques, utiliser des HPD consisterait à systématiquement inclure 0 dans l'estimation, et du coup à diminuer la borne supérieure de l'intervalle. Autrement dit, on concevrait certes l'intervalle le plus court possible tel que la probabilité de trouver la vraie valeur soit de 95%, mais on aurait 0% de chances d'avoir une vraie valeur inférieure à la borne inférieure de l'IC, et tout le risque serait situé du côté des fortes valeurs. Quand on a deux parties qui se tapent dessus concernant les effectifs, une telle décision peut être vue comme un parti pris en faveur de ceux qui pensent qu'il n'y en a pas assez. À garder en tête quand même dans ce choix.
Une meilleure approche consiste à rechercher la valeur k telle que l'intégrale de P(x|theta) sur les valeurs de x telles que P(x|theta)>k = 1-alpha. Alors, l'intervalle crédible "highest posterior density intervals" consiste à l'ensemble des x tels que P(x|theta)>k. L'avantage de cette approche est qu'elle renvoie les intervalles les plus petits. En outre, elle contient le mode de la distribution, ce qui n'est pas forcément le cas de la méthode par les quantiles (qui elle incluera nécessairement la médiane). Voir p. 38 du Gelman et al.
Edit: pas si évident que ce soit la meilleure approche. Dans certains cas, en gestion de la faune par exemple, le fait de disposer d'IC basés sur des quantiles pourrait être jugé comme plus juste par les différentes parties. Comme les distributions à postériori sur les effectifs dans des sites sont souvent asymétriques, utiliser des HPD consisterait à systématiquement inclure 0 dans l'estimation, et du coup à diminuer la borne supérieure de l'intervalle. Autrement dit, on concevrait certes l'intervalle le plus court possible tel que la probabilité de trouver la vraie valeur soit de 95%, mais on aurait 0% de chances d'avoir une vraie valeur inférieure à la borne inférieure de l'IC, et tout le risque serait situé du côté des fortes valeurs. Quand on a deux parties qui se tapent dessus concernant les effectifs, une telle décision peut être vue comme un parti pris en faveur de ceux qui pensent qu'il n'y en a pas assez. À garder en tête quand même dans ce choix.
(via sebsauvage).
Pas mal, j'en veux un tube.
Pas mal, j'en veux un tube.
Bon, au final, utiliser docker, c'est pas encore au point. Ça a planté au bout d'une heure, genre "exec error" sans explications.
Mais j'ai une solution définitive pour implémenter l'UBSAN pour le check des packages R (examen des comportements non définis dans le code C, e.g. quand on passe un vecteur contenant des données manquantes à un programme qui ne les gère pas, quand on divise par zéro, etc.).
Approche laborieuse, mais ça marche. C'est une mise à jour et une version plus stable de ce que je disais ici:
http://caloine.ouvaton.org/shaarli/?rTZF_g
Plus stable parce qu'elle n'implique pas de bidouiller le compilateur du système d'exploitation que j'utilise pour le reste de mon boulot. Il faut installer une machine virtuelle virtualbox sous ubuntu (host), en définissant un ubuntu guest (64 bits, comme ça la machine servira aussi à faire tourner des programmes 64bits, autant rentabiliser le boulot). Une fois ubuntu installé, on installe le compilateur clang, version 3.6 mini (gaffe, ya des dépôts à mettre dans le source.list). En pratique, voir les instructions ici:
http://llvm.org/apt/
on installe toutes les dépendances nécessaires pour construire R:
sudo apt-get install r-base-dev
sudo apt-get build-dep r-base
On télécharge les sources de R (devel ou base), on les décompresse, et on édite le config.site. Dans le config.site, on édite les variables suivantes:
CC="clang-3.6 -std=gnu99 -fsanitize=undefined"
CFLAGS="-fno-omit-frame-pointer -02 -Wall -pedantic -mtune=native"
CCXX="clang++-3.6 -std=gnu99 -fsanitize=undefined"
CXXFLAGS="-fno-omit-frame-pointer -02 -Wall -pedantic -mtune=native"
Gaffe, il faut pas oublier les guillemets.
Dans le home, on crée un répertoire .R, et dedans, on crée un fichier Makevars, et dedans on met
CC=clang-3.6 -std=gnu99 -fsanitize=undefined -fno-omit-frame-pointer
Gaffe, là pour le coup, faut surtout pas mettre de guillemets sinon ça plante.
Ensuite, on configure
./configure --enable-R-shlib --enable-memory-profiling --with-tcl-config=/usr/lib/tcl8.5/tclConfig.sh --with-tk-config=/usr/lib/tk8.5/tkConfig.sh
Gaffe aux versions de tcl et tk vérifier la version et localisation des config.sh avec un locate (après sudo updatedb). Ensuite, classiquement,
make
sudo make install
Gaffe, c'est super long sur certains fichiers (mais ça, c'est documenté dans le writing R extensions: ça dure des plombes, mais c'est normal: deux heures de compilation au total, avec pas loin de trois quart d'heures sur certains fichiers).
Ensuite, on installe adehabitat et ses dépendances sous R:
install.packages(c("adehabitatHS", "tkrplot","maptools","rgeos"))
Pareil, la compilation dure des plombes à cause de l'UBSAN.
Après, dans la machine virtuelle, installer les additions invitées, et créer un répertoire partagé entre les deux machines. Redémarrer, Et zou, le système est opérationnel.
À noter, sur les dernières versions de virtualbox, il est possible de copier coller du système hôte vers l'invité.
Par contre, gaffe, s'il y a des "runtime errors", elles ne sont pas renvoyées au niveau du check. Il est nécessaire, après le check, d'aller dans le répertoire ".Rcheck", et de faire un grep:
grep error *
Mais sinon ça marche bien. Autre mise à jour, l'UBSAN ne nécessite pas l'utilisation de valgrind. C'est juste le compilateur clang qui gère.
Mais j'ai une solution définitive pour implémenter l'UBSAN pour le check des packages R (examen des comportements non définis dans le code C, e.g. quand on passe un vecteur contenant des données manquantes à un programme qui ne les gère pas, quand on divise par zéro, etc.).
Approche laborieuse, mais ça marche. C'est une mise à jour et une version plus stable de ce que je disais ici:
http://caloine.ouvaton.org/shaarli/?rTZF_g
Plus stable parce qu'elle n'implique pas de bidouiller le compilateur du système d'exploitation que j'utilise pour le reste de mon boulot. Il faut installer une machine virtuelle virtualbox sous ubuntu (host), en définissant un ubuntu guest (64 bits, comme ça la machine servira aussi à faire tourner des programmes 64bits, autant rentabiliser le boulot). Une fois ubuntu installé, on installe le compilateur clang, version 3.6 mini (gaffe, ya des dépôts à mettre dans le source.list). En pratique, voir les instructions ici:
http://llvm.org/apt/
on installe toutes les dépendances nécessaires pour construire R:
sudo apt-get install r-base-dev
sudo apt-get build-dep r-base
On télécharge les sources de R (devel ou base), on les décompresse, et on édite le config.site. Dans le config.site, on édite les variables suivantes:
CC="clang-3.6 -std=gnu99 -fsanitize=undefined"
CFLAGS="-fno-omit-frame-pointer -02 -Wall -pedantic -mtune=native"
CCXX="clang++-3.6 -std=gnu99 -fsanitize=undefined"
CXXFLAGS="-fno-omit-frame-pointer -02 -Wall -pedantic -mtune=native"
Gaffe, il faut pas oublier les guillemets.
Dans le home, on crée un répertoire .R, et dedans, on crée un fichier Makevars, et dedans on met
CC=clang-3.6 -std=gnu99 -fsanitize=undefined -fno-omit-frame-pointer
Gaffe, là pour le coup, faut surtout pas mettre de guillemets sinon ça plante.
Ensuite, on configure
./configure --enable-R-shlib --enable-memory-profiling --with-tcl-config=/usr/lib/tcl8.5/tclConfig.sh --with-tk-config=/usr/lib/tk8.5/tkConfig.sh
Gaffe aux versions de tcl et tk vérifier la version et localisation des config.sh avec un locate (après sudo updatedb). Ensuite, classiquement,
make
sudo make install
Gaffe, c'est super long sur certains fichiers (mais ça, c'est documenté dans le writing R extensions: ça dure des plombes, mais c'est normal: deux heures de compilation au total, avec pas loin de trois quart d'heures sur certains fichiers).
Ensuite, on installe adehabitat et ses dépendances sous R:
install.packages(c("adehabitatHS", "tkrplot","maptools","rgeos"))
Pareil, la compilation dure des plombes à cause de l'UBSAN.
Après, dans la machine virtuelle, installer les additions invitées, et créer un répertoire partagé entre les deux machines. Redémarrer, Et zou, le système est opérationnel.
À noter, sur les dernières versions de virtualbox, il est possible de copier coller du système hôte vers l'invité.
Par contre, gaffe, s'il y a des "runtime errors", elles ne sont pas renvoyées au niveau du check. Il est nécessaire, après le check, d'aller dans le répertoire ".Rcheck", et de faire un grep:
grep error *
Mais sinon ça marche bien. Autre mise à jour, l'UBSAN ne nécessite pas l'utilisation de valgrind. C'est juste le compilateur clang qui gère.
plus de détails
Alors ça ça a l'air pas mal. Je misère comme un malheureux en ce moment pour essayer de compiler R-devel avec un compilateur llvm/clang pour pouvoir vérifier le code C de mes packages R selon les nouvelles pratiques de R. Installation de machine virtuelle, installation de debian, installation de clang depuis les dépots et tout le merdier qui va avec. Et une compilation interminable.
Ces gars là utilisent docker, un service qui va fournir juste l'environnement nécessaire d'un R-devel compilé et clang pour pouvoir checker le code avec l'UBSAN. En clair, il semblerait qu'il faille juste récupérer le container, et boum, c'est prêt à l'usage.
Bon, par contre, ça marche pas sous 32 bits et comme j'ai fait le choix de rester sous 32 bits rapport que ya des applis qui ne sont pas encore passé à 64bits, je ne ferai pas l'économie d'une machine virtuelle.
Ces gars là utilisent docker, un service qui va fournir juste l'environnement nécessaire d'un R-devel compilé et clang pour pouvoir checker le code avec l'UBSAN. En clair, il semblerait qu'il faille juste récupérer le container, et boum, c'est prêt à l'usage.
Bon, par contre, ça marche pas sous 32 bits et comme j'ai fait le choix de rester sous 32 bits rapport que ya des applis qui ne sont pas encore passé à 64bits, je ne ferai pas l'économie d'une machine virtuelle.
Bon, comme j'en ai marre de passer trois plombes à chercher à chaque fois: On récupère le torrent de l'iso pour debian sur cette page.
Ah ben il est sorti. Youpi!
Sur la nécessité de sortir des papiers vulgarisés.