AllenNeuralDynamics / AllenNeuralDynamics/exa-spim-control

Add instrument.json generation to ExA-SPIM

Abierto
#53 0 comentarios 0 reacciones 1 asignado Reclamado por @micahwoodard Ver en GitHub
Lenguaje dominante
Python
Estrellas
2
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

```python
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()
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.