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 base_config as _base_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 `base_config['temperature']`.
18 _LOG.info('measure temperature')
23 _LOG.info('fake temperature %g' % _base_config['temperature'])
24 return _base_config['temperature']
26 def T(get_T, temperature_config, filename, group='/'):
27 """Wrapper around T_acquire(), T_analyze(), T_save().
31 >>> from pypiezo.config import pprint_HDF5
32 >>> from .config import HDF5_TemperatureConfig
34 >>> fd,filename = tempfile.mkstemp(suffix='.h5', prefix='calibcant-')
37 >>> temperature_config = HDF5_TemperatureConfig(
38 ... 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 "|S2">
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 "|S3">
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 T_ret = _T_analyze(T_raw, temperature_config)
77 temperature_config['default'] = not get_T
78 _T_save(filename, group=group, raw_T=T_raw,
79 temperature_config=temperature_config, processed_T=T_ret)