Loading src/Utils.py +34 −13 Original line number Diff line number Diff line Loading @@ -56,34 +56,43 @@ def set_SPA_for_measure(ms2830a, config_file, manual_command): return log_list ######################### # PLOT # ######################### def plot_lineplot(trace): """ Plot trace retrieved from Anritsu MS2830A Signal Source Analyzer Utily function to plot trace retrieved from Anritsu MS2830A Signal Source Analyzer """ x = np.arange(len(trace)) # x axis x = calcFrequency() # x axis dataset = pd.DataFrame({"points": x , "dbM": trace}) sns.set_style("darkgrid") sns.lineplot(x="points", y="dbM", data=dataset) plt.show() def plot_Trx_Tm(trace1, trace2): x = np.arange(len(trace1)) # x axis dataset = pd.DataFrame({ "Trx": trace1, "Tm": trace2}) sns.set_style("darkgrid") sns.lineplot(data=dataset) plt.show() def plot_results(trx, tm, dr, mr, upperBound, lowerBound): """ Utily function to plot calculated data (trx, tm, dr, mr and bounds) def plot_Dr_Mr(trace1, trace2, upperBound, lowerBound): x = np.arange(len(trace1)) # x axis dataset = pd.DataFrame({ "Dr": trace1, "Mr": trace2, "Upperbound": upperBound, "Lowerbound": lowerBound}) """ dataset1 = pd.DataFrame({ "Trx": trx, "Tm": tm}) dataset2 = pd.DataFrame({ "Dr": dr, "Mr": mr, "Upperbound": upperBound, "Lowerbound": lowerBound}) fig, axs = plt.subplots(ncols=2, figsize=(18, 10)) fig.suptitle('Measure results') axs[0].set_title('Trx and Tm') axs[1].set_title('Dr and Mr') sns.set_style("darkgrid") sns.lineplot(data=dataset) sns.lineplot(ax=axs[0], data=dataset1) sns.lineplot(ax=axs[1], data=dataset2) plt.show() ######################### # FILE MANAGER # ######################### def save_data_as_csv(trace): """ Utility function for saving data in csv extension Loading Loading @@ -136,6 +145,18 @@ def getWatts(dBm): """ return map(dBm2W, dBm) def calcFrequency(): """ Function used to calculate the x-axis of the trace (frequencies) """ config_file = read_config_file("../config/config_MS2830A.json") tmp_freq = ((config_file["stop_freq"] - config_file["start_freq"]) / (config_file["sweep_trace_points"] - 1)) frequency = [(config_file["start_freq"] + (tmp_freq * i)) for i in range(0, config_file["sweep_trace_points"]) ] return frequency def getCalculus(traces, Tc = 77, Th = 297): """ Function that returns useful calculus from trace data Loading src/tabs/measure_tab.py +6 −6 Original line number Diff line number Diff line Loading @@ -155,17 +155,17 @@ def measure(self, TNotebook1): watt_traces = list() for trace in self._traces: watt_traces.append(np.array(list(Utils.getWatts(trace)))) # get frequency self.frequency = Utils.calcFrequency() # get calculus self.dMeasure, self.drMeasure, self.Pc, self.PcPlusM, self.PhPlusM, self.Ph, self.Yvalue, self.Trx, self.Tm, self.Thm = Utils.getCalculus(watt_traces, float(self.MeasureEntry3.get()), float(self.MeasureEntry4.get())) # traspose rows in columns self.columns_trace = zip(self._traces[0], self._traces[1], self._traces[2], self.columns_trace = zip(self.frequency, self._traces[0], self._traces[1], self._traces[2], self._traces[3], self._traces[4], self.dMeasure, self.drMeasure, self.Pc, self.PcPlusM, self.PhPlusM, self.Ph, self.Yvalue, self.Trx, self.Tm, self.Thm) Utils.plot_Trx_Tm(self.Trx, self.Tm) Utils.plot_Dr_Mr(self.drMeasure, (self.Tm/self.Thm), float(self.BoundEntry1.get()), float(self.BoundEntry2.get())) Utils.plot_results(self.Trx, self.Tm, self.drMeasure, (self.Tm/self.Thm), float(self.BoundEntry1.get()), float(self.BoundEntry2.get())) self.ButtonMeasure2.config(state=NORMAL) self.TextMeasure1.insert(tk.END, "\nAll measurements were successful\n") self.Message5.configure(background="#d9d9d9", font=("Helvetica",10)) Loading Loading @@ -208,7 +208,7 @@ def measure(self, TNotebook1): # Channel and Polarization writer.writerow(["Date/hour: " + str(datetime.datetime.now()),"Channel: " + str(self.MeasureEntry1.get()), "Polarization: " + str(self.MeasureEntry2.get())]) # titles writer.writerow(["RAW:Pc", "RAW:Pc + m", "RAW:Ph + m", "RAW:Ph", "RAW:Pc'", "dMeasure", "drMeasure", "Pc", "PcPlusM", "PhPlusM", "Ph", "Yvalue", "Trx", "Tm", "Thm"]) writer.writerow(["Frequency","RAW:Pc", "RAW:Pc + m", "RAW:Ph + m", "RAW:Ph", "RAW:Pc'", "dMeasure", "drMeasure", "Pc", "PcPlusM", "PhPlusM", "Ph", "Yvalue", "Trx", "Tm", "Thm"]) # traces and calculus for column_trace in self.columns_trace: writer.writerow(column_trace) Loading Loading
src/Utils.py +34 −13 Original line number Diff line number Diff line Loading @@ -56,34 +56,43 @@ def set_SPA_for_measure(ms2830a, config_file, manual_command): return log_list ######################### # PLOT # ######################### def plot_lineplot(trace): """ Plot trace retrieved from Anritsu MS2830A Signal Source Analyzer Utily function to plot trace retrieved from Anritsu MS2830A Signal Source Analyzer """ x = np.arange(len(trace)) # x axis x = calcFrequency() # x axis dataset = pd.DataFrame({"points": x , "dbM": trace}) sns.set_style("darkgrid") sns.lineplot(x="points", y="dbM", data=dataset) plt.show() def plot_Trx_Tm(trace1, trace2): x = np.arange(len(trace1)) # x axis dataset = pd.DataFrame({ "Trx": trace1, "Tm": trace2}) sns.set_style("darkgrid") sns.lineplot(data=dataset) plt.show() def plot_results(trx, tm, dr, mr, upperBound, lowerBound): """ Utily function to plot calculated data (trx, tm, dr, mr and bounds) def plot_Dr_Mr(trace1, trace2, upperBound, lowerBound): x = np.arange(len(trace1)) # x axis dataset = pd.DataFrame({ "Dr": trace1, "Mr": trace2, "Upperbound": upperBound, "Lowerbound": lowerBound}) """ dataset1 = pd.DataFrame({ "Trx": trx, "Tm": tm}) dataset2 = pd.DataFrame({ "Dr": dr, "Mr": mr, "Upperbound": upperBound, "Lowerbound": lowerBound}) fig, axs = plt.subplots(ncols=2, figsize=(18, 10)) fig.suptitle('Measure results') axs[0].set_title('Trx and Tm') axs[1].set_title('Dr and Mr') sns.set_style("darkgrid") sns.lineplot(data=dataset) sns.lineplot(ax=axs[0], data=dataset1) sns.lineplot(ax=axs[1], data=dataset2) plt.show() ######################### # FILE MANAGER # ######################### def save_data_as_csv(trace): """ Utility function for saving data in csv extension Loading Loading @@ -136,6 +145,18 @@ def getWatts(dBm): """ return map(dBm2W, dBm) def calcFrequency(): """ Function used to calculate the x-axis of the trace (frequencies) """ config_file = read_config_file("../config/config_MS2830A.json") tmp_freq = ((config_file["stop_freq"] - config_file["start_freq"]) / (config_file["sweep_trace_points"] - 1)) frequency = [(config_file["start_freq"] + (tmp_freq * i)) for i in range(0, config_file["sweep_trace_points"]) ] return frequency def getCalculus(traces, Tc = 77, Th = 297): """ Function that returns useful calculus from trace data Loading
src/tabs/measure_tab.py +6 −6 Original line number Diff line number Diff line Loading @@ -155,17 +155,17 @@ def measure(self, TNotebook1): watt_traces = list() for trace in self._traces: watt_traces.append(np.array(list(Utils.getWatts(trace)))) # get frequency self.frequency = Utils.calcFrequency() # get calculus self.dMeasure, self.drMeasure, self.Pc, self.PcPlusM, self.PhPlusM, self.Ph, self.Yvalue, self.Trx, self.Tm, self.Thm = Utils.getCalculus(watt_traces, float(self.MeasureEntry3.get()), float(self.MeasureEntry4.get())) # traspose rows in columns self.columns_trace = zip(self._traces[0], self._traces[1], self._traces[2], self.columns_trace = zip(self.frequency, self._traces[0], self._traces[1], self._traces[2], self._traces[3], self._traces[4], self.dMeasure, self.drMeasure, self.Pc, self.PcPlusM, self.PhPlusM, self.Ph, self.Yvalue, self.Trx, self.Tm, self.Thm) Utils.plot_Trx_Tm(self.Trx, self.Tm) Utils.plot_Dr_Mr(self.drMeasure, (self.Tm/self.Thm), float(self.BoundEntry1.get()), float(self.BoundEntry2.get())) Utils.plot_results(self.Trx, self.Tm, self.drMeasure, (self.Tm/self.Thm), float(self.BoundEntry1.get()), float(self.BoundEntry2.get())) self.ButtonMeasure2.config(state=NORMAL) self.TextMeasure1.insert(tk.END, "\nAll measurements were successful\n") self.Message5.configure(background="#d9d9d9", font=("Helvetica",10)) Loading Loading @@ -208,7 +208,7 @@ def measure(self, TNotebook1): # Channel and Polarization writer.writerow(["Date/hour: " + str(datetime.datetime.now()),"Channel: " + str(self.MeasureEntry1.get()), "Polarization: " + str(self.MeasureEntry2.get())]) # titles writer.writerow(["RAW:Pc", "RAW:Pc + m", "RAW:Ph + m", "RAW:Ph", "RAW:Pc'", "dMeasure", "drMeasure", "Pc", "PcPlusM", "PhPlusM", "Ph", "Yvalue", "Trx", "Tm", "Thm"]) writer.writerow(["Frequency","RAW:Pc", "RAW:Pc + m", "RAW:Ph + m", "RAW:Ph", "RAW:Pc'", "dMeasure", "drMeasure", "Pc", "PcPlusM", "PhPlusM", "Ph", "Yvalue", "Trx", "Tm", "Thm"]) # traces and calculus for column_trace in self.columns_trace: writer.writerow(column_trace) Loading