AllenNeuralDynamics / AllenNeuralDynamics/exa-spim-control

Add instrument.json generation to ExA-SPIM

オープン
#53 コメント 0 件 リアクション 0 件 担当者 1 名 @micahwoodard が担当を希望しています GitHub で見る
主要言語
Python
スター
2
フォーク
0
PR マージ指標
30日以内にマージされた PR はありません

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。