diff --git a/measure.py b/measure.py index b3e9139f31d05ca443cf51c60e3df10777ddd7a2..3033b3c5748af102cae1ff210a5a8bce5695d422 100644 --- a/measure.py +++ b/measure.py @@ -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. diff --git a/test_measure_with_ohmpi_card_3_15.py b/test_measure_with_ohmpi_card_3_15.py index da60b4cb3d68a3ea392b6691ba23279aa660f04b..eca45fbb07faeef728ad590e1878584ed0c2ac07 100644 --- a/test_measure_with_ohmpi_card_3_15.py +++ b/test_measure_with_ohmpi_card_3_15.py @@ -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)