Open adamkglaser opened 11 months ago
Use this to generate a JSON. Read that JSON in and resave it as a TOML file. Then in the launch script, use the TOML read dictionary to resave a JSON using something like the code below.
from aind_data_schema.device import DAQChannel, DAQDevice, Manufacturer from aind_data_schema.imaging import instrument #ADD MPB manufacturer #ADD AAOpto manufacturer #ADD Navitar manufacturer #ADD Mitutuyo manufacturer inst = instrument.Instrument( instrument_id='exaSPIM1-01', instrument_type='exaSPIM', manufacturer=Manufacturer.CUSTOM, objectives=[ instrument.Objective( name='Detection objective', model='JM_DIAMOND 5.0X/1.3', manufacturer=Manufacturer.VIEWORKS, numerical_aperture=0.305, magnification=5.0, immersion='air', serial_number='15618844', notes='detection objective. manufacturer collaboration between Schneider-Kreuznach and Vieworks', ), ], objectives=[ instrument.Objective( name='Excitation objective', model='TL2X-SAP', manufacturer=Manufacturer.THORLABS, numerical_aperture=0.1, magnification=2.0, immersion='air', serial_number=None, notes='excitation objective. magnification assuming 200 mm tube lens focal length', ), ], lenses=[ instrument.Lens( name='L1', model='LMPLANFL N 50X', manufacturer=Manufacturer.OLYMPUS, focal_length=3.6, focal_length_unit=SizeUnit.MM, serial_number=None, notes='L1. first beam expander lens.', ), instrument.Lens( name='L2', model='7.5X Mitutoyo Plan Apo', manufacturer=Manufacturer.MITUTUYO, focal_length=26.67, focal_length_unit=SizeUnit.MM, serial_number=None, notes='L2. second beam expander lens.', ), instrument.Lens( name='L3', model='ACY254-050-A-ML', manufacturer=Manufacturer.THORLABS, focal_length=50, focal_length_unit=SizeUnit.MM, serial_number=None, notes='L3. cylindrical lens.', ), instrument.Lens( name='L4', model='AC508-200-A-ML', manufacturer=Manufacturer.THORLABS, focal_length=200, focal_length_unit=SizeUnit.MM, serial_number=None, notes='L4. first relay lens.', ), instrument.Lens( name='L5', model='AC508-300-A-ML', manufacturer=Manufacturer.THORLABS, focal_length=300, focal_length_unit=SizeUnit.MM, serial_number=None, notes='L5. second relay lens.', ), ], detectors=[ instrument.Detector( name='Imaging camera', type=CameraType.CAMERA, model='VP-151MX-M6H0', manufacturer=Manufacturer.VIEWORKS, max_frame_rate=6.4, frame_rate_unit=Frequency.HZ, pixel_width=3.76, pixel_height=3.76, size_unit=SizeUnit.UM, chroma=CameraChroma.BW, data_interface='Coax', cooling='air', serial_number='MP151BBX006', ), ], light_sources=[ instrument.Lightsource( name='488 nm laser', type=LightsourceType.LASER, model='Genesis MX488-1000 STM OPSLaser-Diode System', manufacturer=Manufacturer.COHERENT, coupling=Coupling.FREE_SPACE, wavelength=488, wavelength_unit=SizeUnit.NM, max_power=1000, power_unit=PowerUnit.MW, serial_number='MX1275', notes='Housed in custom laser combiner. Water cooled.', ), instrument.Lightsource( name='561 nm laser', type=LightsourceType.LASER, model='Genesis MX561-1000 STM OPSLaser-Diode System', manufacturer=Manufacturer.COHERENT, coupling=Coupling.FREE_SPACE, wavelength=561, wavelength_unit=SizeUnit.NM, max_power=1000, power_unit=PowerUnit.MW, serial_number='MX1276', notes='Housed in custom laser combiner. Water cooled.', ), instrument.Lightsource( name='639 nm laser', type=LightsourceType.LASER, model='Genesis MX639-1000 STM OPSLaser-Diode System', manufacturer=Manufacturer.COHERENT, coupling=Coupling.FREE_SPACE, wavelength=639, wavelength_unit=SizeUnit.NM, max_power=1000, power_unit=PowerUnit.MW, serial_number='MX1274', notes='Housed in custom laser combiner. Water cooled.', ) ], fluorescence_filters=[ instrument.Filter( name='Emission filter', model='ZET488/561m', manufacturer=Manufacturer.CHROMA, filter_type=FilterType.MULTIBAND, diameter=44.05, size_unit=SizeUnit.MM, thickness=1.0, thickness_unit=SizeUnit.MM, notes='Custom made filter. No filter wheel.', serial_number=None, ) ], daqs=[ DAQDevice( name='NIDAQ', model='PCIe-6738', manufacturer=Manufacturer.NATIONAL_INSTRUMENTS, data_interface='USB', computer_name='Dev2', name='Dev2', serial_number=None, channels=[ DAQChannel(channel_name='0', channel_type='Analog Output', device_name='ETL', sample_rate=10000), DAQChannel(channel_name='1', channel_type='Analog Output', device_name='Imaging camera', sample_rate=10000), DAQChannel(channel_name='2', channel_type='Analog Output', device_name='Z scanning stage', sample_rate=10000), DAQChannel(channel_name='3', channel_type='Analog Output', device_name='AOTF RF driver, 488 nm', sample_rate=10000), DAQChannel(channel_name='3', channel_type='Analog Output', device_name='AOTF RF driver, 488 nm', sample_rate=10000), DAQChannel(channel_name='4', channel_type='Analog Output', device_name='AOTF RF driver, 639 nm', sample_rate=10000), DAQChannel(channel_name='13', channel_type='Analog Output', device_name='AOTF RF driver, 561 nm', sample_rate=10000), DAQChannel(channel_name='17', channel_type='Analog Output', device_name='Galvo servo 1', sample_rate=10000), DAQChannel(channel_name='19', channel_type='Analog Output', device_name='Galvo servo 2', sample_rate=10000), ], ) ], scanning_stages=[ instrument.ScanningStage( name='X scanning stage', model='MS-8000', manufacturer=Manufacturer.ASI, stage_axis_direction='Detection axis', stage_axis_name='X', travel=1000, travel_unit=SizeUnit.MM, serial_number=None, ), instrument.ScanningStage( name='Y scanning stage', model='MS-8000', manufacturer=Manufacturer.ASI, stage_axis_direction='Perpendicular axis', stage_axis_name='Y', travel=1000, travel_unit=SizeUnit.MM, serial_number=None, ), instrument.ScanningStage( name='Z scanning stage', model='LS-100', manufacturer=Manufacturer.ASI, stage_axis_direction='Illumination axis', stage_axis_name='Z', travel=100, travel_unit=SizeUnit.MM, serial_number=None, ), ], motorized_stages=[ instrument.MotorizedStage( name='Illumination objective stage 1', model='LS-50', manufacturer=Manufacturer.ASI, travel=50, travel_unit=SizeUnit.MM, stage_axis_name='M', serial_number=None, notes='translates illumination objective along detection axis' ), instrument.MotorizedStage( name='Illumination objective stage 2', model='LS-50', manufacturer=Manufacturer.ASI, travel=50, travel_unit=SizeUnit.MM, stage_axis_name='N', serial_number=None, notes='translates illumination objective perpendicular to detection axis' ), ], additional_devices=[ instrument.AdditionalImagingDevice( name='ETL', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.OPTOTUNE, model='EL-16-40-TC-VIS-20D-C', serial_number='ANAC4286', ), instrument.AdditionalImagingDevice( name='Cylindrical lens rotation stage', type='Rotation mount', manufacturer=Manufacturer.ASI, model='C60-3060-CMR-MO', serial_number=None, ), instrument.AdditionalImagingDevice( name='AOTF', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.AAOPTO, model='AOTFnC-400.650-TN', serial_number='1002-Q220234', ), instrument.AdditionalImagingDevice( name='AOTF RF driver', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.AAOPTO, model='MPDS8C-D65-22-74.158-RS', serial_number='2001-Q220234', ), instrument.AdditionalImagingDevice( name='Tiger controller', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.ASI, model='TG8-XY:A(Xb)H-Z/F:5A:FTP', serial_number='2112-2317-8584-5632-5631', ), instrument.AdditionalImagingDevice( name='NIDAQ breakout board', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.NATIONAL_INSTRUMENTS, model='SCB-68A', serial_number='1FCD210', ), instrument.AdditionalImagingDevice( name='Galvo 1', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.THORLABS, model='QS20Y-AG', serial_number='20375', ), instrument.AdditionalImagingDevice( name='Galvo 2', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.THORLABS, model='QS20Y-AG', serial_number='20385', ), instrument.AdditionalImagingDevice( type='Galvo servo 1', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.THORLABS, model='QS20Y-AG', serial_number='02232', ), instrument.AdditionalImagingDevice( type='Galvo servo 2', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.THORLABS, model='QS20Y-AG', serial_number='02216', ), instrument.AdditionalImagingDevice( name='488 nm laser 210 Watt Thermoelectric Chiller with Coherent Logo', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.COHERENT, model='0P9T257P30', serial_number='A76636', ), instrument.AdditionalImagingDevice( name='561 nm laser 210 Watt Thermoelectric Chiller with Coherent Logo', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.COHERENT, model='0P9T257P30', serial_number='A76626', ), instrument.AdditionalImagingDevice( name='639 nm laser 210 Watt Thermoelectric Chiller with Coherent Logo', type=ImagingDeviceType.OTHER, manufacturer=Manufacturer.COHERENT, model='0P9T257P30', serial_number='A76606', ), ], optical_tables=[ instrument.OpticalTable( manufacturer=Manufacturer.MKS_NEWPORT, model='VIS3648-PG2-325A', length=36, width=48, vibration_control=True, serial_number='10349925', ) ], com_ports=[ instrument.Com( hardware_name='AOTF RF driver', com_port='COM13', ), instrument.Com( hardware_name='Tiger Controller', com_port='COM5', ), ], humidity_control=False, temperature_control=False, ) inst.write_standard_file()
Use this to generate a JSON. Read that JSON in and resave it as a TOML file. Then in the launch script, use the TOML read dictionary to resave a JSON using something like the code below.