Source code for schrodinger.application.desmond.envir
"""
Commonly used Desmond environment variables.
Copyright Schrodinger, LLC. All rights reserved.
"""
# Contributors: Yujie Wu
import os
import schrodinger.application.desmond.util as util
import schrodinger.job.util as ju
class _create_when_needed(object):
def __init__(self, name, func):
self._name = name
self._func = func
def __get__(self, obj, cls):
value = self._func()
setattr(cls, self._name, value)
return value
#
def _get_version(product_name):
try:
return util.get_product_info(product_name)[2]
except:
return "(unknown)"
def _get_dir(product_name, dir_name):
try:
return ju.hunt(product_name, dir=dir_name)
except:
return ""
[docs]class CONST(object):
#
try:
HOME = os.path.expanduser("~")
except:
HOME = ""
#
try:
SCHRODINGER = os.environ["SCHRODINGER"]
except:
SCHRODINGER = ""
try:
SCHRODINGER_UTILITIES = os.path.join(SCHRODINGER, "utilities")
except:
SCHRODINGER_UTILITIES = ""
#
SCHRODINGER_EXEC_DIR = os.path.join(SCHRODINGER, "internal", "bin")
#
MULTISIM_EXEC = os.path.join(SCHRODINGER_UTILITIES,
"multisim") if (SCHRODINGER_UTILITIES) else ""
#
WATERMAP_VERSION = _create_when_needed("WATERMAP_VERSION",
lambda: _get_version("watermap"))
WATERMAP_EXEC_DIR = _create_when_needed(
"WATERMAP_EXEC_DIR", lambda: _get_dir("watermap", "exec"))
#
DESMOND_VERSION = _create_when_needed("DESMOND_VERSION",
lambda: _get_version("desmond"))
DESMOND_EXEC_DIR = _create_when_needed("DESMOND_EXEC_DIR",
lambda: _get_dir("desmond", "exec"))
DESMOND_LIB_DIR = _create_when_needed("DESMOND_LIB_DIR",
lambda: _get_dir("desmond", "lib"))
#
MMSHARE_VERSION = _create_when_needed("MMSHARE_VERSION",
lambda: _get_version("mmshare"))
MMSHARE_EXEC_DIR = _create_when_needed("MMSHARE_EXEC_DIR",
lambda: _get_dir("mmshare", "exec"))
#
DESMOND_DATA_DIR = _create_when_needed(
"DESMOND_DATA_DIR", lambda: os.path.join(
util.parent_dir(CONST.DESMOND_EXEC_DIR, 2), "data"))
#
MMSHARE_DATA_DESMOND_DIR = \
_create_when_needed("DESMOND_DATA_DESMOND_DIR",
lambda: os.path.join(util.parent_dir(CONST.MMSHARE_EXEC_DIR, 2),
"data", "desmond"))
MMSHARE_SYSTEM_BUILDER_DATA_DIR = \
_create_when_needed("MMSHARE_SYSTEM_BULDER_DATA_DIR",
lambda: os.path.join(util.parent_dir(CONST.MMSHARE_EXEC_DIR, 2),
"data", "system_builder"))
[docs]def get(varname, default=None):
"""
"""
try:
return os.environ[varname]
except KeyError:
return default
if (__name__ == "__main__"):
print("WATERMAP_VERSION = ", CONST.WATERMAP_VERSION)
print("WATERMAP_VERSION = ", CONST.WATERMAP_VERSION)
print("DESMOND_VERSION = ", CONST.DESMOND_VERSION)
print("MMSHARE_VERSION = ", CONST.MMSHARE_VERSION)