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])
Exemple #2
0
    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
Exemple #3
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])
Exemple #5
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