pyfast_adt.main.adaptor

Submodules

Classes

Tem_fei

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

Tem_gatan_fei

Tem_gatan_jeol

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

Tem_jeol

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

Tem_fei_temspy

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

Tem_base

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

Package Contents

class pyfast_adt.main.adaptor.Tem_fei(ip='192.168.21.1', port=8080, cam_table=None, master=None)

Bases: pyfast_adt.main.adaptor.microscope.adaptor_tem.Tem_base

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

tem = None
result = []
master = None
client
calibrated_speed = None
move_stage_up(stage_ampl)
move_stage_down(stage_ampl)
move_stage_left(stage_ampl)
move_stage_right(stage_ampl)
move_stage_z_up(stage_ampl)
move_stage_z_down(stage_ampl)
move_beam_up(beam_ampl)
move_beam_down(beam_ampl)
move_beam_left(beam_ampl)
move_beam_right(beam_ampl)
move_stem_beam_up(beam_ampl)
move_stem_beam_down(beam_ampl)
move_stem_beam_left(beam_ampl)
move_stem_beam_right(beam_ampl)
diffraction(checked_diff_value, kl=None)

“ this function set directly to 350 KL to fix a bug in temscript, this is ok only for the tecnai spirit, we should set in an external file which is the standard KL to set

get_defocus()
set_defocus(defocus)
euc_focus()
wobbler(checked_wobbler_value)
move_screen(checked_screen_value)
get_screen_position()
beam_blank(checked_blank_value)
apply_rotation(vector, theta=216.4)
fake()
get_stage(standard=False)

“get the stage position in um and deg

set_stage_position(x=None, y=None, z=None, a=None, b=None)

“set the stage position in um and deg

get_beam_shift()

return the value of the beam shift

set_beam_shift(beam_pos)

set the value of the beam shift

connect(ip, port)
get_projection_mode()

return ‘IMAGING’ or ‘DIFFRACTION’ depending on what you are using

set_magnification(mag_value)
get_magnification()
set_KL(kl_value)
get_KL()

“return the KL value in mm

get_intensity(slot=0)
set_intensity(intensity=0, slot=0)
get_spotsize()

return the c1 index value, in fei/termofisher this is the spotsize

load_calibration_table(cam_table)
set_alpha(angle, velocity=1)
microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None, timer=None, event=None, stop_event=None)

“this function read the tracking file and set up the threads necessary for the acqusition. 3 sockets are necessary to work. if tracking_positions == None and experiment_type == “continuous”, the stage is threaded only for continuous rotation (trackless experiment). if tracking positions != None and experiment_type == “continuous”, the stage is threaded for continuous rotation and the beam is threaded for tracking. if experiment_type == “stepwise”, the beam only is threaded for tracking waiting to pass the target angle to apply the tracking beamshift. in the case of cred, results are displayed in the variable self.result

calc_stage_speed(speed)

“calculate the speed in degrees/s for the tecnai series, 1 is equivalent to the maximum (normalized). speed is provided in degrees/s and return it in rad/s.

