Manual Commands Workbook

This notebook is a workbook for testing hardware with manual FPE commands, and general empirical testing. It turns out that it's also a handy command reference.

Start the Observatory Simulator and Load the FPE FPGA

Remember that whenever you power-cycle the Observatory Simulator, you should set preload=True below.

When you are running this notebook and it has not been power cycled, you should set preload=False.

Run the following cell to get the FPE loaded:


In [4]:
from tessfpe.dhu.fpe import FPE
from tessfpe.dhu.unit_tests import check_house_keeping_voltages
fpe1 = FPE(1, debug=False, preload=True, FPE_Wrapper_version='6.1.1')
print fpe1.version
fpe1.cmd_start_frames()
fpe1.cmd_stop_frames()
if check_house_keeping_voltages(fpe1):
    print "Wrapper load complete. Interface voltages OK."


Observatory Simulator Version 1.6c - Oct  8 2015 11:55:03
Wrapper load complete. Interface voltages OK.

Useful Commands:

ping()

fpe1.cmd_start_frames() # Starts frame generation.

fpe1.cmd_stop_frames() # Stops frame generation.

fpe1.cmd_camrst # Don't know how to work this. As-is, it fails.

fpe1.cmd_cam_status() # Returns the camera status register values.

fpe1.cmd_version() # Returns ObsSim version info.

fpe1.house_keeping # Returns a set of HK data in alphabetical order, in engineering units, without frames running. This includes all the FPGA digital housekeeping values.

fpe1.house_keeping["analogue"] #Returns only the analog values of the housekeeping set.

