2 # Fairly stubby, since a one shot Temp measurement is a common thing.
3 # We just wrap that to provide a consistent interface.
5 from . import LOG as _LOG
6 from . import package_config as _package_config
7 from .T_analyze import T_analyze as _T_analyze
8 from .T_analyze import T_save as _T_save
11 def T_acquire(get_T=None):
12 """Measure the current temperature of the sample,
14 If `get_T` is `None`, fake it by returning
15 `package_config['temperature']`.
18 _LOG.info('measure temperature')
23 _LOG.info('fake temperature %g' % _package_config['temperature'])
24 T = _package_config['temperature']
27 def T(get_T, temperature_config, filename, group='/'):
28 """Wrapper around T_acquire(), T_analyze(), T_save().
32 >>> from h5config.storage.hdf5 import HDF5_Storage, pprint_HDF5
33 >>> from .config import TemperatureConfig
35 >>> fd,filename = tempfile.mkstemp(suffix='.h5', prefix='calibcant-')
38 >>> temperature_config = TemperatureConfig(storage=HDF5_Storage(
39 ... filename=filename, group='/T/config/'))
42 >>> t = T(get_T=get_T, temperature_config=temperature_config,
43 ... filename=filename, group='/T/')
44 >>> pprint_HDF5(filename) # doctest: +ELLIPSIS, +REPORT_UDIFF
48 <HDF5 dataset "default": shape (), type "|b1">
50 <HDF5 dataset "units": shape (), type "|S7">
52 <HDF5 dataset "processed": shape (), type "<f8">
54 <HDF5 dataset "raw": shape (), type "<f8">
56 >>> t = T(get_T=None, temperature_config=temperature_config,
57 ... filename=filename, group='/T/')
58 >>> pprint_HDF5(filename) # doctest: +ELLIPSIS, +REPORT_UDIFF
62 <HDF5 dataset "default": shape (), type "|b1">
64 <HDF5 dataset "units": shape (), type "|S7">
66 <HDF5 dataset "processed": shape (), type "<f8">
68 <HDF5 dataset "raw": shape (), type "<i4">
71 Cleanup our temporary config file.
73 >>> os.remove(filename)
75 T_raw = T_acquire(get_T)
76 _LOG.debug('got T: %s' % T_raw)
77 T_ret = _T_analyze(T_raw, temperature_config)
78 temperature_config['default'] = not get_T
79 _T_save(filename, group=group, raw_T=T_raw,
80 temperature_config=temperature_config, processed_T=T_ret)