Journal L'open source, un gage de reproductibilité en science

Posté par  . Licence CC By‑SA.
Étiquettes :
47
26
fév.
2012

Un article publié dans la revue Nature par des chercheurs britanniques explique pourquoi les programmes écrits par les scientifiques pour obtenir leurs résultats devraient toujours être open source et facilement accessibles. Comme l'article est long, je vais en faire un résumé.

Les physiciens, biologistes et autres climatologues écrivent couramment des programmes informatiques pour traiter et analyser automatiquement leurs données ou calculer les prédictions de leurs modèles théoriques. Dans le domaine de la biologie, je ferais remonter ça au moins à l'article d'Alan Turing de 1952 sur la morphogénèse. Cependant la publication du code n'est pas encore une pratique fermement établie dans ces communautés.

Les auteurs de l'article de Nature semblent très au fait de la philosophie open source (ils citent La Cathédrale et le Bazar d'Eric Raymond), mais leur argumentaire se veut avant tout pragmatique. La reproductibilité, rappellent-ils, est une condition nécessaire pour qu'un résultat puisse être qualifié de scientifique. C'est valable aussi bien pour une expérience de laboratoire que pour le résultat de l'exécution d'un programme. Or, la façon la plus directe de garantir la reproductibilité d'un résultat numérique est de rendre open source le code qui l'a produit.

Certaines revues scientifiques, comme Science et Biostatistics, imposent déjà la mise à disposition du code source. Mais, à l'inverse, Nature par exemple, exige seulement « une description suffisamment détaillée pour permettre aux autres d'écrire leur propre code pour faire des analyses semblables ». Le problème est qu'une description en langage naturel est très rarement dénuée d'ambigüïtés. Les auteurs concluent donc :

Anything less than release of actual source code is an indefensible approach for any scientific results that depend on computation, because not releasing such code raises needless, and needlessly confusing, roadblocks to reproducibility.

J'ajouterais en tant que jeune chercheur qu'il est excessivement pénible d'avoir à recoder un modèle décrit dans un article (avec toutes les ambiguïtés évoquées) pour le tester sur un autre jeu de données ou avec d'autres paramètres.