angle_tracking(final_angle, result: list, timer=None, event=None, stop_event=None)
beamshift_tracking(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

beamshift_tracking_stem(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

get_voltage()
test_tracking(tracking, ub_class=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

test_tracking_stem(ub_class)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

continuous_rotation(a, speed, event=None, stop_event=None)
get_illumination_mode()

return micro or nanoprobe for the condenser minilens fei

set_illumination_mode(mode)

set micro or nanoprobe for the condenser minilens fei

get_instrument_mode()

return the current instrument mode i.e. TEM/STEM

set_instrument_mode(mode)

set the current instrument mode i.e. TEM/STEM

class pyfast_adt.main.adaptor.Tem_gatan_fei(ip='192.168.21.1', port=8080, cam_table=None)

Bases: pyfast_adt.main.adaptor.microscope.adaptor_tem.Tem_base

tem = None
move_stage_up(stage_ampl)
move_stage_down(stage_ampl)
move_stage_left(stage_ampl)
move_stage_right(stage_ampl)
move_stage_z_up(stage_ampl)
move_stage_z_down(stage_ampl)
move_beam_up(beam_ampl)
move_beam_down(beam_ampl)
move_beam_left(beam_ampl)
move_beam_right(beam_ampl)
diffraction(checked_diff_value, kl=None)
euc_focus()
wobbler(checked_wobbler_value)
move_screen(checked_screen_value)
get_screen_position()
apply_rotation(vector, theta=212)
fake()
get_stage()
get_beam_shift()
connect(ip, port)
microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None)
calc_stage_speed(speed)

“calculate the speed in degrees/s for the tecnai series, 1 is equivalent to the maximum (normalized). speed is provided in degrees/s and return it in rad/s.

beamshift_tracking(experiment_type, tracking_step, tracking_positions)
get_voltage()
get_projection_mode()
class pyfast_adt.main.adaptor.Tem_gatan_jeol(ip='192.168.21.1', port=8080, cam_table=None)

Bases: pyfast_adt.main.adaptor.microscope.adaptor_tem.Tem_base

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

tem = None
move_stage_up(stage_ampl)

‘ take a float as stage ampl (um) and move the stage on +y of that quantity, rotation and scale to um already inside

move_stage_down(stage_ampl)
move_stage_left(stage_ampl)
move_stage_right(stage_ampl)
move_stage_z_up(stage_ampl)
move_stage_z_down(stage_ampl)
move_beam_up(beam_ampl)
move_beam_down(beam_ampl)
move_beam_left(beam_ampl)
move_beam_right(beam_ampl)
diffraction(checked_diff_value, kl=None)
euc_focus()
wobbler(checked_wobbler_value)
move_screen(checked_screen_value)
get_screen_position()
apply_rotation(vector, theta=212)
fake()
get_stage()
get_beam_shift()
connect(ip, port)
microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None)
calc_stage_speed(speed)

“calculate the speed in degrees/s for the tecnai series, 1 is equivalent to the maximum (normalized). speed is provided in degrees/s and return it in rad/s.

beamshift_tracking(experiment_type, tracking_step, tracking_positions)
get_voltage()
get_projection_mode()
class pyfast_adt.main.adaptor.Tem_jeol(cam_table=None, master=None)

Bases: pyfast_adt.main.adaptor.microscope.adaptor_tem.Tem_base

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

tem = None
result = []
master = None
calibrated_speed = None
FUNCTION_MODES = ('mag1', 'mag2', 'lowmag', 'samag', 'diff')
move_stage_up(stage_ampl)

stage ampl is in um and need to be converted to m to work in FEI/ThermoFisher (from API FEI works in m). before was set at -90 as fei, but is needed another 90 deg clockwise to be sincronized properly that’s why now is -180 if it doesn’t work try 0 deg

move_stage_down(stage_ampl)
move_stage_left(stage_ampl)
move_stage_right(stage_ampl)
move_stage_z_up(stage_ampl)
move_stage_z_down(stage_ampl)
move_beam_up(beam_ampl)
move_beam_down(beam_ampl)
move_beam_left(beam_ampl)
move_beam_right(beam_ampl)
move_stem_beam_up(beam_ampl)
move_stem_beam_down(beam_ampl)
move_stem_beam_left(beam_ampl)
move_stem_beam_right(beam_ampl)
getFunctionMode()

return one of these strings: Mag1, mag2, lowmag, samag, diff.

setFunctionMode(value)

you can input in value both a string or an integer of the corresponding mode to change Mag1:0, mag2:1, lowmag:2, samag:3, diff:4.

diffraction(checked_diff_value, kl=None)

“ this function set directly to 350 KL to fix a bug in temscript, this is ok only for the tecnai spirit, we should set in an external file which is the standard KL to set

get_defocus()

function that return the objective lens defocus value as an integer?? there are 2 functions OLc and OLf, meaning to coarse and fine, to checkout what is useful

set_defocus(defocus)

function that set the objective lens defocus value from an integer?? there are 2 functions OLc and OLf, meaning to coarse and fine, to checkout what is settlable

euc_focus()
wobbler(checked_wobbler_value)
move_screen(checked_screen_value)

function to move the fluorescent screen if checked_screen_value is True will move up, otherwise move it down.

get_screen_position()

return if the screen is up or down as ‘UP’ or ‘DOWN’.

beam_blank(checked_blank_value)

function to enable beam blanking if checked_blank_value is True blank the beam, otherwise unblank it

apply_rotation(vector, theta=216.4)

input an x,y vector and return a rotated vector of theta degree, usually used for syncronize the movement of the beam shift with the user reference. the rotation is counterclockwise!!

fake()
get_stage(standard=False)

return the current stage position of x, y, z in um a and b in deg. from default API from JEOL return nm and deg

set_stage_position(x=None, y=None, z=None, a=None, b=None)

set the stage position of x, y, z provided in um a and b given in radians. JEOL API works in nm and deg, so we need to convert the values.

get_beam_shift()

get the beam shift value in ?? units, it’s using CLA1 lens in JEOL i don’t know if it is correct

set_beam_shift(beam_pos)

set the beam shift value in ?? units

connect()

microscope remote connection trough JEOL COM interface generated by TemExt.dll

get_projection_mode()
set_magnification(mag_value)

tricky function there are 2 ways to get the info using: getMagnification that return a value integer or using getMagnificationIndex that return an integer as index

get_magnification()

tricky function there are 2 ways to get the info using: getMagnification that return a value integer or using getMagnificationIndex that return an integer as index

set_KL(kl_value)
get_KL()

“return the KL value should be in mm??

get_intensity(slot=0)

from instamatic the brightness control in the 2100f is CL3. for now implemented using CL3

set_intensity(intensity=0, slot=0)

from instamatic the brightness control in the 2100f is CL3. for now implemented using CL3

get_spotsize()

return the cl1 index value, in jeol this should be the the spotsize, 0-based indexing for GetSpotSize, add 1 to be consistent with JEOL software.

set_spotsize(value)

Set the spotsize

load_calibration_table(cam_table)

jeol have different mode we need to check the indexes such as mag1 mag2 samag lowmag diff

set_alpha(angle, velocity=1)

stage alpha movement, velocity in jeol cannot be set directly, the function will wait for the goniometer to stop, the angle should be provided in deg

isStageMoving()
microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None, timer=None, event=None, stop_event=None)

