2
0
forked from awendt/pyrelacs

[app] [calibration] adding writing to nix file

This commit is contained in:
wendtalexander 2024-09-27 14:19:46 +02:00
parent cd6bc0dc04
commit a748385335

View File

@ -3,6 +3,7 @@ import sys
import faulthandler import faulthandler
import time import time
import nixio as nix
import uldaq import uldaq
from IPython import embed from IPython import embed
import numpy as np import numpy as np
@ -26,9 +27,9 @@ class Calibration(MccDac):
self.SINFREQ = 750 self.SINFREQ = 750
@staticmethod @staticmethod
def run(): def run(nix_file: nix.File):
calb = Calibration() calb = Calibration()
calb.check_beat() calb.check_beat(nix_file)
def check_amplitude(self): def check_amplitude(self):
db_values = [0.0, -5.0, -10.0, -20.0, -50.0] db_values = [0.0, -5.0, -10.0, -20.0, -50.0]
@ -84,7 +85,7 @@ class Calibration(MccDac):
self.disconnect_dac() self.disconnect_dac()
def check_beat(self): def check_beat(self, nix_file: nix.File):
self.set_attenuation_level(db_channel1=-10.0, db_channel2=0.0) self.set_attenuation_level(db_channel1=-10.0, db_channel2=0.0)
t = np.arange(0, self.DURATION, 1 / self.SAMPLERATE) t = np.arange(0, self.DURATION, 1 / self.SAMPLERATE)
data = self.AMPLITUDE * np.sin(2 * np.pi * self.SINFREQ * t) data = self.AMPLITUDE * np.sin(2 * np.pi * self.SINFREQ * t)
@ -92,7 +93,8 @@ class Calibration(MccDac):
db_values = [0.0, -5.0, -8.5, -10.0] db_values = [0.0, -5.0, -8.5, -10.0]
colors = ["red", "blue", "black", "green"] colors = ["red", "blue", "black", "green"]
colors_in = ["lightcoral", "lightblue", "grey", "lightgreen"] colors_in = ["lightcoral", "lightblue", "grey", "lightgreen"]
fig, axes = plt.subplots(2, 2, sharex="col") block = nix_file.create_block("Calibration", "data")
# fig, axes = plt.subplots(2, 2, sharex="col")
for i, db_value in enumerate(db_values): for i, db_value in enumerate(db_values):
self.set_attenuation_level(db_channel1=db_value) self.set_attenuation_level(db_channel1=db_value)
stim = self.write_analog( stim = self.write_analog(
@ -127,8 +129,27 @@ class Calibration(MccDac):
log.debug( log.debug(
f"Status Analog_output {ao_status}\n, Status Analog_input {ai_status}" f"Status Analog_output {ao_status}\n, Status Analog_input {ai_status}"
) )
channel1 = np.array(readout[::2]) channel1 = np.array(readout[::2])
channel2 = np.array(readout[1::2]) channel2 = np.array(readout[1::2])
block.create_data_array(
f"stimulus_{db_value}",
"Array",
shape=data.shape,
data=channel1,
label="Voltage",
unit="V",
)
block.create_data_array(
f"fish_{db_value}",
"Array",
shape=data.shape,
data=channel2,
label="Voltage",
unit="V",
)
beat = channel1 + channel2 beat = channel1 + channel2
beat_square = beat**2 beat_square = beat**2
@ -145,69 +166,69 @@ class Calibration(MccDac):
f_in, powerspec_in = welch(channel2, fs=self.SAMPLERATE) f_in, powerspec_in = welch(channel2, fs=self.SAMPLERATE)
powerspec_in = decibel(powerspec_in) powerspec_in = decibel(powerspec_in)
axes[0, 0].plot( # axes[0, 0].plot(
t, # t,
channel1, # channel1,
label=f"{db_value} Readout Channel0", # label=f"{db_value} Readout Channel0",
color=colors[i], # color=colors[i],
) # )
axes[0, 0].plot( # axes[0, 0].plot(
t, # t,
channel2, # channel2,
label=f"{db_value} Readout Channel1", # label=f"{db_value} Readout Channel1",
color=colors_in[i], # color=colors_in[i],
) # )
#
axes[0, 1].plot( # axes[0, 1].plot(
f_stim, # f_stim,
powerspec_stim, # powerspec_stim,
label=f"{db_value} powerspec Channel0", # label=f"{db_value} powerspec Channel0",
color=colors[i], # color=colors[i],
) # )
axes[0, 1].plot( # axes[0, 1].plot(
f_in, # f_in,
powerspec_in, # powerspec_in,
label=f"{db_value} powerspec Channel2", # label=f"{db_value} powerspec Channel2",
color=colors_in[i], # color=colors_in[i],
) # )
axes[0, 1].set_xlabel("Freq [HZ]") # axes[0, 1].set_xlabel("Freq [HZ]")
axes[0, 1].set_ylabel("dB") # axes[0, 1].set_ylabel("dB")
#
axes[1, 0].plot( # axes[1, 0].plot(
t, # t,
beat, # beat,
label="Beat", # label="Beat",
color=colors[i], # color=colors[i],
) # )
axes[1, 0].plot( # axes[1, 0].plot(
t, # t,
beat**2, # beat**2,
label="Beat squared", # label="Beat squared",
color=colors_in[i], # color=colors_in[i],
) # )
axes[1, 0].legend() # axes[1, 0].legend()
#
axes[1, 1].plot( # axes[1, 1].plot(
f, # f,
powerspec, # powerspec,
color=colors[i], # color=colors[i],
) # )
axes[1, 1].plot( # axes[1, 1].plot(
f_sq, # f_sq,
powerspec_sq, # powerspec_sq,
color=colors_in[i], # color=colors_in[i],
label=f"dB {db_value}, first peak {np.min(f_sq[peaks])}", # label=f"dB {db_value}, first peak {np.min(f_sq[peaks])}",
) # )
axes[1, 1].scatter( # axes[1, 1].scatter(
f_sq[peaks], # f_sq[peaks],
powerspec_sq[peaks], # powerspec_sq[peaks],
color="maroon", # color="maroon",
) # )
axes[1, 1].set_xlabel("Freq [HZ]") # axes[1, 1].set_xlabel("Freq [HZ]")
axes[1, 1].set_ylabel("dB") # axes[1, 1].set_ylabel("dB")
axes[0, 0].legend() # axes[0, 0].legend()
axes[1, 1].legend() # axes[1, 1].legend()
plt.show() # plt.show()
self.set_analog_to_zero() self.set_analog_to_zero()
self.disconnect_dac() self.disconnect_dac()