Skip to main content

Fast Python bindings for reading Intan RHS files

Project description

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

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.data.time               # Time vector in seconds
data = rec.data.amplifier_data     # Neural data in microvolts

Data Structure

Recording object (rec)
│
├── .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)
│   ├── .time                → time vector in seconds (float64)
│   ├── .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 Vectors

Both time representations are available in the data object:

time = rec.data.time          # Time in seconds (computed from timestamps)
timestamps = rec.data.timestamps  # Raw sample numbers

# Convert between them
time_manual = timestamps / rec.sample_rate  # Same as rec.data.time

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

  • Time: Seconds (float64)
  • Timestamps: Sample numbers (int32)
  • 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.4-cp39-abi3-macosx_11_0_arm64.whl (329.6 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

File details

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

File metadata

File hashes

Hashes for intan_importer-0.1.4-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61f07347ce65a791381ca51294261fecfae1580ceb022357ae36b51711de6b88
MD5 a21c7dd93adfeb284b8ce894598ab757
BLAKE2b-256 06beb4965e0a4c4f19e8693640ac5fab72fe583d8de8a31bf88c44024cfff4bb

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