Skip to content

Commit d093a4f

Browse files
committed
Update to have a default Frequency conversion class
1 parent af2db0d commit d093a4f

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

labscript_devices/Windfreak/labscript_devices.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,46 @@
1313

1414
from labscript import LabscriptError, set_passed_properties, config, StaticDDS, IntermediateDevice, Device
1515
from labscript_utils import dedent
16+
from labscript_utils.unitconversions.UnitConversionBase import UnitConversion
17+
18+
class FreqConversion(UnitConversion):
19+
"""
20+
A Generic frequency conversion class that covers standard SI prefixes from a base Hz.
21+
"""
22+
23+
base_unit = 'Hz' # must be defined here and match default hardware unit in BLACS tab
24+
25+
def __init__(self, calibration_parameters = None):
26+
self.parameters = calibration_parameters
27+
if hasattr(self, 'derived_units'):
28+
self.derived_units += ['kHz', 'MHz', 'GHz']
29+
else:
30+
self.derived_units = ['kHz', 'MHz', 'GHz']
31+
UnitConversion.__init__(self,self.parameters)
32+
33+
def kHz_to_base(self,kHz):
34+
Hz = kHz*1e3
35+
return Hz
36+
37+
def kHz_from_base(self,Hz):
38+
kHz = Hz*1e-3
39+
return kHz
40+
41+
def MHz_to_base(self,MHz):
42+
Hz = MHz*1e6
43+
return Hz
44+
45+
def MHz_from_base(self,Hz):
46+
MHz = Hz*1e-6
47+
return MHz
48+
49+
def GHz_to_base(self,GHz):
50+
Hz = GHz*1e9
51+
return Hz
52+
53+
def GHz_from_base(self,Hz):
54+
GHz = Hz*1e-9
55+
return GHz
1656

1757
import numpy as np
1858

@@ -52,6 +92,14 @@ def add_device(self, device):
5292
# ensure a valid default value
5393
device.frequency.default_value = 10e6
5494

95+
def get_default_unit_conversion_classes(self, device):
96+
"""Child devices call this during their `__init__` to get default unit conversions.
97+
98+
If user has not overridden, will use generic FreqConversion class.
99+
"""
100+
101+
return FreqConversion, None, None
102+
55103
def validate_data(self, data, limits, device):
56104
if not isinstance(data, np.ndarray):
57105
data = np.array(data,dtype=np.float64)

0 commit comments

Comments
 (0)