From 764ee40b4359c140ad351f9d03cc16187d3981ba Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Sun, 19 Oct 2025 10:04:25 +0200 Subject: [PATCH] [doc] adding calibration doc --- doc/calibration.qmd | 122 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 doc/calibration.qmd diff --git a/doc/calibration.qmd b/doc/calibration.qmd new file mode 100644 index 0000000..81cbc36 --- /dev/null +++ b/doc/calibration.qmd @@ -0,0 +1,122 @@ +--- +title: Calibration +--- + +### Calibration of the Amplitude +```{python} +import rlxnix as rlx +import plotly.graph_objects as go +import numpy as np +from plotly.subplots import make_subplots + + +dataset = rlx.Dataset("../oephys2nix/test/Test1/2025-10-08-aa-invivo-2-recording.nix") +relacs = rlx.Dataset("../oephys2nix/test/Test1/2025-10-08-aa-invivo-2_relacs/2025-10-08-aa-invivo-2.nix") +repro_d = dataset.repro_runs("CalibEfield_1")[0] +repro_r = relacs.repro_runs("CalibEfield_1")[0] + +fig = make_subplots( +rows=4, +cols=1, +shared_xaxes=True, +subplot_titles=( + "Stimulus Comparison", + "Local EOD Comparison", + "Global EOD Comparison", + "Sinus Comparison", +),) + + +sinus, t = repro_d.trace_data("sinus") +sinus_r, t_r = repro_r.trace_data("V-1") + + +stimulus_oe, t = repro_d.trace_data("stimulus") +stimulus_re, t_r = repro_r.trace_data("GlobalEFieldStimulus") + +local_eod_oe, t = repro_d.trace_data("local-eod") +local_eod_re, t_r = repro_r.trace_data("LocalEOD-1") + +global_eod_oe, t = repro_d.trace_data("global-eod") +global_eod_re, t_r = repro_r.trace_data("EOD") + +ttl, t = repro_d.trace_data("ttl-line") +# 2. Add traces to the FIRST subplot (row=1, col=1) +# Note: Plotly rows and columns are 1-indexed +fig.add_trace( + go.Scatter(x=t_r, y=stimulus_re, name="stimulus (relacs)", line_color="blue"), + row=1, + col=1, +) +fig.add_trace( + go.Scatter( + x=t, + y=stimulus_oe - np.mean(stimulus_oe), # The same data transformation + name="stimulus (open-ephys)", + line_color="red", + ), + row=1, + col=1, +) +fig.add_trace( + go.Scatter(x=t, y=ttl, name="ttl-line", line_color="black"), + row=1, + col=1, +) + + +# 3. Add traces to the SECOND subplot (row=2, col=1) +fig.add_trace( + go.Scatter(x=t_r, y=local_eod_re, name="local EOD (relacs)", line_color="blue"), + row=2, + col=1, +) +fig.add_trace( + go.Scatter(x=t, y=local_eod_oe, name="local EOD (open-ephys)", line_color="red"), + row=2, + col=1, +) + + +# 4. Add traces to the THIRD subplot (row=3, col=1) +fig.add_trace( + go.Scatter(x=t_r, y=global_eod_re, name="global EOD (relacs)", line_color="blue"), + row=3, + col=1, +) +fig.add_trace( + go.Scatter( + x=t, y=global_eod_oe, name="global EOD (open-ephys)", line_color="red" + ), + row=3, + col=1, +) + + +# 5. Add traces to the FOURTH subplot (row=4, col=1) +fig.add_trace( + go.Scatter(x=t_r, y=sinus_r, name="sinus (relacs)", line_color="blue"), + row=4, + col=1, +) +fig.add_trace( + go.Scatter(x=t, y=sinus, name="sinus (open-ephys)", line_color="red"), + row=4, + col=1, +) + + +# 6. Update the layout for a cleaner look +fig.update_layout( + title_text="Relacs vs. Open Ephys Data Alignment", + height=800, # Set the figure height in pixels + # Control the legend + legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1), +) +# Add a label to the shared x-axis (targeting the last subplot) +fig.update_xaxes(title_text="Time (s)", row=4, col=1) + + +# 7. Show the figure +fig.show() +```