Skip to content

Commit 4e1371d

Browse files
authored
work around Arrow issue with unions of Missing and non-concrete types (#102)
* work around Arrow issue with unions of Missing and non-concrete types * typo * patch bump
1 parent e829617 commit 4e1371d

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "Lighthouse"
22
uuid = "ac2c24cd-07f0-4848-96b2-1b82c3ea0e59"
33
authors = ["Beacon Biosignals, Inc."]
4-
version = "0.15.0"
4+
version = "0.15.1"
55

66
[deps]
77
ArrowTypes = "31f734f8-188a-4ce0-8406-c8a06bd891cd"

src/row.jl

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,19 @@ function vec_to_mat(vec::AbstractVector)
1010
n = isqrt(length(vec))
1111
return reshape(vec, n, n)
1212
end
13-
vec_to_mat(x::Missing) = return missing
13+
vec_to_mat(::Missing) = missing
1414

1515
const GenericCurve = Tuple{Vector{Float64},Vector{Float64}}
1616
@schema "lighthouse.evaluation" Evaluation
1717
@version EvaluationV1 begin
1818
class_labels::Union{Missing,Vector{String}}
19-
confusion_matrix::Union{Missing,Array{Int64}} = vec_to_mat(confusion_matrix)
19+
# XXX why do we spell out the different array types?
20+
# For Arrow, we need to be able to serialize as a vector
21+
# but we also want to be able to store a matrix directly.
22+
# Then why not just use Array{Int64}? Because that's an
23+
# abstract type, which creates serialization issues in
24+
# unions with Missing.
25+
confusion_matrix::Union{Missing,Array{Int64,1},Array{Int64,2}} = vec_to_mat(confusion_matrix)
2026
discrimination_calibration_curve::Union{Missing,GenericCurve}
2127
discrimination_calibration_score::Union{Missing,Float64}
2228
multiclass_IRA_kappas::Union{Missing,Float64}
@@ -47,7 +53,7 @@ end
4753
"""
4854
@version EvaluationV1 begin
4955
class_labels::Union{Missing,Vector{String}}
50-
confusion_matrix::Union{Missing,Array{Int64}} = vec_to_mat(confusion_matrix)
56+
confusion_matrix::Union{Missing,Array{Int64,1},Array{Int64,2}} = vec_to_mat(confusion_matrix)
5157
discrimination_calibration_curve::Union{Missing,GenericCurve}
5258
discrimination_calibration_score::Union{Missing,Float64}
5359
multiclass_IRA_kappas::Union{Missing,Float64}
@@ -269,7 +275,7 @@ LabelMetricsV1
269275

270276
@schema "lighthouse.hardened-metrics" HardenedMetrics
271277
@version HardenedMetricsV1 > ClassV1 begin
272-
confusion_matrix::Union{Missing,Array{Int64}} = vec_to_mat(confusion_matrix)
278+
confusion_matrix::Union{Missing,Array{Int64,1},Array{Int64,2}} = vec_to_mat(confusion_matrix)
273279
discrimination_calibration_curve::Union{Missing,Curve} = lift(Curve,
274280
discrimination_calibration_curve)
275281
discrimination_calibration_score::Union{Missing,Float64}
@@ -278,7 +284,7 @@ end
278284

279285
"""
280286
@version HardenedMetricsV1 > ClassV1 begin
281-
confusion_matrix::Union{Missing,Array{Int64}} = vec_to_mat(confusion_matrix)
287+
confusion_matrix::Union{Missing,Array{Int64,1},Array{Int64,2}} = vec_to_mat(confusion_matrix)
282288
discrimination_calibration_curve::Union{Missing,Curve} = lift(Curve,
283289
discrimination_calibration_curve)
284290
discrimination_calibration_score::Union{Missing,Float64}

0 commit comments

Comments
 (0)