Source code for chap_core.util
from shutil import which
import numpy as np
import os
[docs]
def nan_helper(y):
"""Helper to handle indices and logical indices of NaNs.
Input:
- y, 1d numpy array with possible NaNs
Output:
- nans, logical indices of NaNs
- index, a function, with signature indices= index(logical_indices),
to convert logical indices of NaNs to 'equivalent' indices
Example:
>>> # linear interpolation of NaNs
>>> nans, x = nan_helper(y)
>>> y[nans] = np.interp(x(nans), x(~nans), y[~nans])
"""
return np.isnan(y), lambda z: z.nonzero()[0]
[docs]
def interpolate_nans(y):
nans, x = nan_helper(y)
y[nans] = np.interp(x(nans), x(~nans), y[~nans])
return y
[docs]
def conda_available():
return which("conda") is not None
[docs]
def docker_available():
return which("docker") is not None
[docs]
def pyenv_available():
return which("pyenv") is not None
[docs]
def redis_available():
try:
r = load_redis()
r.ping()
return True
except Exception as e:
if e.__class__.__name__ in ("ModuleNotFoundError", "ConnectionError"):
return False
else:
# Handle other exceptions
raise
[docs]
def load_redis(db=0):
import redis
host = os.getenv("REDIS_HOST", "localhost") # default to localhost for backward compatibility
port = os.getenv("REDIS_PORT", "6379")
r = redis.Redis(host=host, port=int(port), db=db)
return r