Skip to content

Commit

Permalink
refactor: use proper path joins and simplify _read_data
Browse files Browse the repository at this point in the history
  • Loading branch information
Jon Hagg committed Nov 23, 2020
1 parent 8e77de1 commit 3061062
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 32 deletions.
14 changes: 7 additions & 7 deletions powersimdata/input/input_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,29 +68,29 @@ def get_data(self, scenario_info, field_name):
file_name = scenario_info["id"] + "_" + field_name + "." + ext
from_dir = server_setup.INPUT_DIR

filepath = os.path.join(server_setup.LOCAL_DIR, from_dir, file_name)
try:
return _read_data(file_name, path_to_file=from_dir)
return _read_data(filepath)
except FileNotFoundError:
print(
"%s not found in %s on local machine"
% (file_name, server_setup.LOCAL_DIR)
)

self.data_access.copy_from(file_name, from_dir)
return _read_data(file_name, path_to_file=from_dir)
return _read_data(filepath)


def _read_data(file_name, path_to_file):
"""Reads data.
def _read_data(filepath):
"""Reads data from local machine.
:param str file_name: file name, extension either 'pkl', 'csv', or 'mat'.
:param str filepath: path to file, with extension either 'pkl', 'csv', or 'mat'.
:return: (*pandas.DataFrame*, *dict*, or *str*) -- demand, hydro, solar or
wind as a data frame, change table as a dict, or str containing a
local path to a matfile of grid data.
:raises ValueError: if extension is unknown.
"""
ext = file_name.split(".")[-1]
filepath = os.path.join(server_setup.LOCAL_DIR, path_to_file, file_name)
ext = os.path.basename(filepath).split(".")[-1]
if ext == "pkl":
data = pd.read_pickle(filepath)
elif ext == "csv":
Expand Down
20 changes: 4 additions & 16 deletions powersimdata/output/output_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,30 +40,18 @@ def get_data(self, scenario_id, field_name):
print("--> Loading %s" % field_name)
file_name = scenario_id + "_" + field_name + ".pkl"
from_dir = server_setup.OUTPUT_DIR
filepath = os.path.join(server_setup.LOCAL_DIR, from_dir, file_name)

try:
return _read_data(file_name, path_to_file=from_dir)
return pd.read_pickle(filepath)
except pickle.UnpicklingError:
err_msg = f"Unable to unpickle {file_name}, possibly corrupted in download."
raise ValueError(err_msg)
except FileNotFoundError:
print(
"%s not found in %s on local machine"
% (file_name, os.path.join(server_setup.LOCAL_DIR, from_dir))
)
print(f"{filepath} not found on local machine")

self._data_access.copy_from(file_name, from_dir)
return _read_data(file_name, path_to_file=from_dir)


def _read_data(file_name, path_to_file):
"""Reads data.
:param str file_name: file name
:param str path_to_file: relative path segment excluding root and filename
:return: (*pandas.DataFrame*) -- specified file as a data frame.
"""
return pd.read_pickle(os.path.join(server_setup.LOCAL_DIR, path_to_file, file_name))
return pd.read_pickle(filepath)


def _check_field(field_name):
Expand Down
16 changes: 7 additions & 9 deletions powersimdata/scenario/delete.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import glob
import os
import posixpath

from powersimdata.scenario.state import State
from powersimdata.utility import server_setup
Expand Down Expand Up @@ -38,29 +39,26 @@ def delete_scenario(self):

# Delete links to base profiles on server
print("--> Deleting scenario input data on server")
target = "%s/%s_*" % (
self.path_config.input_dir(),
self._scenario_info["id"],
target = posixpath.join(
self.path_config.input_dir(), "%s_*" % (self._scenario_info["id"])
)
_, _, stderr = self._data_access.remove(target, recursive=False, force=True)
if len(stderr.readlines()) != 0:
raise IOError("Failed to delete scenario input data on server")

# Delete output profiles
print("--> Deleting scenario output data on server")
target = "%s/%s_*" % (
self.path_config.output_dir(),
self._scenario_info["id"],
target = posixpath.join(
self.path_config.output_dir(), "%s_*" % (self._scenario_info["id"])
)
_, _, stderr = self._data_access.remove(target, recursive=False, force=True)
if len(stderr.readlines()) != 0:
raise IOError("Failed to delete scenario output data on server")

# Delete temporary folder enclosing simulation inputs
print("--> Deleting temporary folder on server")
tmp_dir = "%s/scenario_%s" % (
self.path_config.execute_dir(),
self._scenario_info["id"],
tmp_dir = posixpath.join(
self.path_config.execute_dir(), "scenario_%s" % (self._scenario_info["id"])
)
_, _, stderr = self._data_access.remove(tmp_dir, recursive=True, force=True)
if len(stderr.readlines()) != 0:
Expand Down

0 comments on commit 3061062

Please sign in to comment.