Skip to content

Commit 1efac58

Browse files
authored
Merge branch 'main' into db/instevalfits
2 parents d5d7a81 + d7f9223 commit 1efac58

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+2316
-1036
lines changed

.github/workflows/benchmark.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ jobs:
2020
strategy:
2121
fail-fast: false
2222
steps:
23-
- uses: actions/checkout@v4
23+
- uses: actions/checkout@v5
2424
- uses: julia-actions/setup-julia@v2
2525
with:
2626
version: "1"

.github/workflows/current.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ jobs:
2626
- ubuntu-22.04
2727
- macOS-14 # apple silicon!
2828
steps:
29-
- uses: actions/checkout@v4
29+
- uses: actions/checkout@v5
3030
- uses: julia-actions/setup-julia@v2
3131
with:
3232
version: ${{ matrix.julia-version }}

.github/workflows/docs-cleanup.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- name: Checkout gh-pages branch
12-
uses: actions/checkout@v4
12+
uses: actions/checkout@v5
1313
with:
1414
ref: gh-pages
1515
- name: Delete preview and history + push changes

.github/workflows/documenter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
name: Documentation
2222
runs-on: ubuntu-22.04
2323
steps:
24-
- uses: actions/checkout@v4
24+
- uses: actions/checkout@v5
2525
- uses: julia-actions/setup-julia@v2
2626
with:
2727
version: 'min'

.github/workflows/minimum.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ jobs:
2121
strategy:
2222
matrix:
2323
julia-version: [min]
24-
os: [ubuntu-22.04, macos-14, windows-2019]
24+
os: [ubuntu-22.04, macos-14, windows-2022]
2525
steps:
26-
- uses: actions/checkout@v4
26+
- uses: actions/checkout@v5
2727
- uses: julia-actions/setup-julia@v2
2828
with:
2929
version: ${{ matrix.julia-version }}

.github/workflows/nightly.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
julia-arch: [x64]
2525
os: [ubuntu-latest]
2626
steps:
27-
- uses: actions/checkout@v4
27+
- uses: actions/checkout@v5
2828
- uses: julia-actions/setup-julia@v2
2929
with:
3030
version: ${{ matrix.julia-version }}

.github/workflows/spellcheck.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- name: Checkout Actions Repository
12-
uses: actions/checkout@v4
12+
uses: actions/checkout@v5
1313
- name: Check spelling
1414
uses: crate-ci/typos@master
1515
with:

.github/workflows/style.yml

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,42 @@
11
name: Style-Enforcer
22
concurrency:
3-
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
3+
group: ${{ github.workflow }}-${{ github.ref }}
44
cancel-in-progress: true
55
on:
66
push:
77
branches:
88
- 'main'
9-
tags: '*'
9+
tags:
10+
- '*'
1011
pull_request:
1112
types: [opened, synchronize, reopened, ready_for_review]
12-
# note: keep in sync with `format/run.jl`
1313
paths-ignore:
1414
- 'README.md'
1515
- '.gitignore'
1616
jobs:
1717
format-check:
18-
name: Style Enforcement (Julia ${{ matrix.julia-version }} - ${{ github.event_name }})
19-
# Run on push's or non-draft PRs
20-
if: (github.event_name == 'push') || (github.event.pull_request.draft == false)
18+
name: Julia
2119
runs-on: ubuntu-latest
22-
strategy:
23-
matrix:
24-
julia-version: [1.6]
2520
steps:
26-
- uses: julia-actions/setup-julia@latest
21+
- uses: actions/checkout@v5
22+
- uses: julia-actions/setup-julia@v2
2723
with:
28-
version: ${{ matrix.julia-version }}
29-
- uses: actions/checkout@v4
30-
- name: Instantiate `format` environment and format
24+
version: "1"
25+
- uses: julia-actions/cache@v2
26+
- name: Install JuliaFormatter
27+
shell: julia --project=@format --color=yes {0}
3128
run: |
32-
julia --project=format -e 'using Pkg; Pkg.instantiate()'
33-
julia --project=format 'format/run.jl'
29+
using Pkg
30+
Pkg.add(PackageSpec(; name="JuliaFormatter", version="1"))
31+
- name: Check formatting
32+
shell: julia --project=@format --color=yes {0}
33+
run: |
34+
using JuliaFormatter
35+
paths = ["docs", "src"]
36+
isdir("ext") && push!(paths, "ext")
37+
format(paths; verbose=true) || exit(1)
38+
# Add formatting suggestions to non-draft PRs when "Check formatting" fails
3439
- uses: reviewdog/action-suggester@v1
35-
if: github.event_name == 'pull_request'
40+
if: ${{ !cancelled() && github.event_name == 'pull_request' && github.event.pull_request.draft == false }}
3641
with:
3742
tool_name: JuliaFormatter
38-
fail_on_error: true

