Skip to main content

Fast Python bindings for reading Intan RHS files

Project description

You're right, let's make it much simpler and cleaner:

# intan-importer

Fast Python bindings for reading Intan RHS files, powered by Rust for high performance.

## Installation

```bash
pip install intan-importer

Quick Start

import intan_importer

# Load a single RHS file or a directory of files
rec = intan_importer.load("data.rhs")

# Access the data
time = rec.time  # Time vector in seconds
data = rec.data.amplifier_data  # Neural data in microvolts

Data Structure

Recording object (rec)
│
├── .time                    → numpy array of time in seconds
├── .duration                → total duration in seconds
├── .num_samples             → total number of samples
├── .sample_rate             → sampling rate in Hz
├── .num_channels            → number of amplifier channels
├── .data_present            → bool, whether data exists
├── .source_files            → list of source files (if multiple)
│
├── .header
│   ├── .sample_rate         → sampling rate in Hz
│   ├── .notch_filter_frequency → 50, 60, or None
│   ├── .reference_channel   → reference channel name
│   ├── .note1, .note2, .note3 → user notes
│   ├── .amplifier_channels  → list of channel info
│   └── .board_adc_channels  → list of ADC channel info
│
├── .data (if present)
│   ├── .timestamps          → sample numbers (int32)
│   ├── .amplifier_data      → neural data (µV, int32)
│   ├── .board_adc_data      → auxiliary inputs (V, int32)
│   ├── .board_dig_in_data   → digital inputs (0 or 1)
│   ├── .stim_data           → stimulation current (µA)
│   └── ... (other optional data types)
│
└── Methods:
    ├── .get_channel_data(channel, start_time, end_time)
    ├── .get_time_slice(start_time, end_time) 
    └── .summary()

Key Features

Time Vector

The .time property gives you a time vector in seconds, automatically computed from timestamps and sampling rate:

time = rec.time  # Computed once and cached
plt.plot(time, rec.data.amplifier_data[0, :])

Channel Access

Access channels by index or name:

# By index
data = rec.get_channel_data(0)

# By channel name
data = rec.get_channel_data("CA1")

# With time window (in seconds)
data = rec.get_channel_data("CA1", start_time=10.0, end_time=20.0)

Channel Information

for i, ch in enumerate(rec.header.amplifier_channels):
    print(f"Channel {i}: {ch.custom_channel_name} ({ch.electrode_impedance_magnitude:.0f} Ω)")

Data Types

  • Timestamps: Sample numbers (divide by sample_rate for seconds)
  • Amplifier data: Microvolts (µV)
  • ADC data: Volts (V)
  • Digital data: Binary (0 or 1)
  • Stimulation data: Microamps (µA)

License

Licensed under MIT.


This is much cleaner and focuses on what users need to know to get started!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

intan_importer-0.1.1-cp39-abi3-macosx_11_0_arm64.whl (329.2 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

Details for the file intan_importer-0.1.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intan_importer-0.1.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40a53ed8564c36da2831249a5c5593315a39be7c8962ef93a00219104b872c83
MD5 db95ce50432478e25c2867f8ddb27503
BLAKE2b-256 7634d46984f3de12fe93c58c45e13cd75672695b8df94e582832ef5a8ada816e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page