Reproduzierbare Veröffentlichungen

Für verlässliche Wissenschaft sind reproduzierbare Veröffentlichungen essenziell - aber oft sind sie nicht gegeben12. Dieser 5-Minuten-Vortrag motiviert, wieso Reproduzierbarkeit so wichtig ist, und zeigt eine Lösung zum wirklich reproduzierbaren Veröffentlichen - die er auch selbst nutzt. Ich habe ihn in einem Seminar zum wissenschaftlichen Präsentieren gehalten.

Einen praktischen Leitfaden für entsprechende Veröffentlichungen, den ich auch selbst genutzt habe, liefert das Tutorial: Writing scientific papers for ACP using emacs org-mode.

Reproduzierbare Veröffentlichungen

PDF-version (for printing)

Release (to download)

orgmode-version (for editing)

repository (for forking)

Falscher Anreiz

  • Die Versuchung
    • „Haben Sie einmal ein Paper mit per Skript erstellten Grafiken veröffentlicht?“
    • „Haben Sie Skripte und Daten veröffentlicht?“
    • „Warum erfinden Sie die Daten nicht? Das wäre weniger Arbeit…“

    „Niemals! Das verbietet die wissenschaftliche Integrität!“

  • Doch es passiert - leider
    • Einstieg: „passte ich den Untersuchungsentwurf an“.
    • Dietrich Stapel: „Es war grau und es war üblich“.
    • Sturz: „erfindet die Daten“.
    • „Forscher gratulieren“.
    • „Drei [seiner] Doktoranden sind Ungereimtheiten […] aufgefallen“.

    [Quarks & Co., 2013-06-04]

Herausforderungen

  • Wissenschaft
    • referenzierbar?
    • vertrauenswürdig?
    • prüfbar?
    • wiederholbar?

    Vertrauen in andere durch saubere Veröffentlichungen.

  • Forschende
    • „Welche Daten nutze ich?“
    • „Liefere ich alle Daten?“
    • „Wie habe ich das Paper damals erstellt?“

    Vertrauen in die eigene Veröffentlichung.

Ansatz

Anforderungen an ein System

  • Diagramme und Tabellen aus aktuellen Daten
  • Benötigte Daten und Skripte beilegen
  • Automatisiert mit Selbsttest

Realisierung

Eine Lösung: org-mode + autotools

  • Emacs Org-Mode
    #+BEGIN_SRC python
      import pylab
      data = pylab.genfromtxt(
          "data.txt")
      pylab.plot(data)
      pylab.savefig(
          "image.png")
      print "#+caption: desc"
      print "[[./image.png]]"
    #+END_src
    
  • GNU autotools distcheck
    autoreconf -i && \
    ./configure && \
    make distcheck
    

    → repro-pub-0.1.tar.gz (repro-pub-0.5.0.tar.gz)

    dist-tarball.png

Analog

Versuchsaufbau exakt beschreiben.

Abschluss

Danke für Ihre Aufmerksamkeit!

Bitte stellen Sie Ihre Fragen

Quellen

  • Kontakt

    arne.babenhauserheide@kit.edu oder arne_bab@web.de

Appendix

Hier genutzte Werkzeuge

  • Autoconf (configure.ac)
  • Automake (Makefile.am)
  • Emacs + org-mode (vortrag.org)

configure.ac

dnl run `autoreconf -i` to generate a configure script. 
dnl Then run ./configure to generate a Makefile.
dnl Finally run make to generate the project.
AC_INIT([Repro Pub], [0.5.0], 
        [arne.babenhauserheide@kit.edu])
# Check for programs I need for my build
AC_CANONICAL_TARGET
AC_ARG_VAR([emacs], [How to call Emacs.])
AC_CHECK_TARGET_TOOL([emacs], [emacs], [no])
AS_IF([test "x$emacs" = "xno"],
      [AC_MSG_ERROR([cannot find Emacs.])])
# Run automake
AM_INIT_AUTOMAKE([foreign])
AM_MAINTAINER_MODE([enable])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Makefile.am (1/2)

# basic definitions
vortrag = vortrag.pdf
vortrag_DATA = vortrag.org data.txt dist-tarball.png
vortragdir = .
# dist_pkgdata_DATA = rohdaten 
EXTRA_DIST = ${vortrag_DATA} ${vortrag}
# kill editor backups and latex stuff
MOSTLYCLEANFILES = \\\#* *~ *.bak *.vrb *.bbl \
                   *.blg *_flymake.*
CLEANFILES = ${vortrag}
DISTCLEANFILES = ${CLEANFILES} \\\#* *~ *.bak *.vrb *.bbl \
                               *.blg *_flymake.* auto/*el

all : ${vortrag}

Makefile.am (2/2)

# emacs org-mode beamer build instructions
${vortrag} : ${vortrag_DATA}
    if test "$<" != "$(notdir $<)"; then \
            cp -u "$<" "$(notdir $<)"; fi
    echo yes | @emacs@ --batch --load "~/.emacs" \
               --visit "$(notdir $<)" \
               --funcall org-beamer-export-to-pdf
    if test "$<" != "$(notdir $<)"; \
       then rm -f "$(notdir $<)"; \
            rm -f $(basename $(notdir $<)).tex \
                  $(basename $(notdir $<)).tex~ \
                  auto/$(basename $(notdir $<)).el; \
       else rm -f $(basename $<).tex \
                  $(basename $<).tex~ \
                  auto/$(basename $<).el; \
    fi

  1. Gerade haben Biologen gezeigt3, dass die Verfügbarkeit der Rohdaten von alten Veröffentlichungen jedes Jahr um 17% fällt. Das heißt, schon nach 4 Jahren gibt es für die Hälfte der Veröffentlichungen keine Daten mehr. Die hier gezeigte Methode macht es sehr einfach sicherzustellen, dass alle für die Veröffentlichung notwendigen Daten mitveröffentlicht werden - und erzeugt automatisch eine Archivdatei dafür. ↩

  2. Leider ist die durch die politisch gesetzten Rahmenbedingungen erzwungene Konkurrenzsituation für reproduzierbare Veröffentlichungen hinderlich, denn wer seine Daten und Skripte veröffentlicht - eigentlich alle Programme, die er oder sie nutzte - verspielt die Möglichkeit, sich ein Monopol auf die Daten aufzubauen, das die nächsten Veröffentlichungen sichern könnte. Sobald die Daten draußen sind, können andere damit arbeiten - und nur die schnellsten können veröffentlichen (ja, das System ist dumm…). Zusätzlich stehen sauberer Veröffentlichung oft „IP“-Regeln entgegen - also der Wunsch der Uni, ihre Ergebnisse zu monopolisieren. Zum Glück gibt es mit Open Access inzwischen eine Bewegung gegen solche schädlichen Regelungen - aber der Kampf wird wohl noch lange andauern. Immerhin stehen hier Misstrauen, Gier und leider berechtigte Sorgen um die eigene Zukunft gegen wissenschaftliche Integrität. ↩

  3. The Availability of Research Data Declines Rapidly with Article Age - Zeitungsartikel dazu: The Vast Majority of Raw Data From Old Scientific Studies May Now Be Missing. ↩

AnhangGröße
repro-pub-0.5.0.pdf229.72 KB
repro-pub-0.5.0.org7.4 KB
repro-pub-thumb-0.5.0.png16.88 KB
repro-pub-0.5.0.tar_.gz354.19 KB
dist-tarball.png47.6 KB
Inhalt abgleichen
Willkommen im Weltenwald!
((λ()'Dr.ArneBab))



Beliebte Inhalte

Draketo neu: Beiträge

Draketo neu: Kommentare