in svg/analysis.py [0:0]
def sweep_summary(root):
configs = {}
all_summary = []
for d in glob(f'{root}/*/'):
eval_df = load_eval(d)
if eval_df is None:
continue
# last_eval_rew = eval_df.episode_reward.values[-10:].mean()
last_eval_rew = eval_df.episode_reward.values[-1]
best_eval_rew = eval_df.episode_reward.values.max()
fname = f'{d}/config.yaml'
if not os.path.exists(fname):
fname = f'{d}/.hydra/config.yaml'
assert os.path.exists(fname)
config = OmegaConf.load(fname)
configs[d] = config
fname = f'{d}/overrides.yaml'
if not os.path.exists(fname):
fname = f'{d}/.hydra/overrides.yaml'
assert os.path.exists(fname)
overrides = OmegaConf.load(fname)
summary = dict(x.split('=') for x in overrides)
summary['best_eval_rew'] = best_eval_rew
summary['last_eval_rew'] = last_eval_rew
summary['d'] = d
summary['env_name'] = config.env_name
all_summary.append(summary)
if len(all_summary) == 0:
print('No experiments with eval data found.')
return [None]*4
all_summary = pd.DataFrame(all_summary)
for col in all_summary.columns:
if col != 'env_name' and len(all_summary[col].unique()) == 1:
all_summary.drop(col,inplace=True,axis=1)
filt = ['env_name', 'seed']
groups = [x.split('=')[0] for x in overrides]
groups = [x for x in groups if x not in filt]
groups = list(set(groups) & set(all_summary.columns))
groups = ['env_name'] + groups
groups = all_summary.groupby(groups)
agg = groups.agg(['mean', 'std'])
return all_summary, groups, agg, configs