python-microscope / microscope

Python library for control of microscope devices, supporting hardware triggers and distribution of devices over the network for performance and flexibility.
https://www.python-microscope.org
GNU General Public License v3.0
73 stars 42 forks source link

Stage. Mapping arbitrary units to phisical units #288

Open juliomateoslangerak opened 1 year ago

juliomateoslangerak commented 1 year ago

I have a question that rose while testing the ASI stage but I find applies to others.

The move_by method takes an value and it Move axis by given amount. It is not specified the amount in physical units. In the case of the ASI this is translated into 1/10 microns, and that value must be different for any stage.

I cannot find anywhere a mapping of these arbitrary units and the physical units. Where is this to be defined?

iandobbie commented 1 year ago

Microscope stages are just defined in terms of "units" whatever the stage wants to use. Any mapping to real units is defined in cockpit, see https://microscope-cockpit.org/depot-config#stages

juliomateoslangerak commented 1 year ago

I see. Thanks

Does it make sense to implement some function to get this information from the stage? Best effort

iandobbie commented 1 year ago

I guess, although we would then have to implement some well defined mechanism to signal that there is no physical unit and the user needs to provide one.

iandobbie commented 1 year ago

Thinking about this I would say that more and more info will be encoded on the stage so we probably should read units from the stage if possible.

Maybe have cockpit do,

try: get stage units from microscope except: try: get stage units from depot config except: fail, no stage units.

The one drawback of this is how do you overwrite the stage units if they are mad. Maybe the opposite is better and try read from config, then the stage if both fail then error.