Source code for pacman.utilities.file_format_converters.convert_to_file_placement

from pacman.utilities import file_format_schemas

from spinn_utilities.progress_bar import ProgressBar

import os
import json
import jsonschema


[docs]class ConvertToFilePlacement(object): """ Converts memory placements to file placements """ __slots__ = [] def __call__(self, placements, file_path): """ :param placements: the memory placements object :param file_path: the file path for the placements.json :return: file path for the placements.json """ # write basic stuff json_obj = dict() vertex_by_id = dict() progress = ProgressBar(len(placements.placements) + 1, "converting to json placements") # process placements for placement in placements: vertex_id = str(id(placement.vertex)) vertex_by_id[vertex_id] = placement.vertex json_obj[vertex_id] = [placement.x, placement.y] progress.update() # dump dict into json file with open(file_path, "w") as file_to_write: json.dump(json_obj, file_to_write) # validate the schema placements_schema_file_path = os.path.join( os.path.dirname(file_format_schemas.__file__), "placements.json") with open(placements_schema_file_path, "r") as file_to_read: jsonschema.validate(json_obj, json.load(file_to_read)) progress.update() progress.end() # return the file format return file_path, vertex_by_id