ScryLab als matplotlib- und Plotly-Alternative für explorative Signalanalyse

·
Cover for ScryLab als matplotlib- und Plotly-Alternative für explorative Signalanalyse

Man kennt es: Zelle ausführen, statischen matplotlib-Plot bekommen, Parameter anpassen, nochmal ausführen. Oder man greift zu Plotly für etwas Interaktives – schreibt dann aber Layout-Konfiguration statt Analyse.

ScryLab macht es anders: Die App läuft neben dem Notebook, und Signale werden per Python-Wrapper direkt hineingeschickt. Der Plot bleibt offen, während man weiterarbeitet – interaktiv, persistent, und ohne im Weg zu sein.

Zwei Zeilen zum Einstieg

Wrapper aus PyPI installieren:

pip install scrylab

Dann im Notebook:

import numpy as np
import scrylab as scry

t = np.linspace(0, 5, 10_000)
y = np.sin(2 * np.pi * 10 * t) * np.exp(-0.3 * t)
y_noisy = np.sin(2 * np.pi * 7 * t) * np.exp(-0.5 * t) + np.random.normal(0, 0.05, size=t.shape)

scry.plot(y, x=t, name="Damped Oscillation")
scry.plot(y_noisy, x=t, name="Damped Oscillation (noisy)", y_unit="V", x_unit="s")

scry.plot() sendet das Signal an ScryLab und platziert es im aktiven Plot – keine Achsenkonfiguration, kein Figure-Boilerplate, keine Output-Zelle, durch die man scrollen müsste. Einheiten und Signalnamen erscheinen direkt in der ScryLab-Oberfläche.

Was ScryLab bietet

Sobald die Signale da sind, arbeitet man interaktiv in ScryLab – ganz ohne weiteren Code:

  • Zoomen und verschieben mit der Maus über alle gestapelten Plots gleichzeitig
  • Operationen anwenden wie FFT, STFT, gleitender Mittelwert, Ableitung oder Integral direkt aus der Oberfläche
  • Signale anordnen in mehreren Plot-Zeilen für den direkten Vergleich nebeneinander
  • Ansicht wechseln zwischen XY-, Frequenz- und Spektrogramm-Darstellung

Hier unterscheidet sich ScryLab von notebook-basierten Tools wie Plotly oder Bokeh: Die Analyse-Oberfläche ist nicht in die Notebook-Ausgabe eingebettet, sondern lebt in einem eigenen Fenster, das über Cell-Ausführungen hinweg bestehen bleibt.

Daten aktualisieren ohne das Layout zu verlieren

Ein weiterer häufiger Reibungspunkt: Man ändert etwas am Modell und möchte den Effekt auf ein Signal sehen, das man bereits betrachtet. Mit matplotlib führt man die Zelle erneut aus und bekommt ein neues statisches Bild. Mit ScryLab sendet man das aktualisierte Array mit overwrite=True:

y_noisy = np.sin(2 * np.pi * 10 * t) * np.exp(-0.3 * t) + np.random.normal(0, 0.05, size=t.shape)

scry.send(y_noisy, name="Damped Oscillation (noisy)", x=t, y_unit="V", x_unit="s", overwrite=True)

Das Signal wird an Ort und Stelle aktualisiert. Zoom-Level, Layout und alle angewendeten Operationen bleiben erhalten.

Kein Ersatz für matplotlib

matplotlib ist das richtige Werkzeug für Grafiken in Berichten oder Publikationen – reproduzierbar, skriptbar, druckreif. ScryLab ist für die explorative Phase davor: wenn man noch herausfindet, wie die Daten aussehen, welchen Frequenzinhalt sie haben, ob der Filter das tut, was man erwartet.

Die beiden Workflows ergänzen sich. Man exploriert in ScryLab, dann formalisiert man das relevante Ergebnis in matplotlib.

TIP

Um mehrere Signale auf einmal zu senden, kann scry.send_many() verwendet werden, statt scry.send() in einer Schleife aufzurufen. Die vollständige API-Referenz findet sich in der scrylab-python-Dokumentation.