Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Det display #354

Open
wants to merge 35 commits into
base: main
Choose a base branch
from
Open

Det display #354

wants to merge 35 commits into from

Conversation

yannachen
Copy link
Collaborator

@yannachen yannachen commented Jan 24, 2025

Things to do before merging:

  • add tests
  • write docs
  • update iconfig_testing.toml
  • flake8, black, and isort

@canismarko
Copy link
Contributor

Looks like there was a merge commit to bring your branch up to date with the spc-group repo (or something like that). During that merge, looks like there was a conflict that was not resolved. If git can't figure out how to merge things, it prints a message saying there are conflicts, and telling you they need to be resolved before the merge can be completed. It also puts markers into to file so you can see what the conflict is. In this case, it looks like you completed the merge without actually resolving the conflicts so the markers were left in. Since those markers are not valid XML, Qt cannot open the resulting UI files. Take a look at "Files Changed" tab and find the line_scan.ui file. You'll find a "<<<" and similar are being added by this PR. You need to resolve that conflict.

This might be helpful: https://www.geeksforgeeks.org/merge-conflicts-and-how-to-handle-them/#handling-the-merge-conflict

@canismarko
Copy link
Contributor

When I tried to run this at the beamline with the sim detector, I got the following errors when I tried to first open the sim detector window:

[2025-01-24 14:24:08,471] [ERROR   ] - Unable to create a connection to <PyDMChannel (haven://sim_det_aio.drv.gain)>
Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/typhos/plugins/core.py", line 340, in add_connection
    super().add_connection(channel)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/data_plugins/plugin.py", line 312, in add_connection
    self.connections[connection_id] = self.connection_class(channel, address, self.protocol)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/pydm_plugin.py", line 165, in connection_class
    sig = beamline.devices[address]
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 181, in __getitem__
    return self.find(key)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 344, in find
    self.findall(any_of=any_of, label=label, name=name, allow_none=allow_none)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 499, in findall
    first = next(results)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 428, in _findall_by_name
    cpt_ = getattr(cpt_, attr)
AttributeError: 'ADBaseIO' object has no attribute 'gain'
[2025-01-24 14:24:08,472] [ERROR   ] - Unable to create a connection to <PyDMChannel (haven://sim_det_aio.drv.DetectorState_RBV)>
Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/typhos/plugins/core.py", line 340, in add_connection
    super().add_connection(channel)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/data_plugins/plugin.py", line 312, in add_connection
    self.connections[connection_id] = self.connection_class(channel, address, self.protocol)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/pydm_plugin.py", line 165, in connection_class
    sig = beamline.devices[address]
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 181, in __getitem__
    return self.find(key)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 344, in find
    self.findall(any_of=any_of, label=label, name=name, allow_none=allow_none)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 499, in findall
    first = next(results)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 428, in _findall_by_name
    cpt_ = getattr(cpt_, attr)
AttributeError: 'ADBaseIO' object has no attribute 'DetectorState_RBV'
[2025-01-24 14:24:08,473] [ERROR   ] - Unable to create a connection to <PyDMChannel (haven://sim_det_aio.drv.acquire_time_auto)>
Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/typhos/plugins/core.py", line 340, in add_connection
    super().add_connection(channel)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/data_plugins/plugin.py", line 312, in add_connection
    self.connections[connection_id] = self.connection_class(channel, address, self.protocol)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/pydm_plugin.py", line 165, in connection_class
    sig = beamline.devices[address]
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 181, in __getitem__
    return self.find(key)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 344, in find
    self.findall(any_of=any_of, label=label, name=name, allow_none=allow_none)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 499, in findall
    first = next(results)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 428, in _findall_by_name
    cpt_ = getattr(cpt_, attr)
AttributeError: 'ADBaseIO' object has no attribute 'acquire_time_auto'
[2025-01-24 14:24:08,473] [ERROR   ] - Unable to create a connection to <PyDMChannel (haven://sim_det_aio.drv.gain_auto)>
Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/typhos/plugins/core.py", line 340, in add_connection
    super().add_connection(channel)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/data_plugins/plugin.py", line 312, in add_connection
    self.connections[connection_id] = self.connection_class(channel, address, self.protocol)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/pydm_plugin.py", line 165, in connection_class
    sig = beamline.devices[address]
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 181, in __getitem__
    return self.find(key)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 344, in find
    self.findall(any_of=any_of, label=label, name=name, allow_none=allow_none)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 499, in findall
    first = next(results)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/ophydregistry/registry.py", line 428, in _findall_by_name
    cpt_ = getattr(cpt_, attr)
AttributeError: 'ADBaseIO' object has no attribute 'gain_auto'
Traceback (most recent call last):
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/action.py", line 71, in show_window
    self.create_window()
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/action.py", line 88, in create_window
    window.open(str(self.display_file.resolve()), **kwargs)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/main_window.py", line 125, in open
    widget = super().open(*args, **kwargs)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/main_window.py", line 385, in open
    new_widget = load_file(filename, macros=macros, args=args, target=target)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/display.py", line 69, in load_file
    loaded_display = loader(file, args=args, macros=macros)
  File "/home/beams0/S25IDCUSER/miniforge3/envs/haven-dev/lib/python3.10/site-packages/pydm/display.py", line 291, in load_py_file
    instance = cls(**kwargs)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/area_detector_viewer.py", line 29, in __init__
    super().__init__(parent=parent, args=args, macros=macros)
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/display.py", line 28, in __init__
    self.customize_device()
  File "/home/beams0/S25IDCUSER/src/haven/src/firefly/area_detector_viewer.py", line 55, in customize_device
    img_pv = device.pva.pv_name.get(as_string=True)
AttributeError: 'SimDetector' object has no attribute 'pva'

Did you test this with a real detector, and if so what did you do to get it to work? If not, looks like there are some signals missing on the ophyd-async devices that you need. Want to send me a list and I can add them.

Would you be willing to give me commit privileges on your github repo so I can add them directly? Otherwise I will fork your repo and make a new PR with these additions.

@yannachen
Copy link
Collaborator Author

In pytest, two tests failed related to 'values'. Not sure how to update. Is it necessary to have the attribute 'values' for the class 'XspressDriverIO'? For Firefly GUI test, display window is emply. No "pva" signal?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants