Maintenance will be performed on,,, and on Tuesday 26 May 2020 starting at approximately 10am CDT. It is expected to take around 30 minutes and will involve a short period of downtime, around 5 minutes, towards the end of the maintenance period. Please address any questions, comments, or concerns to

Commits (2)
......@@ -220,6 +220,26 @@ def ANDChannels(chanList): # find boolean AND of a list of binary EPICs chans
return all([, log=False) for ii in chanList])
def truncFloat(x,dp):
'''Truncates a numpy float to given decimal places (dp)'''
return np.trunc(x * 10 ** dp) / 10 ** dp
def probRound(x, dp):
'''Rounds float to given decimal places (dp), with
last digit round done on a probablistic basis.'''
xTrunc = truncFloat(x, dp) # Truncate to dp figures
xrem = x - xTrunc # find remainder of truncation
p = np.abs(xrem) * 10 ** dd # prob of rounding up based on trunc remainder
if np.random.uniform(0,1) < p:
xout = xTrunc + np.sign(x) * 10 ** -dd
xout = xTrunc
return xout
def grabInputArgs():
parser = argparse.ArgumentParser(
description="PID control script that reads out and controls EPICS"