1import numpy as np
2from pybullet_envs.deep_mimic.env.env import Env
3
4
5class Path(object):
6
7  def __init__(self):
8    self.clear()
9    return
10
11  def pathlength(self):
12    return len(self.actions)
13
14  def is_valid(self):
15    valid = True
16    l = self.pathlength()
17    valid &= len(self.states) == l + 1
18    valid &= len(self.goals) == l + 1
19    valid &= len(self.actions) == l
20    valid &= len(self.logps) == l
21    valid &= len(self.rewards) == l
22    valid &= len(self.flags) == l
23
24    return valid
25
26  def check_vals(self):
27    for vals in [self.states, self.goals, self.actions, self.logps, self.rewards]:
28      for v in vals:
29        if not np.isfinite(v).all():
30          return False
31    return True
32
33  def clear(self):
34    self.states = []
35    self.goals = []
36    self.actions = []
37    self.logps = []
38    self.rewards = []
39    self.flags = []
40    self.terminate = Env.Terminate.Null
41    return
42
43  def get_pathlen(self):
44    return len(self.rewards)
45
46  def calc_return(self):
47    return sum(self.rewards)
48