Source code for portpy.photon.utils.save_or_load_pickle

from __future__ import annotations
import os
import pickle
from typing import TYPE_CHECKING
if TYPE_CHECKING:
    from portpy.photon.plan import Plan


[docs]def save_plan(my_plan: Plan, plan_name: str = None, path: str = None) -> None: """ Save pickled file for plan object :param my_plan: object fo class Plan :param plan_name: create the name of the pickled file of plan object. If none, it will save with the name as 'my_plan' :param path: if path is set, plan object will be pickled and saved in path directory else it will save in current project directory :return: save pickled object of class Plan :Example: >>> my_plan.save_plan(plan_name='my_plan', path=r"path/to/save_plan") """ if path is None: path = os.getcwd() elif not os.path.exists(path): os.makedirs(path) if plan_name is None: plan_name = 'my_plan' with open(os.path.join(path, plan_name), 'wb') as pickle_file: # pickle the dictionary and write it to file pickle.dump(my_plan, pickle_file)
[docs]def load_plan(plan_name: str = None, path: str = None): """ Load pickle file of the plan object. :param plan_name: plan_name of the object of class Plan. It None, it will try to look for plan name called 'my_plan' :param path: if path is set, plan object will be load from path directory else current project directory :return: load pickled object of class Plan :Example: >>> load_plan(plan_name='my_plan', path=r"path/for/loading_plan") """ if path is None: path = os.getcwd() if plan_name is None: plan_name = 'my_plan' with open(os.path.join(path, plan_name), 'rb') as pickle_file: my_plan = pickle.load(pickle_file) return my_plan
[docs]def load_optimal_sol(sol_name: str, path: str = None) -> dict: """ Load optimal solution dictionary got from optimization :param sol_name: name of the optimal solution to be loaded. :param path: if path is set, plan object will be load from path directory else current directory :return: load solution :Example: >>> sol = load_optimal_sol(sol_name='sol', path=r'path/for/loading_sol') """ if path is None: path = os.getcwd() with open(os.path.join(path, sol_name), 'rb') as pickle_file: sol = pickle.load(pickle_file) return sol
[docs]def save_optimal_sol(sol: dict, sol_name: str, path: str = None) -> None: """ Save the optimal solution dictionary from optimization :param sol: optimal solution dictionary :param sol_name: name of the optimal solution saved :param path: if path is set, plan object will be load from path directory else current directory :return: save pickled file of optimal solution dictionary :Example: >>> save_optimal_sol(sol=sol, sol_name='sol', path=r'path/to/save_solution') """ if path is None: path = os.getcwd() elif not os.path.exists(path): os.makedirs(path) with open(os.path.join(path, sol_name), 'wb') as pickle_file: pickle.dump(sol, pickle_file, protocol=4)
[docs]def save_inf_matrix(inf_matrix, inf_name: str = None, path: str = None) -> None: """ Save pickled file for plan object :param inf_matrix: object fo class Infuence matrix :param inf_name: create the name of the pickled file of InfluenceMatrix object. If none, it will save with the name as 'inf_matrix' :param path: if path is set, plan object will be pickled and saved in path directory else it will save in current project directory :return: save pickled object of class Plan :Example: >>> save_inf_matrix(inf_matrix=inf_matrix, inf_name='inf_matrix', path=r"path/to/save_inf_matrix") """ if path is None: path = os.getcwd() elif not os.path.exists(path): os.makedirs(path) if inf_name is None: inf_matrix = 'inf_matrix' with open(os.path.join(path, inf_name), 'wb') as pickle_file: # pickle the dictionary and write it to file pickle.dump(inf_matrix, pickle_file)
[docs]def load_inf_matrix(inf_name: str = None, path: str = None): """ Load pickle file of the plan object. :param inf_name: influence matrix name of the object of class InfleunceMatrix. :param path: if path is set, plan object will be load from path directory else current project directory :return: load pickled object of class Plan :Example: >>> load_plan(plan_name='my_plan', path=r"path/for/loading_inf_matrix") """ if path is None: path = os.getcwd() if inf_name is None: inf_name = 'inf_matrix' with open(os.path.join(path, inf_name), 'rb') as pickle_file: inf_matrix = pickle.load(pickle_file) return inf_matrix