Source code for schrodinger.utils.sea.common

"""
Copyright Schrodinger, LLC. All rights reserved.
"""
__CHECK_SEA_DEBUG = False
__debug_str_buf = ""


[docs]def debug_print(s, nl=True): """ Prints out some information for debugging purposes. :param s: The string to print. :param nl: Appends a new line to the string and flushes out the current contents in the print buffer. """ global __debug_str_buf if (__CHECK_SEA_DEBUG): if (nl): print(__debug_str_buf + s) __debug_str_buf = "" else: __debug_str_buf += s
[docs]def is_equal(a, b, epsilon=1E-6): """ Compares two floating numbers and returns True if the absolute difference is within epsilon (defaults to 1E-6), False if not. """ if (a == b): return True if (float("inf") in [a, b]): return False # This is a very reliable implementation for finite numbers. a = float(a) b = float(b) a1 = abs(a) b1 = abs(b) c1 = a1 if (a1 > b1) else b1 eps = epsilon * c1 if (c1 > 1.0) else epsilon return abs(a - b) <= eps
[docs]def boolean(s): """ Returns True if the string 's' is one of the following: 'true', 'yes', and 'on', or False if it is one of the following: 'false', 'no', and 'off'. Case difference will be ignored. Raises a ValueError exception if 's' is none of the above strings. """ s = str(s).lower() if (s in [ "true", "yes", "on", ]): return True elif (s in [ "false", "no", "off", ]): return False raise ValueError("'%s' is not a boolean value" % s)