Enfin, les auteurs suggèrent la mise en place de plateformes de publication de code scientifique, du type CPAN.

  • # CPAN

    Posté par  (site web personnel) . Évalué à 7.

    Pour le code source, ce serait très bien, avec une licence claire de type GPL encore mieux...

    Il faudrait de même pour les publications avec un système de notation par les pairs... Il y a déjà des choses en place mais qui mérite d'être amélioré.

    Au niveau des résultats, avoir le code est une bonne chose mais il faut aussi les entrées : les conditions initiales, les forçages... Les calculs étant de plus en plus complexe, il est quasiment impossible pour un autre groupe de refaire le même calcul avec le même code s'il n'a pas les conditions initiales de manière très très précise...

    En effet, les données d'entrée proviennent parfois d'observation provenant d'instruments répartis sur terre ou dans l'espace (satellite) et il est rare que le programme mange ces données brutes. Il y a un phase de pré-analyse ou de construction qui est souvent une étape ou il y a bien plus d'ingénierie qu'on ne le croit !

    • [^] # Re: CPAN

      Posté par  . Évalué à 4.

      Tout a fait, mais notes que cet article se place d'emblée dans un cadre "open data" (abstract: "Although it is now accepted that data should be mad eavailable on request, the current regulations regarding the availability of software are inconsistent."). Les auteurs présentent donc bien la nécessité de l'accessibilité du code en complément de l'accessibilité des données.

      Le problème de l'accès au code est effectivement très problématique, on se retrouve très souvent avec des articles présentant des résultats obtenus avec un code dont on à qu'une description succincte. Heureusement, les esprits à ce sujets sont en train d'évoluer.

      Cet article en est un très bon exemple, un autre très intéressant paru il y a 2 ans écrit par N.Barnes, "Publish your computer code: it is good enough" va dans le même sens (http://www.nature.com/news/2010/101013/full/467753a.html). L'intérêt de ce dernier est de pointer en particulier les réticences que l'on a en général pour ne pas donner accès à son code scientifique. Ces raisons sont souvent assez différentes des réticences qu'on les compagnies pour libérer leur code propriétaire (notamment l'idée que le code n'est pas assez propre pour publication, et la "peur" de montrer un code quick&dirty, même si celui-ci est parfaitement fonctionnel pour ce qu'il était censé faire).

      • [^] # Re: CPAN

        Posté par  (site web personnel) . Évalué à 3.

        En même temps, il est souvent quick and dirty, et surtout quick and dirty et souvent complexe à utiliser ( ie, doc en option, respect des méthodes 'classiques', et pas toujours avec un vcs ).

    • [^] # Re: CPAN

      Posté par  (site web personnel) . Évalué à -2.

      Pour le code source, ce serait très bien, avec une licence claire de type GPL encore mieux…

      Il me semblait que les publications scientifiques n'étaient pas soumises au droit d'auteur, non ? Auquel cas j'imagine que ça doit s'appliquer également au code qui y figure. À vérifier, bien entendu.

      • [^] # Re: CPAN

        Posté par  . Évalué à 10.

        Euh, elle sont au contraire très soumises au droit d'auteur... Les conditions sont souvent assez restrictives.

        • [^] # Re: CPAN

          Posté par  (site web personnel) . Évalué à 1.

          D'accord. Tu as quelque endroit où je pourrais me documenter ? Visiblement j'en aurais bien besoin ;)

          • [^] # Re: CPAN

            Posté par  (site web personnel) . Évalué à 4. Dernière modification le 01 mars 2012 à 22:47.

            Et bien tu vas sur le site d'un journal scientifique et tu lis le paragraphe Copyright dans le document d'information aux auteurs… la pratique générale consiste à demander un transfert de Copyright (de l'auteur en faveur du journal).

            Les articles circulent beaucoup entre collègues… mais c'est une pratique plus ou moins légale!

            En maths (et en physique) le problème est un peu atténué en ce qui concerne les articles récents puisque de nombreuses personnes publient une version préliminaire de leur travail sur arXiv.org. Mais dans certaines spécialités des maths il n'est pas rare du tout de citer des articles qui ont 20-30 ans (ça m'est arrivé de citer un article de 90 ans et beaucoup de travailler sur des articles de 50-60 ans): même si quelques articles plus anciens sont parfois disponibles numériquement (cf. numdam.org ou euclid.org ou gdz.sub.uni-goettingen.de par exemple), il y a toujours un article qu'on veut lire et qui n'est disponible que grâce à l'abonnement que paie la fac… ou pas!

            Tu as peut-être été induit en erreur par la «libre circulation des idées».

            • [^] # Re: CPAN

              Posté par  (site web personnel) . Évalué à 2.

              Tu as peut-être été induit en erreur par la «libre circulation des idées».

              Ça doit être ça… en oubliant au passage que les droits d'auteurs s'appliquent sur la mise en forme d'une idée et non sur l'idée même.

              Merci des sources (merci aussi à nonas, juste en dessous, mais j'ai la flemme de répondre deux fois ;) ) !

          • [^] # Re: CPAN

            Posté par  . Évalué à 3.

            Tu peux consulter ce site (http://www.sherpa.ac.uk/romeo/browse.php) qui liste les éditeurs et les politiques de gestion des droits associés.

  • # Lire le code de quelqu'un d'autre

    Posté par  . Évalué à 7. Dernière modification le 26 février 2012 à 19:08.

    Anything less than release of actual source code is an indefensible approach for any scientific results that depend on computation, because not releasing such code raises needless, and needlessly confusing, roadblocks to reproducibility.

    Je pense surtout à la vérification de l'exactitude du résultat publié. Qui me dit que leur implémentation du modèle n'est pas complètement fausse, si personne ne peut la relire ?

    il est excessivement pénible d'avoir à recoder un modèle décrit dans un article

    Faut voir aussi que tu peux avoir moins de mal à recoder le modèle qu'à essayer de comprendre un truc codé (au départ pour lui tout seul) par un thésard qui n'est pas informaticien de métier, même si ledit thésard est le seul du labo qui connait autre chose que Visual basic ou Mathematica (exemples réalistes, je vous assure).

    • [^] # Re: Lire le code de quelqu'un d'autre

      Posté par  (site web personnel) . Évalué à 9.

      Faut voir aussi que tu peux avoir moins de mal à recoder le modèle qu'à essayer de comprendre un truc codé (au départ pour lui tout seul) par un thésard qui n'est pas informaticien de métier,

      Tous les informaticiens de métier écrivent du code propre et facile à lire par autrui? Mon œil, ouais!

      • [^] # Re: Lire le code de quelqu'un d'autre

        Posté par  . Évalué à 9.

        Ce n'est pas parce qu'on dit que non A implique non B qu'on dit que A implique B, puisqu'il n'y a pas de lien logique.

        Ici on a
        - A : informaticien
        - B : code propre et lisible

        • [^] # Re: Lire le code de quelqu'un d'autre

          Posté par  (site web personnel) . Évalué à 2.

          Le langage formalisé et la logique d'ordre 0, cela sert:
          - à faire des maths et démontrer des théorèmes;
          - à passer pour un cuistre quand on les utilise hors de ce contexte.

          Sinon pour information, en langage naturel, «tous» ne veut pas forcément dire «absolument tous» etc., etc.

          • [^] # Re: Lire le code de quelqu'un d'autre

            Posté par  . Évalué à 2.

            Il parait que ça peut aussi servir à résoudre les dépendances dans certains gestionnaires de paquets… C'est fou, non ?

            The cake is a lie.

            • [^] # Re: Lire le code de quelqu'un d'autre

              Posté par  (site web personnel) . Évalué à 2.

              Il parait que ça peut aussi servir à résoudre les dépendances dans certains gestionnaires de paquets… C'est fou, non ?

              Je trouve que ça ressemble plutôt pas mal à une application du côté mathématique de la chose, n'es-tu pas d'accord?

              • [^] # Re: Lire le code de quelqu'un d'autre

                Posté par  . Évalué à 1.

                Oui, mais c'est une application, pas des maths… Sinon, on pourrait dire que 99% de ce qui touche aux ordinateurs relève des maths indirectement. Enfin, mon point de vue, c'est que quand tu utilises un algo de la théorie de graphes pour trouver des 'amis' sur facebook, ce n'est pas "juste" des maths. Et surtout, pour en revenir à ton commentaire, ce n'est pas "faire des maths ou démontrer des théorèmes".

                The cake is a lie.

                • [^] # Re: Lire le code de quelqu'un d'autre

                  Posté par  (site web personnel) . Évalué à 2.

                  Enfin, mon point de vue, c'est que quand tu utilises un algo de la théorie de graphes pour trouver des 'amis' sur facebook, ce n'est pas "juste" des maths.

                  Premièrement le «juste» ne provient pas de mon commentaire, et deuxièmement, le sens de mon message est que lorsque'on traite des phrases non formelles comme des énoncés formels, on obtient beaucoup de contradictions et rien de très intéressant.

                  • [^] # Re: Lire le code de quelqu'un d'autre

                    Posté par  . Évalué à 3.

                    Oui enfin, je n'ai fait que relever l'illogisme de ton raisonnement, que tu le veuilles ou non, et ça n'a rien à voir avec l'ambiguïté de la langue.

                    Et faire des raisonnements logiques est bien le premier but de la logique, avant que la logique mathématique n'existe pour essayer de trouver des fondements aux mathématiques.

                    • [^] # Re: Lire le code de quelqu'un d'autre

                      Posté par  (site web personnel) . Évalué à 2. Dernière modification le 01 mars 2012 à 20:03.

                      Oui enfin, je n'ai fait que relever l'illogisme de ton raisonnement, que tu le veuilles ou non, et ça n'a rien à voir avec l'ambiguïté de la langue.

                      Sauf que si je te suis dans ta lecture formaliste l'OP a en particulier écrit, tous ceux qui écrivent du code propre et lisible sont forcement des informaticiens de métier, affirmation non moins grotesque que la (soi-disant) confusion entre la négation d'un énoncé et sa contraposée mais qui a l'air de ne pas trop te déranger.

                      Moralité, les raisonnements formels ne marchent que sur les langages formels.

    • [^] # Re: Lire le code de quelqu'un d'autre

      Posté par  (site web personnel) . Évalué à 2.

      Je pense surtout à la vérification de l'exactitude du résultat publié. Qui me dit que leur implémentation du modèle n'est pas complètement fausse, si personne ne peut la relire ?

      Bwah, ça peut les arranger, une implémentation foireuse. Ils referont un autre papier par derrière !
      (Bon, ça marche pas pour les domaines qui demandent des résultats exacts car il faut alors annuler la précédente publication, mais c'est faisable en astrophysique, je crois.)

    • [^] # Re: Lire le code de quelqu'un d'autre

      Posté par  (site web personnel) . Évalué à 6.

      Faut voir aussi que tu peux avoir moins de mal à recoder le modèle qu'à essayer de comprendre un truc codé (au départ pour lui tout seul) par un thésard

      Rien t'empêche de le recoder si la qualité n'est pas au rendez-vous, mais avoir une implémentation de référence sous les yeux, même moche, facilite quand même grandement le travail! (je parle d'expérience, je l'ai vécu de l'intérieur :))

      • [^] # Re: Lire le code de quelqu'un d'autre

        Posté par  . Évalué à 4.

        mais avoir une implémentation de référence sous les yeux, même moche, facilite quand même grandement le travail! (je parle d'expérience, je l'ai vécu de l'intérieur :))

        Je confirme. Et ça permet parfois de découvrir des hypothèses implicites que l'auteur n'a pas jugé utile de mentionner dans l'article.

  • # http://www.insight-journal.org/

    Posté par  . Évalué à 6.

    Le principe de l'insight journal est exactement celui-ci. Ils défendent l'idée qu'il est nécessaire de pouvoir vérifier les articles par soi-même.
    Les personnes à l'origine de cette revue sont des acteurs majeurs de la visualisation scientifique avec les lib VTK et ITK, et le logiciel paraview. Il existe donc bien aujourd'hui des exemples de cette démarche et je m'en félicite !

    Mes 2 centimes

    • [^] # Re: http://www.insight-journal.org/

      Posté par  . Évalué à 2. Dernière modification le 28 février 2012 à 19:30.

      C'est aussi le credo de PLoS Computational Biology, qui indique clairement que le code source doit être fourni, ainsi que tout ce qui permet de rendre les expériences reproductibles. Comme son grand frère, PLoS ONE, qui donne aussi une préférence aux licences libres. On peut remarquer qu'ils préfèrent les licences LGPG ou BSD. Ces deux journaux sont de plus librement accessible (contrairement à la plupart des anciens journaux, cf ce journal).

      On peut aussi noter que le Nature de cette semaine, en plus de contenir cette Perspective, fait la couverture sur les 100 ans de la naissance de Turing cette année. Le dossier est disponible sur le web. Peut-être pas accessible en dehors d'une université ou d'un abonnement par contre.

  • # non A implique non B

    Posté par  . Évalué à -3.

    "non A implique non B"

    Cela n'entraine pas que A implique B, comme il a bien été écrit.

    "non A implique non B" est équivalent à

    "B implique A", ou encore à

    "B ou non A"

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.