Coder Social home page Coder Social logo

spikeglx's Introduction

SpikeGLX


#### *SpikeGLX is a new and improved SpikeGL*

SpikeGL is a mature feature-rich neural recording system, originally written by independent developer Calin A. Culianu under contract to the Anthony Leonardo Lab at HHMI/Janelia Research Campus.

SpikeGLX is a complete rewrite by Bill Karsh of the Tim Harris Lab, also at Janelia. Our lab goes by the brief name "APIG," an undignified way of saying "Applied Physics and Instrumentation Group." We develop a variety of imaging and electrophysiology tools supporting state of the art neuroscience.

APIG has now initiated the IMEC project with several other institutions. Its purpose is to create extracellular neural probes with far higher channel counts than ever before (several hundred per shank). The system must include reliable data acquisition software, and I selected SpikeGL as the basis for the new system.

My development plan has these phases:

  1. Fix up SpikeGL to make it the best possible version of itself.
  2. Publish that to github.
  3. Add to that new support for IMEC probes.
  4. Add feature enhancements.

What's the Same

SpikeGLX retains strong data compatibility and user experience with the original:

  • Feature set frozen at SpikeGL version 20140814.
  • Identical binary file format.
  • Same basic metadata format with minor ini-tag name changes.
  • Enhanced TCP/IP API with only minor command name changes.
  • Largely same windows, menus, displays, layout.

In short, I wanted to ensure that current users of SpikeGL could migrate to SpikeGLX with negligible impact/resistance.

What's New

I must emphasize that Calin provided an excellent starting point. He's a creative and talented guy who taught me a great deal about Qt, OpenGL and ephys concepts. I owe a sincere debt of gratitude for getting me going. That being said, there were stability, performance and structural issues that got in the way of my ability to understand and extend the original.

The overhaul is significant. Some highlights:

  • More efficient threading supports:
    • Higher bandwidth, hence, channel counts
    • Fewer (if any) buffer overruns
    • Better tolerance of background activity
    • Lower latency (e.g. 12 ms analog out)
  • Lower latency TCP/IP interface.
  • Cleaner, expandable configuration dialog.
  • Refactored and more modular code.
  • Improved decoupling of features.
  • Improved project file organization.
  • More idiomatic and best-practice Qt usage.
  • Simplified and streamlined algorithms.

System Requirements

  • Windows: XP SP3, 7, 8.1, 10.
  • NI-DAQmx 9 or later (recommend latest version).
  • Minimum of four cores.
  • Minimum of 2.5 GHz.
  • Minimum of 4 GB RAM.
  • Dedicated second hard drive for data streaming.

SpikeGLX is multithreaded. More processors enable better workload balancing with fewer bottlenecks. The OS, background tasks and most other apps make heavy use of the C:/ drive. This is the worst destination for high bandwidth data streaming. A second hard drive dedicated to data streaming is strongly recommended. More cores and a separate drive are by far the most important system specs. More RAM, clock speed, graphics horsepower and so on are welcome but less critical.

spikeglx's People

Contributors

billkarsh avatar

Watchers

James Cloos avatar James Jun avatar

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.