Source code for barrage.utils.io_utils

import json
import os
import pickle

import numpy as np
import pandas as pd


[docs]def load_json(filename: str, path: str = ""): """Load a json object. Args: filename: str. path: str. Returns: object. """ with open(os.path.join(path, filename), "r") as fn: return json.load(fn)
[docs]def save_json(obj, filename: str, path: str = ""): """Save a json object. Args: obj: object. filename: str. path: str. """ def _default(obj): if isinstance(obj, np.generic): return obj.item() elif isinstance(obj, np.ndarray): return obj.tolist() else: raise TypeError(f"invalid json serialization type: {type(obj)}") with open(os.path.join(path, filename), "w") as fn: json.dump(obj, fn, indent=2, sort_keys=True, default=_default)
[docs]def load_pickle(filename: str, path: str = ""): """Load a pickled object. Args: filename: str. path: str. Returns: object. """ with open(os.path.join(path, filename), "rb") as fn: return pickle.load(fn)
[docs]def save_pickle(obj, filename: str, path: str = ""): """Save a pickled object. Args: obj: object. filename: str. path: str. """ with open(os.path.join(path, filename), "wb") as fn: pickle.dump(obj, fn)
[docs]def load_data(filename: str, path: str = "") -> pd.DataFrame: """Load a file into a pandas DataFrame. Args: filename: str. path: str. Returns: pd.DataFrame. """ filepath = os.path.join(path, filename) if not os.path.isfile(filepath): raise FileNotFoundError(f"filepath: {filepath} does not exist") ext = os.path.splitext(filepath)[1].lower() if ext == ".json": return pd.read_json(filepath) elif ext == ".csv": return pd.read_csv(filepath) else: raise ValueError("Unsupported extension: {ext}")