Reactive Runtime

Projekt Beschreibung

Veröffentlichungen und Reproduzierbarkeit ist ein Grundstein der wissenschaftlichen Methodik. Zur Bereitstellung von Analysen erfreuen sich Notebooks wie Jupyter steigender Beliebtheit. Allerdings verhindert die Abhängigkeit der Ausführungsordnung (execution order) und versteckter Zustände (hidden state) häufig die Reproduktion. Bei diesem Projekt, wird die Kalkulation ähnlich wie bei Spreadsheets (z.B. Excel) durch einen Graphen dargestellt, der die Abhängigkeiten zwischen den Variablen beschreibt. Dies ermöglicht die effiziente, automatische Ausführung des gesamten Notebooks, z.b wenn sich Inputs verändern. Zusammen mit interaktiven Widgets wie Slidern, kann man so spielerisch komplexe Daten und wissenschaftliche Modelle erforschen. Eine Haupt Innovation dieses Projekts ist es, dass man durch das erfassen des gesamten Compute-Graphs alle Berechnungen speichern kann - Das heißt, egal ob die Berechnungen auf einem super Computer gelaufen sind, oder auf einem Laptop mit einem Komplizierten Setup, ist es möglich die Resultate interaktiv im Internet einem breiten Publikum vorzustellen.

Ergebnisse

Die vollständige Notebook Integration der ReactiveRuntime ist ein wenig in den Hintergrund gerutscht, da ungleich später das Projekt Pluto.jl gestartet wurden ist, welches zu 100% die Reactive Runtime implementiert, ziemlich genau mit dem gleichen Ausführungsmodell wie ObservablHQ:

Dies hat den Fokus auf Geschwindigkeit und den statischen Export interaktiver Plots von komplexen Modellen verschoben, was Pluto bis jetzt noch nicht unterstützt.

Nichts desto trotz, funktionieren alle Elemente von ReactiveRuntime in Jupyter, IJulia, Nextjournal, VSCode und sogar auch in Pluto.jl.

Nextjournal funktioniert besonders gut, da ReactiveRuntime hier automatisch jegliche Plots offline, Interaktiv und reproduzierbar veröffentlichen kann so, dass es sehr leicht ist diese einem breiten Publikum vorzustellen, oder aber auch als Forscher auf den Artikel aufbauen kann (remix) und weiterführende Analysen erstellen kann.

Demos

Soil

# TODO Publish code & fix size
HTML("""<iframe src="https://simondanisch.github.io/WGLDemos/soil/" style="width: 1600px; height: 2500px; padding: 0; border: none; zoom: 0.5; -moz-transform: scale(0.5); -moz-transform-origin: 0 0;" scrolling="no"/>""")
0.3s
Julia