Skip to content

Commit

Permalink
Add new traits (#11)
Browse files Browse the repository at this point in the history
* Add new traits

* Implement scitype for Dates

* Rename Geometric --> Geometrical

* Add more examples to Temporal docstring

* Add scitype for Distribution

* Add tests for Dates

* Apply suggestions from code review

Co-authored-by: Elias Carvalho <[email protected]>

* Apply suggestions

---------

Co-authored-by: Elias Carvalho <[email protected]>
  • Loading branch information
juliohm and eliascarv committed Nov 29, 2023
1 parent 9dbbc18 commit 7e12489
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 1 deletion.
10 changes: 10 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,31 @@ uuid = "6cb2f572-2d2b-4ba6-bdb3-e710fa044d6c"
authors = ["Elias Carvalho <[email protected]> and contributors"]
version = "0.1.0"

[deps]
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"

[weakdeps]
CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597"
CoDa = "5900dafe-f573-5c72-b367-76665857777b"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821"
Meshes = "eacbb407-ea5a-433e-ab97-5258b1ca43fa"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"

[extensions]
DataScienceTraitsCategoricalArraysExt = "CategoricalArrays"
DataScienceTraitsCoDaExt = "CoDa"
DataScienceTraitsDistributionsExt = "Distributions"
DataScienceTraitsDynamicQuantitiesExt = "DynamicQuantities"
DataScienceTraitsMeshesExt = "Meshes"
DataScienceTraitsUnitfulExt = "Unitful"

[compat]
CategoricalArrays = "0.10"
CoDa = "1.2"
Dates = "1.9"
Distributions = "0.25"
DynamicQuantities = "0.7"
Meshes = "0.36"
Unitful = "1.17"
julia = "1.9"
12 changes: 12 additions & 0 deletions ext/DataScienceTraitsDistributionsExt.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# -----------------------------------------------------------------
# Licensed under the MIT License. See LICENSE in the project root.
# -----------------------------------------------------------------

module DataScienceTraitsDistributionsExt

using DataScienceTraits
using Distributions: Distribution

DataScienceTraits.scitype(::Type{<:Distribution}) = DataScienceTraits.Distributional

end
12 changes: 12 additions & 0 deletions ext/DataScienceTraitsMeshesExt.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# -----------------------------------------------------------------
# Licensed under the MIT License. See LICENSE in the project root.
# -----------------------------------------------------------------

module DataScienceTraitsMeshesExt

using DataScienceTraits
using Meshes: Geometry

DataScienceTraits.scitype(::Type{<:Geometry}) = DataScienceTraits.Geometrical

end
24 changes: 24 additions & 0 deletions src/DataScienceTraits.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

module DataScienceTraits

using Dates: TimeType

"""
SciType
Expand Down Expand Up @@ -32,6 +34,27 @@ Scientific type of compositional data (See CoDa.jl).
"""
abstract type Compositional <: SciType end

"""
Distributional
Scientific type of distributional data (See Distributions.jl)
"""
abstract type Distributional <: SciType end

"""
Geometrical
Scientific type of geometrical data (See Meshes.jl)
"""
abstract type Geometrical <: SciType end

"""
Temporal
Scientific type of temporal data (e.g. Date, Time, DateTime).
"""
abstract type Temporal <: SciType end

"""
Unknown
Expand Down Expand Up @@ -91,6 +114,7 @@ scitype(::Type{<:Number}) = Continuous
scitype(::Type{<:Integer}) = Categorical
scitype(::Type{<:AbstractChar}) = Categorical
scitype(::Type{<:AbstractString}) = Categorical
scitype(::Type{<:TimeType}) = Temporal
scitype(::Type{Union{T,Missing}}) where {T} = scitype(T)

sciconvert(::Type{Continuous}, x::Integer) = float(x)
Expand Down
3 changes: 3 additions & 0 deletions test/Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
[deps]
CategoricalArrays = "324d7699-5711-5eae-9e2f-1d82baa6b597"
CoDa = "5900dafe-f573-5c72-b367-76665857777b"
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
DynamicQuantities = "06fc5a27-2a28-4c7c-a15d-362465fb6821"
Meshes = "eacbb407-ea5a-433e-ab97-5258b1ca43fa"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
32 changes: 31 additions & 1 deletion test/runtests.jl
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
using DataScienceTraits
using CategoricalArrays
using Distributions
using Meshes
using CoDa
import DynamicQuantities
import Unitful
using CoDa
using Dates
using Test

const DST = DataScienceTraits
Expand Down Expand Up @@ -235,4 +238,31 @@ const DST = DataScienceTraits
carr = categorical([1, 3, 2], ordered=true)
@test DST.isordered(carr)
end

@testset "Distributions" begin
@test scitype(Normal()) <: DST.Distributional
@test scitype(Exponential()) <: DST.Distributional
@test elscitype(fill(Normal(), 3)) <: DST.Distributional
@test elscitype(fill(Exponential(), 3)) <: DST.Distributional
@test elscitype([Normal(), missing, Normal()]) <: DST.Distributional
@test elscitype([Exponential(), missing, Exponential()]) <: DST.Distributional
end

@testset "Meshes" begin
@test scitype(rand(Point2)) <: DST.Geometrical
@test scitype(rand(Triangle{2,Float64})) <: DST.Geometrical
@test scitype(rand(Triangle{2,Float64})) <: DST.Geometrical
@test elscitype(rand(Point2, 3)) <: DST.Geometrical
@test elscitype(rand(Triangle{2,Float64}, 3)) <: DST.Geometrical
@test elscitype([Point(0, 0), missing, Point(1, 1)]) <: DST.Geometrical
@test elscitype([Triangle((0, 0), (1, 0), (1, 1)), missing, Point(1, 1)]) <: DST.Geometrical
end

@testset "Dates" begin
@test scitype(Date(2023, 1, 1)) <: DST.Temporal
@test scitype(Time(1, 0, 0)) <: DST.Temporal
@test scitype(DateTime(2023, 1, 1)) <: DST.Temporal
@test elscitype(fill(Date(2023, 1, 1), 3)) <: DST.Temporal
@test elscitype([Date(2023, 1, 1), missing, Time(1, 0, 0)]) <: DST.Temporal
end
end

0 comments on commit 7e12489

Please sign in to comment.