Source code for data2plot


import h5py
import numpy as np
import matplotlib.pyplot as plt
import os


[docs]def plot(filename): """Generates a figer from a file which has a predefined format. The use is, to call saved files and generates plots for reevaluation in the GUI window :param filename: *.h5 file path with data to plot data :type filename: str :return: figure of a type matplotlib which can be ploted :rtype: figure """ #filename = "file.hdf5" #filename = "./signals/20210916_174823_setup.h5" #filename = "/home/pi/lukas_bararbeit/signals/11111111111_093701_setup.h5" folder_signal = "signals_TEST/" print("filename for lotting", filename) font_plot = {'family': 'serif', 'color': 'darkred', 'weight': 'normal', 'size': 16} with h5py.File(filename, "r") as f: # List all groups print("Keys: %s" % f.keys()) a_group_key = list(f.keys())[0] # Get the data data_raw = list(f[a_group_key]) print("\n data length: ", len(data_raw)) print("end of import") print("data_raw ", type(data_raw), "\n") print(list(f.keys())) description = list(f.keys()) data = data_raw[0] print(data) #data_1 = data_raw[1] #print(*data, sep="\n ") print("\n data description: ", description) print("\n legth of datasampels", len(data)) print("\n type of datasampels", type(data)) print("\n data: ", (data)) samp_rate = int(30.72 * (10 ^ 6)) # Samples/s time_length = abs((len(data)/samp_rate)/(10 ^ (-6))) print((10 ^ (-6)), "time_length", samp_rate) time = np.linspace(0, time_length, len( data), endpoint=False) # in micro sec # stimulus stimulus_data_start = 0 stimulus_data_end = 600 stimulus_data = data[stimulus_data_start:stimulus_data_end] stimulus_time = time[stimulus_data_start:stimulus_data_end] #print("stimulus_time ",stimulus_time) f = 20 # Frequency, in cycles per second, or Hertz f_s = 1000 # Sampling rate, or number of measurements per second t = np.linspace(0, 2, 2 * f_s, endpoint=False) #stimulus_data = np.sin(f * np.pi * t) stimulus_data_fft = np.fft.rfft(stimulus_data) stimulus_data_fft = abs(stimulus_data_fft) # replay replay_data_start = 900 replay_data_end = 1400 replay_data = data[replay_data_start:replay_data_end] replay_time = time[replay_data_start:replay_data_end] print("legth of replay_data", len(replay_data)) # replay fft replay_data = np.asarray(replay_data, dtype=np.float32) replay_data_fft = np.fft.rfft(replay_data) replay_data_fft = abs(replay_data_fft) print("legth of datasampels", len(data)) plt.figure() plt.plot(time[0:1000], data[0:1000]) titel_plot = "Timedomain " + filename[45:-1] plt.title(titel_plot, fontdict=font_plot) plt.xlabel("time (ms)", fontdict=font_plot) plt.ylabel("voltage (mV)", fontdict=font_plot) text = "min: "+str(replay_data_start) + "\n max: "+str(replay_data_end) plt.text(150, 150, text, fontdict={ 'family': 'serif', 'weight': 'normal', 'size': 10}) save_filename = folder_signal+"/plots/" + "sample_" + filename[42:-4] print("save_filename", save_filename + ".jpg") plt.savefig("save_filename" + ".jpg") #plt.savefig("save_filename" + ".svg") # plt.show() #figure, ax = plt.subplots(nrows=2, ncols=2) figure, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2) figure.tight_layout(pad=2.0) figure.set_size_inches(14, 10, forward=True) #ax1 = plt.subplot(211) # ax1.margins(0.05) ax1.plot(stimulus_time, stimulus_data) ax1.set_title("Time-domain stimulus", fontdict={'size': 10}) ax1.set_xlabel('time in µsec', fontsize=8) ax1.set_ylabel('amplitude in a.u.', fontsize=8) ax2.plot(replay_time, replay_data) ax2.set_title("Time-domain replay", fontdict={'size': 10}) ax2.set_xlabel('time in µsec', fontsize=8) ax2.set_ylabel('amplitude in a.u.', fontsize=8) ax3.plot(stimulus_data_fft) ax3.set_title("Frequency-domain stimulus", fontdict={'size': 10}) ax3.set_xlabel('frequency in MHz', fontsize=8) ax3.set_ylabel('amplitude in a.u.', fontsize=8) ax4.plot(replay_data_fft) ax4.set_title("Frequency-domain replay", fontdict={'size': 10}) ax4.set_xlabel('frequency in MHz', fontsize=8) ax4.set_ylabel('amplitude in a.u.', fontsize=8) plt.savefig("save_filename"+".jpg") # plt.show() return figure
if __name__ == "__main__": files = [] folder_signal = "signals_TEST/" for file in os.listdir(folder_signal): if file.endswith(".h5"): file_name = os.path.join(folder_signal, file) # print(file_name,"\n") files.append(file_name) file = "signals_TEST/live_scan_data.csv" #file_name = os.path.join(folder_signal, file) file = "signals_TEST/live_scan_data.csv" fig = plot(file) # exit() for file in files: print("\n \n loop", file) plot(file) break # plt.plot(tdx,tdy)