69 lines
2.8 KiB
Clojure
Vendored
69 lines
2.8 KiB
Clojure
Vendored
(ns tech.v3.dataset.math-test
|
|
(:require [tech.v3.dataset :as ds]
|
|
[tech.v3.dataset.math :as ds-math]
|
|
[tech.v3.dataset.tensor :as ds-tens]
|
|
[tech.v3.datatype :as dtype]
|
|
[tech.v3.datatype.datetime :as dtype-dt]
|
|
[tech.v3.datatype.functional :as dfn]
|
|
[tech.v3.tensor :as dtt]
|
|
[clojure.test :refer [deftest is]]))
|
|
|
|
|
|
(deftest basic-interp
|
|
(let [interp-ds (-> (ds/->dataset "test/data/stocks.csv")
|
|
(ds/filter-column "symbol" "MSFT")
|
|
;;The interpolate requires a sorted dataset
|
|
(ds/sort-by-column "date")
|
|
(ds-math/interpolate-loess "date" "price"
|
|
{:result-name "price-loess"}))]
|
|
(is (not (nil? (:interpolator (meta (interp-ds "price-loess"))))))))
|
|
|
|
|
|
(deftest fill-range-replace
|
|
(let [ds (-> (ds/->dataset {:a [1 5 10 15 20]
|
|
:b [2 2 nil 4 8]})
|
|
(ds-math/fill-range-replace :a 2))]
|
|
(is (dfn/equals
|
|
[1.0 3.0 5.0 6.66 8.33 10.0
|
|
11.66 13.33 15.0 16.66 18.33 20.0]
|
|
(vec (ds :a))
|
|
0.1))
|
|
(is (= [2 2 2 2 2 2 2 2 4 4 4 8]
|
|
(vec (ds :b)))))
|
|
(let [ds (-> (ds/->dataset {:a [1 5 10 15 20]
|
|
:b [2 2 nil 4 8]})
|
|
(ds-math/fill-range-replace :a 2 nil))]
|
|
(is (= [2 nil 2 nil nil nil nil nil 4 nil nil 8]
|
|
(vec (ds :b)))))
|
|
(let [ds (-> (ds/->dataset {:a [1 5 10 15 20]
|
|
:b [2 2 nil 4 8]})
|
|
(ds-math/fill-range-replace :a 2 :value 20))]
|
|
(is (= [2 20 2 20 20 20 20 20 4 20 20 8]
|
|
(vec (ds :b)))))
|
|
(let [ds (-> (ds/->dataset {:a (dtype-dt/plus-temporal-amount
|
|
(dtype-dt/local-date)
|
|
[1 5 10 15 20]
|
|
:days)
|
|
:b [2 2 nil 4 8]})
|
|
(ds-math/fill-range-replace :a (* 2 dtype-dt/milliseconds-in-day)
|
|
:value 20))]
|
|
(is (= [2 20 2 20 20 20 20 20 4 20 20 8]
|
|
(vec (ds :b))))))
|
|
|
|
|
|
(comment
|
|
(def test-ds (ds/->dataset {:a [7 4 6 8 8 7 5 9 7 8]
|
|
:b [4 1 3 6 5 2 3 5 4 2]
|
|
:c [3 8 5 1 7 9 3 8 5 2]}))
|
|
|
|
(def test-data (dtt/->tensor [[10 8 6 20 9]
|
|
[11 21 23 18 4]
|
|
[12 7 5 13 19]
|
|
[ 3 14 15 22 17]
|
|
[24 1 2 0 16]] :datatype :float64))
|
|
(def test-data (dtt/transpose (dtt/->tensor [[7 4 6 8 8 7 5 9 7 8]
|
|
[4 1 3 6 5 2 3 5 4 2]
|
|
[3 8 5 1 7 9 3 8 5 2]] :datatype :float64)
|
|
[1 0]))
|
|
)
|