From b89c4f96862c88cd4726685e8b7ea1518fb6e0bc Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 08:55:08 -0700 Subject: [PATCH 01/69] Add ->general-types function --- src/tablecloth/api/utils.clj | 12 ++++++++++++ test/tablecloth/api/utils_test.clj | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index a564fbb..4fcc4f4 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -73,11 +73,23 @@ ([general-type datatype] ((type-sets general-type) datatype))) +(defn ->general-types + "Given a concrete `datatype` (e.g. `:int32`), + returns the general type (e.g. `:integer`)." + [datatype] + (let [general-types + (map (fn [general-type] + (let [set-of-concrete-types (get type-sets general-type)] + (when (set-of-concrete-types datatype) general-type))) + (keys type-sets))] + (set (remove nil? general-types)))) + (defn- prepare-datatype-set [datatype-columns-selector] (let [k (-> datatype-columns-selector name keyword)] (get type-sets k #{k}))) + (defn- filter-column-names "Filter column names" [ds columns-selector meta-field] diff --git a/test/tablecloth/api/utils_test.clj b/test/tablecloth/api/utils_test.clj index 820a4e5..ef40d58 100644 --- a/test/tablecloth/api/utils_test.clj +++ b/test/tablecloth/api/utils_test.clj @@ -134,3 +134,7 @@ => '(4 6 3 6 2 0 5 1 2 4 2)))) +(fact "->general-types describes the set of general types for a concrete datatype" + (sut/->general-types :int32) => #{:integer :numerical} + (sut/->general-types :float32) => #{:float :numerical} + (sut/->general-types :string) => #{:textual}) From f40aa7f1e00116d3c26daa791243d776ce331ed3 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 11:56:49 -0700 Subject: [PATCH 02/69] Add a general type :logical --- src/tablecloth/api/utils.clj | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 4fcc4f4..6ed5b9c 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -64,7 +64,8 @@ :numerical #{:int8 :int16 :int32 :int64 :uint8 :uint16 :uint32 :uint64 :long :int :short :byte :float32 :float64 :double :float} - :textual #{:text :string}}) + :textual #{:text :string} + :logical #{:boolean}}) (defn type? ([general-type] @@ -84,6 +85,24 @@ (keys type-sets))] (set (remove nil? general-types)))) +(defn types + "Returns the set of general types e.g. (:integer, :textual, etc)." + [] + (set (keys type-sets))) + +(defn concrete-types + "Returns the set of concrete types e.g. (:int32, :float32, etc)" + [] + (reduce (fn [all-types val] + (into all-types val)) + #{} + (vals type-sets))) + +(defn concrete-type? + "Returns true if `datatype` is a concrete datatype (e.g. :int32)." + [datatype] + (not (nil? ((concrete-types) datatype)))) + (defn- prepare-datatype-set [datatype-columns-selector] (let [k (-> datatype-columns-selector name keyword)] From 337799387c0a819f9368d44286c57f4abe2206c9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 11:57:36 -0700 Subject: [PATCH 03/69] Use type hierarchy in tablecloth.api.utils for `typeof` functions --- src/tablecloth/column/api/column.clj | 20 +++++++++++------ test/tablecloth/column/api/column_test.clj | 25 ++++++++++++++++++++-- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 5fcaf56..a7ba11c 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -1,6 +1,7 @@ (ns tablecloth.column.api.column (:require [tech.v3.dataset.column :as col] - [tech.v3.datatype :as dtype])) + [tech.v3.datatype :as dtype] + [tablecloth.api.utils :refer [->general-types concrete-type? type?]])) (defn column "Create a `column` from a vector or sequence. " @@ -18,16 +19,19 @@ [item] (col/is-column? item)) -;; Alias for tech.v3.datatype.elemwise-datatype` (defn typeof - "Returns the datatype fo the elements within the column `col`." + "Describes the type(s) of the elements within the column `col`." [col] - (dtype/elemwise-datatype col)) + (->general-types (dtype/elemwise-datatype col))) (defn typeof? - "True|false the column's elements are of type `dtype`" - [col dtype] - (= (dtype/elemwise-datatype col) dtype)) + "True|false the column's elements are of the provided type `datatype`. + Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." + [col datatype] + (let [concrete-type-of-els (dtype/elemwise-datatype col)] + (if (concrete-type? datatype) + (= datatype concrete-type-of-els) + (not (nil? (type? datatype concrete-type-of-els)))))) (defn zeros "Create a new column filled wth `n-zeros`." @@ -38,3 +42,5 @@ "Creates a new column filled with `n-ones`" [n-ones] (column (dtype/const-reader 1 n-ones))) + + diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index b7f4c92..92c3142 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -1,5 +1,5 @@ (ns tablecloth.column.api.column-test - (:require [tablecloth.column.api.column :refer [column zeros ones typeof?]] + (:require [tablecloth.column.api.column :refer [column zeros ones typeof? typeof]] [midje.sweet :refer [fact =>]])) (fact "`column` returns a column" @@ -22,12 +22,33 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) +;; (fact "`typeof` returns the type of the elements (not the concrete type)" +;; (typeof (column [1 2 3])) => :integer +;; (typeof (column [true false])) => :boolean +;; (typeof (column [:a :b :c])) => :keyworkd +;; ) + (fact "we can check the type of a column's elements with `typeof?`" + (typeof? (column [1 2 3]) :integer) => true + (typeof? (column [1 2 3]) :textual) => false + (typeof? (column [1.0 2.0 3.0]) :numerical) => true + (typeof? (column [1.0 2.0 3.0]) :logical) => false + (typeof? (column ["a" "b" "c"]) :textual) => true + (typeof? (column ["a" "b" "c"]) :numerical) => false + (typeof? (column [true false true]) :logical) => true) + +(fact "we can check the concrete type of a column's elements with `typeof?`" (typeof? (column [1 2 3]) :int64) => true - (typeof? (column [true false]) :boolean) => true) + (typeof? (column [1 2 3]) :int32) => false) (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) (fact "`ones` returns a column filled with ones" (ones 3) => [1 1 1]) + +(comment + (typeof (column [1 2 3])) + (typeof? (column [1 2 3]) :integer) + + ) From ab54530148d00d8d0f03545e89b17de917fb331f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 13:28:20 -0700 Subject: [PATCH 04/69] Add column dev branch to pr workflow --- .github/workflows/prs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/prs.yml b/.github/workflows/prs.yml index e9fa913..d6e9b06 100644 --- a/.github/workflows/prs.yml +++ b/.github/workflows/prs.yml @@ -4,6 +4,7 @@ on: pull_request: branches: - master + - ethan/column-api-dev-branch-1 jobs: run-tests: From 6ee56c1ac6ffbf3cf9c1eb7d237494f658e8b739 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 14:00:11 -0700 Subject: [PATCH 05/69] Add tests for typeof --- test/tablecloth/column/api/column_test.clj | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 92c3142..e048166 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -22,11 +22,11 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) -;; (fact "`typeof` returns the type of the elements (not the concrete type)" -;; (typeof (column [1 2 3])) => :integer -;; (typeof (column [true false])) => :boolean -;; (typeof (column [:a :b :c])) => :keyworkd -;; ) +(fact "`typeof` returns the type of the elements (not the concrete type)" + (typeof (column [1 2 3])) => #{:integer :numerical} + (typeof (column ["a" "b" "c"])) => #{:string :textual} + (typeof (column [true false])) => #{:boolean :logical} + ) (fact "we can check the type of a column's elements with `typeof?`" (typeof? (column [1 2 3]) :integer) => true @@ -46,9 +46,3 @@ (fact "`ones` returns a column filled with ones" (ones 3) => [1 1 1]) - -(comment - (typeof (column [1 2 3])) - (typeof? (column [1 2 3]) :integer) - - ) From 36200beac2726dd8b709ff09dda0096809acb965 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 19 Aug 2022 14:01:26 -0700 Subject: [PATCH 06/69] Fix tests for typeof --- test/tablecloth/column/api/column_test.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index e048166..ce8c5a5 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -24,8 +24,8 @@ (fact "`typeof` returns the type of the elements (not the concrete type)" (typeof (column [1 2 3])) => #{:integer :numerical} - (typeof (column ["a" "b" "c"])) => #{:string :textual} - (typeof (column [true false])) => #{:boolean :logical} + (typeof (column ["a" "b" "c"])) => #{:textual} + (typeof (column [true false])) => #{:logical} ) (fact "we can check the type of a column's elements with `typeof?`" From 170519d77e6dbd712770674851ca300a5b4d3df9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 15 Sep 2022 21:04:43 -0400 Subject: [PATCH 07/69] Return the concrete type from `typeof` --- src/tablecloth/column/api/column.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index a7ba11c..4bcbb46 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -20,9 +20,9 @@ (col/is-column? item)) (defn typeof - "Describes the type(s) of the elements within the column `col`." + "Returns the concrete type of the elements within the column `col`." [col] - (->general-types (dtype/elemwise-datatype col))) + (dtype/elemwise-datatype col)) (defn typeof? "True|false the column's elements are of the provided type `datatype`. From 59c2755395c125dd48b3458213478918eb05e2ae Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 15 Sep 2022 21:42:01 -0400 Subject: [PATCH 08/69] Simplify `concrete-types` fn --- src/tablecloth/api/utils.clj | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 6ed5b9c..c56cb1b 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -93,10 +93,8 @@ (defn concrete-types "Returns the set of concrete types e.g. (:int32, :float32, etc)" [] - (reduce (fn [all-types val] - (into all-types val)) - #{} - (vals type-sets))) + (apply clojure.set/union (vals type-sets))) + (defn concrete-type? "Returns true if `datatype` is a concrete datatype (e.g. :int32)." From d4895d99733017160891cd4572e805d3682ec02e Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 28 Sep 2022 12:44:44 -0400 Subject: [PATCH 09/69] Optimize ->general-types by using static lookup --- src/tablecloth/api/utils.clj | 40 ++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index c56cb1b..b77a15b 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -67,6 +67,39 @@ :textual #{:text :string} :logical #{:boolean}}) +(def ^:private general-types-lookup + {:int32 #{:integer :numerical}, + :int16 #{:integer :numerical}, + :float32 #{:float :numerical}, + :packed-local-time #{:datetime}, + :local-date-time #{:datetime}, + :packed-zoned-date-time #{:datetime}, + :float64 #{:float :numerical}, + :long #{:integer :numerical}, + :double #{:float :numerical}, + :short #{:integer :numerical}, + :packed-local-date-time #{:datetime}, + :zoned-date-time #{:datetime}, + :instant #{:datetime}, + :packed-local-date #{:datetime}, + :int #{:integer :numerical}, + :int64 #{:integer :numerical}, + :local-time #{:datetime}, + :packed-duration #{:datetime}, + :uint64 #{:integer :numerical}, + :float #{:float :numerical}, + :duration #{:datetime}, + :string #{:textual}, + :uint16 #{:integer :numerical}, + :int8 #{:integer :numerical}, + :uint32 #{:integer :numerical}, + :byte #{:integer :numerical}, + :local-date #{:datetime}, + :boolean #{:logical}, + :packed-instant #{:datetime}, + :text #{:textual}, + :uint8 #{:integer :numerical}}) + (defn type? ([general-type] (fn [datatype] @@ -78,12 +111,7 @@ "Given a concrete `datatype` (e.g. `:int32`), returns the general type (e.g. `:integer`)." [datatype] - (let [general-types - (map (fn [general-type] - (let [set-of-concrete-types (get type-sets general-type)] - (when (set-of-concrete-types datatype) general-type))) - (keys type-sets))] - (set (remove nil? general-types)))) + (general-types-lookup datatype)) (defn types "Returns the set of general types e.g. (:integer, :textual, etc)." From d93e34fc3449f6a2695a8c7225ddf10e51922262 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 28 Sep 2022 12:45:26 -0400 Subject: [PATCH 10/69] Adjust fns listing types * We decided that the default meaning of type points to the "concrete" type, and not the general type. * So `types` now returns the set of concrete types and `general-types` returns the general types. --- src/tablecloth/api/utils.clj | 11 +++++------ src/tablecloth/column/api.clj | 9 ++++++++- src/tablecloth/column/api/api_template.clj | 1 + src/tablecloth/column/api/column.clj | 2 +- test/tablecloth/column/api/column_test.clj | 21 +++++++++++---------- 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index b77a15b..043b3ef 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -114,15 +114,14 @@ (general-types-lookup datatype)) (defn types - "Returns the set of general types e.g. (:integer, :textual, etc)." - [] - (set (keys type-sets))) - -(defn concrete-types - "Returns the set of concrete types e.g. (:int32, :float32, etc)" + "Returns the set of known concrete types, e.g. :int64 as opposed to :integer." [] (apply clojure.set/union (vals type-sets))) +(defn general-types + "Returns the set of general types, e.g. :numerical as opposed to :int64." + [] + (keys type-sets)) (defn concrete-type? "Returns true if `datatype` is a concrete datatype (e.g. :int32)." diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 53d6a8e..7a5d6a7 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -27,11 +27,18 @@ (defn typeof - "Returns the datatype fo the elements within the column `col`." + "Returns the concrete type of the elements within the column `col`." ([col] (tablecloth.column.api.column/typeof col))) +(defn typeof? + "True|false the column's elements are of the provided type `datatype`. + Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." + ([col datatype] + (tablecloth.column.api.column/typeof? col datatype))) + + (defn zeros "Create a new column filled wth `n-zeros`." ([n-zeros] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 4ceedbd..b5b21e3 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -6,6 +6,7 @@ column column? typeof + typeof? zeros ones ) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 4bcbb46..86c91ae 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -26,7 +26,7 @@ (defn typeof? "True|false the column's elements are of the provided type `datatype`. - Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." + Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." [col datatype] (let [concrete-type-of-els (dtype/elemwise-datatype col)] (if (concrete-type? datatype) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index ce8c5a5..e5ff18c 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -22,13 +22,18 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) -(fact "`typeof` returns the type of the elements (not the concrete type)" - (typeof (column [1 2 3])) => #{:integer :numerical} - (typeof (column ["a" "b" "c"])) => #{:textual} - (typeof (column [true false])) => #{:logical} - ) +(fact "`typeof` returns the concrete type of the elements" + (typeof (column [1 2 3])) => :int64 + (typeof (column ["a" "b" "c"])) => :string + (typeof (column [true false])) => :boolean) -(fact "we can check the type of a column's elements with `typeof?`" +(fact "we can check the concrete type of a column's elements with `typeof`" + (typeof? (column [1 2 3]) :int64) => true + (typeof? (column ["a" "b" "c"]) :string) => true + (typeof? (column [true false true]) :boolean) + (typeof? (column [1.0 2.0 3.0]) :float64) => true) + +(fact "we can check the general type of a column's elements with `typeof?`" (typeof? (column [1 2 3]) :integer) => true (typeof? (column [1 2 3]) :textual) => false (typeof? (column [1.0 2.0 3.0]) :numerical) => true @@ -37,10 +42,6 @@ (typeof? (column ["a" "b" "c"]) :numerical) => false (typeof? (column [true false true]) :logical) => true) -(fact "we can check the concrete type of a column's elements with `typeof?`" - (typeof? (column [1 2 3]) :int64) => true - (typeof? (column [1 2 3]) :int32) => false) - (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) From 5061d8c011072aa3af4f8436dbd7debbae1986d9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:30:15 -0400 Subject: [PATCH 11/69] Revert "Adjust fns listing types" This reverts commit d93e34fc3449f6a2695a8c7225ddf10e51922262. --- src/tablecloth/api/utils.clj | 11 ++++++----- src/tablecloth/column/api.clj | 9 +-------- src/tablecloth/column/api/api_template.clj | 1 - src/tablecloth/column/api/column.clj | 2 +- test/tablecloth/column/api/column_test.clj | 21 ++++++++++----------- 5 files changed, 18 insertions(+), 26 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 043b3ef..b77a15b 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -114,14 +114,15 @@ (general-types-lookup datatype)) (defn types - "Returns the set of known concrete types, e.g. :int64 as opposed to :integer." + "Returns the set of general types e.g. (:integer, :textual, etc)." [] - (apply clojure.set/union (vals type-sets))) + (set (keys type-sets))) -(defn general-types - "Returns the set of general types, e.g. :numerical as opposed to :int64." +(defn concrete-types + "Returns the set of concrete types e.g. (:int32, :float32, etc)" [] - (keys type-sets)) + (apply clojure.set/union (vals type-sets))) + (defn concrete-type? "Returns true if `datatype` is a concrete datatype (e.g. :int32)." diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 7a5d6a7..53d6a8e 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -27,18 +27,11 @@ (defn typeof - "Returns the concrete type of the elements within the column `col`." + "Returns the datatype fo the elements within the column `col`." ([col] (tablecloth.column.api.column/typeof col))) -(defn typeof? - "True|false the column's elements are of the provided type `datatype`. - Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." - ([col datatype] - (tablecloth.column.api.column/typeof? col datatype))) - - (defn zeros "Create a new column filled wth `n-zeros`." ([n-zeros] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index b5b21e3..4ceedbd 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -6,7 +6,6 @@ column column? typeof - typeof? zeros ones ) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 86c91ae..4bcbb46 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -26,7 +26,7 @@ (defn typeof? "True|false the column's elements are of the provided type `datatype`. - Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." + Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." [col datatype] (let [concrete-type-of-els (dtype/elemwise-datatype col)] (if (concrete-type? datatype) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index e5ff18c..ce8c5a5 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -22,18 +22,13 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) -(fact "`typeof` returns the concrete type of the elements" - (typeof (column [1 2 3])) => :int64 - (typeof (column ["a" "b" "c"])) => :string - (typeof (column [true false])) => :boolean) +(fact "`typeof` returns the type of the elements (not the concrete type)" + (typeof (column [1 2 3])) => #{:integer :numerical} + (typeof (column ["a" "b" "c"])) => #{:textual} + (typeof (column [true false])) => #{:logical} + ) -(fact "we can check the concrete type of a column's elements with `typeof`" - (typeof? (column [1 2 3]) :int64) => true - (typeof? (column ["a" "b" "c"]) :string) => true - (typeof? (column [true false true]) :boolean) - (typeof? (column [1.0 2.0 3.0]) :float64) => true) - -(fact "we can check the general type of a column's elements with `typeof?`" +(fact "we can check the type of a column's elements with `typeof?`" (typeof? (column [1 2 3]) :integer) => true (typeof? (column [1 2 3]) :textual) => false (typeof? (column [1.0 2.0 3.0]) :numerical) => true @@ -42,6 +37,10 @@ (typeof? (column ["a" "b" "c"]) :numerical) => false (typeof? (column [true false true]) :logical) => true) +(fact "we can check the concrete type of a column's elements with `typeof?`" + (typeof? (column [1 2 3]) :int64) => true + (typeof? (column [1 2 3]) :int32) => false) + (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) From e399489f95debc70e94e6be201353be6e48bd3d6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:41:03 -0400 Subject: [PATCH 12/69] Fix `typeof` test to test for concerete types --- test/tablecloth/column/api/column_test.clj | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index ce8c5a5..d747913 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -22,11 +22,10 @@ (column) (tech.v3.datatype/elemwise-datatype)) => :object) -(fact "`typeof` returns the type of the elements (not the concrete type)" - (typeof (column [1 2 3])) => #{:integer :numerical} - (typeof (column ["a" "b" "c"])) => #{:textual} - (typeof (column [true false])) => #{:logical} - ) +(fact "`typeof` returns the concrete type of the elements" + (typeof (column [1 2 3])) => :int64 + (typeof (column ["a" "b" "c"])) => :string + (typeof (column [true false])) => :boolean) (fact "we can check the type of a column's elements with `typeof?`" (typeof? (column [1 2 3]) :integer) => true From 7ce2ee67cfa662840e54af56ba68fe79f8a9e885 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:45:52 -0400 Subject: [PATCH 13/69] Reorganize `typeof?` tests --- test/tablecloth/column/api/column_test.clj | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index d747913..a6a3b3e 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -27,7 +27,12 @@ (typeof (column ["a" "b" "c"])) => :string (typeof (column [true false])) => :boolean) -(fact "we can check the type of a column's elements with `typeof?`" +(fact "`typeof?` can check the concerete type of column elements" + (typeof? (column [1 2 3]) :int64) => true + (typeof? (column [1 2 3]) :int32) => false + (typeof? (column ["a" "b" "c"]) :string) => true) + +(fact "`typeof?` can check the general type of column elements" (typeof? (column [1 2 3]) :integer) => true (typeof? (column [1 2 3]) :textual) => false (typeof? (column [1.0 2.0 3.0]) :numerical) => true @@ -36,10 +41,6 @@ (typeof? (column ["a" "b" "c"]) :numerical) => false (typeof? (column [true false true]) :logical) => true) -(fact "we can check the concrete type of a column's elements with `typeof?`" - (typeof? (column [1 2 3]) :int64) => true - (typeof? (column [1 2 3]) :int32) => false) - (fact "`zeros` returns a column filled with zeros" (zeros 3) => [0 0 0]) From 7c0b9495addff0b09481658d4072ff9804bced00 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:47:50 -0400 Subject: [PATCH 14/69] Reword docstring for `typeof?` slightly --- src/tablecloth/column/api/column.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api/column.clj b/src/tablecloth/column/api/column.clj index 4bcbb46..4617482 100644 --- a/src/tablecloth/column/api/column.clj +++ b/src/tablecloth/column/api/column.clj @@ -25,8 +25,8 @@ (dtype/elemwise-datatype col)) (defn typeof? - "True|false the column's elements are of the provided type `datatype`. - Works with concrete (e.g. :int32) or general types (:numerical, :textual, etc)." + "True|false the column's elements are of the provided type `datatype`. Can check + both concrete types (e.g. :int32) or general types (:numerical, :textual, etc)." [col datatype] (let [concrete-type-of-els (dtype/elemwise-datatype col)] (if (concrete-type? datatype) From 82ff58b313e8136a5b6a61c512c3fd1580f1ef62 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:50:14 -0400 Subject: [PATCH 15/69] Update column api template and add missing `typeof?` --- src/tablecloth/column/api.clj | 9 ++++++++- src/tablecloth/column/api/api_template.clj | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 53d6a8e..78597cb 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -27,11 +27,18 @@ (defn typeof - "Returns the datatype fo the elements within the column `col`." + "Returns the concrete type of the elements within the column `col`." ([col] (tablecloth.column.api.column/typeof col))) +(defn typeof? + "True|false the column's elements are of the provided type `datatype`. + Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." + ([col datatype] + (tablecloth.column.api.column/typeof? col datatype))) + + (defn zeros "Create a new column filled wth `n-zeros`." ([n-zeros] diff --git a/src/tablecloth/column/api/api_template.clj b/src/tablecloth/column/api/api_template.clj index 4ceedbd..8dd6c33 100644 --- a/src/tablecloth/column/api/api_template.clj +++ b/src/tablecloth/column/api/api_template.clj @@ -6,9 +6,9 @@ column column? typeof + typeof? zeros - ones - ) + ones) (comment ;; Use this to generate the column api From e1cfd3c81264c4a0b266e92d7bf2d77f80c6d8d4 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:54:02 -0400 Subject: [PATCH 16/69] Add commment to `general-types-lookup` --- src/tablecloth/api/utils.clj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index b77a15b..5cf9243 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -67,6 +67,9 @@ :textual #{:text :string} :logical #{:boolean}}) +;; This lookup is hardcoded as an optimization. Downside: this +;; lookup must be kept up to date. However, so long as `type-sets` +;; is up-to-date it can be generated from that set. (def ^:private general-types-lookup {:int32 #{:integer :numerical}, :int16 #{:integer :numerical}, From 947c85e3ef89189ef0e5558b49d26bb1e179aedc Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:56:07 -0400 Subject: [PATCH 17/69] Improve `->general-types` docstring --- src/tablecloth/api/utils.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 5cf9243..22f0b78 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -111,8 +111,8 @@ ((type-sets general-type) datatype))) (defn ->general-types - "Given a concrete `datatype` (e.g. `:int32`), - returns the general type (e.g. `:integer`)." + "Given a concrete `datatype` (e.g. `:int32`), returns the general + set of general types (e.g. `#{:integer numerical}`)." [datatype] (general-types-lookup datatype)) From 37b761848c923e1ed24bc1f845a844001c481b77 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 10:58:12 -0400 Subject: [PATCH 18/69] Add `general-types` fn that returns sets of general types --- src/tablecloth/api/utils.clj | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 22f0b78..871c084 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -126,6 +126,10 @@ [] (apply clojure.set/union (vals type-sets))) +(defn general-types + "Returns the set of general types e.g. (:integer, :logical, etc)" + [] + (vals type-sets)) (defn concrete-type? "Returns true if `datatype` is a concrete datatype (e.g. :int32)." From 8b209e3ae481b7b2fd0acf69dbb7d81fe9662788 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 3 Oct 2022 11:07:05 -0400 Subject: [PATCH 19/69] Adjust util `types` fn to return concrete types --- src/tablecloth/api/utils.clj | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/tablecloth/api/utils.clj b/src/tablecloth/api/utils.clj index 871c084..b7d228b 100644 --- a/src/tablecloth/api/utils.clj +++ b/src/tablecloth/api/utils.clj @@ -117,11 +117,6 @@ (general-types-lookup datatype)) (defn types - "Returns the set of general types e.g. (:integer, :textual, etc)." - [] - (set (keys type-sets))) - -(defn concrete-types "Returns the set of concrete types e.g. (:int32, :float32, etc)" [] (apply clojure.set/union (vals type-sets))) @@ -134,7 +129,7 @@ (defn concrete-type? "Returns true if `datatype` is a concrete datatype (e.g. :int32)." [datatype] - (not (nil? ((concrete-types) datatype)))) + (not (nil? ((types) datatype)))) (defn- prepare-datatype-set [datatype-columns-selector] From 1b23e81cf01618fe4cee988847785743033676c6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 11 Nov 2022 12:13:56 -0500 Subject: [PATCH 20/69] Save changes to column api.clj --- src/tablecloth/column/api.clj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api.clj b/src/tablecloth/column/api.clj index 78597cb..f81cf0a 100644 --- a/src/tablecloth/column/api.clj +++ b/src/tablecloth/column/api.clj @@ -33,8 +33,8 @@ (defn typeof? - "True|false the column's elements are of the provided type `datatype`. - Works with concrete types (e.g. :int32) or general types (e.g. :numerical)." + "True|false the column's elements are of the provided type `datatype`. Can check + both concrete types (e.g. :int32) or general types (:numerical, :textual, etc)." ([col datatype] (tablecloth.column.api.column/typeof? col datatype))) From 6b3eb1b4c9ecc87fe05e1c688d08434eac87599b Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 11 Nov 2022 12:14:11 -0500 Subject: [PATCH 21/69] Save ongoing experiments with lifting --- src/tablecloth/column/api/operators.clj | 85 +++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 src/tablecloth/column/api/operators.clj diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj new file mode 100644 index 0000000..73475b3 --- /dev/null +++ b/src/tablecloth/column/api/operators.clj @@ -0,0 +1,85 @@ +(ns tablecloth.column.api.operators + (:require [tech.v3.datatype.export-symbols :as exporter] + [tech.v3.datatype.argtypes :refer [arg-type]] + [tablecloth.column.api :refer [column]] + [tech.v3.datatype.functional :as fun])) + +(defn get-lifted [fn-sym fn-meta] + (let [fn (symbol "fn") + let (symbol "let") + defn (symbol "defn") + args (:arglists fn-meta) + docstring (:doc fn-meta)] + `(~defn ~(symbol (name fn-sym)) + ~@(for [arg args + :let [a (filter (partial not= '&) arg)]] + (list + arg + `(~let [original-result# ~(if (> (count a) 2) + `(apply ~fn-sym ~@a) + `(~fn-sym ~@a))] + (if (-> original-result# arg-type (= :reader)) + (column original-result#) + original-result#))))))) + + + +(get-lifted (symbol "tech.v3.datatype.functional" "+") (meta (get fun-mappings '+))) + + +(clojure.pprint/pp) + + +(comment + ;; some early attempts at lifting with macro + (defmacro lift-operator [f m] + `(defn ~(symbol (name f)) {:doc ~(:doc m) :orig (symbol (var ~f))} [a#] + (let [result# (apply ~f [a#])] + (if (= (tech.v3.datatype/datatype result#) :buffer) + (tablecloth.column.api/column result#) + result#)))) + + (defmacro lift-operator-2 [f m] + `(defn ~(symbol (name f)) {:doc ~(:doc m) :origin (symbol (var ~f))} + ~@(for [arg args + :let [narg (mapv #(if (map? %) 'options %) arg) + [a & r] (split-with (partial not= '&) narg)]] + (list narg `(fn [ds#]))))) + + ;; example of pprinting a function as a method for code gen + (let [fun-mappings (ns-publics 'tech.v3.datatype.functional) + fn-name (name 'sum) + op (get fun-mappings (symbol fn-name)) + opsym (symbol (format "dfn/%s" fn-name)) + op-meta (meta op) + op-sym (vary-meta (symbol fn-name) merge op-meta) + defn (symbol "defn") + let (symbol "let")] + (clojure.pprint/pprint + `(~defn ~op-sym ~(:doc op-meta) + [~'col] + (~let [original-result# (~opsym ~'col)] + original-result#)))) + + + ;; building a map of the functions in tech.v3.datatype.functional + ;; by arg patterns. + (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) + + (def fns-by-args (reduce (fn [m [fnsym fnvar]] + (let [args (-> fnvar meta :arglists str)] + (assoc m args (merge (if (get m args) + (merge (get m args) fnsym) + (merge [] fnsym)))))) + {} + fun-mappings)) + + fns-by-args + + + (sort (fn [[_ fns1] [_ fns2]] + (compare (count fns1) (count fns2))) + fns-by-args) + + ) + From e0cfdf93262337e75fa6504ee3911cac5b4a444b Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 14 Nov 2022 11:50:49 -0500 Subject: [PATCH 22/69] Save ongoing work on lifting --- src/tablecloth/column/api/operators.clj | 34 +++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 73475b3..398eae8 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -4,7 +4,7 @@ [tablecloth.column.api :refer [column]] [tech.v3.datatype.functional :as fun])) -(defn get-lifted [fn-sym fn-meta] +(defn lift-ops-1 [fn-sym fn-meta] (let [fn (symbol "fn") let (symbol "let") defn (symbol "defn") @@ -23,8 +23,38 @@ original-result#))))))) +(def serialized-lift-fn-lookup + {['+ '- '/] lift-ops-1}) -(get-lifted (symbol "tech.v3.datatype.functional" "+") (meta (get fun-mappings '+))) + +(defn deserialize-lift-fn-lookup [] + (reduce (fn [m [symlist liftfn]] + (loop [syms symlist + result m] + (if (empty? syms) + result + (recur (rest syms) (assoc result (first syms) liftfn))))) + {} + serialized-lift-fn-lookup)) + + +(deserialize-lift-fn-lookup) + + + +(defn do-lift [] + (let [lift-fn-lookup (deserialize-lift-fn-lookup) + fun-mappings (ns-publics `tech.v3.datatype.functional)] + (map (fn [[fnsym lift-fn]] + (lift-fn (symbol "tech.v3.datatype.functional" (name fnsym)) + (meta (get fun-mappings fnsym)))) + lift-fn-lookup))) + + +(do-lift) + + +;; (get-lifted (symbol "tech.v3.datatype.functional" "+") (meta (get fun-mappings '+))) (clojure.pprint/pp) From 35892c6d794e30265873df48bbbafacd65f90ba5 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 14 Nov 2022 13:42:11 -0500 Subject: [PATCH 23/69] Adjust lift-ops-1 to handle any number of args with rest arg --- src/tablecloth/column/api/operators.clj | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 398eae8..f87d317 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -4,6 +4,7 @@ [tablecloth.column.api :refer [column]] [tech.v3.datatype.functional :as fun])) +;; this is for fns taking [[x] [x y] [x y & args]] (defn lift-ops-1 [fn-sym fn-meta] (let [fn (symbol "fn") let (symbol "let") @@ -12,19 +13,24 @@ docstring (:doc fn-meta)] `(~defn ~(symbol (name fn-sym)) ~@(for [arg args - :let [a (filter (partial not= '&) arg)]] + :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] (list arg - `(~let [original-result# ~(if (> (count a) 2) - `(apply ~fn-sym ~@a) - `(~fn-sym ~@a))] + `(~let [original-result# ~(if (empty? rest-arg-expr) + `(~fn-sym ~@explicit-args) + `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] (if (-> original-result# arg-type (= :reader)) (column original-result#) original-result#))))))) + (def serialized-lift-fn-lookup - {['+ '- '/] lift-ops-1}) + {['+ '- '/ '> '>= '< '<=] lift-ops-1}) + + +(lift-ops-1 (symbol "tech.v3.datatype.functional" (name '>)) + (meta (get fun-mappings '>))) (defn deserialize-lift-fn-lookup [] @@ -60,6 +66,8 @@ (clojure.pprint/pp) + + (comment ;; some early attempts at lifting with macro (defmacro lift-operator [f m] From 6bdd90ab8d1c4223c8279ac0275f3145600780e2 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 17 Nov 2022 11:31:18 -0500 Subject: [PATCH 24/69] Working `rearrange-args` fn --- src/tablecloth/column/api/operators.clj | 44 +++++++++++++++++++------ 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index f87d317..710815f 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -4,6 +4,27 @@ [tablecloth.column.api :refer [column]] [tech.v3.datatype.functional :as fun])) +(defn return-scalar-or-column [item] + (let [item-type (arg-type item)] + (if (= item-type :reader) + (column item) + item))) + +(defn rearrange-args [fn-sym fn-meta new-args & new-args-lookup] + (let [defn (symbol "defn") + let (symbol "let") + original-args (:arglists fn-meta) + ensure-list #(if (vector? %) % (list %)) + sort-by-arg-count (fn [argslist] + (sort #(< (count %1) (count %2)) argslist))] + `(~defn ~(symbol (name fn-sym)) + ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) + (sort-by-arg-count original-args))] + (list + new-arg + `(~let [original-result# (~fn-sym ~@original-arg)] + (return-scalar-or-column original-result#))))))) + ;; this is for fns taking [[x] [x y] [x y & args]] (defn lift-ops-1 [fn-sym fn-meta] (let [fn (symbol "fn") @@ -24,13 +45,22 @@ original-result#))))))) - (def serialized-lift-fn-lookup - {['+ '- '/ '> '>= '< '<=] lift-ops-1}) + {['+ '- '/ '> '>= '< '<= 'log] lift-ops-1 + ['percentiles] (fn [fn-sym fn-meta] + (rearrange-args fn-sym fn-meta + '([data percentages] [data percentages options]) + {:x 'data}))}) + + +;; (rearrange-args (symbol "tech.v3.datatype.functional" (name 'percentiles)) +;; (['percentages 'options 'data] ['percentages 'data]) +;; (['data 'percentages] ['data 'percentages 'options])) + -(lift-ops-1 (symbol "tech.v3.datatype.functional" (name '>)) - (meta (get fun-mappings '>))) +;; (lift-ops-1 (symbol "tech.v3.datatype.functional" (name 'log)) +;; (meta (get fun-mappings 'log))) (defn deserialize-lift-fn-lookup [] @@ -43,11 +73,6 @@ {} serialized-lift-fn-lookup)) - -(deserialize-lift-fn-lookup) - - - (defn do-lift [] (let [lift-fn-lookup (deserialize-lift-fn-lookup) fun-mappings (ns-publics `tech.v3.datatype.functional)] @@ -62,7 +87,6 @@ ;; (get-lifted (symbol "tech.v3.datatype.functional" "+") (meta (get fun-mappings '+))) - (clojure.pprint/pp) From 34690434150982e3e9488751c1e5168eb6298421 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 22 Nov 2022 09:33:14 -0500 Subject: [PATCH 25/69] Save work actually writing lifted fns --- src/tablecloth/column/api/operators.clj | 108 +++++++++++++++++------- 1 file changed, 76 insertions(+), 32 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 710815f..25e469b 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,8 +1,10 @@ (ns tablecloth.column.api.operators + (:import [java.io Writer]) (:require [tech.v3.datatype.export-symbols :as exporter] [tech.v3.datatype.argtypes :refer [arg-type]] [tablecloth.column.api :refer [column]] - [tech.v3.datatype.functional :as fun])) + [tech.v3.datatype.functional :as fun] + [clojure.java.io :as io])) (defn return-scalar-or-column [item] (let [item-type (arg-type item)] @@ -10,9 +12,11 @@ (column item) item))) -(defn rearrange-args [fn-sym fn-meta new-args & new-args-lookup] - (let [defn (symbol "defn") - let (symbol "let") +(defn rearrange-args + ([fn-sym fn-meta new-args] + (rearrange-args fn-sym fn-meta new-args nil)) + ([fn-sym fn-meta new-args {:keys [new-args-lookup]}] + (let [defn (symbol "defn") let (symbol "let") original-args (:arglists fn-meta) ensure-list #(if (vector? %) % (list %)) sort-by-arg-count (fn [argslist] @@ -22,8 +26,22 @@ (sort-by-arg-count original-args))] (list new-arg - `(~let [original-result# (~fn-sym ~@original-arg)] - (return-scalar-or-column original-result#))))))) + `(~let [original-result# (~fn-sym ~@(if (nil? new-args-lookup) + original-arg + (for [oldarg original-arg] + (get new-args-lookup oldarg))))] + (return-scalar-or-column original-result#)))))))) + + +;; (rearrange-args (symbol "tech.v3.datatype.functional" "percentiles") +;; (meta (get fun-mappings 'percentiles)) +;; '([data percentiles] [data percentiles options]) +;; {:new-args-lookup {'percentages 'percentiles, 'data 'data, 'options 'options}}) + + +;; (clojure.pprint/pp) + + ;; this is for fns taking [[x] [x y] [x y & args]] (defn lift-ops-1 [fn-sym fn-meta] @@ -46,21 +64,21 @@ (def serialized-lift-fn-lookup - {['+ '- '/ '> '>= '< '<= 'log] lift-ops-1 + {['+ + '- + '/ + '> + '>= + '< + '<= + ] lift-ops-1 ['percentiles] (fn [fn-sym fn-meta] - (rearrange-args fn-sym fn-meta - '([data percentages] [data percentages options]) - {:x 'data}))}) - - -;; (rearrange-args (symbol "tech.v3.datatype.functional" (name 'percentiles)) -;; (['percentages 'options 'data] ['percentages 'data]) -;; (['data 'percentages] ['data 'percentages 'options])) - - - -;; (lift-ops-1 (symbol "tech.v3.datatype.functional" (name 'log)) -;; (meta (get fun-mappings 'log))) + (rearrange-args + fn-sym fn-meta + '([col percentiles] [col percentiles options]) + {:new-args-lookup {'data 'col, + 'percentages 'percentiles, + 'options 'options}}))}) (defn deserialize-lift-fn-lookup [] @@ -73,21 +91,47 @@ {} serialized-lift-fn-lookup)) -(defn do-lift [] - (let [lift-fn-lookup (deserialize-lift-fn-lookup) - fun-mappings (ns-publics `tech.v3.datatype.functional)] - (map (fn [[fnsym lift-fn]] - (lift-fn (symbol "tech.v3.datatype.functional" (name fnsym)) - (meta (get fun-mappings fnsym)))) - lift-fn-lookup))) - - -(do-lift) -;; (get-lifted (symbol "tech.v3.datatype.functional" "+") (meta (get fun-mappings '+))) +(defn- writeln! + ^Writer [^Writer writer strdata & strdatas] + (.append writer (str strdata)) + (doseq [data strdatas] + (when data + (.append writer (str data)))) + (.append writer "\n") + writer) + +(defn- write-empty-ln! ^Writer [^Writer writer] + (writeln! "" writer) + writer) + +(defn get-lifted [] +(let [lift-fn-lookup (deserialize-lift-fn-lookup) + fun-mappings (ns-publics `tech.v3.datatype.functional)] + (map (fn [[fnsym lift-fn]] + (lift-fn (symbol "tech.v3.datatype.functional" (name fnsym)) + (meta (get fun-mappings fnsym)))) + lift-fn-lookup))) + +(defn get-ns-header [target-ns source-ns] + (let [ns (symbol "ns")] + `(~ns ~target-ns + (:require [~source-ns])))) + +(defn do-lift [target-ns source-ns filename] + (with-open [writer (io/writer filename)] + (doseq [f (get-lifted)] + (clojure.pprint/pprint (get-ns-header target-ns source-ns) writer) + (write-empty-ln!) + (clojure.pprint/pprint f writer) + (write-empty-ln!)))) + +(comment + (do-lift 'tablecloth.column.lifted-operators + 'tech.v3.datatype.functional + "test.clj")) -(clojure.pprint/pp) From ceb66a23a34ff319a034268ab091bd6d22ea8ec7 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 23 Nov 2022 11:15:55 -0500 Subject: [PATCH 26/69] Saving first attempt to writer operators --- .../column/api/lifted_operators.clj | 222 ++++++++++++++++++ src/tablecloth/column/api/operators.clj | 28 ++- 2 files changed, 238 insertions(+), 12 deletions(-) create mode 100644 src/tablecloth/column/api/lifted_operators.clj diff --git a/src/tablecloth/column/api/lifted_operators.clj b/src/tablecloth/column/api/lifted_operators.clj new file mode 100644 index 0000000..f0b55ad --- /dev/null +++ b/src/tablecloth/column/api/lifted_operators.clj @@ -0,0 +1,222 @@ +(ns + tablecloth.column.api.lifted-operators + (:require [tech.v3.datatype.functional]) + (:refer-clojure :exclude [+ - / > >= < <=])) + +(defn + + + ([x] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional/+ x)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional/+ x y)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y & args] + (let + [original-result__41413__auto__ + (clojure.core/apply tech.v3.datatype.functional/+ x y args)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + - + ([x] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional/- x)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional/- x y)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y & args] + (let + [original-result__41413__auto__ + (clojure.core/apply tech.v3.datatype.functional/- x y args)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + / + ([x] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional// x)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y] + (let + [original-result__41413__auto__ (tech.v3.datatype.functional// x y)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([x y & args] + (let + [original-result__41413__auto__ + (clojure.core/apply tech.v3.datatype.functional// x y args)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + > + ([lhs mid rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/> lhs mid rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([lhs rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/> lhs rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + >= + ([lhs mid rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/>= lhs mid rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([lhs rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/>= lhs rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + < + ([lhs mid rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/< lhs mid rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([lhs rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/< lhs rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + <= + ([lhs mid rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/<= lhs mid rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__))) + ([lhs rhs] + (let + [original-result__41413__auto__ + (tech.v3.datatype.functional/<= lhs rhs)] + (if + (clojure.core/-> + original-result__41413__auto__ + tech.v3.datatype.argtypes/arg-type + (clojure.core/= :reader)) + (tablecloth.column.api/column original-result__41413__auto__) + original-result__41413__auto__)))) + +(defn + percentiles + ([col percentiles] + (let + [original-result__41298__auto__ + (tech.v3.datatype.functional/percentiles percentiles col)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__41298__auto__))) + ([col percentiles options] + (let + [original-result__41298__auto__ + (tech.v3.datatype.functional/percentiles percentiles options col)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__41298__auto__)))) + diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 25e469b..202d460 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -103,7 +103,11 @@ writer) (defn- write-empty-ln! ^Writer [^Writer writer] - (writeln! "" writer) + (writeln! writer "") + writer) + +(defn- write-pp ^Writer [^Writer writer item] + (clojure.pprint/pprint item writer) writer) (defn get-lifted [] @@ -117,23 +121,23 @@ (defn get-ns-header [target-ns source-ns] (let [ns (symbol "ns")] `(~ns ~target-ns - (:require [~source-ns])))) + (:require [~source-ns]) + (:refer-clojure :exclude ~['+ '- '/ '> '>= '< '<=])))) (defn do-lift [target-ns source-ns filename] - (with-open [writer (io/writer filename)] + (with-open [writer (io/writer filename :append false)] + (write-pp writer (get-ns-header target-ns source-ns)) + (write-empty-ln! writer) (doseq [f (get-lifted)] - (clojure.pprint/pprint (get-ns-header target-ns source-ns) writer) - (write-empty-ln!) - (clojure.pprint/pprint f writer) - (write-empty-ln!)))) + (-> writer + (write-pp f) + (write-empty-ln!))))) (comment - (do-lift 'tablecloth.column.lifted-operators + (do-lift 'tablecloth.column.api.lifted-operators 'tech.v3.datatype.functional - "test.clj")) - - - + "src/tablecloth/column/api/lifted_operators.clj") + ,) (comment From f46a3ba20c2cb809ea1caf96a686278c2c481ff9 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 23 Nov 2022 11:36:26 -0500 Subject: [PATCH 27/69] Add `percentiiles test --- .../column/api/lifted_operators_test.clj | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 test/tablecloth/column/api/lifted_operators_test.clj diff --git a/test/tablecloth/column/api/lifted_operators_test.clj b/test/tablecloth/column/api/lifted_operators_test.clj new file mode 100644 index 0000000..d8ee3de --- /dev/null +++ b/test/tablecloth/column/api/lifted_operators_test.clj @@ -0,0 +1,56 @@ +(ns tablecloth.column.api.lifted-operators-test + (:require [midje.sweet :refer [fact facts =>]] + [clojure.test :refer [deftest is]] + [tablecloth.column.api :refer [column column?]] + [tablecloth.column.api.lifted-operators :refer [+ - / > >= < <= percentiles] :as ops]) + (:refer-clojure :exclude [+ - / > >= < <=])) + +(def a (column [1.0 2.0 3.0 4.0])) +(def b (column [5 6 7 8])) +(def scalar-a 10) +(def sclar) + +(defn scalar? [item] + (= (tech.v3.datatype.argtypes/arg-type item) + :scalar)) + +(facts + "about +" + (let [a [1 2 3 4] + b [5 6 7 8]] + (+ a b) => column? + (+ 3 3) => scalar? + (+ a b) => [6 8 10 12])) + +(facts + "about -" + (let [a [1 2 3 4] + b [5 6 7 8]] + (- a b) => column? + (- 3 3) => scalar? + (- a b) => [-4 -4 -4 -4])) + +(facts + "about /" + (let [a [1.0 2.0 3.0 4.0] + b [5 6 7 8]] + (/ a b) => column? + (- 3 3) => scalar? + (/ a b) => [0.2 0.3333333333333333 0.42857142857142855 0.5])) + +(facts + "about >" + (let [a [1 2 3 4] + b [5 0 7 8]] + (> a b) => column? + (> 3 4) => boolean? + (> a b) => [false true false false])) + + +(facts + "about `percentiles" + (let [a (range 100)] + (ops/percentiles a [25 50 75]) => column? + (ops/percentiles a [25 50 75]) => [24.25 49.50 74.75])) + + From 64644d7b4efec6d8283d5473161e2a32db19b8f6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 23 Nov 2022 11:41:39 -0500 Subject: [PATCH 28/69] Adjust `rearrange-args to take new-args in option map --- .../column/api/lifted_operators.clj | 144 +++++++++--------- src/tablecloth/column/api/operators.clj | 10 +- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/tablecloth/column/api/lifted_operators.clj b/src/tablecloth/column/api/lifted_operators.clj index f0b55ad..5f3ca25 100644 --- a/src/tablecloth/column/api/lifted_operators.clj +++ b/src/tablecloth/column/api/lifted_operators.clj @@ -7,216 +7,216 @@ + ([x] (let - [original-result__41413__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__46675__auto__ (tech.v3.datatype.functional/+ x)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y] (let - [original-result__41413__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__46675__auto__ (tech.v3.datatype.functional/+ x y)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y & args] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn - ([x] (let - [original-result__41413__auto__ (tech.v3.datatype.functional/- x)] + [original-result__46675__auto__ (tech.v3.datatype.functional/- x)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y] (let - [original-result__41413__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__46675__auto__ (tech.v3.datatype.functional/- x y)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y & args] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn / ([x] (let - [original-result__41413__auto__ (tech.v3.datatype.functional// x)] + [original-result__46675__auto__ (tech.v3.datatype.functional// x)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y] (let - [original-result__41413__auto__ (tech.v3.datatype.functional// x y)] + [original-result__46675__auto__ (tech.v3.datatype.functional// x y)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([x y & args] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn > ([lhs mid rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([lhs rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/> lhs rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn >= ([lhs mid rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([lhs rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn < ([lhs mid rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([lhs rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/< lhs rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn <= ([lhs mid rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__))) ([lhs rhs] (let - [original-result__41413__auto__ + [original-result__46675__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (if (clojure.core/-> - original-result__41413__auto__ + original-result__46675__auto__ tech.v3.datatype.argtypes/arg-type (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__41413__auto__) - original-result__41413__auto__)))) + (tablecloth.column.api/column original-result__46675__auto__) + original-result__46675__auto__)))) (defn percentiles ([col percentiles] (let - [original-result__41298__auto__ + [original-result__47036__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.operators/return-scalar-or-column - original-result__41298__auto__))) + original-result__47036__auto__))) ([col percentiles options] (let - [original-result__41298__auto__ + [original-result__47036__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.operators/return-scalar-or-column - original-result__41298__auto__)))) + original-result__47036__auto__)))) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 202d460..c18decc 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -13,9 +13,9 @@ item))) (defn rearrange-args - ([fn-sym fn-meta new-args] - (rearrange-args fn-sym fn-meta new-args nil)) - ([fn-sym fn-meta new-args {:keys [new-args-lookup]}] + ([fn-sym fn-meta] + (rearrange-args fn-sym fn-meta nil)) + ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] (let [defn (symbol "defn") let (symbol "let") original-args (:arglists fn-meta) ensure-list #(if (vector? %) % (list %)) @@ -75,8 +75,8 @@ ['percentiles] (fn [fn-sym fn-meta] (rearrange-args fn-sym fn-meta - '([col percentiles] [col percentiles options]) - {:new-args-lookup {'data 'col, + {:new-args '([col percentiles] [col percentiles options]) + :new-args-lookup {'data 'col, 'percentages 'percentiles, 'options 'options}}))}) From 7e15113c99a401b59f7f8ce10dd43482eed4ac4f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 24 Nov 2022 11:46:01 -0500 Subject: [PATCH 29/69] Unify two lift functions --- src/tablecloth/column/api/operators.clj | 94 ++++++++++++------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index c18decc..f8b8c65 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -6,62 +6,62 @@ [tech.v3.datatype.functional :as fun] [clojure.java.io :as io])) -(defn return-scalar-or-column [item] +(defn- return-scalar-or-column [item] (let [item-type (arg-type item)] (if (= item-type :reader) (column item) item))) -(defn rearrange-args +(defn lift-op ([fn-sym fn-meta] - (rearrange-args fn-sym fn-meta nil)) + (lift-op fn-sym fn-meta nil)) ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] - (let [defn (symbol "defn") let (symbol "let") - original-args (:arglists fn-meta) - ensure-list #(if (vector? %) % (list %)) - sort-by-arg-count (fn [argslist] - (sort #(< (count %1) (count %2)) argslist))] - `(~defn ~(symbol (name fn-sym)) - ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) - (sort-by-arg-count original-args))] - (list - new-arg - `(~let [original-result# (~fn-sym ~@(if (nil? new-args-lookup) - original-arg - (for [oldarg original-arg] - (get new-args-lookup oldarg))))] - (return-scalar-or-column original-result#)))))))) - - -;; (rearrange-args (symbol "tech.v3.datatype.functional" "percentiles") + (let [defn (symbol "defn") + let (symbol "let") + original-args (:arglists fn-meta) + sort-by-arg-count (fn [argslist] + (sort #(< (count %1) (count %2)) argslist))] + (if new-args + `(~defn ~(symbol (name fn-sym)) + ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) + (sort-by-arg-count original-args)) + :let [filtered-original-arg (filter (partial not= '&) original-arg)]] + (list + (if new-arg new-arg original-arg) + `(~let [original-result# (~fn-sym + ~@(if (nil? new-args-lookup) + filtered-original-arg + (for [oldarg filtered-original-arg] + (get new-args-lookup oldarg))))] + (return-scalar-or-column original-result#))))) + `(~defn ~(symbol (name fn-sym)) + ~@(for [arg original-args + :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] + (list + arg + `(~let [original-result# ~(if (empty? rest-arg-expr) + `(~fn-sym ~@explicit-args) + `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] + (return-scalar-or-column original-result#))))))))) + + +;; (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) + +;; (lift-op (symbol "tech.v3.datatype.functional" "+") +;; (meta (get fun-mappings '+))) + +;; (lift-op (symbol "tech.v3.datatype.functional" "percentiles") ;; (meta (get fun-mappings 'percentiles)) -;; '([data percentiles] [data percentiles options]) -;; {:new-args-lookup {'percentages 'percentiles, 'data 'data, 'options 'options}}) +;; {:new-args '([data percentiles] [data percentiles & options]) +;; :new-args-lookup {'percentages 'percentiles, 'data 'data, 'options 'options}}) - -;; (clojure.pprint/pp) +;; (lift-op (symbol "tech.v3.datatype.functional/+" ) +;; (meta (get fun-mappings '+)) +;; {:new-args '([a] [b a] [b a & args]) +;; :new-args-lookup {'x 'a, 'y 'b, 'args 'args}}) - -;; this is for fns taking [[x] [x y] [x y & args]] -(defn lift-ops-1 [fn-sym fn-meta] - (let [fn (symbol "fn") - let (symbol "let") - defn (symbol "defn") - args (:arglists fn-meta) - docstring (:doc fn-meta)] - `(~defn ~(symbol (name fn-sym)) - ~@(for [arg args - :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] - (list - arg - `(~let [original-result# ~(if (empty? rest-arg-expr) - `(~fn-sym ~@explicit-args) - `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] - (if (-> original-result# arg-type (= :reader)) - (column original-result#) - original-result#))))))) - +;; (clojure.pprint/pp) (def serialized-lift-fn-lookup {['+ @@ -71,9 +71,9 @@ '>= '< '<= - ] lift-ops-1 + ] lift-op ['percentiles] (fn [fn-sym fn-meta] - (rearrange-args + (lift-op fn-sym fn-meta {:new-args '([col percentiles] [col percentiles options]) :new-args-lookup {'data 'col, From 8d711b36b7554dff91c1480ee05fc616406e2bb8 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 24 Nov 2022 12:17:46 -0500 Subject: [PATCH 30/69] Add in docstrings when present --- .../column/api/lifted_operators.clj | 203 ++++++------------ src/tablecloth/column/api/operators.clj | 11 +- 2 files changed, 71 insertions(+), 143 deletions(-) diff --git a/src/tablecloth/column/api/lifted_operators.clj b/src/tablecloth/column/api/lifted_operators.clj index 5f3ca25..b905d9a 100644 --- a/src/tablecloth/column/api/lifted_operators.clj +++ b/src/tablecloth/column/api/lifted_operators.clj @@ -5,218 +5,141 @@ (defn + + "" ([x] (let - [original-result__46675__auto__ (tech.v3.datatype.functional/+ x)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional/+ x)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y] (let - [original-result__46675__auto__ (tech.v3.datatype.functional/+ x y)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y & args] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn - + "" ([x] (let - [original-result__46675__auto__ (tech.v3.datatype.functional/- x)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional/- x)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y] (let - [original-result__46675__auto__ (tech.v3.datatype.functional/- x y)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional/- x y)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y & args] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn / + "" ([x] (let - [original-result__46675__auto__ (tech.v3.datatype.functional// x)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional// x)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y] (let - [original-result__46675__auto__ (tech.v3.datatype.functional// x y)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + [original-result__52632__auto__ (tech.v3.datatype.functional// x y)] + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([x y & args] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn > + "" ([lhs mid rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([lhs rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/> lhs rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn >= + "" ([lhs mid rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([lhs rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/>= lhs rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn < + "" ([lhs mid rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([lhs rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/< lhs rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn <= + "" ([lhs mid rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__))) ([lhs rhs] (let - [original-result__46675__auto__ + [original-result__52632__auto__ (tech.v3.datatype.functional/<= lhs rhs)] - (if - (clojure.core/-> - original-result__46675__auto__ - tech.v3.datatype.argtypes/arg-type - (clojure.core/= :reader)) - (tablecloth.column.api/column original-result__46675__auto__) - original-result__46675__auto__)))) + (tablecloth.column.api.operators/return-scalar-or-column + original-result__52632__auto__)))) (defn percentiles + "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__47036__auto__ + [original-result__52631__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.operators/return-scalar-or-column - original-result__47036__auto__))) + original-result__52631__auto__))) ([col percentiles options] (let - [original-result__47036__auto__ + [original-result__52631__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.operators/return-scalar-or-column - original-result__47036__auto__)))) + original-result__52631__auto__)))) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index f8b8c65..643ef3f 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -6,7 +6,7 @@ [tech.v3.datatype.functional :as fun] [clojure.java.io :as io])) -(defn- return-scalar-or-column [item] +(defn return-scalar-or-column [item] (let [item-type (arg-type item)] (if (= item-type :reader) (column item) @@ -18,11 +18,13 @@ ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] (let [defn (symbol "defn") let (symbol "let") + docstring (:doc fn-meta) original-args (:arglists fn-meta) sort-by-arg-count (fn [argslist] (sort #(< (count %1) (count %2)) argslist))] (if new-args `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) (sort-by-arg-count original-args)) :let [filtered-original-arg (filter (partial not= '&) original-arg)]] @@ -35,6 +37,7 @@ (get new-args-lookup oldarg))))] (return-scalar-or-column original-result#))))) `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") ~@(for [arg original-args :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] (list @@ -44,11 +47,13 @@ `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] (return-scalar-or-column original-result#))))))))) +(meta (get fun-mappings 'percentiles)) ;; (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) -;; (lift-op (symbol "tech.v3.datatype.functional" "+") -;; (meta (get fun-mappings '+))) +(lift-op (symbol "tech.v3.datatype.functional" "+") + (meta (get fun-mappings '+))) + ;; (lift-op (symbol "tech.v3.datatype.functional" "percentiles") ;; (meta (get fun-mappings 'percentiles)) From 3c18c986a085c2b73123ecee625ae495ca1b7e1f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 24 Nov 2022 13:44:12 -0500 Subject: [PATCH 31/69] Move lift utils into utils ns --- .../column/api/lifted_operators.clj | 114 ++++++------ src/tablecloth/column/api/operators.clj | 173 +----------------- src/tablecloth/column/api/utils.clj | 87 +++++++++ 3 files changed, 148 insertions(+), 226 deletions(-) create mode 100644 src/tablecloth/column/api/utils.clj diff --git a/src/tablecloth/column/api/lifted_operators.clj b/src/tablecloth/column/api/lifted_operators.clj index b905d9a..0b35198 100644 --- a/src/tablecloth/column/api/lifted_operators.clj +++ b/src/tablecloth/column/api/lifted_operators.clj @@ -8,138 +8,138 @@ "" ([x] (let - [original-result__52632__auto__ (tech.v3.datatype.functional/+ x)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional/+ x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y] (let - [original-result__52632__auto__ (tech.v3.datatype.functional/+ x y)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y & args] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn - "" ([x] (let - [original-result__52632__auto__ (tech.v3.datatype.functional/- x)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional/- x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y] (let - [original-result__52632__auto__ (tech.v3.datatype.functional/- x y)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional/- x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y & args] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn / "" ([x] (let - [original-result__52632__auto__ (tech.v3.datatype.functional// x)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional// x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y] (let - [original-result__52632__auto__ (tech.v3.datatype.functional// x y)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + [original-result__43655__auto__ (tech.v3.datatype.functional// x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([x y & args] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([lhs rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/> lhs rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([lhs rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/>= lhs rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([lhs rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/< lhs rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) ([lhs rhs] (let - [original-result__52632__auto__ + [original-result__43655__auto__ (tech.v3.datatype.functional/<= lhs rhs)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52632__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__52631__auto__ + [original-result__43654__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52631__auto__))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43654__auto__))) ([col percentiles options] (let - [original-result__52631__auto__ + [original-result__43654__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] - (tablecloth.column.api.operators/return-scalar-or-column - original-result__52631__auto__)))) + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43654__auto__)))) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 643ef3f..dc16a66 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,72 +1,5 @@ (ns tablecloth.column.api.operators - (:import [java.io Writer]) - (:require [tech.v3.datatype.export-symbols :as exporter] - [tech.v3.datatype.argtypes :refer [arg-type]] - [tablecloth.column.api :refer [column]] - [tech.v3.datatype.functional :as fun] - [clojure.java.io :as io])) - -(defn return-scalar-or-column [item] - (let [item-type (arg-type item)] - (if (= item-type :reader) - (column item) - item))) - -(defn lift-op - ([fn-sym fn-meta] - (lift-op fn-sym fn-meta nil)) - ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] - (let [defn (symbol "defn") - let (symbol "let") - docstring (:doc fn-meta) - original-args (:arglists fn-meta) - sort-by-arg-count (fn [argslist] - (sort #(< (count %1) (count %2)) argslist))] - (if new-args - `(~defn ~(symbol (name fn-sym)) - ~(or docstring "") - ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) - (sort-by-arg-count original-args)) - :let [filtered-original-arg (filter (partial not= '&) original-arg)]] - (list - (if new-arg new-arg original-arg) - `(~let [original-result# (~fn-sym - ~@(if (nil? new-args-lookup) - filtered-original-arg - (for [oldarg filtered-original-arg] - (get new-args-lookup oldarg))))] - (return-scalar-or-column original-result#))))) - `(~defn ~(symbol (name fn-sym)) - ~(or docstring "") - ~@(for [arg original-args - :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] - (list - arg - `(~let [original-result# ~(if (empty? rest-arg-expr) - `(~fn-sym ~@explicit-args) - `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] - (return-scalar-or-column original-result#))))))))) - -(meta (get fun-mappings 'percentiles)) - -;; (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) - -(lift-op (symbol "tech.v3.datatype.functional" "+") - (meta (get fun-mappings '+))) - - -;; (lift-op (symbol "tech.v3.datatype.functional" "percentiles") -;; (meta (get fun-mappings 'percentiles)) -;; {:new-args '([data percentiles] [data percentiles & options]) -;; :new-args-lookup {'percentages 'percentiles, 'data 'data, 'options 'options}}) - -;; (lift-op (symbol "tech.v3.datatype.functional/+" ) -;; (meta (get fun-mappings '+)) -;; {:new-args '([a] [b a] [b a & args]) -;; :new-args-lookup {'x 'a, 'y 'b, 'args 'args}}) - - -;; (clojure.pprint/pp) + (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) (def serialized-lift-fn-lookup {['+ @@ -75,8 +8,7 @@ '> '>= '< - '<= - ] lift-op + '<=] lift-op ['percentiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta @@ -85,7 +17,6 @@ 'percentages 'percentiles, 'options 'options}}))}) - (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] (loop [syms symlist @@ -96,105 +27,9 @@ {} serialized-lift-fn-lookup)) - - -(defn- writeln! - ^Writer [^Writer writer strdata & strdatas] - (.append writer (str strdata)) - (doseq [data strdatas] - (when data - (.append writer (str data)))) - (.append writer "\n") - writer) - -(defn- write-empty-ln! ^Writer [^Writer writer] - (writeln! writer "") - writer) - -(defn- write-pp ^Writer [^Writer writer item] - (clojure.pprint/pprint item writer) - writer) - -(defn get-lifted [] -(let [lift-fn-lookup (deserialize-lift-fn-lookup) - fun-mappings (ns-publics `tech.v3.datatype.functional)] - (map (fn [[fnsym lift-fn]] - (lift-fn (symbol "tech.v3.datatype.functional" (name fnsym)) - (meta (get fun-mappings fnsym)))) - lift-fn-lookup))) - -(defn get-ns-header [target-ns source-ns] - (let [ns (symbol "ns")] - `(~ns ~target-ns - (:require [~source-ns]) - (:refer-clojure :exclude ~['+ '- '/ '> '>= '< '<=])))) - -(defn do-lift [target-ns source-ns filename] - (with-open [writer (io/writer filename :append false)] - (write-pp writer (get-ns-header target-ns source-ns)) - (write-empty-ln! writer) - (doseq [f (get-lifted)] - (-> writer - (write-pp f) - (write-empty-ln!))))) - (comment - (do-lift 'tablecloth.column.api.lifted-operators + (do-lift (deserialize-lift-fn-lookup) + 'tablecloth.column.api.lifted-operators 'tech.v3.datatype.functional "src/tablecloth/column/api/lifted_operators.clj") ,) - - -(comment - ;; some early attempts at lifting with macro - (defmacro lift-operator [f m] - `(defn ~(symbol (name f)) {:doc ~(:doc m) :orig (symbol (var ~f))} [a#] - (let [result# (apply ~f [a#])] - (if (= (tech.v3.datatype/datatype result#) :buffer) - (tablecloth.column.api/column result#) - result#)))) - - (defmacro lift-operator-2 [f m] - `(defn ~(symbol (name f)) {:doc ~(:doc m) :origin (symbol (var ~f))} - ~@(for [arg args - :let [narg (mapv #(if (map? %) 'options %) arg) - [a & r] (split-with (partial not= '&) narg)]] - (list narg `(fn [ds#]))))) - - ;; example of pprinting a function as a method for code gen - (let [fun-mappings (ns-publics 'tech.v3.datatype.functional) - fn-name (name 'sum) - op (get fun-mappings (symbol fn-name)) - opsym (symbol (format "dfn/%s" fn-name)) - op-meta (meta op) - op-sym (vary-meta (symbol fn-name) merge op-meta) - defn (symbol "defn") - let (symbol "let")] - (clojure.pprint/pprint - `(~defn ~op-sym ~(:doc op-meta) - [~'col] - (~let [original-result# (~opsym ~'col)] - original-result#)))) - - - ;; building a map of the functions in tech.v3.datatype.functional - ;; by arg patterns. - (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) - - (def fns-by-args (reduce (fn [m [fnsym fnvar]] - (let [args (-> fnvar meta :arglists str)] - (assoc m args (merge (if (get m args) - (merge (get m args) fnsym) - (merge [] fnsym)))))) - {} - fun-mappings)) - - fns-by-args - - - (sort (fn [[_ fns1] [_ fns2]] - (compare (count fns1) (count fns2))) - fns-by-args) - - ) - diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj new file mode 100644 index 0000000..154168b --- /dev/null +++ b/src/tablecloth/column/api/utils.clj @@ -0,0 +1,87 @@ +(ns tablecloth.column.api.utils + (:import [java.io Writer]) + (:require [tech.v3.datatype.export-symbols :as exporter] + [tech.v3.datatype.argtypes :refer [arg-type]] + [tablecloth.column.api :refer [column]] + [tech.v3.datatype.functional :as fun] + [clojure.java.io :as io])) + +(defn return-scalar-or-column [item] + (let [item-type (arg-type item)] + (if (= item-type :reader) + (column item) + item))) + +(defn lift-op + ([fn-sym fn-meta] + (lift-op fn-sym fn-meta nil)) + ([fn-sym fn-meta {:keys [new-args new-args-lookup]}] + (let [defn (symbol "defn") + let (symbol "let") + docstring (:doc fn-meta) + original-args (:arglists fn-meta) + sort-by-arg-count (fn [argslist] + (sort #(< (count %1) (count %2)) argslist))] + (if new-args + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [[new-arg original-arg] (zipmap (sort-by-arg-count new-args) + (sort-by-arg-count original-args)) + :let [filtered-original-arg (filter (partial not= '&) original-arg)]] + (list + (if new-arg new-arg original-arg) + `(~let [original-result# (~fn-sym + ~@(if (nil? new-args-lookup) + filtered-original-arg + (for [oldarg filtered-original-arg] + (get new-args-lookup oldarg))))] + (return-scalar-or-column original-result#))))) + `(~defn ~(symbol (name fn-sym)) + ~(or docstring "") + ~@(for [arg original-args + :let [[explicit-args rest-arg-expr] (split-with (partial not= '&) arg)]] + (list + arg + `(~let [original-result# ~(if (empty? rest-arg-expr) + `(~fn-sym ~@explicit-args) + `(apply ~fn-sym ~@explicit-args ~(second rest-arg-expr)))] + (return-scalar-or-column original-result#))))))))) + +(defn- writeln! + ^Writer [^Writer writer strdata & strdatas] + (.append writer (str strdata)) + (doseq [data strdatas] + (when data + (.append writer (str data)))) + (.append writer "\n") + writer) + +(defn- write-empty-ln! ^Writer [^Writer writer] + (writeln! writer "") + writer) + +(defn- write-pp ^Writer [^Writer writer item] + (clojure.pprint/pprint item writer) + writer) + +(defn get-lifted [lift-fn-lookup source-ns] + (let [fun-mappings (ns-publics source-ns)] + (map (fn [[fnsym lift-fn]] + (lift-fn (symbol (name source-ns) (name fnsym)) + (meta (get fun-mappings fnsym)))) + lift-fn-lookup))) + +(defn get-ns-header [target-ns source-ns] + (let [ns (symbol "ns")] + `(~ns ~target-ns + (:require [~source-ns]) + (:refer-clojure :exclude ~['+ '- '/ '> '>= '< '<=])))) + +(defn do-lift [lift-plan target-ns source-ns filename] + (with-open [writer (io/writer filename :append false)] + (write-pp writer (get-ns-header target-ns source-ns)) + (write-empty-ln! writer) + (doseq [f (get-lifted lift-plan source-ns)] + (-> writer + (write-pp f) + (write-empty-ln!))))) From dd987473f4b21fafc7ae5028fba7d91110d7c6b2 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sat, 26 Nov 2022 14:02:44 -0500 Subject: [PATCH 32/69] Rename lifting namespaces --- src/tablecloth/column/api/lift_operators.clj | 35 ++++ .../column/api/lifted_operators.clj | 145 -------------- src/tablecloth/column/api/operators.clj | 180 ++++++++++++++---- ..._operators_test.clj => operators_test.clj} | 4 +- 4 files changed, 182 insertions(+), 182 deletions(-) create mode 100644 src/tablecloth/column/api/lift_operators.clj delete mode 100644 src/tablecloth/column/api/lifted_operators.clj rename test/tablecloth/column/api/{lifted_operators_test.clj => operators_test.clj} (88%) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj new file mode 100644 index 0000000..eac103c --- /dev/null +++ b/src/tablecloth/column/api/lift_operators.clj @@ -0,0 +1,35 @@ +(ns tablecloth.column.api.lift-operators + (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) + +(def serialized-lift-fn-lookup + {['+ + '- + '/ + '> + '>= + '< + '<=] lift-op + ['percentiles] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([col percentiles] [col percentiles options]) + :new-args-lookup {'data 'col, + 'percentages 'percentiles, + 'options 'options}}))}) + +(defn deserialize-lift-fn-lookup [] + (reduce (fn [m [symlist liftfn]] + (loop [syms symlist + result m] + (if (empty? syms) + result + (recur (rest syms) (assoc result (first syms) liftfn))))) + {} + serialized-lift-fn-lookup)) + +(comment + (do-lift (deserialize-lift-fn-lookup) + 'tablecloth.column.api.operators + 'tech.v3.datatype.functional + "src/tablecloth/column/api/operators.clj") + ,) diff --git a/src/tablecloth/column/api/lifted_operators.clj b/src/tablecloth/column/api/lifted_operators.clj deleted file mode 100644 index 0b35198..0000000 --- a/src/tablecloth/column/api/lifted_operators.clj +++ /dev/null @@ -1,145 +0,0 @@ -(ns - tablecloth.column.api.lifted-operators - (:require [tech.v3.datatype.functional]) - (:refer-clojure :exclude [+ - / > >= < <=])) - -(defn - + - "" - ([x] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional/+ x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional/+ x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y & args] - (let - [original-result__43655__auto__ - (clojure.core/apply tech.v3.datatype.functional/+ x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - - - "" - ([x] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional/- x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional/- x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y & args] - (let - [original-result__43655__auto__ - (clojure.core/apply tech.v3.datatype.functional/- x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - / - "" - ([x] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional// x)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y] - (let - [original-result__43655__auto__ (tech.v3.datatype.functional// x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y & args] - (let - [original-result__43655__auto__ - (clojure.core/apply tech.v3.datatype.functional// x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - > - "" - ([lhs mid rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/> lhs mid rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/> lhs rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - >= - "" - ([lhs mid rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/>= lhs mid rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/>= lhs rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - < - "" - ([lhs mid rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/< lhs mid rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/< lhs rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - <= - "" - ([lhs mid rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/<= lhs mid rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] - (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/<= lhs rhs)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) - -(defn - percentiles - "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." - ([col percentiles] - (let - [original-result__43654__auto__ - (tech.v3.datatype.functional/percentiles percentiles col)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43654__auto__))) - ([col percentiles options] - (let - [original-result__43654__auto__ - (tech.v3.datatype.functional/percentiles percentiles options col)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__43654__auto__)))) - diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index dc16a66..2a60c3f 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,35 +1,145 @@ -(ns tablecloth.column.api.operators - (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) - -(def serialized-lift-fn-lookup - {['+ - '- - '/ - '> - '>= - '< - '<=] lift-op - ['percentiles] (fn [fn-sym fn-meta] - (lift-op - fn-sym fn-meta - {:new-args '([col percentiles] [col percentiles options]) - :new-args-lookup {'data 'col, - 'percentages 'percentiles, - 'options 'options}}))}) - -(defn deserialize-lift-fn-lookup [] - (reduce (fn [m [symlist liftfn]] - (loop [syms symlist - result m] - (if (empty? syms) - result - (recur (rest syms) (assoc result (first syms) liftfn))))) - {} - serialized-lift-fn-lookup)) - -(comment - (do-lift (deserialize-lift-fn-lookup) - 'tablecloth.column.api.lifted-operators - 'tech.v3.datatype.functional - "src/tablecloth/column/api/lifted_operators.clj") - ,) +(ns + tablecloth.column.api.operators + (:require [tech.v3.datatype.functional]) + (:refer-clojure :exclude [+ - / > >= < <=])) + +(defn + + + "" + ([x] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional/+ x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y & args] + (let + [original-result__43655__auto__ + (clojure.core/apply tech.v3.datatype.functional/+ x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + - + "" + ([x] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional/- x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional/- x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y & args] + (let + [original-result__43655__auto__ + (clojure.core/apply tech.v3.datatype.functional/- x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + / + "" + ([x] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional// x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y] + (let + [original-result__43655__auto__ (tech.v3.datatype.functional// x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([x y & args] + (let + [original-result__43655__auto__ + (clojure.core/apply tech.v3.datatype.functional// x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + > + "" + ([lhs mid rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/> lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([lhs rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/> lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + >= + "" + ([lhs mid rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/>= lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([lhs rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/>= lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + < + "" + ([lhs mid rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/< lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([lhs rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/< lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + <= + "" + ([lhs mid rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/<= lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__))) + ([lhs rhs] + (let + [original-result__43655__auto__ + (tech.v3.datatype.functional/<= lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43655__auto__)))) + +(defn + percentiles + "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." + ([col percentiles] + (let + [original-result__43654__auto__ + (tech.v3.datatype.functional/percentiles percentiles col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43654__auto__))) + ([col percentiles options] + (let + [original-result__43654__auto__ + (tech.v3.datatype.functional/percentiles percentiles options col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43654__auto__)))) + diff --git a/test/tablecloth/column/api/lifted_operators_test.clj b/test/tablecloth/column/api/operators_test.clj similarity index 88% rename from test/tablecloth/column/api/lifted_operators_test.clj rename to test/tablecloth/column/api/operators_test.clj index d8ee3de..ce9e005 100644 --- a/test/tablecloth/column/api/lifted_operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,8 +1,8 @@ -(ns tablecloth.column.api.lifted-operators-test +(ns tablecloth.column.api.operators-test (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column?]] - [tablecloth.column.api.lifted-operators :refer [+ - / > >= < <= percentiles] :as ops]) + [tablecloth.column.api.operators :refer [+ - / > >= < <= percentiles] :as ops]) (:refer-clojure :exclude [+ - / > >= < <=])) (def a (column [1.0 2.0 3.0 4.0])) From 3a9cc03a2bcae6fb95cc6e9d1969c7b5ad3fdd01 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 27 Nov 2022 15:26:20 -0500 Subject: [PATCH 33/69] Lift some more fns --- src/tablecloth/column/api/lift_operators.clj | 21 ++ src/tablecloth/column/api/operators.clj | 266 ++++++++++++++----- 2 files changed, 226 insertions(+), 61 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index eac103c..1a30d4f 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -9,6 +9,20 @@ '>= '< '<=] lift-op + ['kurtosis + 'sum + 'mean + 'skew + 'variance + 'standard-deviation + 'quartile-3 + 'quartile-1 + 'median] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([col] [col options]) + :new-args-lookup {'data 'col + 'options 'options}})) ['percentiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta @@ -21,6 +35,7 @@ (reduce (fn [m [symlist liftfn]] (loop [syms symlist result m] + (if (empty? syms) result (recur (rest syms) (assoc result (first syms) liftfn))))) @@ -28,6 +43,12 @@ serialized-lift-fn-lookup)) (comment + (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) + + (-> fun-mappings + (get 'kurtosis) + meta) + (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 2a60c3f..3763ce1 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -4,142 +4,286 @@ (:refer-clojure :exclude [+ - / > >= < <=])) (defn - + + kurtosis "" - ([x] + ([col] (let - [original-result__43655__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y] + original-result__42776__auto__))) + ([col options] (let - [original-result__43655__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([x y & args] + original-result__42776__auto__)))) + +(defn + < + "" + ([lhs mid rhs] (let - [original-result__43655__auto__ - (clojure.core/apply tech.v3.datatype.functional/+ x y args)] + [original-result__42777__auto__ + (tech.v3.datatype.functional/< lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__))) + ([lhs rhs] + (let + [original-result__42777__auto__ + (tech.v3.datatype.functional/< lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__)))) + +(defn + sum + "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/sum col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/sum col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__)))) + +(defn + <= + "" + ([lhs mid rhs] + (let + [original-result__42777__auto__ + (tech.v3.datatype.functional/<= lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__))) + ([lhs rhs] + (let + [original-result__42777__auto__ + (tech.v3.datatype.functional/<= lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__)))) + +(defn + mean + "double mean of data" + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/mean col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__)))) + +(defn + > + "" + ([lhs mid rhs] + (let + [original-result__42777__auto__ + (tech.v3.datatype.functional/> lhs mid rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__))) + ([lhs rhs] + (let + [original-result__42777__auto__ + (tech.v3.datatype.functional/> lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__)))) (defn - "" ([x] (let - [original-result__43655__auto__ (tech.v3.datatype.functional/- x)] + [original-result__42777__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) + original-result__42777__auto__))) ([x y] (let - [original-result__43655__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__42777__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) + original-result__42777__auto__))) ([x y & args] (let - [original-result__43655__auto__ + [original-result__42777__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42777__auto__)))) + +(defn + skew + "" + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/skew col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/skew col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__)))) + +(defn + variance + "" + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/variance col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/variance col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__)))) + +(defn + standard-deviation + "" + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/standard-deviation col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/standard-deviation col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__)))) (defn / "" ([x] (let - [original-result__43655__auto__ (tech.v3.datatype.functional// x)] + [original-result__42777__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) + original-result__42777__auto__))) ([x y] (let - [original-result__43655__auto__ (tech.v3.datatype.functional// x y)] + [original-result__42777__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) + original-result__42777__auto__))) ([x y & args] (let - [original-result__43655__auto__ + [original-result__42777__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42777__auto__)))) (defn - > + >= "" ([lhs mid rhs] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/> lhs mid rhs)] + [original-result__42777__auto__ + (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) + original-result__42777__auto__))) ([lhs rhs] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/> lhs rhs)] + [original-result__42777__auto__ + (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42777__auto__)))) (defn - >= + quartile-3 "" - ([lhs mid rhs] + ([col] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/>= lhs mid rhs)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] + original-result__42776__auto__))) + ([col options] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/>= lhs rhs)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42776__auto__)))) (defn - < + quartile-1 "" - ([lhs mid rhs] + ([col] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/< lhs mid rhs)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] + original-result__42776__auto__))) + ([col options] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/< lhs rhs)] + [original-result__42776__auto__ + (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42776__auto__)))) (defn - <= + + "" - ([lhs mid rhs] + ([x] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/<= lhs mid rhs)] + [original-result__42777__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__))) - ([lhs rhs] + original-result__42777__auto__))) + ([x y] (let - [original-result__43655__auto__ - (tech.v3.datatype.functional/<= lhs rhs)] + [original-result__42777__auto__ (tech.v3.datatype.functional/+ x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__))) + ([x y & args] + (let + [original-result__42777__auto__ + (clojure.core/apply tech.v3.datatype.functional/+ x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42777__auto__)))) + +(defn + median + "" + ([col] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/median col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42776__auto__))) + ([col options] + (let + [original-result__42776__auto__ + (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43655__auto__)))) + original-result__42776__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__43654__auto__ + [original-result__42776__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43654__auto__))) + original-result__42776__auto__))) ([col percentiles options] (let - [original-result__43654__auto__ + [original-result__42776__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43654__auto__)))) + original-result__42776__auto__)))) From 83f7b4cc02b3ccbf0febf4e125b8e62a3d14fc9a Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 29 Nov 2022 11:18:55 -0500 Subject: [PATCH 34/69] Make exclusions for ns header helper an arg --- src/tablecloth/column/api/lift_operators.clj | 1 + src/tablecloth/column/api/utils.clj | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 1a30d4f..30dec09 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -52,5 +52,6 @@ (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional + '[+ - / < <= > >= neg? pos? odd? even? zero? not odd?] "src/tablecloth/column/api/operators.clj") ,) diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj index 154168b..d62a087 100644 --- a/src/tablecloth/column/api/utils.clj +++ b/src/tablecloth/column/api/utils.clj @@ -71,15 +71,15 @@ (meta (get fun-mappings fnsym)))) lift-fn-lookup))) -(defn get-ns-header [target-ns source-ns] +(defn get-ns-header [target-ns source-ns ns-exclusions] (let [ns (symbol "ns")] `(~ns ~target-ns (:require [~source-ns]) - (:refer-clojure :exclude ~['+ '- '/ '> '>= '< '<=])))) + (:refer-clojure :exclude ~ns-exclusions)))) -(defn do-lift [lift-plan target-ns source-ns filename] +(defn do-lift [lift-plan target-ns source-ns ns-exclusions filename] (with-open [writer (io/writer filename :append false)] - (write-pp writer (get-ns-header target-ns source-ns)) + (write-pp writer (get-ns-header target-ns source-ns ns-exclusions)) (write-empty-ln! writer) (doseq [f (get-lifted lift-plan source-ns)] (-> writer From dcc6602695145e94bad5cd292c597bdae00f3674 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 29 Nov 2022 11:19:33 -0500 Subject: [PATCH 35/69] Add new operators and tests --- src/tablecloth/column/api/lift_operators.clj | 19 + src/tablecloth/column/api/operators.clj | 328 ++++++++++++++---- test/tablecloth/column/api/operators_test.clj | 93 +++-- 3 files changed, 329 insertions(+), 111 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 30dec09..ebb7f71 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -23,6 +23,22 @@ {:new-args '([col] [col options]) :new-args-lookup {'data 'col 'options 'options}})) + ['finite? + 'pos? + 'neg? + 'mathematical-integer? + 'nan? + 'even? + 'zero? + 'not + 'infinite? + 'round + 'odd?] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([col] [col options]) + :new-args-lookup {'arg 'col + 'options 'options}})) ['percentiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta @@ -31,6 +47,7 @@ 'percentages 'percentiles, 'options 'options}}))}) + (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] (loop [syms symlist @@ -55,3 +72,5 @@ '[+ - / < <= > >= neg? pos? odd? even? zero? not odd?] "src/tablecloth/column/api/operators.clj") ,) + + diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 3763ce1..e8f6018 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,289 +1,467 @@ (ns tablecloth.column.api.operators (:require [tech.v3.datatype.functional]) - (:refer-clojure :exclude [+ - / > >= < <=])) + (:refer-clojure + :exclude + [+ - / < <= > >= neg? pos? odd? even? zero? not odd?])) (defn kurtosis "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + finite? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/finite? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/finite? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([lhs rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + pos? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/pos? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/pos? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) + +(defn + neg? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/neg? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/neg? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([lhs rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) + +(defn + mathematical-integer? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/mathematical-integer? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/mathematical-integer? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) + +(defn + nan? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/nan? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/nan? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([lhs rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) + +(defn + even? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/even? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/even? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn - "" ([x] (let - [original-result__42777__auto__ (tech.v3.datatype.functional/- x)] + [original-result__34678__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y] (let - [original-result__42777__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__34678__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y & args] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) (defn skew "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + zero? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/zero? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/zero? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn variance "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + not + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/not col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/not col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) (defn / "" ([x] (let - [original-result__42777__auto__ (tech.v3.datatype.functional// x)] + [original-result__34678__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y] (let - [original-result__42777__auto__ (tech.v3.datatype.functional// x y)] + [original-result__34678__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y & args] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([lhs rhs] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + infinite? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/infinite? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/infinite? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) + +(defn + round + "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/round col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/round col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) + +(defn + odd? + "" + ([col] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/odd? col)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__))) + ([col options] + (let + [original-result__34677__auto__ + (tech.v3.datatype.functional/odd? col options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__34677__auto__)))) (defn + "" ([x] (let - [original-result__42777__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__34678__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y] (let - [original-result__42777__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__34678__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__))) + original-result__34678__auto__))) ([x y & args] (let - [original-result__42777__auto__ + [original-result__34678__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42777__auto__)))) + original-result__34678__auto__)))) (defn median "" ([col] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__))) + original-result__34677__auto__))) ([col percentiles options] (let - [original-result__42776__auto__ + [original-result__34677__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42776__auto__)))) + original-result__34677__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index ce9e005..4daf171 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,56 +1,77 @@ (ns tablecloth.column.api.operators-test + (:refer-clojure :exclude [+ - / < <= > >= neg? pos? odd? even? zero? not odd?]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] - [tablecloth.column.api :refer [column column?]] - [tablecloth.column.api.operators :refer [+ - / > >= < <= percentiles] :as ops]) - (:refer-clojure :exclude [+ - / > >= < <=])) + [tablecloth.column.api :refer [column column? typeof]]) + (:use [tablecloth.column.api.operators])) -(def a (column [1.0 2.0 3.0 4.0])) -(def b (column [5 6 7 8])) -(def scalar-a 10) -(def sclar) + +(defn sample-column [n] + (column (repeatedly n #(rand-int 100)))) (defn scalar? [item] (= (tech.v3.datatype.argtypes/arg-type item) :scalar)) (facts - "about +" - (let [a [1 2 3 4] - b [5 6 7 8]] - (+ a b) => column? - (+ 3 3) => scalar? - (+ a b) => [6 8 10 12])) + "about [/ - +] ops" + (let [ops [/ - +] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5) + d (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (op a b c) => column? + (op a b c d) => column? + (op 1) => scalar? + (op 1 2) => scalar? + (op 1 2 3) => scalar?))) (facts - "about -" - (let [a [1 2 3 4] - b [5 6 7 8]] - (- a b) => column? - (- 3 3) => scalar? - (- a b) => [-4 -4 -4 -4])) + "about [> >= < <=]" + (let [ops [> >= < <=] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (op a b c) => column? + (op 1 2) => boolean?))) (facts - "about /" - (let [a [1.0 2.0 3.0 4.0] - b [5 6 7 8]] - (/ a b) => column? - (- 3 3) => scalar? - (/ a b) => [0.2 0.3333333333333333 0.42857142857142855 0.5])) + "about ops that take a single column or scalar and return a scalar" + (let [ops [kurtosis + sum + mean + skew + variance + standard-deviation + quartile-3 + quartile-1 + median] + a (sample-column 5)] + (doseq [op ops] + (op a) => scalar?))) (facts - "about >" - (let [a [1 2 3 4] - b [5 0 7 8]] - (> a b) => column? - (> 3 4) => boolean? - (> a b) => [false true false false])) + "about ops that take a single column and return scalar or column of booleans" + (let [ops [finite? + pos? + neg? + mathematical-integer? + nan? + even? + zero? + not + infinite? + odd?] + a (sample-column 5)] + (doseq [op ops] + (op a) => column? + (typeof (op a)) => :boolean + (op 1) => boolean?))) -(facts - "about `percentiles" - (let [a (range 100)] - (ops/percentiles a [25 50 75]) => column? - (ops/percentiles a [25 50 75]) => [24.25 49.50 74.75])) From a47bf210f1da54cec5fabaecc432f9a80303d151 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 29 Nov 2022 12:46:50 -0500 Subject: [PATCH 36/69] Add ops with lhs rhs arg pattern --- src/tablecloth/column/api/lift_operators.clj | 9 +- src/tablecloth/column/api/operators.clj | 306 +++++++++++------- test/tablecloth/column/api/operators_test.clj | 28 +- 3 files changed, 220 insertions(+), 123 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index ebb7f71..a8f9886 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -8,7 +8,14 @@ '> '>= '< - '<=] lift-op + '<= + 'distance + 'dot-product + 'eq + 'not-eq + 'or + 'distance-squared + 'and] lift-op ['kurtosis 'sum 'mean diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index e8f6018..73b6f56 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -10,458 +10,528 @@ "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn finite? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) + +(defn + distance + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/distance lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([lhs rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn pos? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn neg? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([lhs rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn nan? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) + +(defn + dot-product + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/dot-product lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) + +(defn + eq + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/eq lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([lhs rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) + +(defn + not-eq + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/not-eq lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) (defn even? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn - "" ([x] (let - [original-result__34678__auto__ (tech.v3.datatype.functional/- x)] + [original-result__43458__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y] (let - [original-result__34678__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__43458__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y & args] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) + +(defn + or + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/or lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) + +(defn + distance-squared + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/distance-squared lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) (defn skew "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn zero? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn variance "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn not "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn / "" ([x] (let - [original-result__34678__auto__ (tech.v3.datatype.functional// x)] + [original-result__43458__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y] (let - [original-result__34678__auto__ (tech.v3.datatype.functional// x y)] + [original-result__43458__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y & args] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([lhs rhs] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn infinite? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn odd? "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn + "" ([x] (let - [original-result__34678__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__43458__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y] (let - [original-result__34678__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__43458__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__))) + original-result__43458__auto__))) ([x y & args] (let - [original-result__34678__auto__ + [original-result__43458__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34678__auto__)))) + original-result__43458__auto__)))) (defn median "" ([col] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__))) + original-result__43457__auto__))) ([col percentiles options] (let - [original-result__34677__auto__ + [original-result__43457__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__34677__auto__)))) + original-result__43457__auto__)))) + +(defn + and + "" + ([lhs rhs] + (let + [original-result__43458__auto__ + (tech.v3.datatype.functional/and lhs rhs)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__43458__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 4daf171..57cdc66 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,5 +1,6 @@ (ns tablecloth.column.api.operators-test - (:refer-clojure :exclude [+ - / < <= > >= neg? pos? odd? even? zero? not odd?]) + (:refer-clojure :exclude [+ - / < <= > >= neg? pos? odd? even? + or and zero? not odd?]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) @@ -55,7 +56,18 @@ (op a) => scalar?))) (facts - "about ops that take a single column and return scalar or column of booleans" + "about ops that take left-hand / right-hand columns and returns a scalar" + (let [ops [distance + dot-product + distance-squared] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => scalar?))) + +(facts + "about ops that take a single column or scalar + and return boolean or column of booleans" (let [ops [finite? pos? neg? @@ -72,6 +84,14 @@ (typeof (op a)) => :boolean (op 1) => boolean?))) - - +(facts + "about ops that take left-hand / right-hand columns or scalars + and returns boolean or column of booleans" + (let [ops [or and eq not-eq] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (typeof (op a b)) => :boolean + (op 1 2) => boolean?))) From 936a029af071b68a94d774a5ec004bbfa20a699f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Tue, 29 Nov 2022 13:06:52 -0500 Subject: [PATCH 37/69] Lift '* --- src/tablecloth/column/api/lift_operators.clj | 3 +- src/tablecloth/column/api/operators.clj | 281 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 15 +- 3 files changed, 162 insertions(+), 137 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index a8f9886..a94d779 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -9,6 +9,7 @@ '>= '< '<= + '* 'distance 'dot-product 'eq @@ -76,7 +77,7 @@ (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional - '[+ - / < <= > >= neg? pos? odd? even? zero? not odd?] + '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and] "src/tablecloth/column/api/operators.clj") ,) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 73b6f56..8aa5074 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -3,535 +3,550 @@ (:require [tech.v3.datatype.functional]) (:refer-clojure :exclude - [+ - / < <= > >= neg? pos? odd? even? zero? not odd?])) + [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and])) (defn kurtosis "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn finite? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn pos? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn neg? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) + +(defn + * + "" + ([x y] + (let + [original-result__39478__auto__ (tech.v3.datatype.functional/* x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__39478__auto__))) + ([x y & args] + (let + [original-result__39478__auto__ + (clojure.core/apply tech.v3.datatype.functional/* x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__39478__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn nan? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn even? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn - "" ([x] (let - [original-result__43458__auto__ (tech.v3.datatype.functional/- x)] + [original-result__39478__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y] (let - [original-result__43458__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__39478__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y & args] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn skew "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn zero? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn variance "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn not "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn / "" ([x] (let - [original-result__43458__auto__ (tech.v3.datatype.functional// x)] + [original-result__39478__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y] (let - [original-result__43458__auto__ (tech.v3.datatype.functional// x y)] + [original-result__39478__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y & args] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn infinite? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn odd? "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn + "" ([x] (let - [original-result__43458__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__39478__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y] (let - [original-result__43458__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__39478__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__))) + original-result__39478__auto__))) ([x y & args] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) (defn median "" ([col] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__))) + original-result__39477__auto__))) ([col percentiles options] (let - [original-result__43457__auto__ + [original-result__39477__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43457__auto__)))) + original-result__39477__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__43458__auto__ + [original-result__39478__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__43458__auto__)))) + original-result__39478__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 57cdc66..9f4321c 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,6 +1,5 @@ (ns tablecloth.column.api.operators-test - (:refer-clojure :exclude [+ - / < <= > >= neg? pos? odd? even? - or and zero? not odd?]) + (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? or and zero? not odd?]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) @@ -55,6 +54,16 @@ (doseq [op ops] (op a) => scalar?))) +(facts + "about ops that take two or more scalars or columns and return a column" + (let [ops [*] + a (sample-column 5) + b (sample-column 5) + c (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (op a b c) => column?))) + (facts "about ops that take left-hand / right-hand columns and returns a scalar" (let [ops [distance @@ -87,7 +96,7 @@ (facts "about ops that take left-hand / right-hand columns or scalars and returns boolean or column of booleans" - (let [ops [or and eq not-eq] + (let [ops [#_or and eq not-eq] a (sample-column 5) b (sample-column 5)] (doseq [op ops] From eb139c2329942efc668d080c97a7431e52a3ec68 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Wed, 30 Nov 2022 14:39:12 -0500 Subject: [PATCH 38/69] Add require to operators ns for utils --- src/tablecloth/column/api/operators.clj | 274 ++++++++++++------------ src/tablecloth/column/api/utils.clj | 3 +- 2 files changed, 139 insertions(+), 138 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 8aa5074..c81e9a1 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -1,6 +1,6 @@ (ns tablecloth.column.api.operators - (:require [tech.v3.datatype.functional]) + (:require [tech.v3.datatype.functional] [tablecloth.column.api.utils]) (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and])) @@ -10,543 +10,543 @@ "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn finite? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn pos? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn neg? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn * "" ([x y] (let - [original-result__39478__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__25929__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y & args] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn nan? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn even? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn - "" ([x] (let - [original-result__39478__auto__ (tech.v3.datatype.functional/- x)] + [original-result__25929__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y] (let - [original-result__39478__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__25929__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y & args] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn skew "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn zero? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn variance "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn not "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn / "" ([x] (let - [original-result__39478__auto__ (tech.v3.datatype.functional// x)] + [original-result__25929__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y] (let - [original-result__39478__auto__ (tech.v3.datatype.functional// x y)] + [original-result__25929__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y & args] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn infinite? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn odd? "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn + "" ([x] (let - [original-result__39478__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__25929__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y] (let - [original-result__39478__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__25929__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__))) + original-result__25929__auto__))) ([x y & args] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) (defn median "" ([col] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__))) + original-result__25928__auto__))) ([col percentiles options] (let - [original-result__39477__auto__ + [original-result__25928__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39477__auto__)))) + original-result__25928__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__39478__auto__ + [original-result__25929__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__39478__auto__)))) + original-result__25929__auto__)))) diff --git a/src/tablecloth/column/api/utils.clj b/src/tablecloth/column/api/utils.clj index d62a087..ed703e7 100644 --- a/src/tablecloth/column/api/utils.clj +++ b/src/tablecloth/column/api/utils.clj @@ -74,7 +74,8 @@ (defn get-ns-header [target-ns source-ns ns-exclusions] (let [ns (symbol "ns")] `(~ns ~target-ns - (:require [~source-ns]) + (:require [~source-ns] + [tablecloth.column.api.utils]) (:refer-clojure :exclude ~ns-exclusions)))) (defn do-lift [lift-plan target-ns source-ns ns-exclusions filename] From 443c980a2a01445757ff7e9bca1e24f1e105621c Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 09:49:29 -0800 Subject: [PATCH 39/69] Update test to make it more complete --- test/tablecloth/column/api/operators_test.clj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 9f4321c..152cbce 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -14,13 +14,15 @@ :scalar)) (facts - "about [/ - +] ops" + "about ops that take one or more columns or scalars + and return either a scalar or a column" (let [ops [/ - +] a (sample-column 5) b (sample-column 5) c (sample-column 5) d (sample-column 5)] (doseq [op ops] + (op a) => column? (op a b) => column? (op a b c) => column? (op a b c d) => column? From 8375035445bcbb3bee179a2604f5f892810b9fed Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:05:12 -0800 Subject: [PATCH 40/69] Lift `equals --- src/tablecloth/column/api/lift_operators.clj | 1 + src/tablecloth/column/api/operators.clj | 286 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 8 + 3 files changed, 159 insertions(+), 136 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index a94d779..2db350d 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -13,6 +13,7 @@ 'distance 'dot-product 'eq + 'equals 'not-eq 'or 'distance-squared diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index c81e9a1..38c65d8 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -10,543 +10,557 @@ "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn finite? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn pos? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn neg? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn * "" ([x y] (let - [original-result__25929__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__26257__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y & args] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn nan? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn even? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn - "" ([x] (let - [original-result__25929__auto__ (tech.v3.datatype.functional/- x)] + [original-result__26257__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y] (let - [original-result__25929__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__26257__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y & args] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn skew "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn zero? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn variance "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn not "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn / "" ([x] (let - [original-result__25929__auto__ (tech.v3.datatype.functional// x)] + [original-result__26257__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y] (let - [original-result__25929__auto__ (tech.v3.datatype.functional// x y)] + [original-result__26257__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y & args] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) + +(defn + equals + "" + ([lhs rhs & args] + (let + [original-result__26257__auto__ + (clojure.core/apply + tech.v3.datatype.functional/equals + lhs + rhs + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__26257__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn infinite? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn odd? "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn + "" ([x] (let - [original-result__25929__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__26257__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y] (let - [original-result__25929__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__26257__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__))) + original-result__26257__auto__))) ([x y & args] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) (defn median "" ([col] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__))) + original-result__26256__auto__))) ([col percentiles options] (let - [original-result__25928__auto__ + [original-result__26256__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25928__auto__)))) + original-result__26256__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__25929__auto__ + [original-result__26257__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__25929__auto__)))) + original-result__26257__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 152cbce..1bad73a 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -41,6 +41,14 @@ (op a b c) => column? (op 1 2) => boolean?))) +(facts + "about ops that take two columns and return a boolean" + (let [ops [equals] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => boolean?))) + (facts "about ops that take a single column or scalar and return a scalar" (let [ops [kurtosis From d84265903fe304ee2ed25b9e19b9c7c21fe97908 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:05:24 -0800 Subject: [PATCH 41/69] Make test more accurate --- test/tablecloth/column/api/operators_test.clj | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 1bad73a..2511d65 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -65,14 +65,16 @@ (op a) => scalar?))) (facts - "about ops that take two or more scalars or columns and return a column" + "about ops that take two or more scalars or columns and return a column or scalar" (let [ops [*] a (sample-column 5) b (sample-column 5) c (sample-column 5)] (doseq [op ops] (op a b) => column? - (op a b c) => column?))) + (op a b c) => column? + (op 5 5) + (op 5 5 5)))) (facts "about ops that take left-hand / right-hand columns and returns a scalar" From a5662150469bbcea73721e05d761b7a4eba0dbef Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:16:10 -0800 Subject: [PATCH 42/69] Reorganize tests --- test/tablecloth/column/api/operators_test.clj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 2511d65..4a5e11c 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -41,14 +41,6 @@ (op a b c) => column? (op 1 2) => boolean?))) -(facts - "about ops that take two columns and return a boolean" - (let [ops [equals] - a (sample-column 5) - b (sample-column 5)] - (doseq [op ops] - (op a b) => boolean?))) - (facts "about ops that take a single column or scalar and return a scalar" (let [ops [kurtosis @@ -105,6 +97,14 @@ (typeof (op a)) => :boolean (op 1) => boolean?))) +(facts + "about ops that take left-hand and right-hand columns and return a boolean" + (let [ops [equals] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => boolean?))) + (facts "about ops that take left-hand / right-hand columns or scalars and returns boolean or column of booleans" From 496f8dcfabfeaaf92cb55f1dcae65d93d7e033ca Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:16:50 -0800 Subject: [PATCH 43/69] Fix grammar --- test/tablecloth/column/api/operators_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 4a5e11c..4d4fce0 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -69,7 +69,7 @@ (op 5 5 5)))) (facts - "about ops that take left-hand / right-hand columns and returns a scalar" + "about ops that take left-hand / right-hand columns and return a scalar" (let [ops [distance dot-product distance-squared] From 437829b5b3136d88d272d87054968721a0eef294 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:28:52 -0800 Subject: [PATCH 44/69] Lift 'shift --- src/tablecloth/column/api/lift_operators.clj | 8 +- src/tablecloth/column/api/operators.clj | 286 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 5 + 3 files changed, 160 insertions(+), 139 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 2db350d..b5b5030 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -54,7 +54,13 @@ {:new-args '([col percentiles] [col percentiles options]) :new-args-lookup {'data 'col, 'percentages 'percentiles, - 'options 'options}}))}) + 'options 'options}})) + ['shift] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([col n]) + :new-args-lookup {'rdr 'col + 'n 'n}}))}) (defn deserialize-lift-fn-lookup [] diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 38c65d8..52b790b 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -10,557 +10,567 @@ "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn finite? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn pos? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) + +(defn + shift + "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" + ([col n] + (let + [original-result__41971__auto__ + (tech.v3.datatype.functional/shift col n)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41971__auto__)))) (defn neg? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn * "" ([x y] (let - [original-result__26257__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__41972__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y & args] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn nan? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn even? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn - "" ([x] (let - [original-result__26257__auto__ (tech.v3.datatype.functional/- x)] + [original-result__41972__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y] (let - [original-result__26257__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__41972__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y & args] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn skew "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn zero? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn variance "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn not "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn / "" ([x] (let - [original-result__26257__auto__ (tech.v3.datatype.functional// x)] + [original-result__41972__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y] (let - [original-result__26257__auto__ (tech.v3.datatype.functional// x y)] + [original-result__41972__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y & args] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn infinite? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn odd? "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn + "" ([x] (let - [original-result__26257__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__41972__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y] (let - [original-result__26257__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__41972__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__))) + original-result__41972__auto__))) ([x y & args] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) (defn median "" ([col] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__))) + original-result__41971__auto__))) ([col percentiles options] (let - [original-result__26256__auto__ + [original-result__41971__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26256__auto__)))) + original-result__41971__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__26257__auto__ + [original-result__41972__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26257__auto__)))) + original-result__41972__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 4d4fce0..7b6fcb7 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -13,6 +13,11 @@ (= (tech.v3.datatype.argtypes/arg-type item) :scalar)) +(facts + "about 'shift" + (let [a (column [1 2 3 4 5])] + (shift a 2) => [1 1 1 2 3])) + (facts "about ops that take one or more columns or scalars and return either a scalar or a column" From 97a398f2ff5f2cd3ddebec5b5f96a42fa1c98dfc Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:29:03 -0800 Subject: [PATCH 45/69] Uncomment 'or test --- test/tablecloth/column/api/operators_test.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 7b6fcb7..39f983f 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -113,7 +113,7 @@ (facts "about ops that take left-hand / right-hand columns or scalars and returns boolean or column of booleans" - (let [ops [#_or and eq not-eq] + (let [ops [or and eq not-eq] a (sample-column 5) b (sample-column 5)] (doseq [op ops] From ee15b364f0e9a038a40b3b5fd543b5b1004dee80 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 10:55:39 -0800 Subject: [PATCH 46/69] Lift 'normalize op --- src/tablecloth/column/api/lift_operators.clj | 1 + src/tablecloth/column/api/operators.clj | 10 ++++++++++ test/tablecloth/column/api/operators_test.clj | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index b5b5030..4618442 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -14,6 +14,7 @@ 'dot-product 'eq 'equals + 'normalize 'not-eq 'or 'distance-squared diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 52b790b..a184822 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -63,6 +63,16 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__41972__auto__)))) +(defn + normalize + "" + ([item] + (let + [original-result__41972__auto__ + (tech.v3.datatype.functional/normalize item)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41972__auto__)))) + (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 39f983f..9b4472e 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -18,6 +18,13 @@ (let [a (column [1 2 3 4 5])] (shift a 2) => [1 1 1 2 3])) +(facts + "about ops that take a single column and return a column" + (let [ops [normalize] + a (sample-column 5)] + (doseq [op ops] + (op a) => column?))) + (facts "about ops that take one or more columns or scalars and return either a scalar or a column" From 8cff8c104697387cd6cbc2fe498b94621b2e5aad Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Thu, 29 Dec 2022 11:01:16 -0800 Subject: [PATCH 47/69] Life 'magnitude --- src/tablecloth/column/api/lift_operators.clj | 1 + src/tablecloth/column/api/operators.clj | 16 ++++++++++++++++ test/tablecloth/column/api/operators_test.clj | 7 +++++++ 3 files changed, 24 insertions(+) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 4618442..5a4a60d 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -14,6 +14,7 @@ 'dot-product 'eq 'equals + 'magnitude 'normalize 'not-eq 'or diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index a184822..2ef3836 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -392,6 +392,22 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__41971__auto__)))) +(defn + magnitude + "" + ([item _options] + (let + [original-result__41972__auto__ + (tech.v3.datatype.functional/magnitude item _options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41972__auto__))) + ([item] + (let + [original-result__41972__auto__ + (tech.v3.datatype.functional/magnitude item)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41972__auto__)))) + (defn / "" diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 9b4472e..9b015bd 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -25,6 +25,13 @@ (doseq [op ops] (op a) => column?))) +(facts + "about ops that take a single column and return a scalar" + (let [ops [magnitude] + a (sample-column 5)] + (doseq [op ops] + (op a) => scalar?))) + (facts "about ops that take one or more columns or scalars and return either a scalar or a column" From c5ef1576042d227be2f54f145e0e5701372c2e49 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 8 Jan 2023 23:23:18 -0500 Subject: [PATCH 48/69] Lifting bit manipulation ops --- src/tablecloth/column/api/lift_operators.clj | 15 +- src/tablecloth/column/api/operators.clj | 496 ++++++++++++------ test/tablecloth/column/api/operators_test.clj | 19 +- 3 files changed, 379 insertions(+), 151 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 5a4a60d..337fc1c 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -10,6 +10,16 @@ '< '<= '* + 'bit-and + 'bit-and-not + 'bit-clear + 'bit-flip + 'bit-or + 'bit-set + 'bit-shift-right + 'bit-shift-left + ;; 'bit-test + 'bit-xor 'distance 'dot-product 'eq @@ -64,6 +74,7 @@ :new-args-lookup {'rdr 'col 'n 'n}}))}) +(tech.v3.datatype.functional/bit-set [1 2 3] 1) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] @@ -86,7 +97,9 @@ (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional - '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and] + '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and + bit-and bit-and-not bit-clear bit-flip bit-or bit-set + bit-shift-right bit-shift-left bit-test bit-xor] "src/tablecloth/column/api/operators.clj") ,) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 2ef3836..369f6ac 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -3,600 +3,802 @@ (:require [tech.v3.datatype.functional] [tablecloth.column.api.utils]) (:refer-clojure :exclude - [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and])) + [+ + - + / + < + <= + > + >= + * + neg? + pos? + odd? + even? + zero? + not + odd? + or + and + bit-and + bit-and-not + bit-clear + bit-flip + bit-or + bit-set + bit-shift-right + bit-shift-left + bit-test + bit-xor])) (defn kurtosis "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-set + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-set x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn finite? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) + +(defn + bit-shift-right + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-shift-right x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-shift-right + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) + +(defn + bit-shift-left + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-shift-left x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-shift-left + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn normalize "" ([item] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn pos? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([col n] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/shift col n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-xor + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-xor x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn neg? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn * "" ([x y] (let - [original-result__41972__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__41914__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y & args] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn nan? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-and-not + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-and-not x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-and-not + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn even? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn - "" ([x] (let - [original-result__41972__auto__ (tech.v3.datatype.functional/- x)] + [original-result__41914__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y] (let - [original-result__41972__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__41914__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y & args] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn skew "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-test + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-test x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-test x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn zero? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn variance "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-and + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-and x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn not "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([item] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn / "" ([x] (let - [original-result__41972__auto__ (tech.v3.datatype.functional// x)] + [original-result__41914__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y] (let - [original-result__41972__auto__ (tech.v3.datatype.functional// x y)] + [original-result__41914__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y & args] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) + +(defn + bit-or + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-or x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) + +(defn + bit-flip + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-flip x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn infinite? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn odd? "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) + +(defn + bit-clear + "" + ([x y] + (let + [original-result__41914__auto__ + (tech.v3.datatype.functional/bit-clear x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__))) + ([x y & args] + (let + [original-result__41914__auto__ + (clojure.core/apply + tech.v3.datatype.functional/bit-clear + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__41914__auto__)))) (defn + "" ([x] (let - [original-result__41972__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__41914__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y] (let - [original-result__41972__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__41914__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__))) + original-result__41914__auto__))) ([x y & args] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) (defn median "" ([col] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__))) + original-result__41913__auto__))) ([col percentiles options] (let - [original-result__41971__auto__ + [original-result__41913__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41971__auto__)))) + original-result__41913__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__41972__auto__ + [original-result__41914__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41972__auto__)))) + original-result__41914__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 9b015bd..d067855 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,11 +1,12 @@ (ns tablecloth.column.api.operators-test - (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? or and zero? not odd?]) + (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and + bit-and bit-and-not bit-clear bit-flip bit-or bit-set + bit-shift-right bit-shift-left bit-test bit-xor]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) (:use [tablecloth.column.api.operators])) - (defn sample-column [n] (column (repeatedly n #(rand-int 100)))) @@ -75,9 +76,21 @@ (doseq [op ops] (op a) => scalar?))) + (facts "about ops that take two or more scalars or columns and return a column or scalar" - (let [ops [*] + (let [ops [* + bit-and + bit-and-not + bit-clear + bit-flip + bit-or + bit-set + bit-shift-right + bit-shift-left + ;; bit-test + bit-xor + ] a (sample-column 5) b (sample-column 5) c (sample-column 5)] From f89f65af40677d395794eb9d384f72061ca565d6 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 16 Jan 2023 13:13:54 -0500 Subject: [PATCH 49/69] lift ieee-remainder --- src/tablecloth/column/api/lift_operators.clj | 1 + src/tablecloth/column/api/operators.clj | 400 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 1 + 3 files changed, 204 insertions(+), 198 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 337fc1c..42540cf 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -24,6 +24,7 @@ 'dot-product 'eq 'equals + 'ieee-remainder 'magnitude 'normalize 'not-eq diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 369f6ac..580ba2a 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -36,769 +36,773 @@ "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn bit-set "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn finite? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) + +(defn + ieee-remainder + "" + ([x y] + (let + [original-result__42097__auto__ + (tech.v3.datatype.functional/ieee-remainder x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42097__auto__))) + ([x y & args] + (let + [original-result__42097__auto__ + (clojure.core/apply + tech.v3.datatype.functional/ieee-remainder + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42097__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn normalize "" ([item] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn pos? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([col n] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/shift col n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn neg? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn * "" ([x y] (let - [original-result__41914__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__42097__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn nan? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn even? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn - "" ([x] (let - [original-result__41914__auto__ (tech.v3.datatype.functional/- x)] + [original-result__42097__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y] (let - [original-result__41914__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__42097__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn skew "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) - -(defn - bit-test - "" - ([x y] - (let - [original-result__41914__auto__ - (tech.v3.datatype.functional/bit-test x y)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) - ([x y & args] - (let - [original-result__41914__auto__ - (clojure.core/apply tech.v3.datatype.functional/bit-test x y args)] - (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42096__auto__)))) (defn zero? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn variance "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn bit-and "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn not "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([item] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn / "" ([x] (let - [original-result__41914__auto__ (tech.v3.datatype.functional// x)] + [original-result__42097__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y] (let - [original-result__41914__auto__ (tech.v3.datatype.functional// x y)] + [original-result__42097__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn bit-or "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn infinite? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn odd? "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn + "" ([x] (let - [original-result__41914__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__42097__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y] (let - [original-result__41914__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__42097__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__))) + original-result__42097__auto__))) ([x y & args] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) (defn median "" ([col] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__))) + original-result__42096__auto__))) ([col percentiles options] (let - [original-result__41913__auto__ + [original-result__42096__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41913__auto__)))) + original-result__42096__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__41914__auto__ + [original-result__42097__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__41914__auto__)))) + original-result__42097__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index d067855..6b1eb5e 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -90,6 +90,7 @@ bit-shift-left ;; bit-test bit-xor + ieee-remainder ] a (sample-column 5) b (sample-column 5) From adfa1ff6740d7d66b242e803b74dd0ed86732c79 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 16 Jan 2023 13:52:06 -0500 Subject: [PATCH 50/69] Lifting more functions --- src/tablecloth/column/api/lift_operators.clj | 13 +- src/tablecloth/column/api/operators.clj | 508 +++++++++++------- test/tablecloth/column/api/operators_test.clj | 10 +- 3 files changed, 339 insertions(+), 192 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 42540cf..304c48f 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -10,6 +10,7 @@ '< '<= '* + 'atan2 'bit-and 'bit-and-not 'bit-clear @@ -18,17 +19,24 @@ 'bit-set 'bit-shift-right 'bit-shift-left - ;; 'bit-test + ;; 'bit-test - what's the call signature for this fn? 'bit-xor 'distance 'dot-product 'eq 'equals + 'hypot 'ieee-remainder + 'max 'magnitude + 'min 'normalize 'not-eq 'or + 'pow + 'quot + 'rem + 'unsigned-bit-shift-right 'distance-squared 'and] lift-op ['kurtosis @@ -100,8 +108,7 @@ 'tech.v3.datatype.functional '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor] + bit-shift-right bit-shift-left bit-test bit-xor max min] "src/tablecloth/column/api/operators.clj") ,) - diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 580ba2a..41e678e 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -29,780 +29,914 @@ bit-shift-right bit-shift-left bit-test - bit-xor])) + bit-xor + max + min])) (defn kurtosis "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn bit-set "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn finite? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + atan2 + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/atan2 x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn normalize "" ([item] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + hypot + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/hypot x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn pos? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([col n] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/shift col n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + unsigned-bit-shift-right + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply + tech.v3.datatype.functional/unsigned-bit-shift-right + x + y + args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn neg? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn * "" ([x y] (let - [original-result__42097__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__42188__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + min + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/min x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/min x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn nan? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + quot + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/quot x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/quot x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn even? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn - "" ([x] (let - [original-result__42097__auto__ (tech.v3.datatype.functional/- x)] + [original-result__42188__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y] (let - [original-result__42097__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__42188__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) + +(defn + pow + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/pow x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/pow x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn skew "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn zero? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) + +(defn + rem + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/rem x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/rem x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn variance "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn bit-and "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn not "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([item] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn / "" ([x] (let - [original-result__42097__auto__ (tech.v3.datatype.functional// x)] + [original-result__42188__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y] (let - [original-result__42097__auto__ (tech.v3.datatype.functional// x y)] + [original-result__42188__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn bit-or "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn infinite? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn odd? "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn + "" ([x] (let - [original-result__42097__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__42188__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y] (let - [original-result__42097__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__42188__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__))) + original-result__42188__auto__))) ([x y & args] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) (defn median "" ([col] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) + +(defn + max + "" + ([x y] + (let + [original-result__42188__auto__ + (tech.v3.datatype.functional/max x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__))) + ([x y & args] + (let + [original-result__42188__auto__ + (clojure.core/apply tech.v3.datatype.functional/max x y args)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__42188__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__))) + original-result__42187__auto__))) ([col percentiles options] (let - [original-result__42096__auto__ + [original-result__42187__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42096__auto__)))) + original-result__42187__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__42097__auto__ + [original-result__42188__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42097__auto__)))) + original-result__42188__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 6b1eb5e..f0c837f 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,7 +1,7 @@ (ns tablecloth.column.api.operators-test (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor]) + bit-shift-right bit-shift-left bit-test bit-xor max min]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) @@ -76,7 +76,6 @@ (doseq [op ops] (op a) => scalar?))) - (facts "about ops that take two or more scalars or columns and return a column or scalar" (let [ops [* @@ -90,7 +89,14 @@ bit-shift-left ;; bit-test bit-xor + hypot ieee-remainder + max + min + pow + quot + rem + unsigned-bit-shift-right ] a (sample-column 5) b (sample-column 5) From 561428d29e4874f94a8361818cfee47faf76c7f0 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Mon, 16 Jan 2023 13:58:36 -0500 Subject: [PATCH 51/69] Add excludes --- src/tablecloth/column/api/lift_operators.clj | 3 +- src/tablecloth/column/api/operators.clj | 441 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 3 +- 3 files changed, 226 insertions(+), 221 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 304c48f..1dddc36 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -108,7 +108,8 @@ 'tech.v3.datatype.functional '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor max min] + bit-shift-right bit-shift-left bit-test bit-xor max min quot rem + unsigned-bit-shift-right] "src/tablecloth/column/api/operators.clj") ,) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 41e678e..a30e758 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -31,912 +31,915 @@ bit-test bit-xor max - min])) + min + quot + rem + unsigned-bit-shift-right])) (defn kurtosis "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn bit-set "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn finite? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn atan2 "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn normalize "" ([item] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn hypot "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn pos? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([col n] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/shift col n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn neg? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn * "" ([x y] (let - [original-result__42188__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__26255__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn min "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn nan? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn quot "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn even? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn - "" ([x] (let - [original-result__42188__auto__ (tech.v3.datatype.functional/- x)] + [original-result__26255__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y] (let - [original-result__42188__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__26255__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn pow "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn skew "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn zero? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn rem "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn variance "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn bit-and "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn not "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([item] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn / "" ([x] (let - [original-result__42188__auto__ (tech.v3.datatype.functional// x)] + [original-result__26255__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y] (let - [original-result__42188__auto__ (tech.v3.datatype.functional// x y)] + [original-result__26255__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn bit-or "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn infinite? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn odd? "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn + "" ([x] (let - [original-result__42188__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__26255__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y] (let - [original-result__42188__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__26255__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn median "" ([col] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn max "" ([x y] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__))) + original-result__26255__auto__))) ([x y & args] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__))) + original-result__26254__auto__))) ([col percentiles options] (let - [original-result__42187__auto__ + [original-result__26254__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42187__auto__)))) + original-result__26254__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__42188__auto__ + [original-result__26255__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__42188__auto__)))) + original-result__26255__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index f0c837f..3ef40c0 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,7 +1,8 @@ (ns tablecloth.column.api.operators-test (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor max min]) + bit-shift-right bit-shift-left bit-test bit-xor max min quot rem + unsigned-bit-shift-right]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) From 666e61498427ea3438fa31a1d5b15c9b0777e8db Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 11:51:17 -0500 Subject: [PATCH 52/69] Lift a bunch of new functions --- src/tablecloth/column/api/lift_operators.clj | 53 +- src/tablecloth/column/api/operators.clj | 940 ++++++++++++++---- test/tablecloth/column/api/operators_test.clj | 42 +- 3 files changed, 803 insertions(+), 232 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 1dddc36..3ef2ee2 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -2,43 +2,74 @@ (:require [tablecloth.column.api.utils :refer [do-lift lift-op]])) (def serialized-lift-fn-lookup - {['+ + {['* + '+ '- '/ - '> - '>= '< '<= - '* + '> + '>= + 'abs + 'acos + 'and + 'asin + 'atan 'atan2 'bit-and 'bit-and-not 'bit-clear 'bit-flip + 'bit-not 'bit-or 'bit-set - 'bit-shift-right 'bit-shift-left - ;; 'bit-test - what's the call signature for this fn? + 'bit-shift-right + #_bit-test ;; can't get this to work yet. 'bit-xor + 'cbrt + 'ceil + 'cos + 'cosh 'distance + 'distance-squared 'dot-product 'eq 'equals + 'exp + 'expm1 + 'floor + 'get-significand 'hypot + 'identity 'ieee-remainder - 'max + 'log + 'log10 + 'log1p + 'logistic 'magnitude + 'max 'min + 'next-down + 'next-up 'normalize 'not-eq 'or 'pow 'quot 'rem - 'unsigned-bit-shift-right - 'distance-squared - 'and] lift-op + 'rint + 'signum + 'sin + 'sinh + 'sq + 'sqrt + 'tan + 'tanh + 'to-degrees + 'to-radians + 'ulp + 'unsigned-bit-shift-right] lift-op ['kurtosis 'sum 'mean @@ -109,7 +140,7 @@ '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set bit-shift-right bit-shift-left bit-test bit-xor max min quot rem - unsigned-bit-shift-right] + unsigned-bit-shift-right identity infinite? abs bit-not] "src/tablecloth/column/api/operators.clj") ,) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index a30e758..f21e339 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -34,912 +34,1414 @@ min quot rem - unsigned-bit-shift-right])) + unsigned-bit-shift-right + identity + infinite? + abs + bit-not])) (defn kurtosis "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn bit-set "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn finite? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/finite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/finite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + to-radians + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/to-radians x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/to-radians x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + log + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/log x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/log x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + acos + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/acos x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/acos x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + to-degrees + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/to-degrees x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/to-degrees x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + floor + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/floor x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/floor x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn atan2 "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn normalize "" ([item] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn hypot "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + tanh + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/tanh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/tanh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + sq + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sq x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/sq x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn pos? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/pos? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/pos? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([col n] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/shift col n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + ceil + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/ceil x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/ceil x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn neg? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/neg? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/neg? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn * "" ([x y] (let - [original-result__26255__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__44926__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn min "" + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/min x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + atan + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/atan x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/atan x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn mathematical-integer? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/mathematical-integer? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/mathematical-integer? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + expm1 + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/expm1 x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/expm1 x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + identity + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/identity x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/identity x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn nan? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/nan? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/nan? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + logistic + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/logistic x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/logistic x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + cos + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/cos x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/cos x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + log10 + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/log10 x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/log10 x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn quot "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + tan + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/tan x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/tan x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + cbrt + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/cbrt x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/cbrt x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn even? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/even? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/even? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + sqrt + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sqrt x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sqrt x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + next-down + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/next-down x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/next-down x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn - "" ([x] (let - [original-result__26255__auto__ (tech.v3.datatype.functional/- x)] + [original-result__44926__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y] (let - [original-result__26255__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__44926__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn pow "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + next-up + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/next-up x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/next-up x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn skew "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + exp + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/exp x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/exp x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn zero? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/zero? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/zero? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn rem "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + cosh + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/cosh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/cosh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn variance "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + get-significand + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/get-significand x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/get-significand x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn bit-and "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn not "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/not col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/not col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([item] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn / "" ([x] (let - [original-result__26255__auto__ (tech.v3.datatype.functional// x)] + [original-result__44926__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y] (let - [original-result__26255__auto__ (tech.v3.datatype.functional// x y)] + [original-result__44926__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn bit-or "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + log1p + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/log1p x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/log1p x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + asin + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/asin x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/asin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn infinite? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/infinite? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/infinite? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/round col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/round col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn odd? "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/odd? col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/odd? col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) (defn + "" ([x] (let - [original-result__26255__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__44926__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y] (let - [original-result__26255__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__44926__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + abs + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/abs x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/abs x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn median "" ([col] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + sinh + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sinh x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sinh x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + rint + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/rint x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/rint x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + bit-not + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/bit-not x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/bit-not x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn max "" + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/max x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) ([x y] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__))) + original-result__44926__auto__))) ([x y & args] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) + +(defn + ulp + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/ulp x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/ulp x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([col percentiles] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/percentiles percentiles col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__))) + original-result__44925__auto__))) ([col percentiles options] (let - [original-result__26254__auto__ + [original-result__44925__auto__ (tech.v3.datatype.functional/percentiles percentiles options col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26254__auto__)))) + original-result__44925__auto__)))) + +(defn + sin + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/sin x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ (tech.v3.datatype.functional/sin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) + +(defn + signum + "" + ([x options] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/signum x options)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__))) + ([x] + (let + [original-result__44926__auto__ + (tech.v3.datatype.functional/signum x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44926__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__26255__auto__ + [original-result__44926__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__26255__auto__)))) + original-result__44926__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 3ef40c0..4d27b4f 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -2,12 +2,13 @@ (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and bit-and bit-and-not bit-clear bit-flip bit-or bit-set bit-shift-right bit-shift-left bit-test bit-xor max min quot rem - unsigned-bit-shift-right]) + unsigned-bit-shift-right identity infinite? abs bit-not]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) (:use [tablecloth.column.api.operators])) + (defn sample-column [n] (column (repeatedly n #(rand-int 100)))) @@ -22,7 +23,38 @@ (facts "about ops that take a single column and return a column" - (let [ops [normalize] + (let [ops [abs + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + exp + expm1 + floor + get-significand + identity + log + log10 + log1p + logistic + next-down + next-up + normalize + rint + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp] a (sample-column 5)] (doseq [op ops] (op a) => column?))) @@ -156,3 +188,9 @@ (typeof (op a b)) => :boolean (op 1 2) => boolean?))) + +(comment + + (tech.v3.datatype.functional/to-radians [1 2 3]) + + ) From ab2fb93a83043352409e155f0163369f36e0d03f Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 12:27:13 -0500 Subject: [PATCH 53/69] Alphebetize some lists --- src/tablecloth/column/api/lift_operators.clj | 9 +++--- src/tablecloth/column/api/operators.clj | 30 +++++++++---------- test/tablecloth/column/api/operators_test.clj | 8 ++--- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 3ef2ee2..b4a200f 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -137,10 +137,11 @@ (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional - '[+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and - bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor max min quot rem - unsigned-bit-shift-right identity infinite? abs bit-not] + '[* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?] "src/tablecloth/column/api/operators.clj") ,) + diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index f21e339..bbe955e 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -3,42 +3,42 @@ (:require [tech.v3.datatype.functional] [tablecloth.column.api.utils]) (:refer-clojure :exclude - [+ + [* + + - / < <= > >= - * - neg? - pos? - odd? - even? - zero? - not - odd? - or + abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set - bit-shift-right bit-shift-left + bit-shift-right bit-test bit-xor + even? + identity + infinite? max min + neg? + not + odd? + odd? + or + pos? quot rem unsigned-bit-shift-right - identity - infinite? - abs - bit-not])) + zero?])) (defn kurtosis diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 4d27b4f..3136c47 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -1,8 +1,8 @@ (ns tablecloth.column.api.operators-test - (:refer-clojure :exclude [+ - / < <= > >= * neg? pos? odd? even? zero? not odd? or and - bit-and bit-and-not bit-clear bit-flip bit-or bit-set - bit-shift-right bit-shift-left bit-test bit-xor max min quot rem - unsigned-bit-shift-right identity infinite? abs bit-not]) + (:refer-clojure :exclude [* + - / < <= > >= abs and bit-and bit-and-not bit-clear bit-flip + bit-not bit-or bit-set bit-shift-left bit-shift-right bit-test bit-xor + even? identity infinite? max min neg? not odd? odd? or pos? quot rem + unsigned-bit-shift-right zero?]) (:require [midje.sweet :refer [fact facts =>]] [clojure.test :refer [deftest is]] [tablecloth.column.api :refer [column column? typeof]]) From 4a8e61f5127f371ec37179c712c68b5114de227e Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 12:51:57 -0500 Subject: [PATCH 54/69] More alphebitization --- src/tablecloth/column/api/lift_operators.clj | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index b4a200f..5498ae9 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -84,17 +84,18 @@ {:new-args '([col] [col options]) :new-args-lookup {'data 'col 'options 'options}})) - ['finite? - 'pos? - 'neg? + ['even? + 'finite? + 'infinite? 'mathematical-integer? 'nan? - 'even? - 'zero? + 'neg? 'not - 'infinite? + 'odd? + 'pos? 'round - 'odd?] (fn [fn-sym fn-meta] + 'zero?] + (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta {:new-args '([col] [col options]) @@ -114,8 +115,6 @@ :new-args-lookup {'rdr 'col 'n 'n}}))}) -(tech.v3.datatype.functional/bit-set [1 2 3] 1) - (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] (loop [syms symlist From f844fdd227a8fd327efb5db81a4bc084e39859f5 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 19:51:09 -0500 Subject: [PATCH 55/69] Clean up --- src/tablecloth/column/api/lift_operators.clj | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 5498ae9..6d5b4a4 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -127,12 +127,6 @@ serialized-lift-fn-lookup)) (comment - (def fun-mappings (ns-publics 'tech.v3.datatype.functional)) - - (-> fun-mappings - (get 'kurtosis) - meta) - (do-lift (deserialize-lift-fn-lookup) 'tablecloth.column.api.operators 'tech.v3.datatype.functional From 91674a1210211981f1eb8ec30c9e5a6ad71bc1c5 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 19:53:00 -0500 Subject: [PATCH 56/69] Instead of using `col` as arg conform to using `x & and `y --- src/tablecloth/column/api/lift_operators.clj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 6d5b4a4..3773bc5 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -98,21 +98,21 @@ (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([col] [col options]) - :new-args-lookup {'arg 'col + {:new-args '([x] [x options]) + :new-args-lookup {'arg 'x 'options 'options}})) ['percentiles] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([col percentiles] [col percentiles options]) - :new-args-lookup {'data 'col, + {:new-args '([x percentiles] [x percentiles options]) + :new-args-lookup {'data 'x, 'percentages 'percentiles, 'options 'options}})) ['shift] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta - {:new-args '([col n]) - :new-args-lookup {'rdr 'col + {:new-args '([x n]) + :new-args-lookup {'rdr 'x 'n 'n}}))}) (defn deserialize-lift-fn-lookup [] From 49e5cb00f253a04ee41e690834f3dc67314497fc Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 19:58:15 -0500 Subject: [PATCH 57/69] Temporarily disable failing test fix in 7.000-beta23 --- test/tablecloth/column/api/column_test.clj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index a6a3b3e..2346ffe 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -25,7 +25,9 @@ (fact "`typeof` returns the concrete type of the elements" (typeof (column [1 2 3])) => :int64 (typeof (column ["a" "b" "c"])) => :string - (typeof (column [true false])) => :boolean) + ;; disable this test until TC reaches 7.00-beta23 where it's fixed + ;;(typeof (column [true false])) => :boolean + ) (fact "`typeof?` can check the concerete type of column elements" (typeof? (column [1 2 3]) :int64) => true From ff4eea62a28ad89974c4ababfb05175209602191 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 20:02:50 -0500 Subject: [PATCH 58/69] Disable the correct test --- test/tablecloth/column/api/column_test.clj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/tablecloth/column/api/column_test.clj b/test/tablecloth/column/api/column_test.clj index 2346ffe..3b77c51 100644 --- a/test/tablecloth/column/api/column_test.clj +++ b/test/tablecloth/column/api/column_test.clj @@ -18,16 +18,16 @@ (-> [true false true] (column) (tech.v3.datatype/elemwise-datatype)) => :boolean - (-> [1 true false] - (column) - (tech.v3.datatype/elemwise-datatype)) => :object) + ;; disable this test until TC reaches 7.00-beta2 + ;;(-> [1 true false] + ;; (column) + ;; (tech.v3.datatype/elemwise-datatype)) => :object + ) (fact "`typeof` returns the concrete type of the elements" (typeof (column [1 2 3])) => :int64 (typeof (column ["a" "b" "c"])) => :string - ;; disable this test until TC reaches 7.00-beta23 where it's fixed - ;;(typeof (column [true false])) => :boolean - ) + (typeof (column [true false])) => :boolean) (fact "`typeof?` can check the concerete type of column elements" (typeof? (column [1 2 3]) :int64) => true From 451d426363b5c672b0ea251a3dbcd6014677626e Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 20:07:14 -0500 Subject: [PATCH 59/69] Just some minor cleanup in op tests --- test/tablecloth/column/api/operators_test.clj | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 3136c47..bd2db47 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -67,8 +67,7 @@ (op a) => scalar?))) (facts - "about ops that take one or more columns or scalars - and return either a scalar or a column" + "about ops that take one or more columns or scalars and return either a scalar or a column" (let [ops [/ - +] a (sample-column 5) b (sample-column 5) @@ -84,7 +83,7 @@ (op 1 2 3) => scalar?))) (facts - "about [> >= < <=]" + "about comparator ops that take two or more columns and return a boolean" (let [ops [> >= < <=] a (sample-column 5) b (sample-column 5) @@ -151,8 +150,7 @@ (op a b) => scalar?))) (facts - "about ops that take a single column or scalar - and return boolean or column of booleans" + "about ops that take a single column or scalar and return boolean or column of booleans" (let [ops [finite? pos? neg? @@ -187,10 +185,3 @@ (op a b) => column? (typeof (op a b)) => :boolean (op 1 2) => boolean?))) - - -(comment - - (tech.v3.datatype.functional/to-radians [1 2 3]) - - ) From 017ad824e6d38c95b3c4df4d2e02714469a58799 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 20:10:19 -0500 Subject: [PATCH 60/69] Some more cleanup/reorg in op tests --- test/tablecloth/column/api/operators_test.clj | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index bd2db47..926f0a8 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -83,7 +83,7 @@ (op 1 2 3) => scalar?))) (facts - "about comparator ops that take two or more columns and return a boolean" + "about comparison ops that take two or more columns and return a boolean" (let [ops [> >= < <=] a (sample-column 5) b (sample-column 5) @@ -93,6 +93,24 @@ (op a b c) => column? (op 1 2) => boolean?))) +(facts + "about comparison ops that take two columns and return a boolean" + (let [ops [equals] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => boolean?))) + +(facts + "about comparison ops that take two columns or scalars and return a boolean or column of booleans" + (let [ops [or and eq not-eq] + a (sample-column 5) + b (sample-column 5)] + (doseq [op ops] + (op a b) => column? + (typeof (op a b)) => :boolean + (op 1 2) => boolean?))) + (facts "about ops that take a single column or scalar and return a scalar" (let [ops [kurtosis @@ -167,21 +185,3 @@ (typeof (op a)) => :boolean (op 1) => boolean?))) -(facts - "about ops that take left-hand and right-hand columns and return a boolean" - (let [ops [equals] - a (sample-column 5) - b (sample-column 5)] - (doseq [op ops] - (op a b) => boolean?))) - -(facts - "about ops that take left-hand / right-hand columns or scalars - and returns boolean or column of booleans" - (let [ops [or and eq not-eq] - a (sample-column 5) - b (sample-column 5)] - (doseq [op ops] - (op a b) => column? - (typeof (op a b)) => :boolean - (op 1 2) => boolean?))) From f9ad897054c4bb3a626ec3456fbda407f77d3d88 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 20:21:47 -0500 Subject: [PATCH 61/69] Update generated operators namespace with switch from col -> x etc --- src/tablecloth/column/api/operators.clj | 101 ++++++++++++------------ 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index bbe955e..45eb8e9 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -75,16 +75,16 @@ (defn finite? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/finite? col)] + (tech.v3.datatype.functional/finite? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/finite? col options)] + (tech.v3.datatype.functional/finite? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -345,26 +345,26 @@ (defn pos? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/pos? col)] + (tech.v3.datatype.functional/pos? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/pos? col options)] + (tech.v3.datatype.functional/pos? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" - ([col n] + ([x n] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/shift col n)] + (tech.v3.datatype.functional/shift x n)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -423,16 +423,16 @@ (defn neg? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/neg? col)] + (tech.v3.datatype.functional/neg? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/neg? col options)] + (tech.v3.datatype.functional/neg? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -507,16 +507,16 @@ (defn mathematical-integer? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/mathematical-integer? col)] + (tech.v3.datatype.functional/mathematical-integer? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/mathematical-integer? col options)] + (tech.v3.datatype.functional/mathematical-integer? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -555,16 +555,16 @@ (defn nan? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/nan? col)] + (tech.v3.datatype.functional/nan? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/nan? col options)] + (tech.v3.datatype.functional/nan? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -747,16 +747,16 @@ (defn even? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/even? col)] + (tech.v3.datatype.functional/even? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/even? col options)] + (tech.v3.datatype.functional/even? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -898,16 +898,16 @@ (defn zero? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/zero? col)] + (tech.v3.datatype.functional/zero? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/zero? col options)] + (tech.v3.datatype.functional/zero? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -994,16 +994,15 @@ (defn not "" - ([col] + ([x] (let - [original-result__44925__auto__ - (tech.v3.datatype.functional/not col)] + [original-result__44925__auto__ (tech.v3.datatype.functional/not x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/not col options)] + (tech.v3.datatype.functional/not x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -1172,32 +1171,32 @@ (defn infinite? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/infinite? col)] + (tech.v3.datatype.functional/infinite? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/infinite? col options)] + (tech.v3.datatype.functional/infinite? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/round col)] + (tech.v3.datatype.functional/round x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/round col options)] + (tech.v3.datatype.functional/round x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -1220,16 +1219,16 @@ (defn odd? "" - ([col] + ([x] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/odd? col)] + (tech.v3.datatype.functional/odd? x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col options] + ([x options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/odd? col options)] + (tech.v3.datatype.functional/odd? x options)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) @@ -1391,16 +1390,16 @@ (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." - ([col percentiles] + ([x percentiles] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/percentiles percentiles col)] + (tech.v3.datatype.functional/percentiles percentiles x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__))) - ([col percentiles options] + ([x percentiles options] (let [original-result__44925__auto__ - (tech.v3.datatype.functional/percentiles percentiles options col)] + (tech.v3.datatype.functional/percentiles percentiles options x)] (tablecloth.column.api.utils/return-scalar-or-column original-result__44925__auto__)))) From c1edbcada136efd9bbde06d7c15040a0d07d39ff Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 21:01:07 -0500 Subject: [PATCH 62/69] Lift 'descriptive-statistics --- src/tablecloth/column/api/lift_operators.clj | 17 +++- src/tablecloth/column/api/operators.clj | 35 ++++++++ test/tablecloth/column/api/operators_test.clj | 79 ++++++++++--------- 3 files changed, 92 insertions(+), 39 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 3773bc5..3bb3041 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -113,13 +113,26 @@ fn-sym fn-meta {:new-args '([x n]) :new-args-lookup {'rdr 'x - 'n 'n}}))}) + 'n 'n}})) + ['descriptive-statistics] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x stats-names stats-data options] + [x stats-names options] + [x stats-names] + [x]) + :new-args-lookup {'rdr 'x + 'src-rdr 'x + 'stats-names 'stats-names + 'stats-data 'stats-data + 'options 'options}})) + }) +;; (tech.v3.datatype.functional/descriptive-statistics ) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] (loop [syms symlist result m] - (if (empty? syms) result (recur (rest syms) (assoc result (first syms) liftfn))))) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 45eb8e9..ba15744 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -552,6 +552,41 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__44926__auto__)))) +(defn + descriptive-statistics + "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." + ([x] + (let + [original-result__44925__auto__ + (tech.v3.datatype.functional/descriptive-statistics x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44925__auto__))) + ([x stats-names] + (let + [original-result__44925__auto__ + (tech.v3.datatype.functional/descriptive-statistics stats-names x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44925__auto__))) + ([x stats-names options] + (let + [original-result__44925__auto__ + (tech.v3.datatype.functional/descriptive-statistics + stats-names + options + x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44925__auto__))) + ([x stats-names stats-data options] + (let + [original-result__44925__auto__ + (tech.v3.datatype.functional/descriptive-statistics + stats-names + stats-data + options + x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44925__auto__)))) + (defn nan? "" diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 926f0a8..365791c 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -22,42 +22,48 @@ (shift a 2) => [1 1 1 2 3])) (facts - "about ops that take a single column and return a column" - (let [ops [abs - acos - asin - atan - bit-not - cbrt - ceil - cos - cosh - exp - expm1 - floor - get-significand - identity - log - log10 - log1p - logistic - next-down - next-up - normalize - rint - signum - sin - sinh - sq - sqrt - tan - tanh - to-degrees - to-radians - ulp] - a (sample-column 5)] - (doseq [op ops] - (op a) => column?))) + "about 'descriptive-statistics" + (let [a (sample-column 5)] + ;; sanity check that we got the hash with desired data + (descriptive-statistics a) => #(contains? % :standard-deviation)) + + (facts + "about ops that take a single column and return a column" + (let [ops [abs + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + exp + expm1 + floor + get-significand + identity + log + log10 + log1p + logistic + next-down + next-up + normalize + rint + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp] + a (sample-column 5)] + (doseq [op ops] + (op a) => column?)))) (facts "about ops that take a single column and return a scalar" @@ -184,4 +190,3 @@ (op a) => column? (typeof (op a)) => :boolean (op 1) => boolean?))) - From 09faa4e7cf3b326a38f379853a1142005087c246 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 21:10:07 -0500 Subject: [PATCH 63/69] Fix messed up test layout --- test/tablecloth/column/api/operators_test.clj | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 365791c..6e4a386 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -25,45 +25,45 @@ "about 'descriptive-statistics" (let [a (sample-column 5)] ;; sanity check that we got the hash with desired data - (descriptive-statistics a) => #(contains? % :standard-deviation)) + (descriptive-statistics a) => #(contains? % :standard-deviation))) - (facts - "about ops that take a single column and return a column" - (let [ops [abs - acos - asin - atan - bit-not - cbrt - ceil - cos - cosh - exp - expm1 - floor - get-significand - identity - log - log10 - log1p - logistic - next-down - next-up - normalize - rint - signum - sin - sinh - sq - sqrt - tan - tanh - to-degrees - to-radians - ulp] - a (sample-column 5)] - (doseq [op ops] - (op a) => column?)))) +(facts +"about ops that take a single column and return a column" +(let [ops [abs + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + exp + expm1 + floor + get-significand + identity + log + log10 + log1p + logistic + next-down + next-up + normalize + rint + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp] + a (sample-column 5)] + (doseq [op ops] + (op a) => column?))) (facts "about ops that take a single column and return a scalar" From ac125db585eca030acb47b34142575a6872c1be7 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 21:14:50 -0500 Subject: [PATCH 64/69] Lift 'quartiles --- src/tablecloth/column/api/lift_operators.clj | 9 +- src/tablecloth/column/api/operators.clj | 724 +++++++++--------- test/tablecloth/column/api/operators_test.clj | 7 + 3 files changed, 384 insertions(+), 356 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 3bb3041..0aaac53 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -114,7 +114,7 @@ {:new-args '([x n]) :new-args-lookup {'rdr 'x 'n 'n}})) - ['descriptive-statistics] (fn [fn-sym fn-meta] + ['descriptive-statistics] (fn [fn-sym fn-meta] (lift-op fn-sym fn-meta {:new-args '([x stats-names stats-data options] @@ -126,8 +126,13 @@ 'stats-names 'stats-names 'stats-data 'stats-data 'options 'options}})) + ['quartiles] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x options] [x]) + :new-args-lookup {'item 'x + 'options 'options}})) }) -;; (tech.v3.datatype.functional/descriptive-statistics ) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index ba15744..c2f1560 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -45,1437 +45,1453 @@ "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn bit-set "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn finite? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/finite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/finite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn to-radians "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/to-radians x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/to-radians x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn log "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/log x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/log x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/log x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn acos "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/acos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/acos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn to-degrees "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/to-degrees x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/to-degrees x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn floor "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/floor x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/floor x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn atan2 "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn normalize "" ([item] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn hypot "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn tanh "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/tanh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/tanh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn sq "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sq x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/sq x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/sq x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn pos? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/pos? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/pos? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([x n] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/shift x n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn ceil "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/ceil x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/ceil x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn neg? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/neg? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/neg? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn * "" ([x y] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__59935__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn min "" ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/min x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn atan "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/atan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/atan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn mathematical-integer? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/mathematical-integer? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/mathematical-integer? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn expm1 "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/expm1 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/expm1 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn identity "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/identity x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/identity x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/descriptive-statistics x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x stats-names] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x stats-names options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x stats-names stats-data options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names stats-data options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn nan? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/nan? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/nan? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn logistic "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/logistic x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/logistic x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn cos "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/cos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/cos x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/cos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn log10 "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/log10 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/log10 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn quot "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn tan "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/tan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/tan x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/tan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn cbrt "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/cbrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/cbrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn even? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/even? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/even? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn sqrt "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sqrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sqrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn next-down "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/next-down x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/next-down x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn - "" ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/- x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__59935__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn pow "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn next-up "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/next-up x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/next-up x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn skew "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn exp "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/exp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/exp x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/exp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn zero? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/zero? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/zero? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn rem "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn cosh "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/cosh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/cosh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn variance "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn get-significand "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/get-significand x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/get-significand x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-and "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn not "" ([x] (let - [original-result__44925__auto__ (tech.v3.datatype.functional/not x)] + [original-result__59934__auto__ (tech.v3.datatype.functional/not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([item] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn / "" ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional// x)] + [original-result__59935__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y] (let - [original-result__44926__auto__ (tech.v3.datatype.functional// x y)] + [original-result__59935__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-or "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn log1p "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/log1p x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/log1p x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn asin "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/asin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/asin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) + +(defn + quartiles + "return [min, 25 50 75 max] of item" + ([x] + (let + [original-result__59934__auto__ + (tech.v3.datatype.functional/quartiles x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__59934__auto__))) + ([x options] + (let + [original-result__59934__auto__ + (tech.v3.datatype.functional/quartiles options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__59934__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn infinite? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/infinite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/infinite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/round x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/round x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn odd? "" ([x] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/odd? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/odd? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn + "" ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__59935__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn abs "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/abs x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/abs x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/abs x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn median "" ([col] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([col options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn sinh "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sinh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sinh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn rint "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/rint x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/rint x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn bit-not "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/bit-not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn max "" ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/max x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x y & args] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn ulp "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/ulp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/ulp x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/ulp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([x percentiles] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/percentiles percentiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__))) + original-result__59934__auto__))) ([x percentiles options] (let - [original-result__44925__auto__ + [original-result__59934__auto__ (tech.v3.datatype.functional/percentiles percentiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44925__auto__)))) + original-result__59934__auto__)))) (defn sin "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/sin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ (tech.v3.datatype.functional/sin x)] + [original-result__59935__auto__ (tech.v3.datatype.functional/sin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn signum "" ([x options] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/signum x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__))) + original-result__59935__auto__))) ([x] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/signum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__44926__auto__ + [original-result__59935__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__44926__auto__)))) + original-result__59935__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 6e4a386..5111635 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -27,6 +27,13 @@ ;; sanity check that we got the hash with desired data (descriptive-statistics a) => #(contains? % :standard-deviation))) +(facts + "about 'quartiles" + (let [a (sample-column 100)] + (quartiles a) => column? + ;; sanity check quartiles should return a coumn of 5 values + (count (quartiles a)) => 5) + (facts "about ops that take a single column and return a column" (let [ops [abs From a63425b182a25d78ac9c8fe3dcc7a6b2a359a98c Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 22:05:58 -0500 Subject: [PATCH 65/69] Lift 'fill-range and a bunch of reduce operations --- src/tablecloth/column/api/lift_operators.clj | 15 +- src/tablecloth/column/api/operators.clj | 766 ++++++++++-------- test/tablecloth/column/api/operators_test.clj | 14 +- 3 files changed, 434 insertions(+), 361 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 0aaac53..9f3982d 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -132,7 +132,20 @@ {:new-args '([x options] [x]) :new-args-lookup {'item 'x 'options 'options}})) - }) + ['fill-range] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x max-span]) + :new-args-lookup {'numeric-data 'x + 'max-span 'max-span}})) + ['reduce-min + 'reduce-max + 'reduce-* + 'reduce-+] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x]) + :new-args-lookup {'rdr 'x}}))}) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index c2f1560..5b2c77b 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -45,1453 +45,1503 @@ "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn bit-set "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn finite? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/finite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/finite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) + +(defn + reduce-min + "" + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/reduce-min x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) (defn to-radians "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/to-radians x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/to-radians x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn log "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/log x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/log x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/log x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn acos "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/acos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/acos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn to-degrees "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/to-degrees x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/to-degrees x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn floor "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/floor x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/floor x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn atan2 "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn normalize "" ([item] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn hypot "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn tanh "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/tanh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/tanh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn sq "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sq x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/sq x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/sq x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70535__auto__)))) + +(defn + fill-range + "Given a reader of numeric data and a max span amount, produce\n a new reader where the difference between any two consecutive elements\n is less than or equal to the max span amount. Also return a bitmap of the added\n indexes. Uses linear interpolation to fill in areas, operates in double space.\n Returns\n {:result :missing}" + ([x max-span] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/fill-range x max-span)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70534__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn pos? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/pos? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/pos? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([x n] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/shift x n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn ceil "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/ceil x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/ceil x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn neg? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/neg? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/neg? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn * "" ([x y] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__70535__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn min "" ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/min x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn atan "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/atan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/atan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn mathematical-integer? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/mathematical-integer? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/mathematical-integer? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn expm1 "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/expm1 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/expm1 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn identity "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/identity x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/identity x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) + +(defn + reduce-max + "" + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/reduce-max x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/descriptive-statistics x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x stats-names] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x stats-names options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x stats-names stats-data options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names stats-data options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn nan? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/nan? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/nan? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn logistic "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/logistic x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/logistic x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn cos "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/cos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/cos x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/cos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn log10 "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/log10 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/log10 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn quot "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn tan "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/tan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/tan x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/tan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn cbrt "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/cbrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/cbrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn even? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/even? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/even? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn sqrt "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sqrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sqrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) + +(defn + reduce-* + "" + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/reduce-* x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) (defn next-down "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/next-down x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/next-down x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn - "" ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/- x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__70535__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn pow "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn next-up "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/next-up x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/next-up x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn skew "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn exp "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/exp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/exp x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/exp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn zero? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/zero? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/zero? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn rem "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn cosh "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/cosh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/cosh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn variance "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) + +(defn + reduce-+ + "" + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/reduce-+ x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) (defn get-significand "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/get-significand x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/get-significand x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-and "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn not "" ([x] (let - [original-result__59934__auto__ (tech.v3.datatype.functional/not x)] + [original-result__70534__auto__ (tech.v3.datatype.functional/not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([item] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn / "" ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional// x)] + [original-result__70535__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y] (let - [original-result__59935__auto__ (tech.v3.datatype.functional// x y)] + [original-result__70535__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-or "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn log1p "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/log1p x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/log1p x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn asin "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/asin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/asin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn quartiles "return [min, 25 50 75 max] of item" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn infinite? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/infinite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/infinite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/round x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/round x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn odd? "" ([x] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/odd? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/odd? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn + "" ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__70535__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn abs "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/abs x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/abs x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/abs x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn median "" ([col] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([col options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn sinh "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sinh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sinh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn rint "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/rint x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/rint x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn bit-not "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/bit-not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn max "" ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/max x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x y & args] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn ulp "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/ulp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/ulp x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/ulp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([x percentiles] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/percentiles percentiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__))) + original-result__70534__auto__))) ([x percentiles options] (let - [original-result__59934__auto__ + [original-result__70534__auto__ (tech.v3.datatype.functional/percentiles percentiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59934__auto__)))) + original-result__70534__auto__)))) (defn sin "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/sin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ (tech.v3.datatype.functional/sin x)] + [original-result__70535__auto__ (tech.v3.datatype.functional/sin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn signum "" ([x options] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/signum x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__))) + original-result__70535__auto__))) ([x] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/signum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__59935__auto__ + [original-result__70535__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__59935__auto__)))) + original-result__70535__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 5111635..007004d 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -32,7 +32,13 @@ (let [a (sample-column 100)] (quartiles a) => column? ;; sanity check quartiles should return a coumn of 5 values - (count (quartiles a)) => 5) + (count (quartiles a)) => 5)) + +(facts + "about 'fill-range" + (let [result (fill-range [1 5] 1)] + (contains? result :result) => true + (contains? result :missing) => true)) (facts "about ops that take a single column and return a column" @@ -74,7 +80,11 @@ (facts "about ops that take a single column and return a scalar" - (let [ops [magnitude] + (let [ops [magnitude + reduce-max + reduce-min + reduce-* + reduce-+] a (sample-column 5)] (doseq [op ops] (op a) => scalar?))) From b4eb36f0c8bfad8e5cf55278548246e2783fbf47 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Sun, 22 Jan 2023 22:27:37 -0500 Subject: [PATCH 66/69] Lift 'mean-fast 'sum-fast 'magnitude-squared --- src/tablecloth/column/api/lift_operators.clj | 11 +++++-- src/tablecloth/column/api/operators.clj | 30 +++++++++++++++++++ test/tablecloth/column/api/operators_test.clj | 5 +++- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 9f3982d..42fe976 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -145,7 +145,14 @@ (lift-op fn-sym fn-meta {:new-args '([x]) - :new-args-lookup {'rdr 'x}}))}) + :new-args-lookup {'rdr 'x}})) + ['mean-fast + 'sum-fast + 'magnitude-squared] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x]) + :new-args-lookup {'data 'x}}))}) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] @@ -167,5 +174,3 @@ unsigned-bit-shift-right zero?] "src/tablecloth/column/api/operators.clj") ,) - - diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 5b2c77b..f2517be 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -970,6 +970,16 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__70535__auto__)))) +(defn + mean-fast + "Take the mean of the data. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/mean-fast x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) + (defn zero? "" @@ -1519,6 +1529,16 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__70535__auto__)))) +(defn + sum-fast + "Find the sum of the data. This operation is neither nan-aware nor does it implement\n kahans compensation although via parallelization it implements pairwise summation\n compensation. For a more but slightly slower but far more correct sum operator,\n use [[sum]]." + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/sum-fast x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) + (defn signum "" @@ -1535,6 +1555,16 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__70535__auto__)))) +(defn + magnitude-squared + "" + ([x] + (let + [original-result__70534__auto__ + (tech.v3.datatype.functional/magnitude-squared x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__70534__auto__)))) + (defn and "" diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 007004d..856fd8c 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -84,7 +84,10 @@ reduce-max reduce-min reduce-* - reduce-+] + reduce-+ + mean-fast + sum-fast + magnitude-squared] a (sample-column 5)] (doseq [op ops] (op a) => scalar?))) From 8c95124efb11f5ba74530348f1b4bb8acb25077d Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 27 Jan 2023 12:11:12 -0500 Subject: [PATCH 67/69] Lift correlation fns kendalls, pearsons, and spearmans --- src/tablecloth/column/api/lift_operators.clj | 11 +- src/tablecloth/column/api/operators.clj | 796 ++++++++++-------- test/tablecloth/column/api/operators_test.clj | 6 +- 3 files changed, 437 insertions(+), 376 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 42fe976..98fc361 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -152,7 +152,16 @@ (lift-op fn-sym fn-meta {:new-args '([x]) - :new-args-lookup {'data 'x}}))}) + :new-args-lookup {'data 'x}})) + ['kendalls-correlation + 'pearsons-correlation + 'spearmans-correlation] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x y] [x y options]) + :new-args-lookup {'lhs 'x + 'rhs 'y + 'options 'options}}))}) (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index f2517be..0a04a7a 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -45,1533 +45,1581 @@ "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/kurtosis col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/kurtosis col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn bit-set "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-set x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-set x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn finite? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/finite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/finite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn distance "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/distance lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn reduce-min "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/reduce-min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn to-radians "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/to-radians x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/to-radians x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-shift-right "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn ieee-remainder "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/ieee-remainder x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/ieee-remainder x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn log "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/log x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/log x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/log x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-shift-left "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-shift-left x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-shift-left x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn acos "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/acos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/acos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn to-degrees "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/to-degrees x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/to-degrees x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn < "" ([lhs mid rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/< lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/< lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn floor "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/floor x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/floor x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn atan2 "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/atan2 x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/atan2 x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn normalize "" ([item] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/normalize item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn hypot "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/hypot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/hypot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn tanh "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/tanh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/tanh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn sq "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sq x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/sq x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/sq x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn fill-range "Given a reader of numeric data and a max span amount, produce\n a new reader where the difference between any two consecutive elements\n is less than or equal to the max span amount. Also return a bitmap of the added\n indexes. Uses linear interpolation to fill in areas, operates in double space.\n Returns\n {:result :missing}" ([x max-span] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/fill-range x max-span)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn sum "Double sum of data using\n [Kahan compensated summation](https://en.wikipedia.org/wiki/Kahan_summation_algorithm)." ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/sum col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/sum col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn pos? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/pos? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/pos? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn shift "Shift by n and fill in with the first element for n>0 or last element for n<0.\n\n Examples:\n\n```clojure\nuser> (dfn/shift (range 10) 2)\n[0 0 0 1 2 3 4 5 6 7]\nuser> (dfn/shift (range 10) -2)\n[2 3 4 5 6 7 8 9 9 9]\n```" ([x n] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/shift x n)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn ceil "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/ceil x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/ceil x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-xor "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-xor x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-xor x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn unsigned-bit-shift-right "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/unsigned-bit-shift-right x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/unsigned-bit-shift-right x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn neg? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/neg? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/neg? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn <= "" ([lhs mid rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/<= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/<= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn * "" ([x y] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/* x y)] + [original-result__44240__auto__ (tech.v3.datatype.functional/* x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/* x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn min "" ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/min x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/min x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/min x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/min x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn atan "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/atan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/atan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn mathematical-integer? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/mathematical-integer? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/mathematical-integer? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn expm1 "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/expm1 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/expm1 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn identity "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/identity x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/identity x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn reduce-max "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/reduce-max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/descriptive-statistics x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x stats-names] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x stats-names options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x stats-names stats-data options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/descriptive-statistics stats-names stats-data options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn nan? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/nan? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/nan? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn bit-and-not "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-and-not x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and-not x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn logistic "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/logistic x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/logistic x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn cos "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/cos x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/cos x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/cos x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn log10 "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/log10 x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/log10 x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn quot "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/quot x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/quot x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn dot-product "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/dot-product lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn tan "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/tan x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/tan x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/tan x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn cbrt "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/cbrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/cbrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn eq "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn mean "double mean of data" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/mean col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/mean col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn > "" ([lhs mid rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/> lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/> lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn not-eq "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/not-eq lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn even? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/even? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/even? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) + +(defn + spearmans-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/spearmans-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/spearmans-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) (defn sqrt "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sqrt x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sqrt x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn reduce-* "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/reduce-* x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn next-down "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/next-down x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/next-down x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn - "" ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/- x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/- x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/- x y)] + [original-result__44240__auto__ (tech.v3.datatype.functional/- x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/- x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn or "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/or lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn distance-squared "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/distance-squared lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn pow "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/pow x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/pow x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn next-up "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/next-up x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/next-up x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn skew "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/skew col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/skew col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn exp "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/exp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/exp x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/exp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn mean-fast "Take the mean of the data. This operation doesn't know anything about nan hence it is\n a bit faster than the base [[mean]] fn." ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/mean-fast x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn zero? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/zero? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/zero? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn rem "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/rem x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/rem x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn cosh "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/cosh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/cosh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn variance "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/variance col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/variance col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn reduce-+ "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/reduce-+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn get-significand "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/get-significand x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/get-significand x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-and "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-and x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-and x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) + +(defn + kendalls-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kendalls-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/kendalls-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) (defn not "" ([x] (let - [original-result__70534__auto__ (tech.v3.datatype.functional/not x)] + [original-result__44239__auto__ (tech.v3.datatype.functional/not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn standard-deviation "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/standard-deviation col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/standard-deviation col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn magnitude "" ([item _options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/magnitude item _options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([item] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/magnitude item)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn / "" ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional// x)] + [original-result__44240__auto__ (tech.v3.datatype.functional// x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y] (let - [original-result__70535__auto__ (tech.v3.datatype.functional// x y)] + [original-result__44240__auto__ (tech.v3.datatype.functional// x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional// x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-or "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-or x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-or x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn equals "" ([lhs rhs & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/equals lhs rhs args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn >= "" ([lhs mid rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/>= lhs mid rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/>= lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-flip "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-flip x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-flip x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn log1p "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/log1p x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/log1p x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn asin "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/asin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/asin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn quartiles "return [min, 25 50 75 max] of item" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn quartile-3 "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartile-3 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartile-3 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn infinite? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/infinite? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/infinite? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn round "Vectorized implementation of Math/round. Operates in double space\n but returns a long or long reader." ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/round x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/round x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn quartile-1 "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartile-1 col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/quartile-1 col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn odd? "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/odd? x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/odd? x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn bit-clear "" ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-clear x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/bit-clear x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn + "" ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/+ x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/+ x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/+ x y)] + [original-result__44240__auto__ (tech.v3.datatype.functional/+ x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/+ x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn abs "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/abs x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/abs x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/abs x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn median "" ([col] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/median col)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([col options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/median col options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) + +(defn + pearsons-correlation + "" + ([x y] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pearsons-correlation x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x y options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/pearsons-correlation options x y)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) (defn sinh "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sinh x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sinh x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn rint "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/rint x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/rint x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn bit-not "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-not x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/bit-not x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn max "" ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/max x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/max x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/max x y)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x y & args] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (clojure.core/apply tech.v3.datatype.functional/max x y args)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn ulp "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/ulp x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/ulp x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/ulp x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn percentiles "Create a reader of percentile values, one for each percentage passed in.\n Estimation types are in the set of #{:r1,r2...legacy} and are described\n here: https://commons.apache.org/proper/commons-math/javadocs/api-3.3/index.html.\n\n nan-strategy can be one of [:keep :remove :exception] and defaults to :exception." ([x percentiles] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/percentiles percentiles x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__))) + original-result__44239__auto__))) ([x percentiles options] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/percentiles percentiles options x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn sin "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/sin x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ (tech.v3.datatype.functional/sin x)] + [original-result__44240__auto__ (tech.v3.datatype.functional/sin x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn sum-fast "Find the sum of the data. This operation is neither nan-aware nor does it implement\n kahans compensation although via parallelization it implements pairwise summation\n compensation. For a more but slightly slower but far more correct sum operator,\n use [[sum]]." ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/sum-fast x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn signum "" ([x options] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/signum x options)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__))) + original-result__44240__auto__))) ([x] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/signum x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) (defn magnitude-squared "" ([x] (let - [original-result__70534__auto__ + [original-result__44239__auto__ (tech.v3.datatype.functional/magnitude-squared x)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70534__auto__)))) + original-result__44239__auto__)))) (defn and "" ([lhs rhs] (let - [original-result__70535__auto__ + [original-result__44240__auto__ (tech.v3.datatype.functional/and lhs rhs)] (tablecloth.column.api.utils/return-scalar-or-column - original-result__70535__auto__)))) + original-result__44240__auto__)))) diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index 856fd8c..e2ee465 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -8,6 +8,7 @@ [tablecloth.column.api :refer [column column? typeof]]) (:use [tablecloth.column.api.operators])) +(tech.v3.datatype.functional/spearmans-correlation [1 2] [2 1]) (defn sample-column [n] (column (repeatedly n #(rand-int 100)))) @@ -187,7 +188,10 @@ "about ops that take left-hand / right-hand columns and return a scalar" (let [ops [distance dot-product - distance-squared] + distance-squared + kendalls-correlation + pearsons-correlation + spearmans-correlation] a (sample-column 5) b (sample-column 5)] (doseq [op ops] From 9f0f73322044b2cd195dae584065f3403163092b Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 27 Jan 2023 12:24:13 -0500 Subject: [PATCH 68/69] Lift cumulative ops --- src/tablecloth/column/api/lift_operators.clj | 23 ++++++- src/tablecloth/column/api/operators.clj | 64 ++++++++++++++++++ test/tablecloth/column/api/operators_test.clj | 66 ++++++++++--------- 3 files changed, 121 insertions(+), 32 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 98fc361..6c9b64d 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -161,7 +161,17 @@ {:new-args '([x y] [x y options]) :new-args-lookup {'lhs 'x 'rhs 'y - 'options 'options}}))}) + 'options 'options}})) + ['cumprod + 'cumsum + 'cummax + 'cummin] (fn [fn-sym fn-meta] + (lift-op + fn-sym fn-meta + {:new-args '([x] [x options]) + :new-args-lookup {'data 'x + 'options 'options}}))}) + (defn deserialize-lift-fn-lookup [] (reduce (fn [m [symlist liftfn]] @@ -183,3 +193,14 @@ unsigned-bit-shift-right zero?] "src/tablecloth/column/api/operators.clj") ,) + + +(comment + + (tech.v3.datatype.functional/cumprod [2 2 3]) + + (tech.v3.datatype.functional/cummax [0 1 4 1]) + + (tech.v3.datatype.functional/cumsum [1 2 4]) + + ) diff --git a/src/tablecloth/column/api/operators.clj b/src/tablecloth/column/api/operators.clj index 0a04a7a..e8a56d7 100644 --- a/src/tablecloth/column/api/operators.clj +++ b/src/tablecloth/column/api/operators.clj @@ -540,6 +540,22 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__44239__auto__)))) +(defn + cumprod + "Cumulative running product; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumprod x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumprod options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + (defn expm1 "" @@ -582,6 +598,22 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__44239__auto__)))) +(defn + cumsum + "Cumulative running summation; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumsum x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cumsum options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + (defn descriptive-statistics "Calculate a set of descriptive statistics on a single reader.\n\n Available stats:\n #{:min :quartile-1 :sum :mean :mode :median :quartile-3 :max\n :variance :standard-deviation :skew :n-elems :kurtosis}\n\n options\n - `:nan-strategy` - defaults to :remove, one of\n [:keep :remove :exception]. The fastest option is :keep but this\n may result in your results having NaN's in them. You can also pass\n in a double predicate to filter custom double values." @@ -1149,6 +1181,22 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__44239__auto__)))) +(defn + cummin + "Cumulative running min; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummin x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummin options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + (defn magnitude "" @@ -1165,6 +1213,22 @@ (tablecloth.column.api.utils/return-scalar-or-column original-result__44240__auto__)))) +(defn + cummax + "Cumulative running max; returns result in double space.\n\n Options:\n\n * `:nan-strategy` - one of `:keep`, `:remove`, `:exception`. Defaults to `:remove`." + ([x] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummax x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__))) + ([x options] + (let + [original-result__44239__auto__ + (tech.v3.datatype.functional/cummax options x)] + (tablecloth.column.api.utils/return-scalar-or-column + original-result__44239__auto__)))) + (defn / "" diff --git a/test/tablecloth/column/api/operators_test.clj b/test/tablecloth/column/api/operators_test.clj index e2ee465..6c4d2ac 100644 --- a/test/tablecloth/column/api/operators_test.clj +++ b/test/tablecloth/column/api/operators_test.clj @@ -44,37 +44,41 @@ (facts "about ops that take a single column and return a column" (let [ops [abs - acos - asin - atan - bit-not - cbrt - ceil - cos - cosh - exp - expm1 - floor - get-significand - identity - log - log10 - log1p - logistic - next-down - next-up - normalize - rint - signum - sin - sinh - sq - sqrt - tan - tanh - to-degrees - to-radians - ulp] + acos + asin + atan + bit-not + cbrt + ceil + cos + cosh + cumprod + cumsum + cummax + cummin + exp + expm1 + floor + get-significand + identity + log + log10 + log1p + logistic + next-down + next-up + normalize + rint + signum + sin + sinh + sq + sqrt + tan + tanh + to-degrees + to-radians + ulp] a (sample-column 5)] (doseq [op ops] (op a) => column?))) From 4fee5dfe1a5426d4b68f9da0f53dc137a9250307 Mon Sep 17 00:00:00 2001 From: Ethan Miller Date: Fri, 10 Feb 2023 12:04:26 -0500 Subject: [PATCH 69/69] cleanup --- src/tablecloth/column/api/lift_operators.clj | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/tablecloth/column/api/lift_operators.clj b/src/tablecloth/column/api/lift_operators.clj index 6c9b64d..333d120 100644 --- a/src/tablecloth/column/api/lift_operators.clj +++ b/src/tablecloth/column/api/lift_operators.clj @@ -193,14 +193,3 @@ unsigned-bit-shift-right zero?] "src/tablecloth/column/api/operators.clj") ,) - - -(comment - - (tech.v3.datatype.functional/cumprod [2 2 3]) - - (tech.v3.datatype.functional/cummax [0 1 4 1]) - - (tech.v3.datatype.functional/cumsum [1 2 4]) - - )