{"id":28479652,"url":"https://github.com/jpgill86/neurotic","last_synced_at":"2025-07-03T15:30:37.888Z","repository":{"id":53099807,"uuid":"193188602","full_name":"jpgill86/neurotic","owner":"jpgill86","description":"Curate, visualize, annotate, and share your behavioral ephys data using Python","archived":false,"fork":false,"pushed_at":"2023-10-22T13:20:06.000Z","size":4086,"stargazers_count":33,"open_issues_count":82,"forks_count":9,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-07T18:09:52.852Z","etag":null,"topics":["annotation-tool","data-management","data-sharing","download-manager","electrophysiology","neuroscience","open-science","python","python-neo","video-sync","visualization"],"latest_commit_sha":null,"homepage":"https://neurotic.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jpgill86.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-06-22T03:56:19.000Z","updated_at":"2025-05-26T19:53:03.000Z","dependencies_parsed_at":"2023-01-27T14:31:30.558Z","dependency_job_id":"c0649746-5450-4d43-ae23-103d415a5645","html_url":"https://github.com/jpgill86/neurotic","commit_stats":{"total_commits":371,"total_committers":1,"mean_commits":371.0,"dds":0.0,"last_synced_commit":"32d131e46346dcce83e30cd3e02e157e0bdd8af6"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/jpgill86/neurotic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgill86%2Fneurotic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgill86%2Fneurotic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgill86%2Fneurotic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgill86%2Fneurotic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jpgill86","download_url":"https://codeload.github.com/jpgill86/neurotic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jpgill86%2Fneurotic/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263350199,"owners_count":23453243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotation-tool","data-management","data-sharing","download-manager","electrophysiology","neuroscience","open-science","python","python-neo","video-sync","visualization"],"created_at":"2025-06-07T18:09:58.751Z","updated_at":"2025-07-03T15:30:37.881Z","avatar_url":"https://github.com/jpgill86.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"|neurotic logo| *neurotic*: NEUROscience Tool for Interactive Characterization\n==============================================================================\n\n*Curate, visualize, annotate, and share your behavioral ephys data using Python*\n\n:Distributions: |PyPI badge| |Anaconda badge| |Installers badge|\n:Source Code:   |GitHub badge| |Feedstock badge| |Constructor badge|\n:Tests Status:  |GitHub Actions badge| |Azure badge| |Docs badge| |Coverage badge|\n:Citing:        |Zenodo badge| |eNeuro badge|\n\nDocumentation_ | `Release Notes`_ | `Issue Tracker`_\n\n*neurotic* is an app for Windows, macOS, and Linux that allows you to easily\nreview and annotate your electrophysiology data and simultaneously captured\nvideo. It is an easy way to load your Neo_-compatible data (see neo.io_ for\nfile formats) into ephyviewer_ without doing any programming. Share a single\nmetadata file with your colleagues and they too will quickly be looking at the\nsame datasets!\n\nTo use the app, first organize your datasets in a *metadata file* like this\n(see `Configuring Metadata`_):\n\n.. code-block:: yaml\n\n    my favorite dataset:\n        description: This time it actually worked!\n\n        data_dir:           C:\\local_dir_containing_files\n        remote_data_dir:    http://myserver/remote_dir_containing_downloadable_files  # optional\n        data_file:          data.axgx\n        video_file:         video.mp4\n        # etc\n\n        video_offset: -3.4  # seconds between start of video and data acq\n        epoch_encoder_possible_labels:\n            - label01\n            - label02\n        plots:\n            - channel: I2\n              ylim: [-30, 30]\n            - channel: RN\n              ylim: [-60, 60]\n            # etc\n\n        filters:  # used only if fast loading is off (lazy=False)\n            - channel: Force\n              lowpass: 50\n            # etc\n        amplitude_discriminators:  # used only if fast loading is off (lazy=False)\n            - name: B3 neuron\n              channel: BN2\n              units: uV\n              amplitude: [50, 100]\n            # etc\n\n    another dataset:\n        # etc\n\nOpen your metadata file in *neurotic* and choose a dataset. If the data and\nvideo files aren't already on your local computer, the app can download them\nfor you, even from a password-protected server or from Google Drive. Finally,\nclick launch and the app will use a standard viewer layout to display your data\nto you using ephyviewer_.\n\n|Example screenshot|\n\n*In the screenshot above, the video frame shows a voracious sea slug* (Aplysia\ncalifornica) *swallowing a strip of unbreakable seaweed attached to a force\ntransducer. Implanted electrodes recorded from a muscle and the major nerves\ncontrolling feeding. The epoch encoder was used to mark the times when seaweed\nmoved into the mouth. Spikes corresponding to activity of identified neurons\nwere detected by* neurotic *using customizable parameters.*\n\nThe viewers are easy and intuitive to navigate (see `User Interface`_):\n\n- Pressing the play button will scroll through your data and video in real\n  time, or at a higher or lower rate if the speed parameter is changed.\n- The arrow/WASD keys allow you to step through time in variable increments.\n- Jump to a time by clicking on an event in the event list or a table entry in\n  the epoch encoder.\n- To show more or less time at once, right-click and drag right or left to\n  contract or expand time.\n- Scroll the mouse wheel in the trace viewer or video viewer to zoom.\n- The epoch encoder can be used to block out periods of time during which\n  something interesting is happening for later review or further analysis\n  (saved to a CSV file).\n- All panels can be hidden, undocked, stacked, or repositioned on the fly.\n\nElectrophysiologists will find this tool useful even if they don't need the\nvideo synchronization feature!\n\n**Portability is easy with neurotic!** Use relative paths in your metadata file\nalong with a remotely accessible data store such as GIN_ or a Shared Drive on\nGoogle Drive to make your metadata file fully portable. The same metadata file\ncan be copied to a different computer, and downloaded files will automatically\nbe saved to the right place. Data stores can be password protected and\n*neurotic* will prompt you for a user name and password. This makes it easy to\nshare the *neurotic* experience with your colleagues! 🤪\n\nInstalling *neurotic*\n---------------------\n\n*neurotic* requires Python 3.7 or later.\n\nStandalone Installers (recommended for beginners)\n.................................................\n\nDownloadable installers make installing *neurotic* easy for beginners. They can\nbe downloaded from the GitHub Releases page:\n\n    `👉 Download installers here (listed under \"Assets\") 👈`__\n\n    __ `GitHub Releases`_\n\nThese installers are intended for users who do not want to independently\ninstall Python or conda just to use *neurotic*. They will install *neurotic*\nand everything it needs (including a fully contained Python environment) into a\ndedicated directory on your computer. On Windows, the installer will also\ncreate a Start Menu shortcut for launching the app.\n\nFor developers, a recipe for building new installers using `conda constructor`_\nis maintained here: `constructor recipe`_.\n\nAlternate Method: conda (recommended for Pythonistas)\n.....................................................\n\nconda_ users can install *neurotic* and all of its dependencies with one\ncommand::\n\n    conda install -c conda-forge neurotic\n\nOn Windows, this will also create a Start Menu shortcut for launching the app.\n\nAlternate Method: pip\n.....................\n\nInstall *neurotic* from PyPI_ using ::\n\n    pip install neurotic\n\nNote that installation via ``pip`` skips one dependency: PyAV_, which is\nrequired for displaying videos, and without which *neurotic* will ignore\nvideos. PyAV is not easily installed with ``pip`` on some systems, especially\nWindows. The easiest way to separately install PyAV is using conda_::\n\n    conda install -c conda-forge av\n\nUpdating *neurotic*\n-------------------\n\nThe recommended method of updating *neurotic* depends on the original method of\ninstallation.\n\nIf you are unsure what method you used, updating using ``conda`` or ``pip`` is\nlikely to work. Standalone installers may be safe too, though this could lead\nto having multiple version installed simultaneously.\n\nUpdating with Standalone Installers\n...................................\n\nIf you previously installed *neurotic* using a standalone installer, you may\ninstall a newer version using another installer, either into a different\ndirectory or by first uninstalling the old version. Installers can be\ndownloaded from the GitHub Releases page:\n\n    `👉 Download installers here (listed under \"Assets\") 👈`__\n\n    __ `GitHub Releases`_\n\nAlternatively, if a new installer is not currently available for your platform,\nor if you would just like a much faster method, you may use the command line\ntools provided by the installer (via the \"Anaconda Prompt\" on Windows, or the\nTerminal on macOS and Linux)::\n\n    conda update -c conda-forge neurotic\n\nUpdating with conda\n...................\n\nIf you installed *neurotic* with `conda`_, you can update to the latest release\nusing ::\n\n    conda update -c conda-forge neurotic\n\nUpdating with pip\n.................\n\nIf you installed *neurotic* using ``pip``, you can update to the latest release\navailable on PyPI_ using ::\n\n    pip install -U neurotic\n\nDevelopment Version\n...................\n\nIf you are interested in trying new, unreleased features of *neurotic*, you may\ninstall the latest development version from GitHub_ using ::\n\n    pip install -U git+https://github.com/jpgill86/neurotic.git\n\nNote that if you install the development version, you may also need the latest\ndevelopment version of ephyviewer_, which you can get using ::\n\n    pip install -U git+https://github.com/NeuralEnsemble/ephyviewer.git\n\nGetting Started\n---------------\n\nWindows users who installed using a standalone installer or conda_ should be\nable to launch *neurotic* from the Start Menu.\n\nMac and Linux users, as well as Windows users, can use the Terminal, command\nline, or Anaconda Prompt to start the app:\n\n1. Depending on your operating system, installation method, and environment\n   settings, you may be able to just launch the app from the command line by\n   invoking its name::\n\n    neurotic\n\n2. If the command is not recognized, you likely need to first activate the\n   conda environment into which the app was installed::\n\n    conda activate \u003cenvironment name\u003e\n\n   If you used a standalone installer, the environment name may be\n   \"``neurotic``\", so you would use ::\n\n    conda activate neurotic\n\n   You can then try again invoking the app name::\n\n    neurotic\n\nSeveral examples are provided. Select one, download the associated data using\nthe \"Download data\" menu action, and then click \"Launch\". See `User Interface`_\nfor help with navigation.\n\nDisabling \"Fast loading\" before launch will enable additional features\nincluding amplitude-threshold spike detection and signal filtering.\n\nTo inspect the metadata file associated with the examples or to make changes to\nit, click \"Edit metadata\". See `Configuring Metadata`_ for details about the\nformat.\n\nIf you like working with Jupyter notebooks, you can launch an example notebook\nthat includes a tutorial for using *neurotic*'s API::\n\n    neurotic --launch-example-notebook\n\nThe command line interface accepts other arguments too:\n\n.. code-block::\n\n    usage: neurotic [-h] [-V] [--debug | --no-debug] [--lazy | --no-lazy]\n                    [--thick-traces | --no-thick-traces]\n                    [--show-datetime | --no-show-datetime]\n                    [--ui-scale {tiny,small,medium,large,huge}]\n                    [--theme {light,dark,original,printer-friendly}]\n                    [--use-factory-defaults] [--launch-example-notebook]\n                    [file] [dataset]\n\n    neurotic lets you curate, visualize, annotate, and share your behavioral ephys\n    data.\n\n    positional arguments:\n      file                  the path to a metadata YAML file (default: an example\n                            file)\n      dataset               the name of a dataset in the metadata file to select\n                            initially (default: the first entry in the metadata\n                            file)\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -V, --version         show program's version number and exit\n      --debug               enable detailed log messages for debugging\n      --no-debug            disable detailed log messages for debugging (default)\n      --lazy                enable fast loading (default)\n      --no-lazy             disable fast loading\n      --thick-traces        enable support for traces with thick lines, which has\n                            a performance cost\n      --no-thick-traces     disable support for traces with thick lines (default)\n      --show-datetime       display the real-world date and time, which may be\n                            inaccurate depending on file type and acquisition\n                            software\n      --no-show-datetime    do not display the real-world date and time (default)\n      --ui-scale {tiny,small,medium,large,huge}\n                            the scale of user interface elements, such as text\n                            (default: medium)\n      --theme {light,dark,original,printer-friendly}\n                            a color theme for the GUI (default: light)\n      --use-factory-defaults\n                            start with \"factory default\" settings, ignoring other\n                            args and your global config file\n\n    alternative modes:\n      --launch-example-notebook\n                            launch Jupyter with an example notebook instead of\n                            starting the standalone app (other args will be\n                            ignored)\n\n    Defaults for arguments and options can be changed in a global config file,\n    .neurotic\\neurotic-config.txt, located in your home directory.\n\nCiting *neurotic*\n-----------------\n\nTo cite *neurotic* in your publication, please refer to:\n\n    Gill, J. P., Garcia, S., Ting, L. H., Wu, M., \u0026 Chiel, H. J. (2020).\n    *neurotic*: Neuroscience Tool for Interactive Characterization. eNeuro,\n    7(3). https://doi.org/10.1523/ENEURO.0085-20.2020\n\nSpecific versions of the software can be cited from archives at Zenodo_.\n\nDocumentation\n-------------\n\nFor detailed information on configuring metadata, working examples, the API\nreference guide, release notes, and more, see the Documentation_.\n\n\n.. |neurotic logo| image:: https://raw.githubusercontent.com/jpgill86/neurotic/master/neurotic/gui/icons/img/neurotic-logo-30.png\n    :alt: Project logo\n\n.. |PyPI badge| image:: https://img.shields.io/pypi/v/neurotic.svg?logo=python\u0026logoColor=white\n    :target: PyPI_\n    :alt: PyPI project\n\n.. |Anaconda badge| image:: https://img.shields.io/conda/vn/conda-forge/neurotic.svg?label=anaconda\u0026logo=anaconda\u0026logoColor=white\n    :target: `Anaconda Cloud`_\n    :alt: Anaconda Cloud project\n\n.. |Installers badge| image:: https://img.shields.io/github/v/release/jpgill86/neurotic?label=installers\u0026logo=github\u0026logoColor=white\u0026sort=semver\n    :target: `GitHub Releases`_\n    :alt: Installers\n\n.. |GitHub badge| image:: https://img.shields.io/badge/github-source_code-blue.svg?logo=github\u0026logoColor=white\n    :target: GitHub_\n    :alt: GitHub source code\n\n.. |Feedstock badge| image:: https://img.shields.io/badge/conda--forge-feedstock-blue.svg?logo=conda-forge\u0026logoColor=white\n    :target: `conda-forge feedstock`_\n    :alt: conda-forge feedstock\n\n.. |Constructor badge| image:: https://img.shields.io/badge/constructor-recipe-blue.svg\n    :target: `constructor recipe`_\n    :alt: constructor recipe\n\n.. |GitHub Actions badge| image:: https://img.shields.io/github/actions/workflow/status/jpgill86/neurotic/tests.yml?branch=master\u0026label=tests\u0026logo=github\u0026logoColor=white\n    :target: `GitHub Actions`_\n    :alt: Tests status\n\n.. |Azure badge| image:: https://dev.azure.com/conda-forge/feedstock-builds/_apis/build/status/neurotic-feedstock?branchName=master\n    :target: `conda-forge CI`_\n    :alt: conda-forge build status\n\n.. |Docs badge| image:: https://img.shields.io/readthedocs/neurotic/latest.svg?logo=read-the-docs\u0026logoColor=white\n    :target: ReadTheDocs_\n    :alt: Documentation status\n\n.. |Coverage badge| image:: https://coveralls.io/repos/github/jpgill86/neurotic/badge.svg?branch=master\n    :target: Coveralls_\n    :alt: Coverage status\n\n.. |Zenodo badge| image:: https://img.shields.io/badge/DOI-10.5281/zenodo.3564990-blue.svg\n    :target: Zenodo_\n    :alt: Zenodo archive\n\n.. |eNeuro badge| image:: https://img.shields.io/badge/DOI-10.1523/ENEURO.0085--20.2020-blue.svg\n    :target: eNeuro_\n    :alt: eNeuro article\n\n.. |Example screenshot| image:: https://raw.githubusercontent.com/jpgill86/neurotic/master/docs/_static/example-screenshot.png\n    :target: https://raw.githubusercontent.com/jpgill86/neurotic/master/docs/_static/example-screenshot.png\n    :alt: Screenshot\n\n.. _Anaconda Cloud: https://anaconda.org/conda-forge/neurotic\n.. _conda:          https://docs.conda.io/projects/conda/en/latest/user-guide/install/\n.. _conda constructor: https://github.com/conda/constructor\n.. _constructor recipe: https://github.com/jpgill86/neurotic-constructor\n.. _conda-forge CI: https://dev.azure.com/conda-forge/feedstock-builds/_build/latest?definitionId=8417\u0026branchName=master\n.. _conda-forge feedstock: https://github.com/conda-forge/neurotic-feedstock\n.. _Configuring Metadata: https://neurotic.readthedocs.io/en/latest/metadata.html\n.. _Coveralls:      https://coveralls.io/github/jpgill86/neurotic?branch=master\n.. _Documentation:  https://neurotic.readthedocs.io/en/latest\n.. _eNeuro:         https://doi.org/10.1523/ENEURO.0085-20.2020\n.. _ephyviewer:     https://ephyviewer.readthedocs.io/en/latest\n.. _GIN:            https://gin.g-node.org\n.. _GitHub:         https://github.com/jpgill86/neurotic\n.. _GitHub Actions: https://github.com/jpgill86/neurotic/actions?query=workflow%3Atests\n.. _GitHub Releases: https://github.com/jpgill86/neurotic/releases\n.. _Issue Tracker:  https://github.com/jpgill86/neurotic/issues\n.. _Neo:            https://neo.readthedocs.io/en/latest\n.. _neo.io:         https://neo.readthedocs.io/en/latest/io.html#module-neo.io\n.. _PyAV:           https://docs.mikeboers.com/pyav/develop/overview/installation.html\n.. _PyPI:           https://pypi.org/project/neurotic\n.. _ReadTheDocs:    https://readthedocs.org/projects/neurotic\n.. _Release Notes:  https://neurotic.readthedocs.io/en/latest/releasenotes.html\n.. _User Interface: https://ephyviewer.readthedocs.io/en/latest/interface.html\n.. _Zenodo:         https://doi.org/10.5281/zenodo.3564990\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpgill86%2Fneurotic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjpgill86%2Fneurotic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjpgill86%2Fneurotic/lists"}