Пример #1
0
    def __init__(self, store_file):
        self.store_file = store_file
        args = utl.GetTrainedEmulator(store_file)
        emulator = args[0]
        prior = args[1]
        self.exp_Y = args[2]
        self.exp_Yerr = args[3]
        self.model_X = args[4]
        self.model_Y = args[5]
        init_training_idx = args[6]

        self.viewer = EmulatorViewer(
            prior.index,
            prior["Min"],
            prior["Max"],
            0.5 * (prior["Min"] + prior["Max"]),
            size=(1000, 700),
            parent=None,
        )
        self.model = emulator

        self.current_values = 0.5 * \
            (prior["Min"] + prior["Max"]).values.flatten()
        init_value, init_cov = self.model.Predict(self.current_values)

        self.X = np.arange(init_value.shape[1])
        self.line, _, (self.bars,) = self.viewer.ax.errorbar(
            self.X,
            init_value.flatten(),
            yerr=np.sqrt(np.diag(np.atleast_1d(np.squeeze(init_cov)))).flatten(),
            marker="o",
            linewidth=2,
            color="red",
        )
        self.bg_line, _, (self.bg_bars,) = self.viewer.ax.errorbar(
            self.X, self.exp_Y, yerr=self.exp_Yerr, marker="o", linewidth=2, color="b")

        # set plot display range
        self.viewer.ax.set_ylim(np.min(self.model_Y.values), np.max(self.model_Y.values))
        par_name = [name[0:15] if len(
            name) > 14 else name for name in list(self.model_Y)]
        self.viewer.ax.set_xticks(self.X)
        self.viewer.ax.set_xticklabels(par_name, rotation=45)
        self.viewer.RefreshFig()

        self.items = ["Check All", "Exp"] + \
            self.model_Y.index.astype(str).tolist()
        self.viewer.clb.SetItems(self.items)
        self.viewer.clb.SetCheckedItems(
            [0, 1] + [item + 2 for item in init_training_idx]
        )

        pub.subscribe(self.CheckObj, "Slider_Value", func=self.OnSlider)
        pub.subscribe(
            self.CheckObj,
            "Emulator_ListSelect",
            func=self.OnListSelect)
        pub.subscribe(
            self.CheckObj,
            "Emulator_CheckSelect",
            func=self.OnCheckboxSelect)
        pub.subscribe(self.CheckObj, "Emulator_Retrain", func=self.OnRetrain)