jpgill86 / neurotic Goto Github PK
View Code? Open in Web Editor NEWCurate, visualize, annotate, and share your behavioral ephys data using Python
Home Page: https://neurotic.readthedocs.io
License: MIT License
Curate, visualize, annotate, and share your behavioral ephys data using Python
Home Page: https://neurotic.readthedocs.io
License: MIT License
I guess this is an installation problem with pyqt5 or something like this.
I will have a look later.
I oen an issue and when fixed I will writte some notes here.
Ready
debug False
Traceback (most recent call last):
File "/home/samuel/Documents/projet/neurotic/neurotic/gui/standalone.py", line 286, in launch
win = ephyviewer_config.create_ephyviewer_window(theme=self.theme, support_increased_line_width=self.support_increased_line_width)
File "/home/samuel/Documents/projet/neurotic/neurotic/gui/config.py", line 329, in create_ephyviewer_window
raise ValueError('This file type cannot be read with fast loading (lazy=True): {}'.format(abs_path(self.metadata, 'data_file')))
ValueError: This file type cannot be read with fast loading (lazy=True): /home/samuel/Documents/projet/neurotic/neurotic/example/example-data/data.axgx
[samuel-HP-Z800-Workstation:13609] *** Process received signal ***
[samuel-HP-Z800-Workstation:13609] Signal: Abandon (6)
Presently, incomplete files are left in the local data directory and cannot be distinguished later from a complete download. The user is forced to determine whether the file is complete or not, and manually delete it before retrying.
Is this a problem for neurotic? NeuralEnsemble/python-neo#710
This would allow the user to, for example, download a data file but skip a large video file. #8 should be implemented first so that this feature could be useful.
It may also be useful to allow existing files to be overwritten, especially if neither #58 nor #59 have been implemented yet. Even if they are, it could be useful to overwrite old versions of files with new ones. EDIT: #106 is a step in this direction.
Raster plots are provided, but not scatter plots when lazy=True
.
For example, it would be convenient to be able to load data collected simultaneously from two separate data acquisition systems and stored in two separate files. Since these may have independent clocks and sampling rates, it would probably be necessary to use one TraceViewer per data file. Also, because ephyviewer supports just one universal timeline, neurotic should provide the option to shift the starting time of data files (like it does for video files), to allow the user to properly synchronize the data.
For example, CausalAlphaKernel
and DownsampleNeoSignal
The proximal cause is that this prevents the window created by create_ephyviewer_window
from actually being destroyed, which prevents the files from being released.
However, even if that is fixed, the issue described in NeuralEnsemble/python-neo#684 will likely still be a problem. The workaround of manual garbage collection should be able to remove lingering proxy objects after the window has been properly destroyed.
In cases where the stored rec_datetime
for data_file
is known to be incorrect, it may be useful to allow the user to override it in the metadata to make better use of the "Display date and time" feature.
This error occurs when, for example, the remote hostname is misspelled.
Raises urllib.error.URLError: <urlopen error [Errno 11001] getaddrinfo failed>
.
Using, e.g. PyOxidizer, PyInstaller, or py2exe/py2app
Video sync timing adjustments should be applied automatically.
Add test for fix in #97
An alternative to #58, but much harder to implement.
A solution of intermediate technical difficulty might be allowing downloads interrupted by network problems to immediately retry and pick up where they left off. The hardest but most useful version of this feature would allow resuming an incomplete download at any later date. Both of these might require file content validation.
This may include:
This can happen when the server is unresponsive, or when it is behind a firewall.
Perhaps called neurotic_config
. This will create a reserved space for future features. Could move remote_data_root
under this. Could add a format version number for backwards incompatible changes.
Especially when fast loading is off, opening a dataset can take up to several seconds. During this time, the user may be unsure whether they clicked "Launch" or not, or whether they need to click it again. The GUI should provide some indication that the data is loading to reassure the user.
The read-only epochs system (annotations_file
) and the editable epochs system (epoch_encoder_file
) should be combined. This will require the ability to attach notes to individual epochs using the epoch encoder. The epoch encoder should also not require the possible labels to be specified at start-up (see #78), and the user should be able to make up new ones as they use it.
Currently, windows can only be given in microvolts, which doesn't work at all for non-voltage signals.
When a data file is missing from a remote data store, the app crashes. The error is a little different for HTTP remotes (error 404: not found) and FTP remotes (error 550: can't change directory, no such file or directory).
After elephant releases a version that is compatible with Neo>=0.8.0, the dirty workaround added in #116 can be removed.
Hey @samuelgarcia! I wanted to let you know that I just released the code I use to interact with ephyviewer as a Python package! I think you might like it, and I would love to get your feedback.
The objective is to bring ephyviewer to the non-programmers, like my labmates, haha. Take a look at the README for details:
https://github.com/jpgill86/neurotic
It's still very simple and is far from perfect, but I have been using it for daily activities for a long time and find it incredibly useful. I still have many plans for improvements.
It currently depends on the "experimental" branch of my fork of ephyviewer (which currently just has one change from a pull request that hasn't been merged yet). So, to install it on your system I would recommend creating a new Python environment and following the README's instructions. I hope it works for you! ๐ค
Decide which functions and classes should definitely be public-facing, get their call signatures into a form I'm happy with, and commit to avoiding changing them. Other function names should start with underscore to prevent them from importing from each module and to indicate they may change in the future.
cf. #3
This is needed to avoid leaving behind large files in the library install path (site-packages) after pip uninstall neurotic
.
Could be implemented as setting local_data_root
to a temp directory automatically if the metadata file path exactly matches pkg_resources.resource_filename('neurotic', 'example/metadata.yml')
.
Using new keys under neurotic_config
, the user could control the following for _set_defaults_for_plots
:
units
(_default_units)ylim
(_default_ylim)It may also be useful to allow the user to define their own units not included with the Quantities package, such as millinewtons.
This would allow the user to, for example, disable showing the epoch encoder even if an epoch encoder file is specified in the metadata. This functionality already exists in MetadataSelectorWidget
for notebooks, but it could be added to the standalone Qt app.
The goal is to test for potentially breaking changes in these critical packages before they are released. Should use allow_failures
in .travis.yml
to permit failures in this job without marking the entire build as broken.
Since the Jupyter notebook features of the package are not needed for the standalone app, the installation of their dependencies, which are many and large, could be made optional.
This would probably involve the following:
extras_require = {'notebook': ['ipywidgets', 'ipython']}
to setup.py
.
try:
import ipywidgets
from IPython.display import HTML
HAVE_IPYWIDGETS = True
except ImportError:
HAVE_IPYWIDGETS = False
EphyviewerConfigurator
to not inherit from ipywidgets
, and add a subclass to EphyviewerConfigurator
called EphyviewerConfiguratorWidget
that has the old functionality.Since this does not happen with ephyviewer's trace_viewer_with_marker.py
example, I suspect the issue is specific to neurotic.
Each should have its own offset, rate correction, and jump parameters.
For example, add a CLI arg --create-shortcut
that puts a shortcut on the desktop using menuinst
. Would need to handle environment paths in a cross-platform way... probably very difficult to accomplish universally.
download
modulemetadata
moduledata
moduleconfig
modulenotebook
moduleIt would be useful if the user could, for example, still view data even if the video file is not found locally.
Until pyqtgraph/pyqtgraph#1077 and/or conda-forge/pyqtgraph-feedstock#10 are fixed, neurotic will be incompatible with Python 3.8 and later due to a dependency conflict.
This issue manifests differently for the standalone app and in notebooks.
If traces are disabled using EphyviewerConfiguratorWidget
in a notebook, this error is produced: UnboundLocalError: local variable 'line_width' referenced before assignment
.
The prompt should probably first recommend attempting a download first, just in case the server has a copy.
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.