Example #1
0
 def sample_param_sets(self, pkeys=None, nsamples=None, nkeep=None):
     """ sample *nsamples* (default=5000, see set_fitparams) different
     parameter sets (param_sets) and get model yhat for each set (param_yhats)
     """
     if pkeys is None:
         pkeys = np.sort(list(self.inits))
     if nsamples is None:
         nsamples = self.basinparams['nsamples']
     if nkeep is None:
         nkeep = self.basinparams['ninits']
     unfiltered = theta.random_inits(pkeys, ninits=nsamples, kind=self.kind, as_list=True)
     self.filter_params(unfiltered, nsamples=nsamples, nkeep=nkeep)
     self.finished_sampling = True
Example #2
0
 def sample_theta(self):
     """ sample *nsamples* (default=5000, see set_fitparams) different
     parameter sets (param_sets) and get model yhat for each set (param_yhats)
     """
     pkeys = self.sim.theta.keys().tolist()
     nsamples = self.basinparams['nsamples']
     if not hasattr(self, 'init_params'):
         init_params = theta.random_inits(pkeys, ninits=nsamples, kind=self.kind, as_list=True, method=self.basinparams['sample_method'])
         init_yhats = pd.DataFrame(np.vstack([self.sim.simulate_model(p) for p in init_params]))
         self.init_params = init_params
         self.init_yhats = init_yhats.copy()
     init_params = self.init_params
     init_yhats = self.init_yhats.copy()
     psets = self.filter_params(init_params, init_yhats)
     self.param_sets = psets
Example #3
0
def plot_param_distributions(p, nsamples=1000):
    from radd import theta
    pkeys = np.sort(list(p))
    nparams = pkeys.size
    p_dists = theta.random_inits(pkeys=pkeys, ninits=nsamples)
    clrs = colors.param_color_map()
    lbls = {pk: parameter_name(pk,True) for pk in pkeys}
    ncols = np.ceil(nparams/2.).astype(int)
    fig, axes = plt.subplots(2, ncols, figsize=(10,5))
    axes = axes.flatten()
    for i, pk in enumerate(pkeys):
        sns.distplot(p_dists[pk], label=lbls[pk], color=clrs[pk], ax=axes[i])
    for ax in axes:
        ax.legend(loc=0, fontsize=16)
    plt.tight_layout()
    sns.despine()
Example #4
0
    def sample_rl_theta(self, fitDynamics=True):

        simfx = self.simRL.sim_rt_sacc_blocks
        nsamples = self.basinparams['nsamples']
        nkeep = self.basinparams['ninits']

        if hasattr(self, 'popt'):
            idxParams = pd.DataFrame([pd.Series(self.inits)]*nsamples)

        idxParams = pd.DataFrame([pd.Series(self.popt)]*nsamples)

        if not hasattr(self, 'rlParams'):
            rlParams = theta.random_inits(['AX', 'BX', 'PX'], ninits=nsamples, kind=self.kind, as_list=True, method=self.basinparams['sample_method'])
            rlParamsDF = pd.concat([idxParams,pd.DataFrame(rlParams.tolist())], axis=1)
            self.rlParams = np.array(rlParamsDF.to_dict('records'))
            self.rlYhat = pd.DataFrame(np.vstack([simfx(p) for p in self.rlParams]))

        rlPsets = self.filter_rlParams(self.rlParams, self.rlYhat)
        self.param_sets = rlPsets