From b393c305017da958d01d91ed73fe506cbb006e2b Mon Sep 17 00:00:00 2001 From: Sylvain Date: Tue, 8 Oct 2024 10:53:29 -0300 Subject: [PATCH] feat: define polars_to_vega Little work to do, but we do need to remove NaNs as vega does not support them. --- lib/syskit/log/dsl.rb | 5 +++++ test/dsl_test.rb | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/lib/syskit/log/dsl.rb b/lib/syskit/log/dsl.rb index 615de12..8ac6bfa 100644 --- a/lib/syskit/log/dsl.rb +++ b/lib/syskit/log/dsl.rb @@ -648,6 +648,11 @@ def roby_vega_task_timeline_data(*tasks) end end + # Convert a Daru frame into a vega data array + def polars_to_vega(frame) + frame.fill_nan(nil).to_a + end + # Convert a Daru frame into a vega data array def daru_to_vega(frame, every: 1) data = [] diff --git a/test/dsl_test.rb b/test/dsl_test.rb index 82ac109..caa1756 100644 --- a/test/dsl_test.rb +++ b/test/dsl_test.rb @@ -502,6 +502,20 @@ def assert_polars_frame_near(expected, actual) end end + describe "polars_to_vega" do + before do + @context = make_context + end + + it "converts NaN into nil" do + frame = ::Polars::DataFrame.new( + { "a" => [Float::NAN, 0.1] }, schema: nil + ) + vega = @context.polars_to_vega(frame) + assert_equal [{ "a" => nil }, { "a" => 0.1 }], vega + end + end + describe "daru_to_vega" do before do @context = make_context