Commit 66a9e933 authored by Olivier Kaufmann's avatar Olivier Kaufmann
Browse files

Adds an sp property

No related merge requests found
Showing with 27 additions and 3 deletions
+27 -3
......@@ -82,6 +82,25 @@ class OhmPiHardware:
self.readings = np.array(_readings)
self._pulse += 1
@property
def sp(self):
if len(self.readings[self.readings[:,2]==1, :]) < 1 or len(self.readings[self.readings[:,2]==-1, :]) < 1:
self.exec_logger.warning('Unable to compute sp: readings should at least contain one positive and one negative pulse')
return 0.
else:
n_pulses = int(np.max(self.readings[:, 1]))
polarity = np.array([np.mean(self.readings[self.readings[:, 1] == i, 2]) for i in range(n_pulses + 1)])
mean_vmn = []
mean_iab = []
for i in range(n_pulses + 1):
mean_vmn.append(np.mean(self.readings[self.readings[:, 1] == i, 4]))
mean_iab.append(np.mean(self.readings[self.readings[:, 1] == i, 3]))
mean_vmn = np.array(mean_vmn)
mean_iab = np.array(mean_iab)
print(f'Vmn: {mean_vmn}, Iab: {mean_iab}')
sp = np.mean(mean_vmn[np.ix_(polarity==1)] - mean_vmn[np.ix_(polarity==-1)]) / 2
return sp
def _compute_tx_volt(self, best_tx_injtime=0.1, strategy='vmax', tx_volt=5,
vab_max=voltage_max, vmn_min=voltage_min):
"""Estimates best Tx voltage based on different strategies.
......
......@@ -8,11 +8,16 @@ from OhmPi.measure import OhmPiHardware
k = OhmPiHardware()
k.exec_logger.setLevel(logging.INFO)
# Test #1:
print('Testing _vab_pulse')
print('Testing positive _vab_pulse')
k._vab_pulse(vab=12, length=1., sampling_rate=k.rx.sampling_rate, polarity=1)
r = k.readings[:,4]/k.readings[:,3]
print(f'Mean resistance: {np.mean(r):.3f} Ohms, Dev. {100*np.std(r)/np.mean(r):.1f} %')
print(f'sampling rate: {k.rx.sampling_rate:.1f} ms, mean sample spacing: {np.mean(np.diff(k.readings[:,0]))*1000.:.1f} ms')
print('Testing negative _vab_pulse')
k._vab_pulse(vab=12, length=1., sampling_rate=k.rx.sampling_rate, polarity=-1)
r = k.readings[:,4]/k.readings[:,3]
print(f'Mean resistance: {np.mean(r):.3f} Ohms, Dev. {100*np.std(r)/np.mean(r):.1f} %')
print(f'sampling rate: {k.rx.sampling_rate:.1f} ms, mean sample spacing: {np.mean(np.diff(k.readings[:,0]))*1000.:.1f} ms')
# Test #2:
print('\n\nTesting vab_square_wave')
......@@ -42,8 +47,8 @@ mean_vmn = np.array(mean_vmn)
mean_iab = np.array(mean_iab)
print(f'Vmn: {mean_vmn}, Iab: {mean_iab}')
sp = np.mean(mean_vmn[np.ix_([0,2,4])]-mean_vmn[np.ix_([1,3,5])])/2
print(f'SP: {sp} mV')
r = ((k.readings[:,4]+k.readings[:,1]*sp)/k.readings[:,3])
print(f'SP: {sp} mV, sp property: {k.sp}')
r = ((k.readings[:,4]-k.readings[:,2]*sp)/k.readings[:,3])
print(f'Mean resistance with sp correction : {np.mean(r):.3f} Ohms, Dev. {100*np.std(r)/np.mean(r):.1f} %')
change_config('config_default.py', verbose=False)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment