finalspark-rs 0.1.4

A Rust library for live data recording from MEA devices.
Documentation

FinalSpark-RS

FinalSpark-RS is a Rust library for live data recording from MEA (Microelectrode Array) devices. It enables real-time data acquisition and processing from MEA devices over a network connection.

Features

  • Connects to an MEA server to retrieve live data
  • Supports both single-sample and multi-sample data recording
  • Uses tokio for asynchronous networking
  • Structured data output with timestamps and electrode readings

Installation

Add finalspark-rs to your Cargo.toml:

[dependencies]
finalspark-rs = { git = "https://github.com/maidenlabs/finalspark-rs.git" }
tokio = { version = "1.0", features = ["full"] }

Usage

Basic Setup

use finalspark_rs::LiveMEA;

#[tokio::main]
async fn main() {
    let live_mea = LiveMEA::new();
    
    // Record a single sample
    match live_mea.record_sample(1).await {
        Ok(data) => {
            println!("Recorded sample with timestamp: {}", data.timestamp);
            println!("Number of electrodes: {}", data.data.len());
            println!("Samples per electrode: {}", data.data[0].len());
        },
        Err(e) => eprintln!("Error recording sample: {}", e),
    }
}

Recording Multiple Samples

use finalspark_rs::LiveMEA;

#[tokio::main]
async fn main() {
    let live_mea = LiveMEA::new();

    match live_mea.record_n_samples(1, 5).await {
        Ok(samples) => {
            println!("Successfully recorded {} samples", samples.len());
            for (i, sample) in samples.iter().enumerate() {
                println!("Sample {} timestamp: {}", i + 1, sample.timestamp);
            }
        },
        Err(e) => eprintln!("Error recording samples: {}", e),
    }
}

Data Structure

The LiveData struct contains:

  • timestamp: String in RFC3339 format representing when the sample was recorded
  • data: 2D vector containing electrode readings where:
    • First dimension: 32 electrodes
    • Second dimension: 4096 samples per electrode

Dependencies

  • tokio - Async runtime and networking
  • serde & serde_json - Data serialization
  • chrono - Timestamp handling
  • tokio-tungstenite - WebSocket communication
  • url - URL parsing and handling

License

This project is licensed under the MIT License. See LICENSE for details.

Contributing

Contributions are welcome! Please submit an issue or pull request on GitHub.