Giter Site home page Giter Site logo

xi-cam.saxs's Introduction

Xi-CAM

PyPI License Github Actions Documentation Status Test Coverage DOI

Xi-cam is a graphical environment for synchrotron data analysis, management, and visualization developed by the Advanced Light Source at Lawrence Berkeley National Laboratory. This is a cross-platform open-source Python 3 project licensed under BSD.

Installation

The latest stable Xi-CAM is available on pypi

pip install xicam

For more information, see the installation documentation.

Resources

xi-cam.saxs's People

Contributors

dylanmcreynolds avatar harinarayankrishnan avatar ihumphrey avatar julreinhardt avatar qzhang234 avatar ronpandolfi avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

xi-cam.saxs's Issues

Results tree default naming needs more information

Currently, the value shown for a 1-Time correlation is 1-Time Correlation. This should at least show the scanid tacked on.

We may need to re-review what we information we are storing with the workflow and how to appropriately display this information (e.g. what are the values of the parameters for this workflow's execution, what roi was used, etc.)?

Potentially, representing this tree with extra columns for this information (scanid, date, name, roi, etc) could be useful as well (which could hook into Qt's filtering and sorting nicely) (consider adding this as a separate issue if we want this).

Should ROIs be created for all views? (ROI management)

Currently an ROI is created for the active view, but not shared among any other open views.

This may require some thought about how we manage ROIs in general. Do we want a widget that allows for managing ROIs (hiding/showing ROIs, deleting ROIs, naming ROIs, creating ROIs, etc.)? How would we internally manage ROIs? How would this design fit with the way ROIs are currently being inserted into a workflow?

Programmatic ROI definition

Currently, ROI definition in the XPCS plugin is performed with a GUI. From the CSX beamline, we have gotten feedback where there are cases where they would like to programmatically define ROIs. This would provide ease of use when creating multiple ROIs and allow for more precise definitions of the ROIs.

Saving workflow to reapply to future scans

Currently in the XPCS plugin (to be merged into the SAXS plugin), processing workflow steps are statically defined. The user has the ability to modify parameters. There is not currently functionality to save those parameters and use them again in future analyses.

The CSX beamline would like the ability to save workflows and/or parameters across analyses of run. This needs to be thought out a bit with Xi-Cam's framework. Much of this functionality might be more natural with the integration of camlink2 within Xi-Cam. Howesver, it might be feasible to take some intermediate steps like saving parameters across scans and possibly saving those settings in QSettings so that they are re-constituted when Xi-Cam is closed an reopened.

pyFAI issue at 8-ID-I

When running Xi-CAM XPCS at APS 8-ID-I, we ran into the following none-fatal stack traces. Ron wondered if this might be due to using pyFAI 0.19.0 instead of 0.18.0.


/home/beams10/8IDIUSER/src/Xi-cam.core/xicam/core/msg/__init__.py:213: UserWarning: Custom loggername is no longer supported, ignored.
  warnings.warn("Custom loggername is no longer supported, "
Thu Feb 06 11:00:02 2020 - logError - ERROR - MainThread - 
 The following error was handled safely by Xi-cam. It is displayed here for debugging.
Thu Feb 06 11:00:02 2020 - logError - ERROR - MainThread - 
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 186, in dataChanged
    self.addDevice(field)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 100, in setSilence
    self.save()
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/xicam/plugins/settingsplugin.py", line 45, in save
    QSettings().setValue(self.name(), pickle.dumps(self.toState()))
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/cloudpickle/cloudpickle_fast.py", line 62, in dumps
    cp.dump(obj)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/cloudpickle/cloudpickle_fast.py", line 538, in dump
    return Pickler.dump(self, obj)
 TypeError: cannot pickle 'property' object
Thu Feb 06 11:00:02 2020 - run - ERROR - Dummy-22 - Error in thread: Method: doReduceWorkflow
Args: (<xicam.SAXS.SAXSGUIPlugin.SAXSPlugin object at 0x7fd728d9ed90>,)
Kwargs: {}
Thu Feb 06 11:00:02 2020 - logError - ERROR - Dummy-22 - 
 The following error was handled safely by Xi-cam. It is displayed here for debugging.
Thu Feb 06 11:00:02 2020 - logError - ERROR - Dummy-22 - 
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 160, in addDevice
    self.addChild(devicechild)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 497, in addChild
    return self.insertChild(len(self.childs), child, autoIncrementName=autoIncrementName)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/pyqtgraph/parametertree/Parameter.py", line 540, in insertChild
    raise Exception("Already have child named %s" % str(name))
 Exception: Already have child named lambdadet_image
 
During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
   File "/home/beams10/8IDIUSER/src/Xi-cam.core/xicam/core/threads/__init__.py", line 151, in run
    for self._result in self._run(*args, **kwargs):
   File "/home/beams10/8IDIUSER/src/Xi-cam.core/xicam/core/threads/__init__.py", line 176, in _run
    yield self.method(*self.args, **self.kwargs)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/SAXSGUIPlugin.py", line 466, in doReduceWorkflow
    ai = self.calibrationsettings.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 98, in setSilence
    self.emitChanges()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 90, in emitChanges
    self.genAIs()
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 113, in genAIs
    ai = self.AI(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 129, in AI
    self.addDevice(device)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 166, in addDevice
    self.setSilence(False)
   File "/home/beams10/8IDIUSER/src/Xi-cam.SAXS/xicam/SAXS/calibration/__init__.py", line 100, in setSilence
    self.save()
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/xicam/plugins/settingsplugin.py", line 45, in save
    QSettings().setValue(self.name(), pickle.dumps(self.toState()))
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/cloudpickle/cloudpickle_fast.py", line 62, in dumps
    cp.dump(obj)
   File "/home/beams/8IDIUSER/.conda/envs/xicam-pilot/lib/python3.8/site-packages/cloudpickle/cloudpickle_fast.py", line 538, in dump
    return Pickler.dump(self, obj)
 TypeError: cannot pickle 'property' object

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.