def gr2summary_str(gr, ndigits=2): summary = [ gr['model_name'].value, gr.file.filename, prnDict(gr2datadict(gr), braces=False), _array_to_table(gr['summary'][:], gr['summary_rownames'][:], gr['summary_colnames'][:], ndigits) ] return '\n\n'.join(summary)
def __init__(self, name, grs_or_fnames): self.name = name self.filenames = [] self.grs = [] for gr_or_fname in grs_or_fnames: if isinstance(gr_or_fname, string_types): self.filenames.append(gr_or_fname) gr = h5py.File(gr_or_fname, 'r') else: self.filenames.append(None) gr = gr_or_fname self.grs.append(gr) self.data = {key: val.value for key, val in gr['data'].items()} self.y = self.data['y'] self.y_control = self.data['y_control'] self.t = self.data['t'] self._y_fit = [get_y_fit(gr) for gr in self.grs] self.y_fit = [percentile_func(_y_fit) for _y_fit in self._y_fit] self._sigma = [get_sigma(gr) for gr in self.grs] self.sigma = [percentile_func(_sigma) for _sigma in self._sigma] self.residuals = [self.y - y_fit(50) for y_fit in self.y_fit] self.reduced_residuals = [residual / sigma(50) for residual, sigma in zip(self.residuals, self.sigma)] self.sorted_residuals = [np.sort(residuals) for residuals in self.reduced_residuals] self.popt_reduced_residuals = [fit_residuals(residuals) for residuals in self.sorted_residuals] self.summary_strs = [gr2summary_str(gr) for gr in self.grs] self.data_strs = [{key: val.value for key, val in gr['data'].items() if not isinstance(val.value, np.ndarray)} for gr in self.grs] self.data2print = [prnDict(d, braces=False) for d in self.data_strs] self._df = [get_df(gr) for gr in self.grs] self.df = [percentile_func(_df) for _df in self._df]