NEWS.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
MixedModels v5.0.0 Release Notes
2+
==============================
3+
- Optimization is now performed _without constraints_. In a post-fitting step, the Cholesky factor is canonicalized to have non-negative diagonal elements. [#840]
4+
- The default optimizer has changed to NLopt's implementation of NEWUOA where possible. NLopt's implementation fails on 1-dimensional problems, so in the case of a single, scalar random effect, BOBYQA is used instead. In the future, the default optimizer backend will likely change to PRIMA and NLopt support will be moved to an extension. Blocking this change in backend is an issue with PRIMA.jl when running in VSCode's built-in REPL on Linux. [#840]
5+
- [BREAKING] Support for constrained optimization has been completely removed, i.e. the field `lowerbd` has been removed from `OptSummary`.
6+
- [BREAKING] A fitlog is always kept -- the deprecated keyword argument `thin` has been removed as has the `fitlog` keyword argument. [#850]
7+
- The fitlog is now stored as Tables.jl-compatible column table. [#850]
8+
- Internal code around the default optimizer has been restructured. In particular, the NLopt backend has been moved to a submodule, which will make it easier to move it to an extension if we promote another backend to the default. [#853]
9+
- Internal code around optimization in profiling has been restructuring so that fitting done during calls to `profile` respect the `backend` and `optimizer` settings. [#853]
10+
- The `prfit!` convenience function has been removed. [#853]
11+
12+
MixedModels v4.38.0 Release Notes
13+
==============================
14+
- Experimental support for evaluating `FiniteDiff.finite_difference_gradient` and `FiniteDiff.finite_difference_hessian of the objective of a fitted `LinearMixedModel`. [#842]
15+
16+
MixedModels v4.37.0 Release Notes
17+
==============================
18+
- Experimental support for evaluating `ForwardDiff.gradient` and `ForwardDiff.hessian` of the objective of a fitted `LinearMixedModel`. [#841]
19+
20+
MixedModels v4.36.0 Release Notes
21+
==============================
22+
- Automatic application of grouping contrasts now works for `RandomEffectsTerm`s constructed programmatically, e.g. with `(term(1) | term(:g))`. [#836]
23+
124
MixedModels v4.35.2 Release Notes
225
==============================
326
- Update to the `show(::IO, ::MIME, x)` methods for consistent ordering across Julia versions of variance components without associated fixed effects. This may result in change of ordering on existing Julia versions, but ordering will now match the ordering in the default REPL display (and reflect the model internal ordering), [#829]
@@ -642,3 +665,7 @@ Package dependencies
642665
[#825]: https://github.com/JuliaStats/MixedModels.jl/issues/825
643666
[#828]: https://github.com/JuliaStats/MixedModels.jl/issues/828
644667
[#829]: https://github.com/JuliaStats/MixedModels.jl/issues/829
668+
[#836]: https://github.com/JuliaStats/MixedModels.jl/issues/836
669+
[#840]: https://github.com/JuliaStats/MixedModels.jl/issues/840
670+
[#841]: https://github.com/JuliaStats/MixedModels.jl/issues/841
671+
[#842]: https://github.com/JuliaStats/MixedModels.jl/issues/842

Project.toml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "MixedModels"
22
uuid = "ff71e718-51f3-5ec2-a782-8ffcbfa3c316"
33
author = ["Phillip Alday <[email protected]>", "Douglas Bates <[email protected]>"]
4-
version = "4.35.2"
4+
version = "5.0.0-DEV"
55

66
[deps]
77
Arrow = "69666777-d1a9-59fb-9406-91d4454c9d45"
@@ -31,9 +31,13 @@ Tables = "bd369af6-aec1-5ad0-b16a-f7cc5008161c"
3131
TypedTables = "9d95f2ec-7b3d-5a63-8d20-e2491e220bb9"
3232

3333
[weakdeps]
34+
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
35+
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
3436
PRIMA = "0a7d04aa-8ac2-47b3-b7a7-9dbd6ad661ed"
3537

3638
[extensions]
39+
MixedModelsFiniteDiffExt = ["FiniteDiff"]
40+
MixedModelsForwardDiffExt = ["ForwardDiff"]
3741
MixedModelsPRIMAExt = ["PRIMA"]
3842

3943
[compat]
@@ -45,6 +49,8 @@ DataAPI = "1"
4549
DataFrames = "1"
4650
Distributions = "0.21, 0.22, 0.23, 0.24, 0.25"
4751
ExplicitImports = "1.3"
52+
FiniteDiff = "2.27"
53+
ForwardDiff = "1"
4854
GLM = "1.8.2"
4955
InteractiveUtils = "1"
5056
JSON3 = "1"
@@ -57,6 +63,7 @@ PooledArrays = "0.5, 1"
5763
PrecompileTools = "1"
5864
ProgressMeter = "1.7"
5965
Random = "1"
66+
RegressionFormulae = "0.1.3"
6067
SparseArrays = "1"
6168
StableRNGs = "0.1, 1"
6269
StaticArrays = "0.11, 0.12, 1"
@@ -76,11 +83,14 @@ julia = "1.10"
7683
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
7784
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
7885
ExplicitImports = "7d51a73a-1435-4ff3-83d9-f097790105c7"
86+
FiniteDiff = "6a86dc24-6348-571c-b903-95158fe2bd41"
87+
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
7988
InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240"
8089
PRIMA = "0a7d04aa-8ac2-47b3-b7a7-9dbd6ad661ed"
90+
RegressionFormulae = "545c379f-4ec2-4339-9aea-38f2fb6a8ba2"
8191
StableRNGs = "860ef19b-820b-49d6-a774-d7a799459cd3"
8292
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
8393
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
8494

8595
[targets]
86-
test = ["Aqua", "DataFrames", "ExplicitImports", "InteractiveUtils", "PRIMA", "StableRNGs", "Suppressor", "Test"]
96+
test = ["Aqua", "DataFrames", "ExplicitImports", "FiniteDiff", "ForwardDiff", "InteractiveUtils", "PRIMA", "RegressionFormulae", "StableRNGs", "Suppressor", "Test"]

0 commit comments

Comments
 (0)