Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
193 commits
Select commit Hold shift + click to select a range
89a810d
cleanup imports
rocco8773 May 14, 2026
7118503
apply black to enforce PEP8
rocco8773 May 14, 2026
7b55fef
first really rough pass on LaPDXYZTransform
rocco8773 May 14, 2026
0b0d389
first really rough pass on LaPDXYZTransform._matrix_to_drive
rocco8773 May 14, 2026
42ebeda
refactor variable names and remove argument table_pivot_to_zlead_vert…
rocco8773 May 14, 2026
fd1feba
update comments
rocco8773 May 14, 2026
e847534
remove noqa associated with PEP8 N806
rocco8773 May 14, 2026
5ffa4bb
clean up comments
rocco8773 May 14, 2026
32cd942
be consistent... use "ball-valve" instead of "ball valve"
rocco8773 May 14, 2026
8688ac1
update annotations for drive_polarity and mspace_polarity
rocco8773 May 14, 2026
525d1be
fix __transformer__ so it does not contain LaPD6KTransform twice
rocco8773 May 14, 2026
10f6587
add default values to LaPDXYZTransform arguments
rocco8773 May 14, 2026
7335192
audit all LaPDXYZTransform docstrings
rocco8773 May 14, 2026
56cb344
fix typos
rocco8773 May 15, 2026
27869ab
add ipykernel to the doc dependencies
rocco8773 May 15, 2026
b58faf7
nbsphinx_prolog explicitly convert to string
rocco8773 May 15, 2026
872b52a
nada commit
rocco8773 May 15, 2026
5099930
fix beta to b_that relation
rocco8773 May 17, 2026
723fa07
rough out example notebook
rocco8773 May 17, 2026
ba9628f
rename lapd_xy_transform.ipynb -> LaPDXYTransform.ipynb
rocco8773 May 18, 2026
5829bfa
remove prototyping sections from LaPDXYTransform.ipynb
rocco8773 May 18, 2026
57c2f89
rename LaPDXYZTransform_.ipynb -> LaPDXYZTransform.ipynb
rocco8773 May 18, 2026
2e2744f
clean up example notebook
rocco8773 May 18, 2026
7335e13
rough our layout for LaPDXYZTransformCalculator
rocco8773 May 20, 2026
e07a8a6
Merge branch 'main' into xyz_transform
rocco8773 May 20, 2026
0c4282d
appease isort and black
rocco8773 May 20, 2026
3c95a0d
fix spelling errors and clear all outputs
rocco8773 May 20, 2026
dfa3fd8
add a codespell configuration to setup.cfg
rocco8773 May 20, 2026
8f502dd
fix spelling errors
rocco8773 May 20, 2026
798e404
clear all outputs
rocco8773 May 20, 2026
3be8fc0
Merge branch 'xyz_transform' into xyz_calculator
rocco8773 May 20, 2026
435a0b1
add initial diagram for the xyz calculator
rocco8773 May 21, 2026
47e8359
rename all functionality of measure_2a -> measure_2, and remove measu…
rocco8773 May 21, 2026
3d4de9a
reposition the "Reset to Defaults" button
rocco8773 May 21, 2026
3a19f17
reposition the "pivot_to_center" text box
rocco8773 May 21, 2026
7f85cd8
rename functionality for pivot_to_drive -> pivot_to_xzcross
rocco8773 May 21, 2026
6b2bd9f
reposition pivot_to_center and pivot_to_xzcross text boxes
rocco8773 May 21, 2026
0302ff3
reposition pivot_to_feedthru text box
rocco8773 May 21, 2026
45330e0
remove "measure_2" radio button
rocco8773 May 21, 2026
fb4e740
move "measure_1" text box
rocco8773 May 21, 2026
5ccec99
move "measure_2" text box
rocco8773 May 21, 2026
3ec71c5
remove functionality around fiducial_width
rocco8773 May 21, 2026
2b0d672
move text boxes
rocco8773 May 21, 2026
0875feb
reorder initialization of constants, measures, and calc parameters...…
rocco8773 May 21, 2026
e8631f8
reorder definitions of label widgets
rocco8773 May 21, 2026
b69c4b8
update calc_pivot_to_xzcross()
rocco8773 May 21, 2026
4748dc3
add label probe_axis_offset_label
rocco8773 May 21, 2026
2f56a60
add label table_pivot_to_zlead_screw_label
rocco8773 May 22, 2026
696e26e
simplify _validate_measure_1 and _validate_measure_2
rocco8773 May 22, 2026
bac06e1
leave clarifying comment
rocco8773 May 22, 2026
3a3ac95
create module bapsf_motion.gui.calculators
rocco8773 May 22, 2026
e0091a5
create calculator base classes BaseCalculatorWindow and BaseCalculato…
rocco8773 May 22, 2026
1773ffe
have LaPDXYZTransformCalculator inherit from BaseCalculatorWindow and…
rocco8773 May 22, 2026
ed1e396
remove unused imports
rocco8773 May 22, 2026
6e5699f
move lapd_xyz_transform_calculator.py into the bapsf_motion.gui.calcu…
rocco8773 May 22, 2026
0deb09f
rename lapd_xyz_transform_calculator.py -> lapd_xyz_transform.py
rocco8773 May 22, 2026
be5a1fa
move closing Signal into BaseCalculatorWindow
rocco8773 May 22, 2026
f3efb4a
move image defining architecture into BaseCalculatorWindow
rocco8773 May 22, 2026
e8d317b
add typing annotation to closeEvent
rocco8773 May 22, 2026
a079847
move definition of main window into BaseCalculatorWindow
rocco8773 May 22, 2026
f35229f
create abstract method _connect_signals
rocco8773 May 22, 2026
ac8508c
remove unnecessary setting of stylesheet
rocco8773 May 22, 2026
cb3b5e8
create metaclass QABCMainWindow
rocco8773 May 22, 2026
1604cbd
create property _stylesheet_string and move stylesheet setting into B…
rocco8773 May 22, 2026
78a9585
add ABD to BaseCalculatorWindow inheritance
rocco8773 May 22, 2026
ffe6a46
move background image setup into BaseCalculatorWindow
rocco8773 May 22, 2026
8cee16b
reorder methode definitions
rocco8773 May 22, 2026
e49a923
create abstract methode _init_widgets
rocco8773 May 22, 2026
948ad69
move _define_layout() to BaseCalculatorWindow
rocco8773 May 22, 2026
8c1174f
move the reset_btn into BaseCalculatorWindow
rocco8773 May 23, 2026
b10bb9a
define an export parameters button
rocco8773 May 23, 2026
b99b5a1
make abstract method _reset_parameters
rocco8773 May 23, 2026
639203a
decorate _reset_parameters() with @Slot()
rocco8773 May 23, 2026
a60de6e
create abstract method _collect_export_parameters
rocco8773 May 23, 2026
936ce4f
connect the export button
rocco8773 May 23, 2026
7c6d4c9
move lapd_xy_transform_calculator.py into bapsf_motion.gui.calculators
rocco8773 May 23, 2026
a7b424a
create property BaseCalculatorApp.calculator
rocco8773 May 23, 2026
6475801
rename lapd_xy_transform_calculator.py -> lapd_xy_transform.py
rocco8773 May 23, 2026
ebaafc0
appease grumpy isort
rocco8773 May 23, 2026
7c58d2a
appease grumpy black
rocco8773 May 23, 2026
f9bf84a
remove unused imports
rocco8773 May 23, 2026
34783aa
have LaPDXYTransformCalculatorApp inherit from BaseCalculatorApp
rocco8773 May 23, 2026
ed94d67
add word Transform to the XYZ window title
rocco8773 May 24, 2026
1753453
Integrate BaseCalculoatorWindow into LaPDXYTransformCalculator
rocco8773 May 24, 2026
0210c68
add class attributes _CALCULATOR_FAMILY and _CALCULATOR_TYPE to BaseC…
rocco8773 May 26, 2026
4a3a093
start incorporating BaseCalculatorWindow.exportParameters into Config…
rocco8773 May 26, 2026
bfec80b
add to TransformConfigOverlay the signal importParameters
rocco8773 May 26, 2026
e973915
update LaPDXYZTransformCalculator to utilize class attributes _CALCUL…
rocco8773 May 26, 2026
df5f6a0
create a generic warning dialog box
rocco8773 May 26, 2026
fd251e4
flush out ConfigureGUI._import_calculator_parameters()
rocco8773 May 26, 2026
1eed4f4
Merge branch 'main' into xyz_transform
rocco8773 May 28, 2026
4d5dbb3
Merge branch 'xyz_transform' into xyz_calculator
rocco8773 May 28, 2026
2fc8d4e
Merge branch 'main' into xyz_transform
rocco8773 May 28, 2026
20b5a42
Merge branch 'xyz_transform' into xyz_calculator
rocco8773 May 28, 2026
8c72c45
replace uses of Union[] with pipe |
rocco8773 May 28, 2026
acb0e9a
Merge branch 'main' into xyz_calculator
rocco8773 Jun 6, 2026
5e1e9b6
Merge branch 'main' into xyz_transform
rocco8773 Jun 6, 2026
0d51534
Merge branch 'main' into xyz_transform
rocco8773 Jun 8, 2026
551ad3e
Merge branch 'xyz_transform' into xyz_calculator
rocco8773 Jun 8, 2026
b9ab658
DriveConfigOverlay: create init methods for add_axis_btn, validate_bt…
rocco8773 Jun 11, 2026
f960f8f
DriveConfigOverlay: refactor dr_name_widget -> drive_name_input
rocco8773 Jun 11, 2026
4c551a9
DriveConfigOverlay: create _init_drive_name_input()
rocco8773 Jun 11, 2026
e92c983
add annotations to AxisConfigWidget
rocco8773 Jun 11, 2026
ddf7384
DriveConfigOverlay: create a remove axis button and match style to ad…
rocco8773 Jun 11, 2026
4b9acfb
DriveConfigOverlay: move axis layout construction to dedicate method …
rocco8773 Jun 11, 2026
03aa913
DriveConfigOverlay: create and connect functionality for adding a new…
rocco8773 Jun 11, 2026
71e2901
DriveConfigOverlay: add annotation to _change_validation_state()
rocco8773 Jun 11, 2026
8d0d6dc
DriveConfigOverlay: make the parent of AxisConfigWidget() the frame i…
rocco8773 Jun 11, 2026
52ea4e7
DriveConfigOverlay: create and connect functionality for removing an …
rocco8773 Jun 11, 2026
8645eec
DriveConfigOverlay: cleanup comment
rocco8773 Jun 11, 2026
eba01e2
Merge branch 'enable_xyz_for_drive_overlay' into integrate_xyz
rocco8773 Jun 11, 2026
c802596
ConfigureGUI: allow drives with dimensionality of 2 or 3
rocco8773 Jun 11, 2026
61830da
move pygame functionality to dedicated module bapsf_motion.gui.config…
rocco8773 Jun 11, 2026
b534c22
add docstring
rocco8773 Jun 11, 2026
3fa1000
move MSpaceMessageBox to bapsf_motion.gui.configure.message_boxes
rocco8773 Jun 11, 2026
193b851
move LostConnectionMessageBox to bapsf_motion.gui.configure.message_b…
rocco8773 Jun 11, 2026
3b48ce5
add docstring
rocco8773 Jun 11, 2026
fe269d5
move AxisControlWidget to bapsf_motion.gui.configure.controllers
rocco8773 Jun 11, 2026
60cd7d3
move DriveBaseController to bapsf_motion.gui.configure.controllers
rocco8773 Jun 11, 2026
3659ca3
move DriveDesktopController to bapsf_motion.gui.configure.controllers
rocco8773 Jun 11, 2026
2ac46b5
move DriveGameController to bapsf_motion.gui.configure.controllers
rocco8773 Jun 11, 2026
14a9ad6
replace uses of Union[] with pipe |
rocco8773 Jun 11, 2026
a8ea5a7
motion_group_widget.py : cleanup imports
rocco8773 Jun 11, 2026
5a6e253
motion_group_widget.py : appease black and isort
rocco8773 Jun 11, 2026
16b1cba
motion_group_widget.py : handle type checking imports
rocco8773 Jun 11, 2026
25dcd8f
controllers.py : cleanup imports
rocco8773 Jun 12, 2026
f00080d
replace use of Union[] with pipe |
rocco8773 Jun 12, 2026
5c87b52
message_boxes.py : appease isort and black
rocco8773 Jun 12, 2026
865eaf4
pygame_.py : appease isort and black
rocco8773 Jun 12, 2026
52708ac
AxisControlWidget: add annotations and clarifying comments
rocco8773 Jun 12, 2026
e341d46
AxisControlWidget: move some widget instantiation into dedicated methods
rocco8773 Jun 12, 2026
e860087
AxisControlWidget: move remaining widget instantiation into dedicated…
rocco8773 Jun 12, 2026
7eb01b0
AxisControlWidget: message box annotations
rocco8773 Jun 12, 2026
a4ec4e7
AxisControlWidget: collect widget layout definition code-blocks
rocco8773 Jun 12, 2026
42d559b
add some annotations
rocco8773 Jun 12, 2026
6be887e
use direct isinstance() of an actor class instead of checking for None
rocco8773 Jun 12, 2026
027460d
cleanup vestige code
rocco8773 Jun 12, 2026
df0a22f
better handle joystick selection
rocco8773 Jun 12, 2026
e440811
Motor.config handle if speed is an AckFlags from the motor not being …
rocco8773 Jun 12, 2026
e4156c3
add QCloseEvent annotation
rocco8773 Jun 12, 2026
66efa71
Merge branch 'refactor_gui_configure' into xyz_motion_builder
rocco8773 Jun 12, 2026
bcd7528
replace uses of Union[] with pipe |
rocco8773 Jun 12, 2026
682d4b0
replace uses of Union[] with pipe |
rocco8773 Jun 12, 2026
6ff83b0
add noqa
rocco8773 Jun 12, 2026
0eccd33
move motion builder validation into dedicated method _init_motion_bui…
rocco8773 Jun 12, 2026
795ba7f
reorganized / collect attribute instantiation
rocco8773 Jun 12, 2026
948797b
move widget instantiation into dedicated methods
rocco8773 Jun 12, 2026
0fc75c6
put self widget configuration into dedicated method _init_self()
rocco8773 Jun 12, 2026
372f234
put import behind typing.TYPE_CHECKING
rocco8773 Jun 12, 2026
a63b266
put poseidon test TOMLs into examples
rocco8773 Jun 12, 2026
960071e
Merge branch 'main' into xyz_motion_builder
rocco8773 Jun 12, 2026
5736bbb
cleanup MGWidget.__init__, and put all of the widget instantiation in…
rocco8773 Jun 12, 2026
4bdf775
MGWidget: rename mpl_canvas -> mspace_display
rocco8773 Jun 12, 2026
d0e91eb
ensure targetPositionChanged is always emitted with a list and never …
rocco8773 Jun 13, 2026
861eb2b
add CLI flag --debug to bapsf_motion.gui.configure
rocco8773 Jun 13, 2026
9b761a9
Merge branch 'main' into xyz_motion_builder
rocco8773 Jun 14, 2026
15e8fb9
rename mpl_canvas -> mspace_dispaly
rocco8773 Jun 14, 2026
93ac71b
create abstract base class _ABCMotionSpaceDisplay
rocco8773 Jun 14, 2026
60e29a4
create _MSDBase class
rocco8773 Jun 14, 2026
b79513e
Move 2D plotting functionality to dedicated class MotionSpaceDisplay2D
rocco8773 Jun 14, 2026
d315d25
Update MotionSpaceDispaly to be a factory class for _MSDBase subclasses
rocco8773 Jun 14, 2026
cc8c7a2
Merge branch 'main' into xyz_motion_builder
rocco8773 Jun 15, 2026
9da028f
add class attribute _default_logger_name to _MSDBase and give _MSDBas…
rocco8773 Jun 15, 2026
f2f2323
add to _MSDBase abstract methods animate_motion_list(), animate_motio…
rocco8773 Jun 15, 2026
348c5e1
decorate MotionSpaceDisplay2D.animate_motion_list as a @Slot
rocco8773 Jun 15, 2026
dc9b24d
MotionSpaceDisplay add logging.info
rocco8773 Jun 15, 2026
56bad69
MotionSpaceDisplay.link_motion_builder(): only to wrong type check wi…
rocco8773 Jun 15, 2026
655e72f
MotionSpaceDisplay: add and connect signals animateMotionListStart, a…
rocco8773 Jun 15, 2026
780b4d8
remove MotionSpaceDisplay.update_target_position_plot() and replace w…
rocco8773 Jun 15, 2026
22763fe
remove MotionSpaceDisplay.update_position_plot() and replace with emi…
rocco8773 Jun 15, 2026
7a697a6
add fully named logger to MotionBuilderConfigOverlay
rocco8773 Jun 15, 2026
9213c8c
replace use of MotionSpaceDispaly.animate_motion_list_clear() with em…
rocco8773 Jun 15, 2026
0043086
replace use of MotionSpaceDispaly.animate_motion_list_pause() with em…
rocco8773 Jun 15, 2026
00bbf8f
replace use of MotionSpaceDispaly.animate_motion_list() with emitting…
rocco8773 Jun 15, 2026
484ab13
replace use of MotionSpaceDispaly.update_canvas() with emitting signa…
rocco8773 Jun 15, 2026
711bcda
replace use of MotionSpaceDispaly.update_motion_list() with emitting …
rocco8773 Jun 15, 2026
19c4187
bundle all animation signals into one animate class _AnimationSignals
rocco8773 Jun 16, 2026
5378e82
MotionSpaceDisplay2D emit mbChanged() at the ned of __init__
rocco8773 Jun 16, 2026
64cfdb4
bundle all redraw signals into one redraw class _RedrawDisplaySignals
rocco8773 Jun 16, 2026
15f4178
create _MSDBase._connect_animate_motion_list_signals() and have outsi…
rocco8773 Jun 16, 2026
230cf9b
refactor animate_motion_list() -> animate_motion_list_start()
rocco8773 Jun 16, 2026
a813246
create abstract method _MSDBase.animate_motion_list_stop() ... and re…
rocco8773 Jun 16, 2026
b9175be
create _MSDBase._connect_redraw_signals() and have outside classes tr…
rocco8773 Jun 16, 2026
7642486
add missing slot decorations
rocco8773 Jun 16, 2026
5922f4b
increase plot interval time to avoid observed random segmentation faults
rocco8773 Jun 16, 2026
fcd47da
refactor update_canvas() -> redraw_display()
rocco8773 Jun 16, 2026
efa6a11
refactor update_motion_list() -> redraw_motion_list()
rocco8773 Jun 16, 2026
c4ec043
refactor update_motion_list() -> redraw_motion_list_plot()
rocco8773 Jun 16, 2026
db6c31f
refactor update_position_plot() -> redraw_position_plot()
rocco8773 Jun 16, 2026
a7d52c9
refactor update_target_position_plot() -> redraw_target_position_plot()
rocco8773 Jun 16, 2026
bf12725
refactor update_legend() -> redraw_legend()
rocco8773 Jun 16, 2026
0f9c180
MotionSpaceDisplay: fix setting (and consistency) of display visibili…
rocco8773 Jun 16, 2026
e401825
Merge branch 'main' into xyz_motion_builder
rocco8773 Jun 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions bapsf_motion/examples/poseidon_mg_test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[mg]
name = "Poseidon Test"

