From 6b5ce9d1e39b17a0284a366ae7c94cff7aaeed9d Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Wed, 15 Oct 2025 09:20:58 +0200 Subject: [PATCH 1/6] removed duplicated function --- src/fit.jl | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/fit.jl b/src/fit.jl index e98024b2..85a3a626 100644 --- a/src/fit.jl +++ b/src/fit.jl @@ -222,11 +222,6 @@ end end # (time) => (1 x time) -@traitfn check_data( - uf::Type{UF}, - data::AbstractVector{T}, -) where {T,UF<:UnfoldModel;ContinuousTimeTrait{UF}} = data - @traitfn check_data( uf::Type{UF}, From 9dc4ad66d7037b36ffb19db6663f1471c034f003 Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Wed, 15 Oct 2025 09:41:05 +0200 Subject: [PATCH 2/6] make link checker happy --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7334c589..9f35d799 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ You are very welcome to raise issues and start pull requests! Judith Schepers
Judith Schepers

πŸ› πŸ’» πŸ“– βœ… πŸ€” ⚠️ - Benedikt Ehinger
Benedikt Ehinger

πŸ› πŸ’» πŸ“– βœ… πŸ€” ⚠️ πŸš‡ ⚠️ 🚧 πŸ‘€ πŸ’¬ + Benedikt Ehinger
Benedikt Ehinger

πŸ› πŸ’» πŸ“– βœ… πŸ€” ⚠️ πŸš‡ ⚠️ 🚧 πŸ‘€ πŸ’¬ RenΓ© Skukies
RenΓ© Skukies

πŸ› πŸ“– βœ… πŸ’» πŸ€” Manpa Barman
Manpa Barman

πŸš‡ Phillip Alday
Phillip Alday

