Commit 91995fa7 authored by Maiterth, Matthias's avatar Maiterth, Matthias
Browse files

Update to write_dict_to_file

This update was needed as some dataloaders that use numpy failed to dump
accounts.json files. This now works.

However reading them in fails.
To be fixed in the next commit.
parent 4e7b7946
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ from raps.account import Accounts
from raps.weather import Weather
from raps.utils import create_casename, convert_to_seconds, write_dict_to_file, next_arrival
from raps.stats import get_engine_stats, get_job_stats, get_scheduler_stats
from raps.utils import convert_numpy_to_builtin

config = ConfigManager(system_name=args.system).get_config()

@@ -281,5 +282,5 @@ if args.output:
                    json_string = json.dumps(sc.accounts.to_dict())
                    f.write(json_string)
            except TypeError:
                raise TypeError(f"{sc.accounts} could not be parsed by json.dump")
                write_dict_to_file(sc.accounts.to_dict(), OPATH / 'accounts.json')
    print("Output directory is: ", OPATH)  # If output is enabled, the user wants this information as last output
+23 −1
Original line number Diff line number Diff line
@@ -360,7 +360,8 @@ def write_dict_to_file(dictionary, file_path):
            if isinstance(value, dict):
                file.write(f"{key}: {{\n")
                for subkey, subvalue in value.items():
                    file.write(f"  {subkey}: {subvalue}\n")
                    base_subvalue = convert_numpy_to_builtin(subvalue)
                    file.write(f"  {subkey}: {base_subvalue}\n")
                file.write("}\n")
            else:
                file.write(f"{key}: {value}\n")
@@ -375,6 +376,27 @@ def toJSON(obj):
        indent=4)


def convert_numpy_to_builtin(obj):
    if isinstance(obj, dict):
        tmp_obj = dict()
        for k,v in obj.items():
            tmp_obj[k] = convert_numpy_to_builtin(v)
        return tmp_obj
    elif isinstance(obj, list):
        return [convert_numpy_to_builtin(i) for i in obj]
    elif isinstance(obj, np.ndarray):
        tmplist = obj.tolist()
        return convert_numpy_to_builtin(tmplist)
    elif isinstance(obj, (np.integer, np.int64, np.int32)):
        return int(obj)
    elif isinstance(obj, (np.floating, np.float64, np.float32)):
        return float(obj)
    elif isinstance(obj, (np.bool_)):
        return bool(obj)
    else:
        return obj


def get_utilization(trace, time_quanta_index):
    """Retrieve utilization value for a given trace at a specific time quanta index."""
    if isinstance(trace, (list, np.ndarray)):