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)