πŸ’» πŸš‡ From ca64fde10e60a7d87e1b4aa0eb0deba11d313bab Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Wed, 15 Oct 2025 09:42:05 +0200 Subject: [PATCH 3/6] make linter happy --- src/utilities.jl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/utilities.jl b/src/utilities.jl index eba60ea6..5c3cc4a4 100644 --- a/src/utilities.jl +++ b/src/utilities.jl @@ -133,15 +133,15 @@ function equalize_size( X::AbstractMatrix, data::Union{AbstractMatrix{T},AbstractVector{T}}, ) where {T<:Union{Missing,<:Number}} - _get_data(data::AbstractMatrix,n) = @view data[:,1:n] - _get_data(data::AbstractVector,n) = @view data[1:n] - - n = min(size(X, 1), size(data)[end]) - X_v = @view X[1:n,:] - data_v = _get_data(data,n) + _get_data(data::AbstractMatrix, n) = @view data[:, 1:n] + _get_data(data::AbstractVector, n) = @view data[1:n] + + n = min(size(X, 1), size(data)[end]) + X_v = @view X[1:n, :] + data_v = _get_data(data, n) return X_v, data_v end - + function equalize_size( X::AbstractMatrix, data::AbstractArray{T,3}, From eb596afbc265957a2418083d57dc41657dd58c0c Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Mon, 27 Oct 2025 14:16:28 +0100 Subject: [PATCH 4/6] generalized the test --- test/predict.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/predict.jl b/test/predict.jl index a863f70f..fec9a890 100644 --- a/test/predict.jl +++ b/test/predict.jl @@ -214,6 +214,6 @@ end _r2 = Unfold.r2(m_reshape, data_reshape) @test length(_r2) == 1 _r2 = Unfold.r2(m_e_reshape, data_e_reshape) - @test length(_r2) == 45 + @test size(_r2) == (1, size(data_e_reshape, 2)) end From 345060a4511bfe6a794f17c9bb200505a780423b Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Mon, 27 Oct 2025 14:16:42 +0100 Subject: [PATCH 5/6] added packages to top --- test/designmatrix.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/designmatrix.jl b/test/designmatrix.jl index 3208527c..05671fc6 100644 --- a/test/designmatrix.jl +++ b/test/designmatrix.jl @@ -1,5 +1,5 @@ ##--- - +using DataFrames, StatsModels tbl = DataFrame([1 4]', [:latency]) X = ones(size(tbl)) shouldBeNeg = zeros(4, 4) From 347ff042c529e124ed721a68778b7bb1d5bd1d16 Mon Sep 17 00:00:00 2001 From: "behinger (s-ccs 001)" Date: Mon, 27 Oct 2025 14:17:09 +0100 Subject: [PATCH 6/6] added precompilation --- Project.toml | 7 ++++++- src/Unfold.jl | 4 ++++ src/precompile.jl | 48 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/precompile.jl diff --git a/Project.toml b/Project.toml index fe5268df..9d18203d 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,8 @@ name = "Unfold" uuid = "181c99d8-e21b-4ff3-b70b-c233eddec679" -authors = ["Benedikt Ehinger "] version = "0.8.6" +authors = ["Benedikt Ehinger "] + [deps] BSplineKit = "093aae92-e908-43d7-9660-e50ee39d5a0a" @@ -24,6 +25,7 @@ MLBase = "f0e99cf1-93fa-52ec-9ecc-5026115318e0" Missings = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" PooledArrays = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" +PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" RobustModels = "d6ea1423-9682-4bbd-952f-b1577cbf8c98" @@ -35,6 +37,7 @@ StatsAPI = "82ae8749-77ed-4fe6-ae5f-f523153014b0" StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c" StatsModels = "3eaba693-59b7-5ba5-a881-562e759f1c8d" +Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb" Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" Term = "22787eb5-b846-44ae-b979-8e399b8463ab" TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f" @@ -73,6 +76,7 @@ MLBase = "0.9" Missings = "1" OrderedCollections = "1" PooledArrays = "1" +PrecompileTools = "1" ProgressMeter = "1" Random = "1" RobustModels = "0.4,0.5,0.6" @@ -84,6 +88,7 @@ StatsAPI = "1" StatsBase = "0.33,0.34" StatsFuns = "1" StatsModels = "0.6,0.7" +Suppressor = "0.2" Tables = "1" Term = "2" TimerOutputs = "0.5" diff --git a/src/Unfold.jl b/src/Unfold.jl index 970c870c..6fe21932 100644 --- a/src/Unfold.jl +++ b/src/Unfold.jl @@ -31,6 +31,8 @@ using TypedTables # DataFrames loose the pooled array, so we have to do it diffe using Interpolations # for FIR duration scaling using ImageTransformations # for FIR duration scaling + +using Suppressor #using Tullio #using BSplineKit # for spline predictors @@ -69,6 +71,8 @@ include("solver/main.jl") include("solver/solvers.jl") include("solver/prepare.jl") +include("precompile.jl") + #include("plot.jl") # don't include for now export fit, fit!, designmatrix! export firbasis, hrfbasis diff --git a/src/precompile.jl b/src/precompile.jl new file mode 100644 index 00000000..f49cf7fd --- /dev/null +++ b/src/precompile.jl @@ -0,0 +1,48 @@ +using PrecompileTools: @setup_workload, @compile_workload + + + + +@setup_workload begin + data = rand(Float64, 2, 100) + evts = DataFrame( + :latency => (range(10, 70, length = 3)), + :condition => [:a, :a, :b], + :continuous => 1:3, + ) + + + @compile_workload begin + + # cut the data into epochs + data_epochs, t = Unfold.epoch(data = data, tbl = evts, Ο„ = (-0.1, 0.1), sfreq = 10) # channel x timesteps x trials + f = @formula 0 ~ 1 + condition + continuous # note the formulas left side is `0 ~ ` for technical reasons` + + + basisfunction = firbasis(Ο„ = (-0.1, 0.1), sfreq = 10) + bf_vec = [Any => (f, basisfunction)] + + + for m in [ + @suppress(fit(UnfoldModel, f, evts, data_epochs, t)), + @suppress(fit(UnfoldModel, [Any => (f, t)], evts, data_epochs)), + @suppress( + fit( + UnfoldModel, + [Any => (f, t)], + Unfold.drop_missing_epochs(evts, data_epochs)[1], + Unfold.drop_missing_epochs(evts, data_epochs)[2], + ) + ), + @suppress(fit(UnfoldModel, bf_vec, evts, data)), + ] + coef(m) + coeftable(m) + effects(Dict(:condition => [:a, :b]), m) + effects(Dict(:continuous => 1:2), m) + effects(Dict(:continuous => collect(1:2)), m) + + end + + end +end