Source code for torch_geometric.graphgym.utils.io

import json
import os
import shutil
import ast


def string_to_python(string):
    try:
        return ast.literal_eval(string)
    except Exception:
        return string


[docs]def dict_to_json(dict, fname): ''' Dump a Python dictionary to JSON file Args: dict (dict): Python dictionary fname (str): Output file name ''' with open(fname, 'a') as f: json.dump(dict, f) f.write('\n')
[docs]def dict_list_to_json(dict_list, fname): ''' Dump a list of Python dictionaries to JSON file Args: dict_list (list of dict): List of Python dictionaries fname (str): Output file name ''' with open(fname, 'a') as f: for dict in dict_list: json.dump(dict, f) f.write('\n')
def json_to_dict_list(fname): dict_list = [] epoch_set = set() with open(fname) as f: lines = f.readlines() for line in lines: line = line.rstrip() dict = json.loads(line) if dict['epoch'] not in epoch_set: dict_list.append(dict) epoch_set.add(dict['epoch']) return dict_list
[docs]def dict_to_tb(dict, writer, epoch): ''' Add a dictionary of statistics to a Tensorboard writer Args: dict (dict): Statistics of experiments, the keys are attribute names, the values are the attribute values writer: Tensorboard writer object epoch (int): The current epoch ''' for key in dict: writer.add_scalar(key, dict[key], epoch)
def dict_list_to_tb(dict_list, writer): for dict in dict_list: assert 'epoch' in dict, 'Key epoch must exist in stats dict' dict_to_tb(dict, writer, dict['epoch']) def makedirs(dir): os.makedirs(dir, exist_ok=True)
[docs]def makedirs_rm_exist(dir): ''' Make a directory, remove any existing data. Args: dir (str): The directory to be created. Returns: ''' if os.path.isdir(dir): shutil.rmtree(dir) os.makedirs(dir, exist_ok=True)