#1386: added the ability to set deterministic and seeding RNG when training and evaluating + the fix provided in #1535

This commit is contained in:
Czar Echavez
2023-06-20 10:41:30 +01:00
parent 9b0e24c27b
commit 0ab4520904
13 changed files with 1217 additions and 399 deletions

View File

@@ -3,9 +3,12 @@ import tempfile
import time
from datetime import datetime
from pathlib import Path
from typing import Union
from typing import Union, Final
import pandas as pd
from primaite.environment.primaite_env import Primaite
from primaite.main import _get_session_path, _write_session_metadata_file
ACTION_SPACE_NODE_VALUES = 1
ACTION_SPACE_NODE_ACTION_VALUES = 1
@@ -27,7 +30,7 @@ def _get_temp_session_path(session_timestamp: datetime) -> Path:
def _get_primaite_env_from_config(
training_config_path: Union[str, Path], lay_down_config_path: Union[str, Path]
training_config_path: Union[str, Path], lay_down_config_path: Union[str, Path]
):
"""Takes a config path and returns the created instance of Primaite."""
session_timestamp: datetime = datetime.now()
@@ -78,3 +81,64 @@ def run_generic(env, config_values):
# env.reset()
# env.close()
def compare_file_content(output_a_file_path: str, output_b_file_path: str):
"""Function used to check if output of both given files are the same"""
with open(output_a_file_path) as f1:
with open(output_b_file_path) as f2:
f1_content = f1.read()
f2_content = f2.read()
# check that both files are not empty and are matching
if len(f1_content) > 0 and len(f2_content) > 0 and f1_content == f2_content:
# both files have the same content
return True
# both files have different content
print(f"{output_a_file_path} and {output_b_file_path} has different contents")
return False
def compare_transaction_file(output_a_file_path: str, output_b_file_path: str):
"""Function used to check if contents of transaction files are the same"""
# load output a file
data_a = pd.read_csv(output_a_file_path)
# load output b file
data_b = pd.read_csv(output_b_file_path)
# remove the time stamp column
data_a.drop('Timestamp', inplace=True, axis=1)
data_b.drop('Timestamp', inplace=True, axis=1)
# if the comparison is empty, both files are the same i.e. True
return data_a.compare(data_b).empty
class TestSession:
def __init__(
self,
training_config_path,
laydown_config_path
):
self.session_timestamp: Final[datetime] = datetime.now()
self.session_dir = _get_session_path(self.session_timestamp)
self.timestamp_str = self.session_timestamp.strftime("%Y-%m-%d_%H-%M-%S")
self.transaction_list = []
print(f"The output directory for this session is: {self.session_dir}")
self.env = Primaite(
training_config_path=training_config_path,
lay_down_config_path=laydown_config_path,
transaction_list=self.transaction_list,
session_path=self.session_dir,
timestamp_str=self.timestamp_str,
)
print("Writing Session Metadata file...")
_write_session_metadata_file(
session_dir=self.session_dir, uuid="test", session_timestamp=self.session_timestamp, env=self.env
)