15 releases (stable)

2.1.1 Oct 30, 2024
2.1.0 Feb 29, 2024
2.0.0 Sep 14, 2023
1.1.1 Sep 10, 2023
0.1.0 Oct 3, 2022

#16 in #dos

Download history 25/week @ 2024-07-22 13/week @ 2024-07-29 17/week @ 2024-08-05 2/week @ 2024-08-12 8/week @ 2024-08-19 3/week @ 2024-08-26 3/week @ 2024-09-02 1/week @ 2024-09-09 3/week @ 2024-09-16 45/week @ 2024-09-23 9/week @ 2024-09-30 9/week @ 2024-10-14 132/week @ 2024-10-28 16/week @ 2024-11-04

157 downloads per month
Used in 6 crates

MIT license

275KB
4.5K SLoC

gmt_dos-clients_arrow

Crates.io Documentation

A data logger client that uses Apache Arrow data format and Parquet data file to record time series of actor outputs.


lib.rs:

Actor client for Apache Arrow

A simulation data logger that records the data in the Apache Arrow format and automatically saves the data into a Parquet file (data.parquet) at the end of a simulation.

Example

An Arrow logger setup for 1000 time steps

use gmt_dos_clients_arrow::Arrow;
use gmt_dos_actors::prelude::*;
let logging = Arrow::builder(1000).build();

setting the name of the Parquet file


let logging = Arrow::builder(1000)
.filename("my_data.parquet")
.build();

opting out of saving the data to the Parquet file


let logging = Arrow::builder(1000)
.no_save()
.build();

Logging an output into an [Arrow] logger:

use gmt_dos_actors::prelude::*;
use gmt_dos_clients::Signals;
use gmt_dos_clients_arrow::Arrow;
use interface::UID;

let logging = Arrow::builder(1000).build().into_arcx();
let mut sink = Terminator::<_>::new(logging);
let mut source: Initiator<_> = Signals::new(1, 100).into();
#[derive(UID)]
enum Source {};
source.add_output().build::<Source>().logn(&mut sink, 42).await;

or if Signals implements the trait: Size<Source>

use gmt_dos_actors::prelude::*;
use gmt_dos_clients::Signals;
use gmt_dos_clients_arrow::Arrow;
use interface::{Size, UID};

let logging = Arrow::builder(1000).build().into_arcx();
let mut sink = Terminator::<_>::new(logging);
let mut source: Initiator<_> = Signals::new(1, 100).into();
#[derive(UID)]
enum Source {};
impl Size<Source> for Signals {
fn len(&self) -> usize {
42
}
}
source.add_output().build::<Source>().log(&mut sink).await;

Dependencies

~30–40MB
~779K SLoC