3 releases
0.1.5 | Mar 13, 2025 |
---|---|
0.1.4 | Mar 12, 2025 |
0.1.3 | Mar 7, 2025 |
#125 in Biology
389 downloads per month
19KB
240 lines
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 recordeddata
: 2D vector containing electrode readings where:- First dimension: 32 electrodes
- Second dimension: 4096 samples per electrode
Dependencies
tokio
- Async runtime and networkingserde
&serde_json
- Data serializationchrono
- Timestamp handlingtokio-tungstenite
- WebSocket communicationurl
- 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.
Dependencies
~7–20MB
~270K SLoC