From a857511b2dc2980c3998496242d98189e5f39b18 Mon Sep 17 00:00:00 2001 From: Martin Killenberg <martin.killenberg@desy.de> Date: Tue, 17 Jan 2023 13:55:00 +0100 Subject: [PATCH] improvements in analysis - use list of measurements instead of start/end - use naming scheme - code formatting --- Python_script/analysis.py | 41 +++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/Python_script/analysis.py b/Python_script/analysis.py index 2c87668..8604e09 100644 --- a/Python_script/analysis.py +++ b/Python_script/analysis.py @@ -2,6 +2,7 @@ import pandas as pd import matplotlib.pyplot as plt import math + def extract_stable_data(datafile): datapoint = {} #df is a pandas data frame @@ -15,59 +16,61 @@ def extract_stable_data(datafile): datapoint['phase_var']=phases.var() magnitudes = df.loc[df['EQUILIBRIUM_INDICATOR'] == 31, 'S21_MAGNITUDE'] - datapoint['magnitude_mean']=magnitudes.mean() - datapoint['magnitude_var']=magnitudes.var() + datapoint['magnitude_mean'] = magnitudes.mean() + datapoint['magnitude_var'] = magnitudes.var() temperatures = df.loc[df['EQUILIBRIUM_INDICATOR'] == 31, 'READBACK_TEMPERATURE'] - datapoint['temperature_mean']=temperatures.mean() - datapoint['temperature_var']=temperatures.var() + datapoint['temperature_mean'] = temperatures.mean() + datapoint['temperature_var'] = temperatures.var() humidities = df.loc[df['EQUILIBRIUM_INDICATOR'] == 31, 'READBACK_HUMIDITY'] - datapoint['humidity_mean']=humidities.mean() - datapoint['humidity_var']=humidities.var() + datapoint['humidity_mean'] = humidities.mean() + datapoint['humidity_var'] = humidities.var() return datapoint -#FIXME: Come up with a naming scheme -def plot_temperature_sweep(start_temp, stop_temp, humidity, basename): - temps = [] + +# FIXME: Come up with a naming scheme +def plot_temperature_sweep(temperatures, humidity, basename): + temps_from_data = [] phases = [] phase_vars = [] magnitudes = [] magnitude_vars = [] - for temp in range(start_temp, stop_temp+1): - datafile = str(temp)+'deg_'+str(humidity)+'rh_'+basename+'.csv' + for temp in temperatures: + datafile = basename+'_'+str(temp)+'deg_'+str(humidity)+'rh.csv' print(datafile) datapoint = extract_stable_data(datafile) if datapoint is None: continue - temps.append(datapoint['temperature_mean']) + temps_from_data.append(datapoint['temperature_mean']) phases.append(datapoint['phase_mean']) phase_vars.append(datapoint['phase_var']) magnitudes.append(datapoint['magnitude_mean']) magnitude_vars.append(datapoint['magnitude_var']) - magnitudes_db = [ 20* math.log10(x) for x in magnitudes ] - #approximate formula for small errors (linear approximation) - magnitude_vars_db = [ 20 / math.log(10) * dx/x for x, dx in zip( magnitudes, magnitude_vars )] + magnitudes_db = [20 * math.log10(x) for x in magnitudes ] + # approximate formula for small errors (linear approximation) + magnitude_vars_db = [20 / math.log(10) * dx/x for x, dx in zip(magnitudes, magnitude_vars)] fig, ax1 = plt.subplots() - plt.title('Temperature sweep at ' +str(humidity) + ' % r.h.') + plt.title(basename + ': Temperature sweep at ' + str(humidity) + ' % r.h.') - ax1.errorbar(temps,phases,phase_vars,marker='+',linewidth=0) + ax1.errorbar(temps_from_data, phases, phase_vars, marker='+', linewidth=0) ax1.set_xlabel('temperature [deg C]') ax1.set_ylabel('S21 phase [deg]', color='blue') ax2 = ax1.twinx() - ax2.errorbar(temps,magnitudes_db,magnitude_vars_db,marker='x',color='red',linewidth=0) + ax2.errorbar(temps_from_data, magnitudes_db, magnitude_vars_db, marker='x', color='red', linewidth=0) ax2.set_ylabel('S21 magnitude [dB]', color='red') fig.tight_layout() # otherwise the right y-label is slightly clipped plt.show() + if __name__ == '__main__': - plot_temperature_sweep(20, 30, 40, 'tempsweep1') + plot_temperature_sweep(range(20, 30+1), 40, 'tempsweep1') -- GitLab