Spaces:
Paused
Paused
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) |