[mg.drive]
name = "Poseidon"
axes.0.name = "X"
axes.0.ip = "192.168.17.135"
axes.0.units = "cm"
axes.0.units_per_rev = 0.254
axes.0.motor_settings.current = 0.8
axes.0.motor_settings.limit_mode = 2
axes.0.motor_settings.speed = 4.0
axes.1.name = "Y"
axes.1.ip = "192.168.17.137"
axes.1.units = "cm"
axes.1.units_per_rev = 0.254
axes.1.motor_settings.current = 1.0
axes.1.motor_settings.limit_mode = 2
axes.1.motor_settings.speed = 4.0
axes.2.name = "Z"
axes.2.ip = "192.168.17.134"
axes.2.units = "cm"
axes.2.units_per_rev = 0.254
axes.2.motor_settings.current = 0.8
axes.2.motor_settings.limit_mode = 2
axes.2.motor_settings.speed = 4.0

[mg.motion_builder]
space.0.label = "X"
space.0.range = [-55, 55]
space.0.num = 111
space.1.label = "Y"
space.1.range = [-55, 55]
space.1.num = 111
space.2.label = "Z"
space.2.range = [-30, 30]
space.2.num = 61
layers.0.type = "grid_CNStep"
layers.0.center = [0, 0, 0]
layers.0.npoints = [1, 1, 1]
layers.0.step_size = [1, 1, 1]