{fpe1.cmd_cam_hsk() # Returns raw, un-parsed housekeeping data, two samples per word (decimal), mostly useless here.}

check_house_keeping_voltages(fpe1, tolerance=0.05) # Returns True if standard set of supply voltages are in tolerance.

If you plan on setting operating parameters (DACs), run this cell:


In [5]:
from tessfpe.data.operating_parameters import operating_parameters
operating_parameters["heater_1_current"]


Out[5]:
{'address': 96, 'default': 0.0, 'high': 227.0, 'low': 0.0, 'unit': 'mA'}

Reading a housekeeping value has this form:

fpe1.house_keeping["analogue"]["parameter_name"]

Here's a couple of sample reads of housekeeping values:


In [6]:
fpe1.house_keeping["analogue"]["heater_1_current"]
fpe1.house_keeping["analogue"]["ccd1_input_diode_high"]


Out[6]:
12.00640869140625

Setting an operating parameter has this form:

fpe1.ops.parameter_name = value fpe1.ops.send()

Setting the 3 trim heaters to their minimum values looks like this:


In [7]:
fpe1.ops.heater_1_current = fpe1.ops.heater_1_current.low
fpe1.ops.heater_2_current = fpe1.ops.heater_2_current.low
fpe1.ops.heater_3_current = fpe1.ops.heater_3_current.low
fpe1.ops.send()

Setting all the operating parameters to the default values:


In [7]:
def set_fpe_defaults(fpe):
    "Set the FPE to the default operating parameters and return a list of the default values"
    defaults = {}
    for k in range(len(fpe.ops.address)):
        if fpe.ops.address[k] is None:
            continue
        fpe.ops.address[k].value = fpe.ops.address[k].default
        defaults[fpe.ops.address[k].name] = fpe.ops.address[k].default
    return defaults

set_fpe_defaults(fpe1)


Out[7]:
{'ccd1_backside': 0.0,
 'ccd1_input_diode_high': 12.0,
 'ccd1_input_diode_low': 12.0,
 'ccd1_input_gate_1': -3.0,
 'ccd1_input_gate_2': -3.0,
 'ccd1_output_drain_a_offset': 8.0,
 'ccd1_output_drain_b_offset': 8.0,
 'ccd1_output_drain_c_offset': 8.0,
 'ccd1_output_drain_d_offset': 8.0,
 'ccd1_output_gate': -1.0,
 'ccd1_parallel_high_offset': 0.0,
 'ccd1_parallel_low': -8.0,
 'ccd1_reset_drain': 12.0,
 'ccd1_reset_high': 3.0,
 'ccd1_reset_low_offset': -3.0,
 'ccd1_scupper': 12.0,
 'ccd1_serial_high': 4.0,
 'ccd1_serial_low_offset': -6.0,
 'ccd1_substrate': -40.0,
 'ccd2_backside': 0.0,
 'ccd2_input_diode_high': 12.0,
 'ccd2_input_diode_low': 12.0,
 'ccd2_input_gate_1': -3.0,
 'ccd2_input_gate_2': -3.0,
 'ccd2_output_drain_a_offset': 8.0,
 'ccd2_output_drain_b_offset': 8.0,
 'ccd2_output_drain_c_offset': 8.0,
 'ccd2_output_drain_d_offset': 8.0,
 'ccd2_output_gate': -1.0,
 'ccd2_parallel_high_offset': 0.0,
 'ccd2_parallel_low': -8.0,
 'ccd2_reset_drain': 12.0,
 'ccd2_reset_high': 3.0,
 'ccd2_reset_low_offset': -3.0,
 'ccd2_scupper': 12.0,
 'ccd2_serial_high': 4.0,
 'ccd2_serial_low_offset': -6.0,
 'ccd2_substrate': -40.0,
 'ccd3_backside': 0.0,
 'ccd3_input_diode_high': 12.0,
 'ccd3_input_diode_low': 12.0,
 'ccd3_input_gate_1': -3.0,
 'ccd3_input_gate_2': -3.0,
 'ccd3_output_drain_a_offset': 8.0,
 'ccd3_output_drain_b_offset': 8.0,
 'ccd3_output_drain_c_offset': 8.0,
 'ccd3_output_drain_d_offset': 8.0,
 'ccd3_output_gate': -1.0,
 'ccd3_parallel_high_offset': 0.0,
 'ccd3_parallel_low': -8.0,
 'ccd3_reset_drain': 12.0,
 'ccd3_reset_high': 3.0,
 'ccd3_reset_low_offset': -3.0,
 'ccd3_scupper': 12.0,
 'ccd3_serial_high': 4.0,
 'ccd3_serial_low_offset': -6.0,
 'ccd3_substrate': -40.0,
 'ccd4_backside': 0.0,
 'ccd4_input_diode_high': 12.0,
 'ccd4_input_diode_low': 12.0,
 'ccd4_input_gate_1': -3.0,
 'ccd4_input_gate_2': -3.0,
 'ccd4_output_drain_a_offset': 8.0,
 'ccd4_output_drain_b_offset': 8.0,
 'ccd4_output_drain_c_offset': 8.0,
 'ccd4_output_drain_d_offset': 8.0,
 'ccd4_output_gate': -1.0,
 'ccd4_parallel_high_offset': 0.0,
 'ccd4_parallel_low': -8.0,
 'ccd4_reset_drain': 12.0,
 'ccd4_reset_high': 3.0,
 'ccd4_reset_low_offset': -3.0,
 'ccd4_scupper': 12.0,
 'ccd4_serial_high': 4.0,
 'ccd4_serial_low_offset': -6.0,
 'ccd4_substrate': -40.0,
 'heater_1_current': 0.0,
 'heater_2_current': 0.0,
 'heater_3_current': 0.0}

Workspace:


In [8]:
operating_parameters["ccd1_output_drain_a_offset"]
#operating_parameters["ccd1_reset_drain"]


Out[8]:
{'address': 8, 'default': 8.0, 'high': 10.0, 'low': 0.0, 'unit': 'V'}

In [ ]:
fpe1.ops.ccd1_reset_drain = 15
fpe1.ops.ccd1_output_drain_a_offset = 10
fpe1.ops.send()
fpe1.house_keeping["analogue"]["ccd1_output_drain_a"]

In [ ]:
#operating_parameters["ccd1_reset_high"]
operating_parameters['ccd1_reset_low_offset']

In [ ]:
fpe1.ops.ccd1_reset_high = -10.3
fpe1.ops.ccd1_reset_low_offset = -9.9
fpe1.ops.send()
fpe1.house_keeping["analogue"]["ccd1_reset_low"]

In [9]:
fpe1.cmd_start_frames() # Starts frame generation.


Out[9]:
'Starting frames...'

In [10]:
fpe1.cmd_stop_frames() # Stops frame generation.


Out[10]:
'Frames Stopped...'

In [145]:
from tessfpe.data.housekeeping_channels import housekeeping_channels

In [146]:
from tessfpe.data.housekeeping_channels import housekeeping_channel_memory_map

In [ ]:
print fpe1.house_keeping

In [11]:
print fpe1.house_keeping["analogue"]


{'ccd4_substrate': -39.5736083984375, 'ccd2_output_drain_a': 20.110922241210936, 'ccd2_output_source_a': -0.0008331298828139211, 'ccd2_output_source_c': -0.004998779296876421, 'ccd2_output_source_b': -0.0058319091796867895, 'ccd1_parallel_high': -7.3320465087890625, 'ccd2_output_source_d': -0.004998779296876421, 'ccd4_parallel_low': -8.066207885742188, 'ccd1_output_drain_a': 20.086761474609375, 'ccd2_input_gate_1': -2.9965667724609375, 'ccd3_output_source_b': -0.0041656494140625, 'ccd3_output_source_c': -0.0066650390625007105, 'ccd3_output_source_d': -0.004998779296876421, 'pt1000_sensor_7': 25.39459228515625, 'ccd4_output_source_d': -0.0058319091796867895, 'ccd4_output_source_c': -0.0058319091796867895, 'ccd4_output_source_b': -0.004998779296876421, 'ccd4_output_source_a': -0.003332519531248579, 'ccd3_board_temperature': 286.85302734375, 'ccd3_output_drain_a': 20.259219360351562, 'ccd4_serial_low': -2.0509185791015625, 'ccd2_output_gate': -1.0337677001953125, 'ccd4_input_diode_low': 12.063308715820312, 'ccd3_substrate': -39.3834228515625, 'ccd2_serial_low': -2.039337158203125, 'ccd4_output_drain_c': 20.08509521484375, 'ccd4_output_drain_b': 20.064266967773438, 'ccd4_output_drain_a': 20.08509521484375, 'ccd2_scupper': 11.96209716796875, 'pt1000_sensor_2': -95.22613525390625, 'ccd3_reset_high': 3.088714599609375, 'pt1000_sensor_5': -21.989898681640625, 'ccd2_parallel_high': -7.342620849609375, 'ccd2_backside': 0.017120361328125, 'ccd3_input_diode_low': 11.899154663085938, '-12': -12.123733520507812, 'heater_1_current': 1.94952392578125, 'ccd3_serial_high': 4.0388946533203125, 'ccd3_backside': 0.001007080078125, 'ccd3_serial_low': -1.956756591796875, 'ccd4_input_gate_2': -3.01318359375, 'ccd4_input_gate_1': -2.9663543701171875, 'ccd1_serial_high': 4.05450439453125, '+1f': 0.996002197265625, '+2.5f': 2.514678955078125, 'ccd3_output_source_a': -0.0008331298828139211, 'ccd1_substrate': -39.89642333984375, 'ccd3_reset_drain': 12.1614990234375, 'hk_bias_1': 0.005825500488281676, 'hk_bias_0': 0.004993286132812358, 'hk_bias_3': 0.006657714843750995, 'ccd4_reset_low': -0.0005035400390625, 'hk_bias_5': 0.004993286132812358, 'hk_bias_4': 0.005825500488281676, 'ccd1_parallel_low': -7.9131317138671875, 'ccd1_scupper': 12.073883056640625, '+15': 15.024627685546875, 'ccd1_input_diode_high': 12.007919311523438, 'ccd1_reset_drain': 12.030075073242188, 'ccd1_reset_high': 2.9019012451171875, 'hk_bias_2': 0.005825500488281676, '+5': 4.891387939453125, 'ccd1_input_diode_low': 11.983749389648438, 'heater_3_current': 1.024749755859375, 'ccd4_parallel_high': -7.338592529296875, 'ccd2_substrate': -39.93145751953125, 'ccd1_reset_low': -0.0971832275390625, 'ccd4_output_gate': -1.054412841796875, 'ccd2_input_diode_low': 11.916275024414062, 'ccd4_board_temperature': 288.80859375, '+1.8f': 1.8041839599609375, 'ccd2_serial_high': 3.9724273681640625, 'ccd3_parallel_high': -7.392974853515625, 'ccd4_input_diode_high': 11.912246704101562, 'ccd4_reset_drain': 12.054244995117188, 'alcu_sensor_ccd3': 39.997100830078125, 'heater_2_current': 0.98309326171875, 'ccd3_reset_low': 0.0458221435546875, 'ccd2_input_diode_high': 12.07891845703125, 'ccd3_input_gate_2': -2.9633331298828125, 'ccd3_scupper': 12.110641479492188, 'ccd3_input_gate_1': -2.965850830078125, 'ccd4_backside': 0.0015106201171875, 'ccd4_reset_high': 2.9965667724609375, 'pt1000_sensor_1': -121.40861511230469, 'ccd2_reset_drain': 12.052230834960938, 'ccd1_serial_low': -1.89935302734375, 'ccd4_serial_high': 3.98602294921875, 'ccd2_output_drain_d': 19.867648315429687, 'ccd2_parallel_low': -8.011322021484375, 'ccd1_board_temperature': 288.10546875, 'ccd1_output_drain_b': 20.117587280273437, 'ccd1_output_drain_c': 20.088427734375, 'ccd1_output_gate': -1.0236968994140625, 'ccd3_parallel_low': -8.045059204101562, 'ccd1_output_drain_d': 19.970123291015625, 'pt1000_sensor_3': -61.48735046386719, 'ccd2_output_drain_c': 19.933465576171876, 'ccd2_output_drain_b': 20.03594055175781, 'pt1000_sensor_6': 3.54278564453125, 'ccd1_input_gate_1': -2.9044189453125, 'ccd1_input_gate_2': -2.9059295654296875, 'ccd1_backside': 0.0146026611328125, 'pt1000_sensor_8': 48.61602783203125, 'pt1000_sensor_9': 51.5576171875, 'ccd3_output_drain_b': 20.107589721679688, 'ccd3_output_drain_c': 20.10509033203125, '+3.3f': 3.3299102783203125, 'ccd2_input_gate_2': -2.9421844482421875, 'ccd3_output_drain_d': 20.060101318359376, 'ccd3_output_gate': -1.0216827392578125, 'ccd2_board_temperature': 291.478271484375, 'ccd2_reset_low': -0.0750274658203125, 'alcu_sensor_ccd4': 39.997100830078125, 'ccd2_reset_high': 2.94873046875, 'pt1000_sensor_4': -43.35533142089844, 'ccd3_input_diode_high': 11.93389892578125, 'ccd4_scupper': 12.012451171875, 'ccd4_output_drain_d': 19.994284057617186, 'pt1000_sensor_10': 81.60774230957031, 'pt1000_sensor_11': 128.4008026123047, 'pt1000_sensor_12': 26.367340087890625, 'ccd1_output_source_b': -0.0058319091796867895, 'ccd1_output_source_c': -0.0066650390625007105, 'ccd1_output_source_a': -0.0024993896484382105, 'alcu_sensor_ccd1': 39.997100830078125, 'ccd1_output_source_d': -0.0058319091796867895, 'alcu_sensor_ccd2': 39.997100830078125}

In [24]:
from numpy import var
samples=100
from tessfpe.data.housekeeping_channels import housekeeping_channels
# We make sample_data a dictionary and each value will be a set of HK data, with key = sample_name.
sample_data = {}

# For later:
signal_names = []
signal_values = []
signal_data = {}
variance_values = {}
    
#my_dict["new key"] = "New value"

for i in range(samples):
    # Get a new set of HK values
    house_keeping_values = fpe1.house_keeping["analogue"]
    data_values = house_keeping_values.values()
    # Add the new HK values to the sample_data dictionary:
    sample_number = "sample_" + str(i)
    sample_data[sample_number] = data_values

# Get the signal names for use later
signal_names = house_keeping_values.keys()

"""Assign the set of all HK values of the same signal (e.g. substrate_1) 
to the dictionary 'signal_data'"""

for k in range(len(signal_names)):
    # Build the list 'signal_values' for this signal:
    for i in range(samples):
        sample_number = "sample_" + str(i)
        signal_values.append(sample_data[sample_number][k])
    # Add signal_values to the signal_data dictionary:
    signal_data[signal_names[k]] = signal_values
    signal_values = []

""" Now get the variance of each of the 'signal_values' in the 
signal_data dictionary and put the result in the 'variance_values' 
dictionary."""
for name in signal_data:
    variance_values[name] = var(signal_data[name])
    # print name, str(variance_values[name])
    print '{0}      {1:<5}'.format(name, variance_values[name])


ccd4_substrate      1.17347609252e-05
ccd2_output_drain_a      9.52034968883e-07
ccd2_output_source_a      8.27651280909e-07
ccd2_output_source_c      6.84110283851e-07
ccd2_output_source_b      7.81840324402e-07
ccd1_parallel_high      3.67625872605e-07
heater_1_current      7.78716850094e-05
ccd4_parallel_low      9.22398897819e-07
ccd1_output_source_d      8.03149360231e-07
ccd3_output_source_a      8.19807889871e-07
ccd3_output_source_b      7.28533029556e-07
ccd3_output_source_c      6.57664868049e-07
ccd3_output_source_d      6.78210387937e-07
ccd4_output_source_d      9.18717909604e-07
ccd4_output_source_c      6.38576969504e-07
ccd4_output_source_b      8.67631752044e-07
ccd4_output_source_a      6.61065984517e-07
ccd3_board_temperature      0.000373431891203
ccd2_input_gate_2      4.89128264599e-07
ccd4_serial_low      7.82843562774e-07
ccd2_output_gate      3.75536712818e-07
ccd4_input_diode_low      5.0900678616e-07
ccd3_substrate      5.08491694927e-05
ccd2_serial_low      7.22396629862e-07
ccd4_output_drain_c      1.38397676032e-06
ccd4_output_drain_b      1.10751457885e-06
ccd4_output_drain_a      1.21468445286e-06
ccd2_scupper      6.36011268944e-07
ccd3_reset_high      2.58623622358e-07
ccd2_parallel_high      1.98379531503e-07
ccd2_backside      3.29085881822e-07
+2.5f      2.10347212851e-07
heater_3_current      8.6596589908e-05
ccd3_serial_high      2.08014529198e-07
ccd3_backside      3.93792497925e-07
ccd3_serial_low      6.40372373164e-07
ccd4_input_gate_2      4.38645947725e-07
ccd4_input_gate_1      1.07242595404e-06
ccd1_serial_high      2.12984159589e-07
ccd2_output_drain_d      1.59644242376e-06
ccd2_output_source_d      7.01324097812e-07
ccd3_input_diode_low      4.48179524392e-07
+1f      2.78806407005e-07
ccd1_substrate      0.000175013197586
ccd3_reset_drain      5.39965555072e-07
hk_bias_1      1.04794390778e-06
hk_bias_0      8.23062943631e-07
hk_bias_3      6.38490178167e-07
ccd4_reset_low      5.20771625452e-07
hk_bias_5      8.08588006302e-07
hk_bias_4      7.47987192125e-07
ccd1_parallel_low      4.07585757785e-07
ccd1_scupper      4.63367323391e-07
+15      5.37531450391e-07
ccd1_input_diode_high      6.06979499571e-07
ccd1_reset_drain      4.98864683323e-07
ccd1_reset_high      2.53958255053e-07
-12      5.85645586252e-06
+5      2.41990573704e-07
ccd1_input_gate_1      9.93926078081e-07
ccd1_input_diode_low      7.98056717031e-07
ccd4_parallel_high      1.93993072025e-07
ccd2_substrate      1.08336284757e-05
ccd3_output_drain_b      1.23127357196e-06
ccd1_reset_low      4.1897026822e-07
ccd4_output_gate      5.03935734741e-07
ccd2_input_diode_low      7.56068411283e-07
ccd4_board_temperature      0.000230523794889
+1.8f      2.19551171176e-07
ccd2_serial_high      2.23405170254e-07
ccd3_parallel_high      2.71301250905e-07
ccd4_input_diode_high      4.25359793007e-07
ccd4_reset_drain      3.94806708209e-07
heater_2_current      8.60968340188e-05
ccd3_reset_low      3.77565133385e-07
ccd2_input_diode_high      7.84897338599e-07
ccd3_input_gate_2      5.93211594969e-07
ccd3_scupper      3.59436124563e-07
ccd3_input_gate_1      6.30306336097e-07
pt1000_sensor_2      7.79155315831e-05
ccd4_reset_high      2.8425778728e-07
ccd2_output_drain_b      1.40459169075e-06
ccd2_reset_drain      4.34563751332e-07
ccd1_serial_low      9.03762783855e-07
ccd4_serial_high      1.95641163737e-07
ccd1_output_drain_a      1.54785504565e-06
ccd2_parallel_low      4.68032690696e-07
ccd1_output_drain_d      1.12417310849e-06
ccd1_board_temperature      0.00034485027194
ccd1_input_gate_2      4.29416634142e-07
ccd1_output_drain_c      1.00756340101e-06
ccd1_output_gate      3.83270066231e-07
ccd3_parallel_low      4.12885006517e-07
ccd4_backside      2.75256671011e-07
pt1000_sensor_3      0.000114291959326
ccd2_output_drain_c      1.45651077479e-06
pt1000_sensor_1      2.67596187769e-05
pt1000_sensor_6      8.82514816476e-05
pt1000_sensor_7      8.01971013425e-05
ccd1_output_drain_b      1.27881979197e-06
pt1000_sensor_5      7.67649058253e-05
pt1000_sensor_8      0.00625256698346
pt1000_sensor_9      0.0594292435673
ccd2_input_gate_1      1.2043493567e-06
ccd3_output_drain_c      1.26993524283e-06
+3.3f      1.69474538416e-07
ccd3_output_drain_a      1.35565725993e-06
ccd3_output_drain_d      1.0775292255e-06
ccd3_output_gate      4.28605265915e-07
ccd2_board_temperature      0.000317910164595
ccd2_reset_low      3.87707236223e-07
hk_bias_2      1.0097134513e-06
ccd1_output_source_c      7.8128504008e-07
ccd1_backside      3.27488500625e-07
ccd2_reset_high      1.8182254862e-07
pt1000_sensor_4      9.86676727189e-05
ccd3_input_diode_high      4.41282894462e-07
ccd4_scupper      4.32535330765e-07
ccd4_output_drain_d      1.55333847832e-06
pt1000_sensor_10      0.0741255444445
pt1000_sensor_11      4.43959864788e-05
pt1000_sensor_12      0.000143336175825
ccd1_output_source_b      7.20411996357e-07
alcu_sensor_ccd4      0.0  
ccd1_output_source_a      6.94868917576e-07
alcu_sensor_ccd1      0.0  
alcu_sensor_ccd3      0.0  
alcu_sensor_ccd2      0.0  

In [ ]:
data = []

for i in range(10):
    set_values = {}
    for k in range(len(fpe1.ops.address)):
        if fpe1.ops.address[k] is None:
            continue
        low = fpe1.ops.address[k].low
        high = fpe1.ops.address[k].high
        name = fpe1.ops.address[k].name
        set_values[name] = fpe1.ops.address[k].value = low + i / 100. * (high - low)
    fpe1.ops.send()
    data.append({"set values": set_values,"measured values": fpe1.house_keeping["analogue"]})
    print data

In [103]:
print sample_data


{'sample_2': [[-39.61865234375, 20.109255981445312, -0.0008331298828139211, -0.0066650390625007105, -0.0066650390625007105, -7.3330535888671875, -0.0066650390625007105, -8.069229125976562, 20.084262084960937, -2.9945526123046875, -0.0066650390625007105, -0.0058319091796867895, -0.0058319091796867895, 25.355682373046875, -0.0058319091796867895, -0.0066650390625007105, -0.0066650390625007105, -0.0008331298828139211, 289.44580078125, 20.2550537109375, -2.0504150390625, -1.0347747802734375, 12.064315795898438, -39.478515625, -2.0378265380859375, 20.084262084960937, 20.064266967773438, 20.082595825195312, 11.961090087890625, -95.24559020996094, 3.0872039794921875, -22.005462646484375, -7.3401031494140625, 0.01611328125, 11.898651123046875, -12.1212158203125, 1.94952392578125, 4.039398193359375, 0.0005035400390625, -1.958770751953125, -3.0106658935546875, -2.965850830078125, 4.0540008544921875, 0.99700927734375, 2.513671875, -0.0016662597656242895, -39.85137939453125, 12.160491943359375, 0.005825500488281676, 0.0041610717773430395, 0.005825500488281676, -0.001007080078125, 0.004993286132812358, 0.004993286132812358, -7.9101104736328125, 12.073379516601562, 15.034698486328125, 12.005401611328125, 12.030075073242188, 2.901397705078125, 0.005825500488281676, 4.89239501953125, 11.983749389648438, 1.024749755859375, -7.3360748291015625, -39.9139404296875, -0.097686767578125, -1.05340576171875, 11.914764404296875, 291.588134765625, 1.8051910400390625, 3.9734344482421875, -7.3914642333984375, 11.912750244140625, 12.053237915039062, 39.997100830078125, 0.999755859375, 0.0438079833984375, 12.077911376953125, -2.96484375, 12.110641479492188, -2.9663543701171875, 0.00201416015625, 2.9970703125, -121.38916015625, 12.052230834960938, -1.8998565673828125, 3.9865264892578125, 19.865982055664062, -8.007797241210938, 290.115966796875, 20.116754150390626, 20.08759460449219, -1.0236968994140625, -8.0445556640625, 19.970123291015625, -61.48345947265625, 19.932632446289062, 20.03594055175781, 3.5700225830078125, -2.90240478515625, -2.9049224853515625, 0.0166168212890625, 48.763885498046875, 52.16072082519531, 20.110922241210936, 20.105923461914063, 3.3278961181640625, -2.943695068359375, 20.059268188476562, -1.023193359375, 293.115234375, -0.072509765625, 39.997100830078125, 2.95074462890625, -43.359222412109375, 11.935409545898438, 12.011947631835938, 19.992617797851562, 80.63888549804688, 128.3696746826172, 27.534637451171875, -0.0058319091796867895, -0.0058319091796867895, -0.0016662597656242895, 39.997100830078125, -0.004998779296876421, 39.997100830078125]]}

In [57]:
v = {}
for name in operating_parameters.keys():
    v[name] = operating_parameters[name]
    print v[name]["unit"]
    print name


V
ccd4_substrate
V
ccd2_parallel_low
V
ccd2_substrate
V
ccd3_serial_high
V
ccd3_backside
V
ccd1_serial_low_offset
V
ccd1_output_drain_c_offset
V
ccd1_input_diode_high
V
ccd4_output_gate
V
ccd1_output_gate
V
ccd4_input_gate_1
V
ccd3_parallel_low
V
ccd4_backside
V
ccd1_serial_high
V
ccd3_output_drain_c_offset
V
ccd1_input_gate_1
V
ccd1_input_gate_2
V
ccd1_backside
V
ccd3_reset_high
V
ccd4_parallel_low
V
ccd3_output_drain_d_offset
V
ccd2_output_drain_a_offset
V
ccd4_output_drain_b_offset
V
ccd2_input_diode_low
V
ccd2_reset_low_offset
mA
heater_3_current
V
ccd4_output_drain_c_offset
V
ccd2_serial_high
V
ccd4_output_drain_d_offset
V
ccd1_output_drain_d_offset
V
ccd2_output_drain_c_offset
V
ccd2_input_gate_1
V
ccd2_parallel_high_offset
V
ccd2_input_gate_2
V
ccd1_output_drain_a_offset
mA
heater_2_current
V
ccd1_output_drain_b_offset
V
ccd4_reset_drain
V
ccd4_reset_low_offset
V
ccd4_reset_high
V
ccd2_output_gate
V
ccd4_input_diode_low
V
ccd2_serial_low_offset
V
ccd3_substrate
V
ccd3_output_drain_a_offset
V
ccd1_substrate
V
ccd3_reset_drain
V
ccd4_input_gate_2
V
ccd3_input_gate_2
V
ccd3_scupper
V
ccd3_input_gate_1
V
ccd4_parallel_high_offset
V
ccd4_input_diode_high
V
ccd1_reset_low_offset
V
ccd2_reset_high
V
ccd1_parallel_high_offset
V
ccd2_output_drain_d_offset
V
ccd2_scupper
V
ccd1_parallel_low
V
ccd3_parallel_high_offset
V
ccd3_output_gate
V
ccd1_scupper
V
ccd3_serial_low_offset
V
ccd3_input_diode_high
V
ccd2_input_diode_high
V
ccd3_reset_low_offset
V
ccd4_serial_low_offset
V
ccd2_output_drain_b_offset
V
ccd4_scupper
V
ccd1_reset_drain
V
ccd1_reset_high
V
ccd2_backside
V
ccd3_input_diode_low
V
ccd2_reset_drain
V
ccd1_input_diode_low
V
ccd4_output_drain_a_offset
V
ccd4_serial_high
V
ccd3_output_drain_b_offset
mA
heater_1_current

In [29]:



---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-ed8afe19f7a8> in <module>()
----> 1 print v[1]

TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'

In [18]:



Wrapper load complete. Interface voltages OK.