-
Notifications
You must be signed in to change notification settings - Fork 141
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
Slow counter overhaul #555
Conversation
…also with proper oversampling etc.
# Conflicts: # logic/counter_logic.py
Fixed a bug with the data_rate StatusVar
…e its way into master
Added deprecation pop-up notification to the end of CounterGui activation to encourage users to switch to time series tool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The follwoing error appears when the timeseries counter is running and the python hangs (e.g. due to other hardware using all resources on the computer). I have to confess I do not understand it.
The error appeared while testing on the mesoscopic setup with high data acquisition rates. The hanging I provoked by sampling a long sequence on the pulser or restarting the magnet control (in its own process).
Traceback (most recent call last):
File "C:\Software\qudi\gui\time_series\time_series_gui.py", line 461, in update_data
self._vb.autoRange()
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\pyqtgraph\graphicsItems\ViewBox\ViewBox.py", line 592, in autoRange
bounds = self.childrenBoundingRect(items=items)
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\pyqtgraph\graphicsItems\ViewBox\ViewBox.py", line 1375, in childrenBoundingRect
range = self.childrenBounds(*args, **kwds)
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\pyqtgraph\graphicsItems\ViewBox\ViewBox.py", line 1285, in childrenBounds
px, py = [v.length() if v is not None else 0 for v in self.childGroup.pixelVectors()]
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\pyqtgraph\graphicsItems\GraphicsItem.py", line 252, in pixelVectors
dti = fn.invertQTransform(dt)
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\pyqtgraph\functions.py", line 2306, in invertQTransform
inv = numpy.linalg.inv(arr)
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\numpy\linalg\linalg.py", line 528, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
File "C:\ProgramData\Anaconda3\envs\qudi\lib\site-packages\numpy\linalg\linalg.py", line 89, in _raise_linalgerror_singular
raise LinAlgError("Singular matrix")
numpy.linalg.linalg.LinAlgError: Singular matrix
Thank you @kay-jahnke. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As no one (me included) could reproduce the error, let's just merge this PR.
I noticed there are conflicts deleting test files for testing the new interfaces, were they still in master?
Hi, Sorry for the late message ! Could I suggest some modification to the interface architecture ? I can make some suggestion/change to this code if you are interested but don't have time for this ! What are your thoughts on this ? Alrik |
# Conflicts: # documentation/changelog.md # interface/first_test_interface.py # interface/second_test_interface.py
Well, I see the benefit in writing down basic/general guidelines for interface classes. Feel free to propose something. |
Hi, Thank you for your reply. I see no immediate concerns, this PR seems otherwise very nice! I'll start working on some propositions |
Description
Added a whole new tool chain (GUI, logic, interface, hardware) for "slow counting".
In the process I also deleted some testing/template modules that somehow made their way into master... but should not have...
Motivation and Context
The current time series counter is very limited regarding data throughput and mixed signal capabilities.
For high data rates it will crash the NI card and dependent modules.
Also the oversampling and averaging is very inconsistent.
I implemented a wholesome replacement for "slow counting" by using the new modules
TimeSeriesGui
,TimeSeriesReaderLogic
andNIXSeriesInStreamer
.The logic and hardware interface are more versatile and should be suited for any use case where continuous data streaming from a buffered device with variable read size is needed.
Also the counter/time trace GUI offers settings to switch channels physically and/or virtually on and off.
The old counter modules are still present but loading the respective GUI will cause a deprecation warning to pop up in order to encourage users to switch to the new modules.
I also intend to include the pop-up notification as simple tool in core... but in a different PR.
How Has This Been Tested?
On Win8.1 x64 with NI USB-6343 hardware and also with new dummy module.
Types of changes
Checklist:
documentation/changelog.md
)