[mg.transform]
type = "lapd_xyz"
pivot_to_center = 58.771
pivot_to_xzcross = 142.4804 # 0.81" + 54.9cm + 0.75" + 79.3cm + 1.7"
probe_axis_offset = 30.47 # 0.5" + 15.1cm + 5.4cm + 8.7cm
table_pivot_to_zlead_screw = 12.488 # 0.5" + 2.5cm + 4.4cm + 1.7"
drive_polarity = [1, -1, 1]
mspace_polarity = [-1, 1, -1]
54 changes: 54 additions & 0 deletions bapsf_motion/examples/poseidon_test.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
[run]
name = "poseidon-test"
date = "2026-06-27 21:48 UTC"

[run.motion_group.0]
name = "Poseidon Test"

[run.motion_group.0.drive]
name = "Poseidon"
axes.0.name = "X"
axes.0.ip = "192.168.17.135"
axes.0.units = "cm"
axes.0.units_per_rev = 0.254
axes.0.motor_settings.current = 0.8
axes.0.motor_settings.limit_mode = 2
axes.0.motor_settings.speed = 4.0
axes.1.name = "Y"
axes.1.ip = "192.168.17.137"
axes.1.units = "cm"
axes.1.units_per_rev = 0.254
axes.1.motor_settings.current = 1.0
axes.1.motor_settings.limit_mode = 2
axes.1.motor_settings.speed = 4.0
axes.2.name = "Z"
axes.2.ip = "192.168.17.134"
axes.2.units = "cm"
axes.2.units_per_rev = 0.254
axes.2.motor_settings.current = 0.8
axes.2.motor_settings.limit_mode = 2
axes.2.motor_settings.speed = 4.0

