|
1 | 1 | """ |
2 | 2 | struct Model{F,argnames,defaultnames,missings,Targs,Tdefaults} |
| 3 | + name::Symbol |
3 | 4 | f::F |
4 | 5 | args::NamedTuple{argnames,Targs} |
5 | 6 | defaults::NamedTuple{defaultnames,Tdefaults} |
@@ -32,39 +33,44 @@ Model{typeof(f),(:x, :y),(:x,),(:y,),Tuple{Float64,Float64},Tuple{Int64}}(f, (x |
32 | 33 | ``` |
33 | 34 | """ |
34 | 35 | struct Model{F,argnames,defaultnames,missings,Targs,Tdefaults} <: AbstractModel |
| 36 | + name::Symbol |
35 | 37 | f::F |
36 | 38 | args::NamedTuple{argnames,Targs} |
37 | 39 | defaults::NamedTuple{defaultnames,Tdefaults} |
38 | 40 |
|
39 | 41 | """ |
40 | | - Model{missings}(f, args::NamedTuple, defaults::NamedTuple) |
| 42 | + Model{missings}(name::Symbol, f, args::NamedTuple, defaults::NamedTuple) |
41 | 43 |
|
42 | | - Create a model with evaluation function `f` and missing arguments overwritten by `missings`. |
| 44 | + Create a model of name `name` with evaluation function `f` and missing arguments |
| 45 | + overwritten by `missings`. |
43 | 46 | """ |
44 | 47 | function Model{missings}( |
| 48 | + name::Symbol, |
45 | 49 | f::F, |
46 | 50 | args::NamedTuple{argnames,Targs}, |
47 | 51 | defaults::NamedTuple{defaultnames,Tdefaults}, |
48 | 52 | ) where {missings,F,argnames,Targs,defaultnames,Tdefaults} |
49 | | - return new{F,argnames,defaultnames,missings,Targs,Tdefaults}(f, args, defaults) |
| 53 | + return new{F,argnames,defaultnames,missings,Targs,Tdefaults}(name, f, args, defaults) |
50 | 54 | end |
51 | 55 | end |
52 | 56 |
|
53 | 57 | """ |
54 | | - Model(f, args::NamedTuple[, defaults::NamedTuple = ()]) |
| 58 | + Model(name::Symbol, f, args::NamedTuple[, defaults::NamedTuple = ()]) |
55 | 59 |
|
56 | | -Create a model with evaluation function `f` and missing arguments deduced from `args`. |
| 60 | +Create a model of name `name` with evaluation function `f` and missing arguments deduced |
| 61 | +from `args`. |
57 | 62 |
|
58 | 63 | Default arguments `defaults` are used internally when constructing instances of the same |
59 | 64 | model with different arguments. |
60 | 65 | """ |
61 | 66 | @generated function Model( |
| 67 | + name::Symbol, |
62 | 68 | f::F, |
63 | 69 | args::NamedTuple{argnames,Targs}, |
64 | 70 | defaults::NamedTuple = NamedTuple(), |
65 | 71 | ) where {F,argnames,Targs} |
66 | 72 | missings = Tuple(name for (name, typ) in zip(argnames, Targs.types) if typ <: Missing) |
67 | | - return :(Model{$missings}(f, args, defaults)) |
| 73 | + return :(Model{$missings}(name, f, args, defaults)) |
68 | 74 | end |
69 | 75 |
|
70 | 76 | """ |
@@ -174,6 +180,13 @@ getmissings(model::Model{_F,_a,_d,missings}) where {missings,_F,_a,_d} = missing |
174 | 180 | getmissing(model::Model) = getmissings(model) |
175 | 181 | @deprecate getmissing(model) getmissings(model) |
176 | 182 |
|
| 183 | +""" |
| 184 | + nameof(model::Model) |
| 185 | +
|
| 186 | +Get the name of the `model` as `Symbol`. |
| 187 | +""" |
| 188 | +Base.nameof(model::Model) = model.name |
| 189 | + |
177 | 190 | """ |
178 | 191 | logjoint(model::Model, varinfo::AbstractVarInfo) |
179 | 192 |
|
|
0 commit comments