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)