[run.motion_group.0.motion_builder]
space.0.label = "X"
space.0.range = [-55, 55]
space.0.num = 111
space.1.label = "Y"
space.1.range = [-55, 55]
space.1.num = 111
space.2.label = "Z"
space.2.range = [-30, 30]
space.2.num = 61
layers.0.type = "grid_CNStep"
layers.0.center = [0, 0, 0]
layers.0.npoints = [1, 1, 1]
layers.0.step_size = [1, 1, 1]

[run.motion_group.0.transform]
type = "lapd_xyz"
pivot_to_center = 58.771
pivot_to_xzcross = 142.4804 # 0.81" + 54.9cm + 0.75" + 79.3cm + 1.7"
probe_axis_offset = 30.47 # 0.5" + 15.1cm + 5.4cm + 8.7cm
table_pivot_to_zlead_screw = 12.488 # 0.5" + 2.5cm + 4.4cm + 1.7"
drive_polarity = [1, -1, 1]
mspace_polarity = [-1, 1, -1]
6 changes: 5 additions & 1 deletion bapsf_motion/gui/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
__all__ = [
"ConfigureApp",
"LaPDXYTransformCalculatorApp",
"LaPDXYZTransformCalculatorApp",
"get_qapplication",
"get_color_scheme",
"cast_color_to_rgba_string",
]

try:
from bapsf_motion.gui.calculators import LaPDXYTransformCalculatorApp
from bapsf_motion.gui.calculators import (
LaPDXYTransformCalculatorApp,
LaPDXYZTransformCalculatorApp,
)
from bapsf_motion.gui.configure.configure_ import ConfigureApp
from bapsf_motion.gui.helpers import (
cast_color_to_rgba_string,
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions bapsf_motion/gui/calculators/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
__all__ = [
"LaPDXYTransformCalculator",
"LaPDXYTransformCalculatorApp",
"LaPDXYZTransformCalculator",
"LaPDXYZTransformCalculatorApp",
]

from bapsf_motion.gui.calculators.lapd_xy_transform import (
LaPDXYTransformCalculator,
LaPDXYTransformCalculatorApp,
)
from bapsf_motion.gui.calculators.lapd_xyz_transform import (
LaPDXYZTransformCalculator,
LaPDXYZTransformCalculatorApp,
)
Loading
Loading