def plot_theory_stuff(self): """Plot theory graphic modes""" # if not self.view_modes: # return data_table_tmp = DataTable(self.axarr) data_table_tmp.num_columns = 3 nmodes = self.parameters["nmodes"].value data_table_tmp.num_rows = nmodes data_table_tmp.data = np.zeros((nmodes, 3)) freq = np.logspace(self.parameters["logwmin"].value, self.parameters["logwmax"].value, nmodes) data_table_tmp.data[:, 0] = freq for i in range(nmodes): if self.stop_theory_flag: break data_table_tmp.data[i, 1] = data_table_tmp.data[i, 2] = np.power( 10, self.parameters["logDe%02d" % i].value) view = self.parent_dataset.parent_application.current_view try: x, y, success = view.view_proc(data_table_tmp, None) except TypeError as e: print(e) return self.graphicmodes.set_data(x, y) for i in range(data_table_tmp.MAX_NUM_SERIES): for nx in range(len(self.axarr)): self.axarr[nx].lines.remove(data_table_tmp.series[nx][i])
def __init__(self, file_name="", file_type=None, parent_dataset=None, axarr=None): """**Constructor**""" self.file_full_path = os.path.abspath(file_name) tmpname = os.path.basename(self.file_full_path) self.file_name_short = os.path.splitext(tmpname)[0] self.file_type = file_type self.parent_dataset = parent_dataset self.axarr = axarr #plot attributes self.marker = None self.color = None self.filled = None self.size = None # Shift variables self.isshifted = [False] * DataTable.MAX_NUM_SERIES self.xshift = [0] * DataTable.MAX_NUM_SERIES self.yshift = [0] * DataTable.MAX_NUM_SERIES self.header_lines = [] self.file_parameters = {} self.active = True self.data_table = DataTable(axarr, self.file_name_short) # extra theory xrange self.with_extra_x = False self.theory_xmin = "None" self.theory_xmax = "None" self.theory_logspace = True self.th_num_pts = 10 # number of points self.nextramin = 0 self.nextramax = 0
def plot_theory_stuff(self): """Plot theory helpers""" logtmin = np.log10(self.parent_dataset.minpositivecol(0)) logtmax = np.log10(self.parent_dataset.maxcol(0)) + 1 ntimes = int((logtmax - logtmin) * 20) data_table_tmp = DataTable(self.axarr) data_table_tmp.num_columns = 2 data_table_tmp.num_rows = ntimes data_table_tmp.data = np.zeros((ntimes, 2)) times = np.logspace(logtmin, logtmax, ntimes) data_table_tmp.data[:, 0] = times nmodes = self.parameters["nmodes"].value data_table_tmp.data[:, 1] = 0 fparamaux = {"gdot": 1e-8} phi = [] taud = [] for i in range(nmodes): phi.append(self.parameters["phi%02d" % i].value) taud.append(self.parameters["tauD%02d" % i].value) for i in range(nmodes): if self.stop_theory_flag: break G = self.parameters["GN0"].value if self.with_gcorr == GcorrMode.with_gcorr: G = G * self.gZ(self.Zeff[i]) for j in range(nmodes): # TODO: use symetry to reduce number of loops tau = 1.0 / (1.0 / taud[i] + 1.0 / taud[j]) data_table_tmp.data[:, 1] += (G * phi[i] * phi[j] * fparamaux["gdot"] * tau * (1 - np.exp(-times / tau))) if self.flow_mode == FlowMode.uext: data_table_tmp.data[:, 1] *= 3.0 view = self.parent_dataset.parent_application.current_view try: x, y, success = view.view_proc(data_table_tmp, fparamaux) except TypeError as e: print(e) return self.LVEenvelopeseries.set_data(x[:, 0], y[:, 0]) # remove tmp artist form ax for i in range(data_table_tmp.MAX_NUM_SERIES): for nx in range(len(self.axarr)): self.axarr[nx].lines.remove(data_table_tmp.series[nx][i])
def update_current_view_xrange(self): view = self.parent_dataset.parent_application.current_view tmp_dt = DataTable(axarr=[]) tmp_dt.data = np.empty((1, 3)) tmp_dt.data[:] = np.nan tmp_dt.num_rows = 1 tmp_dt.num_columns = 3 try: xmin = float(self.th_xmin.text()) except ValueError: self.view_xmin.setText("N/A") else: tmp_dt.data[0, 0] = xmin x, y, success = view.view_proc(tmp_dt, self.file.file_parameters) self.view_xmin.setText("%.4g" % x[0, 0]) try: xmax = float(self.th_xmax.text()) except ValueError: self.view_xmax.setText("N/A") else: tmp_dt.data[0, 0] = xmax x, y, success = view.view_proc(tmp_dt, self.file.file_parameters) self.view_xmax.setText("%.4g" % x[0, 0])
def new_dummy_file( self, fname="", xrange=[], yval=0, zval=None, z2val=None, fparams={}, file_type=None, ): """Create File from xrange and file parameters xrange: list of x points yval: float fparam: dict containing file parameter names and values """ if fname == "": filename = ( "dummy_" + "_".join([pname + "%.3g" % fparams[pname] for pname in fparams]) + "." + file_type.extension ) else: filename = ( fname + "_".join([pname + "%.3g" % fparams[pname] for pname in fparams]) + "." + file_type.extension ) f = File( file_name=filename, file_type=file_type, parent_dataset=self, axarr=self.parent_application.axarr, ) f.file_parameters = fparams dt = f.data_table dt.num_columns = len(file_type.col_names) dt.num_rows = len(xrange) dt.data = np.zeros((dt.num_rows, dt.num_columns)) dt.data[:, 0] = xrange if isinstance(yval, list): for i in range(1, dt.num_columns): dt.data[:, i] = yval[:] else: for i in range(1, dt.num_columns): dt.data[:, i] = yval if dt.num_columns > 2: if zval is None: dt.data[:, 2] = np.nan else: dt.data[:, 2] = zval[:] if dt.num_columns > 3: if z2val is None: dt.data[:, 3] = np.nan else: dt.data[:, 3] = z2val[:] unique = True for file in self.files: if ( f.file_name_short == file.file_name_short ): # check if file already exists in current ds unique = False if unique: self.files.append(f) self.current_file = f for th_name in self.theories: # add a theory table self.theories[th_name].tables[f.file_name_short] = DataTable( self.parent_application.axarr, "TH_" + f.file_name_short ) self.theories[th_name].function(f) if CmdBase.mode == CmdMode.GUI: return f, True else: return None, False