fxihub / hummingbird Goto Github PK
View Code? Open in Web Editor NEWMonitoring and Analysing flash X-ray imaging experiments
Home Page: http://fxihub.github.io/hummingbird
License: BSD 2-Clause "Simplified" License
Monitoring and Analysing flash X-ray imaging experiments
Home Page: http://fxihub.github.io/hummingbird
License: BSD 2-Clause "Simplified" License
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
It should be possible to reload the backend configuration file on the fly, without the need to restart.
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
Needs to be implemented.
It should be possible to reload the backend configuration file on the fly, without the need to restart.
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
It should be possible to reload the backend configuration file on the fly, without the need to restart.
Image Window became a bit of a mess. Clean it up so we can continue to develop it.
right now we are multiplying with the mask in the mask in the backend. It might be better to do that in the frontend instead. This way it is possible to have different display options in the frontend (e.g. color of masked area)
When displaying histograms one has to always define the y range.
Filipe is annoying
A ringbuffer of flexible size and the possibility to extract min/max/mean/median/std trends based on the buffer. Have a look into the swift AbstractBuffer class in buffers.py
It should be possible to reload the backend configuration file on the fly, without the need to restart.
Filipe is annoying
Allow users to control the rate at which different plots are published from the frontend. One possibility is for the frontend to "request" plots it wants to show.
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
nstead of requiring users to specify the bins, simply count data that has exactly the same x.
The mouse position should show up on the corner, at least on 2D plots
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
It should be possible to reload the backend configuration file on the fly, without the need to restart.
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
I could not spot a proper place in the code to trigger sorting of the data sources in the tabels, also how to deal with new sources that appear and disappear. When to resort?
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
Filipe is annoying
It should be possible to reload the backend configuration file on the fly, without the need to restart.
Filipe is annoying
When closing the interface after l have listened and received signals via ZMQ (even if I stopped listening before closing), I got a segfault.
Closing
[psnxserv01:05428] *** Process received signal ***
[psnxserv01:05428] Signal: Segmentation fault (11)
[psnxserv01:05428] Signal code: Address not mapped (1)
[psnxserv01:05428] Failing at address: 0x40
[psnxserv01:05428] [ 0] /lib64/libpthread.so.0[0x32b960f710]
[psnxserv01:05428] [ 1] /reg/g/psdm/sw/external/qt/4.8.5/x86_64-rhel6-gcc44-opt/lib/libQtCore.so.4(_ZNK7QObject6threadEv+0x4)[0x7fcff6b846e4]
[psnxserv01:05428] [ 2] /reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/PyQt4/QtGui.so(+0x41e13e)[0x7fcff7fe213e]
[psnxserv01:05428] [ 3] /reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/sip.so(+0x76be)[0x7fcff86446be]
[psnxserv01:05428] [ 4] /reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/sip.so(+0x7709)[0x7fcff8644709]
[psnxserv01:05428] [ 5] python[0x464c51]
[psnxserv01:05428] [ 6] python[0x42068b]
[psnxserv01:05428] [ 7] python(PyDict_Clear+0x142)[0x448b42]
[psnxserv01:05428] [ 8] python[0x448b59]
[psnxserv01:05428] [ 9] python[0x4d03c8]
[psnxserv01:05428] [10] python(PyGC_Collect+0x24)[0x4d0994]
[psnxserv01:05428] [11] python(Py_Finalize+0xf6)[0x4bcd76]
[psnxserv01:05428] [12] python[0x4bc83c]
[psnxserv01:05428] [13] python(PyErr_PrintEx+0x1a5)[0x4bca85]
[psnxserv01:05428] [14] python(PyRun_SimpleFileExFlags+0x12a)[0x4bd6aa]
[psnxserv01:05428] [15] python(Py_Main+0xa95)[0x414e65]
[psnxserv01:05428] [16] /lib64/libc.so.6(__libc_start_main+0xfd)[0x32b8e1ed5d]
[psnxserv01:05428] [17] python[0x413ff9]
[psnxserv01:05428] *** End of error message ***
Segmentation fault
this will be useful when displaying hits, it should be a simple way to revisit previous hits.
Filipe is annoying
I attempted to fix this by introducing a new ringbuffer for strings (in this case the messages), but I could not properly sync this with the main ringbuffer. I guess, having both images and messages in the same buffer makes sense. However, one problem here is, that the browsing feature of the image plot is an inherent feature of pyqtgraph. I would not how to integrate updating the messages into this, but maybe there is an easy solution for this?
Needs to be implemented.
Extend the plotting interface to feature visualisation of 2d images.
Figure a good way to dump a customized list of parameters (e.g. fiducials, epics values, time, hit scores, other metrics, ...) to file such that we can some kind of semi-online analysis.
Filipe is annoying
needs to be implemented
What is the intended use case for sending data to the GUI?
Looking at the current framework we have:
Data flow:
#!python
Data
|
LCLSTranslator
\
EventTranslator
/
LCLSTranslator
|
ipc.set_current_event --> broadcast.set_current_event
|
conf.onEvent
\
analysis.function
/
conf.onEvent
...
Should I be calling ZMQ from the "onEvent" function through the broadcast module?
#!python
Data
|
LCLSTranslator
\
EventTranslator
/
LCLSTranslator
|
ipc.set_current_event --> broadcast.set_current_event
|
conf.onEvent
\
analysis.function
/
conf.onEvent --> ipc.set_data --> broadcast.set_data --> GUI
...
A simple algorithm that integrated the signal on the detector in specified ROIs (rectangle or provided mask). If possible, implement an interactive feature in the interface in order to define the ROI (e.g. using a polygon) on top of images from the buffer.
Changes in the documentation are not automatically pushed to spidocs, when pushing to the hummingbird repository.
$ git clone [email protected]:spinitiative/hummingbird.git
doesn't work for me, I have the bitbuck username set as my git global user.name but no dice...
**amorgan@amorgan-desktop:~/Physics/git_repos$ git clone [email protected]:spinitiative/hummingbird.git
Cloning into 'hummingbird'...
Warning: Permanently added the RSA host key for IP address '131.103.20.167' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
**
I used:
git clone https://[email protected]/spinitiative/hummingbird.git
successfully.
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
Filipe is annoying
When starting the interface at SLAC, I get this error:
Traceback (most recent call last):
File "./hummingbird.py", line 32, in
interface.start_interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/init.py", line 14, in start_interface
mw = Interface()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/interface.py", line 33, in init
5554,'login'))
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 14, in init
self.connect()
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/data_source.py", line 30, in connect
self._ctrl_socket.connect(addr, self._ssh_tunnel)
File "/reg/neh/home2/benedikt/software/hummingbird/src/interface/zmqsocket.py", line 42, in connect
ssh.tunnel_connection(self._socket, addr, tunnel)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 133, in tunnel_connection
new_url, tunnel = open_tunnel(addr, server, keyfile=keyfile, password=password, paramiko=paramiko, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 161, in open_tunnel
tunnel = tunnelf(lport, rport, server, remoteip=ip, keyfile=keyfile, password=password, timeout=timeout)
File "/reg/g/psdm/sw/releases/ana-current/arch/x86_64-rhel6-gcc44-opt/python/zmq/ssh/tunnel.py", line 201, in openssh_tunnel
raise ImportError("pexpect unavailable, use paramiko_tunnel")
ImportError: pexpect unavailable, use paramiko_tunnel
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
A. Histograms of ADU counts for certain pixels vs EPICS parameter. The cxiopr could use this for fast feedback for optimal motor positioning.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.