From 1f62b8d69fcff5fdaf77b93fc3d15dddd9b64a5d Mon Sep 17 00:00:00 2001 From: Eric DEVEAUD Date: Fri, 21 Jun 2024 16:28:30 +0200 Subject: [PATCH 1/3] define and generate USER_DIR var, ie: HOME/rfdiffusion for cached files, config location and so on --- rfdiffusion/util.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rfdiffusion/util.py b/rfdiffusion/util.py index 19c30f5f..b273bcc2 100644 --- a/rfdiffusion/util.py +++ b/rfdiffusion/util.py @@ -2,6 +2,17 @@ from rfdiffusion.chemical import * from rfdiffusion.scoring import * +import sys +from pathlib import Path +# define RFdiffusion directory located in user HOME directory. +USER_HOME=str(Path.home()) +USER_DIR=f"{USER_HOME}/rfdiffusion" + +try: + Path(USER_DIR).mkdir(parents=True, exist_ok=True) +except FileExistsError as msg: + print(f'{USER_DIR} already exist and is a file.') + sys.exit(1) def generate_Cbeta(N, Ca, C): # recreate Cb given N,Ca,C From 50b3fbf01014980bc1dfb13665a3fd2c7d1bbfe6 Mon Sep 17 00:00:00 2001 From: Eric DEVEAUD Date: Fri, 21 Jun 2024 16:33:27 +0200 Subject: [PATCH 2/3] models, schedules cache dire located to HOME/rfdiffusion. models weight directory may be specified by RFD_MODELS en var. --- rfdiffusion/inference/model_runners.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rfdiffusion/inference/model_runners.py b/rfdiffusion/inference/model_runners.py index 9a33d98d..74e40569 100644 --- a/rfdiffusion/inference/model_runners.py +++ b/rfdiffusion/inference/model_runners.py @@ -18,7 +18,8 @@ from rfdiffusion.model_input_logger import pickle_function_call import sys -SCRIPT_DIR=os.path.dirname(os.path.realpath(__file__)) +from rfdiffusion.util import USER_DIR + TOR_INDICES = util.torsion_indices TOR_CAN_FLIP = util.torsion_can_flip @@ -63,7 +64,8 @@ def initialize(self, conf: DictConfig) -> None: if conf.inference.model_directory_path is not None: model_directory = conf.inference.model_directory_path else: - model_directory = f"{SCRIPT_DIR}/../../models" + # set default model weigths directory under env var control. fallback to user $HOME/rfdiffusion/models + model_directory = os.environ.get('RFD_MODELS',f"{USER_DIR}/models") print(f"Reading models from {model_directory}") @@ -122,7 +124,7 @@ def initialize(self, conf: DictConfig) -> None: if conf.inference.schedule_directory_path is not None: schedule_directory = conf.inference.schedule_directory_path else: - schedule_directory = f"{SCRIPT_DIR}/../../schedules" + schedule_directory = f"{USER_DIR}/schedules" # Check for cache schedule if not os.path.exists(schedule_directory): From d3496a85ffa4d2c421ac382b84d969d522c23cf0 Mon Sep 17 00:00:00 2001 From: Eric DEVEAUD Date: Fri, 21 Jun 2024 16:35:46 +0200 Subject: [PATCH 3/3] hydra config searched under HOME/rfdissusion/config/inference hydra config location may be overwitten by RFD_HYDRA_CFG env var --- scripts/run_inference.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/run_inference.py b/scripts/run_inference.py index 2a3bf362..0ceffe7a 100755 --- a/scripts/run_inference.py +++ b/scripts/run_inference.py @@ -21,13 +21,16 @@ from omegaconf import OmegaConf import hydra import logging -from rfdiffusion.util import writepdb_multi, writepdb +from rfdiffusion.util import writepdb_multi, writepdb, USER_DIR from rfdiffusion.inference import utils as iu from hydra.core.hydra_config import HydraConfig import numpy as np import random import glob +# set hyfra inference config dir under environment variable control +hydra_cfg_dir=os.environ.get('RFD_HYDRA_CFG', f"{USER_DIR}/config/inference") + def make_deterministic(seed=0): torch.manual_seed(seed) @@ -35,7 +38,7 @@ def make_deterministic(seed=0): random.seed(seed) -@hydra.main(version_base=None, config_path="../config/inference", config_name="base") +@hydra.main(version_base=None, config_path=hydra_cfg_dir, config_name="base") def main(conf: HydraConfig) -> None: log = logging.getLogger(__name__) if conf.inference.deterministic: