Metadata-Version: 2.4
Name: imro-neuropixels
Version: 0.1.0
Summary: NP1.0 Neuropixels probe configuration and IMRO/Kilosort file generator with GUI
Author-email: Vitaly Lerner <vitaly.lerner@mail.huji.ac.il>
License: MIT
Project-URL: Homepage, https://github.com/vitalylerner/imro-neuropixels
Project-URL: Repository, https://github.com/vitalylerner/imro-neuropixels
Project-URL: Issues, https://github.com/vitalylerner/imro-neuropixels/issues
Keywords: neuropixels,imro,spikeglx,openephys,kilosort,electrophysiology,neuroscience
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PyQt5>=5.15.0
Requires-Dist: pyqtgraph>=0.12.0
Requires-Dist: numpy>=1.20.0
Requires-Dist: pandas>=1.3.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Dynamic: license-file

# IMRO Neuropixels Generator
![Main Window](https://raw.githubusercontent.com/vitalylerner/imro-neuropixels/main/docs/img/mainwindow_mixed.jpg)

Neuropixels probe channel configuration tool. Create IMRO files for SpikeGLX/OpenEphys and export probe configurations for Kilosort.

**Problem:** The [OpenEphys Neuropixels Plugin](https://open-ephys.github.io/gui-docs/User-Manual/Plugins/Neuropixels-PXI.html) can load [SpikeGLX IMRO](https://billkarsh.github.io/SpikeGLX/help/imroTables/) files but provides no tool to create them.

**Solution:** IMRO Generator lets you configure which electrodes to record from based on depth coverage, then export as IMRO files or [Kilosort probe dictionaries](https://kilosort.readthedocs.io/en/latest/tutorials/make_probe.html).
## Installation

**New to probe configuration?** Start here:

1. **Install**: `pip install -e .` (requires Python 3.8+)
2. **Launch**: `imro-gui`
3. **Quick guide**: See [`QUICKSTART.md`](QUICKSTART.md)

The GUI lets you:
- Choose your recording depth range (0–44.16 mm)
- Select assignment mode (Striped or Mixed) for uniform electrode distribution
- Configure gains, filters, and reference type
- Save IMRO files for OpenEphys/SpikeGLX
- Load and modify existing IMRO configurations

## For Developers

**Integrating into your software?** See:

- [`DEVELOPERS.md`](DEVELOPERS.md) — Architecture, setup, extending
- `docs/imro_algorithm.md` — Algorithm specification
- `docs/imro_dev_guide_A_overview.md` — Detailed architecture
- `tests/` — Test suite with examples

## System Requirements

- **Python**: 3.8 or later
- **GUI dependencies**: PyQt5, pyqtgraph (installed automatically)
- **Data processing**: NumPy (installed automatically)

## Installation

```bash
# From PyPI (once published)
pip install imro-neuropixels

# From TestPyPI
pip install -i https://test.pypi.org/simple/ \
    --extra-index-url https://pypi.org/simple/ imro-neuropixels

# From source (editable, for development)
git clone https://github.com/vitalylerner/imro-neuropixels.git
cd imro-neuropixels
pip install -e ".[dev]"
```

## Example use

### Mapping 2cm from the tip up

example file `20mm.imro` in action, as seen in [`OpenEphys Probe Viewer`](https://open-ephys.github.io/gui-docs/User-Manual/Plugins/Probe-Viewer.html), when flashes of light (2Hz) are shown to a fixating subject, while Neuropixels1.0-NHP is inserted in a visual area. 

![20mm](https://raw.githubusercontent.com/vitalylerner/imro-neuropixels/main/docs/img/oephys-probeview.jpg)

### Picking an active region for recording

![IMRO generator main window](https://raw.githubusercontent.com/vitalylerner/imro-neuropixels/main/docs/img/mainwindow_striped.jpg)

Set boundaries 10mm to 30mm

Map -> Save as IMRO 

Map -> Save kilosort probe

## Helpful Resources

- **[OpenEphys Neuropixels Plugin](https://open-ephys.github.io/gui-docs/User-Manual/Plugins/Neuropixels-PXI.html)** — GUI for recording with Neuropixels probes, loads IMRO files
- **[SpikeGLX IMRO Format](https://billkarsh.github.io/SpikeGLX/help/imroTables/)** — Complete IMRO specification and format documentation
- **[Kilosort Probe Dictionary](https://kilosort.readthedocs.io/en/latest/tutorials/make_probe.html)** — Format for probe configurations in Kilosort4
- **[Neuropixels Probe 1.0 NHP](https://www.neuropixels.org/probe-1-0-nhp-long)** — Official probe specifications
