Assemble Z-drive, arm, DL needle
Build stand (with desired stage heights)
Assemble slider, arm
subset of Sampler, w/ arm, stage attachment difference
In [ ]:
from acqpack import Motor, AsiController, Autosampler, FractionCollector
from acqpack import gui
from acqpack import utils as ut
import yaml
import numpy as np
import pandas as pd
physical adjustments
In [ ]:
a = Autosampler(Motor('config/motor.yaml'), AsiController('config/input.yaml'))
gui.stage_control(a)
In [ ]:
# in input.yaml, set desired init_dir (x_dir and y_dir)
This is one way to do this; it assumes things are generally rectilinear (90deg rotations)
Could also do regression between frame1 and frame2 (generalizable way?)
a x' y' z' w'
x 1. 0. 0. 0.
y 0. 1. 0. 0.
z 0. 0. -1. .0
w 0. 0. 0. 1.
In [ ]:
a = Autosampler(Motor('config/motor.yaml'), AsiController('config/input.yaml'))
gui.stage_control(a)
In [ ]:
# DECK is row; HW is col
# determine XY axes mapping (rotations / reflections)
# determine XYZ offset (i.e. when DECK is 0,0,0, what is HW ?)
# save affine in input_deck.txt
This is one way to do this; it assumes things are generally rectilinear (90deg rotations)
Could also do regression between frame1 and frame2 (generalizable way?)
In [ ]:
a = Autosampler(Motor('config/motor.yaml'), AsiController('config/input.yaml'))
a.add_frame('deck', 'config/input_deck.txt')
gui.stage_control(a)
In [ ]:
# determine plate 'A01' offset relative to deck origin using above GUI
# i.e. deck coordinates of 'A01'
offset = (2.493, 12.749, 0)
# generate platemap with offset
num_rc = (8,12) # ct, ct
space_rc = (9,9) # mm, mm (can do negative if row or column reflected)
platemap = ut.generate_position_table(num_rc, space_rc, offset, True)
# save
filename = '96plate.txt'
platemap
In [ ]:
# determine plate 'A01' offset relative to deck origin using above GUI
# i.e. deck coordinates of 'A01'
offset = (8.192, -18.952, 37.700)
# generate platemap with offset
num_rc = (1,4) # ct, ct
space_rc = (0,28.375) # mm, mm (can do negative if row or column reflected)
platemap = ut.generate_position_table(num_rc, space_rc, offset, True)
# save
filename = '4scint.txt'
platemap
In [ ]:
a.add_frame('plate', 'config/input_deck.txt', 'config/96plate.txt')
a.add_frame('wash', 'config/input_deck.txt', 'config/4scint.txt')
In [ ]:
a.goto('plate','name', 'H10')
In [ ]:
a.where()
In [ ]:
a.goto('deck', 'xyz', (0,0,0))
In [ ]:
In [2]:
from acqpack import Motor, AsiController, Autosampler, FractionCollector
from acqpack import gui
from acqpack import utils as ut
In [3]:
a = Autosampler(Motor('config/motor.yaml'), AsiController('config/input.yaml'))
gui.stage_control(a)
In [33]:
a.add_frame('plate', 'config/input_deck.txt', 'config/96plate.txt')
a.add_frame('wash', 'config/input_deck.txt', 'config/4scint.txt')
In [60]:
a.goto('plate', 'name', 'A01', zh_travel=35)
In [34]:
a.goto('plate', 'xyz', (0,0,0))
In [55]:
f = FractionCollector(AsiController('config/output.yaml'))
gui.stage_control(f)
In [56]:
f.add_frame('plate', 'config/output_deck.txt', 'config/96plate.txt')
In [58]:
f.goto('plate', 'name', 'H12')
In [62]:
f.where('plate')
Out[62]:
In [54]:
f.exit()