Spaces:
Paused
Paused
File size: 1,626 Bytes
101093d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
import os
import glob
import tqdm
import pickle
import subprocess
import pandas as pd
def run_subprocess(*args):
# Trigger the multigraph.py script to run and save metagraph snapshots
return subprocess.run('python multigraph.py'.split()+list(args),
shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
def load_metagraph(path, extra_cols=None, rm_cols=None):
with open(path, 'rb') as f:
metagraph = pickle.load(f)
df = pd.DataFrame(metagraph.axons)
df['block'] = metagraph.block.item()
df['difficulty'] = metagraph.difficulty
for c in extra_cols:
vals = getattr(metagraph,c)
df[c] = vals
return df.drop(columns=rm_cols)
def load_metagraphs(block_start, block_end, block_step=1000, datadir='data/metagraph/1/', extra_cols=None):
if extra_cols is None:
extra_cols = ['total_stake','ranks','incentive','emission','consensus','trust','validator_trust','dividends']
blocks = range(block_start, block_end, block_step)
filenames = sorted(path for path in os.listdir(datadir) if int(path.split('.')[0]) in blocks)
metagraphs = []
pbar = tqdm.tqdm(filenames)
for filename in pbar:
pbar.set_description(f'Processing {filename}')
metagraph = load_metagraph(os.path.join(datadir, filename), extra_cols=extra_cols, rm_cols=['protocol','placeholder1','placeholder2'])
metagraphs.append(metagraph)
return pd.concat(metagraphs)
load_metagraphs(block_start=700_000, block_end=800_000, block_step=1000) |