import struct, glob from collections import defaultdict base="/home/kenpeter/work/twoleg/training/logs/rsl_rl/velocity/2026-10-01_08-39-53_velocity/" f=glob.glob(base+"events.out.tfevents.*")[0] d=open(f,'rb').read() off=0; n=len(d); recs=[] while off+12<=n: ln=struct.unpack('n: break recs.append(d[off:off+ln]); off+=ln+4 def varint(buf, i): val=0; shift=0 while True: b=buf[i]; i+=1; val|=(b&0x7f)<>3; wire=key&7 if wire==2: ln,i=varint(sub,i) s=sub[i:i+ln]; i+=ln if field==1: tag=None; simple=None; j=0; M=len(s) while j>3; w2=k&7 if w2==2: l2,j=varint(s,j) ss=s[j:j+l2]; j+=l2 if f2==1: tag=ss.decode('utf-8','replace') elif w2==5: if f2==2: simple=struct.unpack('>3; wire=key&7 if wire==2: ln,i=varint(rec,i) sub=rec[i:i+ln]; i+=ln # detect if sub looks like a Summary.Value (contains a string tag) if b'\x0a' in sub and (b'\x15' in sub or b'\t' in sub): for tag,val in parse_summary(sub): last[tag]=val alltags.add(tag) elif wire==1: i+=8 elif wire==0: _,i=varint(rec,i) else: break print("ALL TAGS:", len(alltags)) kept=['reward','episode','track','mean_ep','command','error','lin_vel','ang_vel','torso','height','base','orient','upright','pose','dof','action'] for tag in sorted(alltags): tl=tag.lower() if any(k in tl for k in kept): print(f"{tag} = {last[tag]}")