Skip to main content

Fast Python bindings for reading Intan RHS files

Project description

intan-importer

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

Installation

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)

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.2-cp39-abi3-macosx_11_0_arm64.whl (329.1 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for intan_importer-0.1.2-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa75cbd4e2d879ead0c1ed24f84a8d7f1f1c9175fd9c9a7f5d278a2fcc289072
MD5 0d3d924c3339f2151ade5aef8e30f29b
BLAKE2b-256 f8222f9ccb3af5510c6c7ba549a1cb878903ac55c3c6dd6fc64bfe4e2cd6e693

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