“this function read the tracking file and set up the threads necessary for the acqusition. 3 sockets are necessary to work. if tracking_positions == None and experiment_type == “continuous”, the stage is threaded only for continuous rotation (trackless experiment). if tracking positions != None and experiment_type == “continuous”, the stage is threaded for continuous rotation and the beam is threaded for tracking. if experiment_type == “stepwise”, the beam only is threaded for tracking waiting to pass the target angle to apply the tracking beamshift. in the case of cred, results are displayed in the variable self.result

calc_stage_speed(speed)

“calculate the speed in rad/s for jeol. speed is provided in degrees/s and return it in rad/s.

angle_tracking(final_angle, result: list, timer=None, event=None, stop_event=None)
beamshift_tracking(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

beamshift_tracking_stem(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

get_voltage()

Get the actual accelaration voltage in kV.

test_tracking(tracking, ub_class=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

test_tracking_stem(ub_class)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

continuous_rotation(a, speed, event=None, stop_event=None)

in jeol the gonio velocity can be changed only using goniotool an external exe from service. self.tem_stage is an object of the class RemoteMicroscope in fei that control the stage rotation, settled up by the function self.microscope_thread_setup()

get_illumination_mode()

return micro or nanoprobe for the condenser minilens

set_illumination_mode(mode)

set micro or nanoprobe for the condenser minilens

get_instrument_mode()

return the current instrument mode i.e. TEM/STEM

set_instrument_mode(mode)

set the current instrument mode i.e. TEM/STEM

class pyfast_adt.main.adaptor.Tem_fei_temspy(ip='192.168.21.1', port=8080, cam_table=None, master=None)

Bases: pyfast_adt.main.adaptor.microscope.adaptor_tem.Tem_base

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

tem = None
result = []
master = None
client
calibrated_speed = None
move_stage_up(stage_ampl)

‘ take a float as stage ampl (um) and move the stage on +y of that quantity, rotation and scale to um already inside

move_stage_down(stage_ampl)
move_stage_left(stage_ampl)
move_stage_right(stage_ampl)
move_stage_z_up(stage_ampl)
move_stage_z_down(stage_ampl)
move_beam_up(beam_ampl)
move_beam_down(beam_ampl)
move_beam_left(beam_ampl)
move_beam_right(beam_ampl)
move_stem_beam_up(beam_ampl)
move_stem_beam_down(beam_ampl)
move_stem_beam_left(beam_ampl)
move_stem_beam_right(beam_ampl)
diffraction(checked_diff_value, kl=None)

“ this function set directly to 350 KL to fix a bug in temscript, this is ok only for the tecnai spirit, we should set in an external file which is the standard KL to set

get_defocus()
set_defocus(defocus)
euc_focus()
wobbler(checked_wobbler_value)
move_screen(checked_screen_value)
get_screen_position()
beam_blank(checked_blank_value)
apply_rotation(vector, theta=216.4)
fake()
get_stage(standard=False)

return it in deg and um if standard == True return also the measuring units

set_stage_position(x=None, y=None, z=None, a=None, b=None)
get_beam_shift()

return the value of the beam shift

set_beam_shift(beam_pos)

set the value of the beam shift

connect(ip, port)
get_projection_mode()
set_magnification(mag_value)
get_magnification()
set_KL(kl_value)
get_KL()

“return the KL value in mm

get_intensity(slot=0)

slot: 0,1,2, where 0 is not store the c2% value, 1 is store in beam_intensity_1, and 2 in the beam_intensity_2

set_intensity(intensity=0, slot=0)
get_spotsize()

return the c1 index value, in fei/termofisher this is the spotsize

load_calibration_table(cam_table)
set_alpha(angle, velocity=1)
set_alpha_temspy(angle, velocity=1, event=None, stop_event=None)

this is not really compatible with the prague method right now, because the bot start changing the value and the wait event will only press the button but all the threads starts togheter

microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None, timer=None, event=None, stop_event=None)

“this function read the tracking file and set up the threads necessary for the acqusition. 3 sockets are necessary to work. if tracking_positions == None and experiment_type == “continuous”, the stage is threaded only for continuous rotation (trackless experiment). if tracking positions != None and experiment_type == “continuous”, the stage is threaded for continuous rotation and the beam is threaded for tracking. if experiment_type == “stepwise”, the beam only is threaded for tracking waiting to pass the target angle to apply the tracking beamshift. in the case of cred, results are displayed in the variable self.result

calc_stage_speed(speed)

“calculate the speed in degrees/s for the tecnai series, 1 is equivalent to the maximum (normalized). speed is provided in degrees/s and return it in rad/s.

angle_tracking(final_angle, result: list, timer=None, event=None, stop_event=None)
beamshift_tracking(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

beamshift_tracking_stem(tracking_dict, result=None, timer=None, event=None, stop_event=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

get_voltage()
test_tracking(tracking, ub_class=None)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

test_tracking_stem(ub_class)

this thread live in a separate socket and check continuously the position of the stage. when the angle is in the one to apply the tracking, the beamshift is applied to track the crystal. the thread work passivly waiting for the angle to be reached/passed to work

continuous_rotation(a, speed, event=None, stop_event=None)

modified cred function for fei_temspy because the stage is rotated by the bot. so it’s normal that the wait here is commented because the wait is in the set_alpha_temspy function. a input in deg and speed in a.u. (radians)

get_illumination_mode()

return micro or nanoprobe for the condenser minilens fei

set_illumination_mode(mode)

set micro or nanoprobe for the condenser minilens fei

get_instrument_mode()

return the current instrument mode i.e. TEM/STEM

set_instrument_mode(mode)

set the current instrument mode i.e. TEM/STEM

class pyfast_adt.main.adaptor.Tem_base

Bases: abc.ABC

every angle for moving the satge must be in deg as input and output, velocity for the stage in radian/s and um for the stage xyz movement

var = None
x = 0
y = 0
beam_intensity_1 = None
beam_intensity_2 = None
abstract move_stage_up(stage_ampl)

‘ take a float as stage ampl (um) and move the stage on +y of that quantity, rotation and scale to um already inside

abstract move_stage_down(stage_ampl)
abstract move_stage_left(stage_ampl)
abstract move_stage_right(stage_ampl)
abstract move_stage_z_up(stage_ampl)
abstract move_stage_z_down(stage_ampl)
abstract move_beam_up(beam_ampl)
abstract move_beam_down(beam_ampl)
abstract move_beam_left(beam_ampl)
abstract move_beam_right(beam_ampl)
abstract diffraction(checked_diff_value, kl=None)
abstract euc_focus()
abstract wobbler(checked_wobbler_value)
abstract move_screen(checked_screen_value)
abstract get_screen_position()
abstract beam_blank(checked_blank_value)
abstract apply_rotation(vector, theta=212)
abstract fake()
abstract get_stage(standard=False)
abstract set_stage_position(x=None, y=None, z=None, a=None, b=None)
abstract get_beam_shift()
abstract set_beam_shift(beam_pos)
abstract connect(ip, port)
abstract get_projection_mode()
abstract set_magnification(mag_value)
abstract get_magnification()
abstract set_KL(kl_value)
abstract get_KL()
abstract get_intensity(slot=0)

slot: 0,1,2, where 0 is not store the c2% value, 1 is store in beam_intensity_1, and 2 in the beam_intensity_2

abstract set_intensity(intensity=0, slot=0)
abstract load_calibration_table(cam_table)
abstract set_alpha(angle, velocity=1)
abstract microscope_thread_setup(tracking_file='tracking.txt', tracking_dict=None)
abstract calc_stage_speed(speed)
abstract beamshift_tracking(tracking_dict, result)
abstract beamshift_tracking_stem(tracking_dict, result)
abstract get_voltage()
abstract get_illumination_mode()
abstract set_illumination_mode(mode)
abstract get_instrument_mode()
abstract set_instrument_mode(mode)