Skip to content

Commit e4e9b3b

Browse files
committed
generate RunModel.bat when setup model
1 parent 2fbf342 commit e4e9b3b

File tree

1 file changed

+69
-3
lines changed

1 file changed

+69
-3
lines changed

tm2py/setup_model/setup.py

Lines changed: 69 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import logging
77
import toml
88

9+
from pathlib import Path
10+
911

1012
class SetupModel:
1113
"""
@@ -16,7 +18,8 @@ class SetupModel:
1618

1719
def __init__(self, config_file):
1820
self.config_file = config_file
19-
# self.logger = logger
21+
self.configs = Config(dict())
22+
self.model_dir = Path()
2023

2124
def _setup_logging(self, log_file):
2225
logging.basicConfig(
@@ -46,11 +49,17 @@ def run_setup(self):
4649
# Validate configs
4750
configs.validate()
4851

52+
self.configs = configs
53+
4954
# Create model directory
5055
model_dir = os.path.join(configs.ROOT_DIR, configs.MODEL_FOLDER_NAME)
5156
model_dir = model_dir.replace("\\", "/")
52-
# TODO: what to do if the directory already exists?
53-
os.mkdir(model_dir)
57+
self.model_dir = Path(model_dir)
58+
# if the directory already exists - error and quit
59+
if self.model_dir.exists():
60+
raise Exception(f"{self.model_dir} already exist! Setup terminated.")
61+
else:
62+
os.mkdir(model_dir)
5463

5564
# Initialize logging
5665
log_file = os.path.join(model_dir, "setup_log.log")
@@ -138,11 +147,37 @@ def run_setup(self):
138147
os.path.join(model_dir, "CTRAMP", "model"),
139148
)
140149

150+
self._create_run_model_batch(logger)
151+
141152
logger.info(f"Setup process completed successfully!")
142153

143154
# Close logging
144155
logging.shutdown()
145156

157+
158+
def _create_run_model_batch(self, logger):
159+
"""
160+
Creates the RunModel.bat and RunModel.py in the root directory
161+
162+
Args:
163+
logger: logger
164+
"""
165+
166+
if not self.model_dir.exists():
167+
logger.error(f"Directory {self.model_dir} does not exists.")
168+
raise FileNotFoundError(f"Directory {self.model_dir} does not exists.")
169+
170+
# create RunModel.bat
171+
with open(self.model_dir / 'RunModel.bat', 'w') as file:
172+
logger.info(f"Creating RunModel.bat in directory {self.model_dir}")
173+
file.write(_RUN_MODEL_BAT_CONTENT)
174+
175+
# create RunModel.py
176+
with open(self.model_dir / 'RunModel.py', 'w') as file:
177+
logger.info(f"Creating RunModel.py in directory {self.model_dir}")
178+
file.write(_RUN_MODEL_PY_CONTENT)
179+
180+
146181
def _create_folder_structure(self, folder_names, root_dir, logger):
147182
"""
148183
Creates empty folder structure in the root directory
@@ -399,3 +434,34 @@ def validate(self):
399434
for attr in required_attrs:
400435
if not getattr(self, attr, None):
401436
raise ValueError(f"{attr} is required in the setup configuration!")
437+
438+
_RUN_MODEL_BAT_CONTENT = """
439+
:: the directory that this file is in
440+
SET MODEL_RUN_DIR=%~p0
441+
cd /d %MODEL_RUN_DIR%
442+
443+
SET EMMEPATH=C:\Program Files\INRO\Emme\Emme 4\Emme-4.7.0.11
444+
SET PATH=%EMMEPATH%\programs;%PATH%
445+
446+
CALL "C:\ProgramData\Anaconda3\condabin\conda" activate tm2py
447+
python RunModel.py
448+
449+
CALL "C:\ProgramData\Anaconda3\condabin\conda" deactivate
450+
PAUSE
451+
"""
452+
453+
_RUN_MODEL_PY_CONTENT = """
454+
import os
455+
import gdal
456+
from tm2py.controller import RunController
457+
458+
controller = RunController(
459+
[
460+
os.path.join(os.getcwd(), "scenario_config.toml"),
461+
os.path.join(os.getcwd(), "model_config.toml")
462+
],
463+
run_dir = os.getcwd()
464+
)
465+
466+
controller.run()
467+
"""

0 commit comments

Comments
 (0)