Skip to content

Commit c7a58ec

Browse files
Alexey Stukalovalyst
authored andcommitted
RAM imply: use vars API
1 parent 800198c commit c7a58ec

1 file changed

Lines changed: 11 additions & 10 deletions

File tree

src/imply/RAM/generic.jl

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ function RAM(;
108108

109109
# get dimensions of the model
110110
n_par = nparams(ram_matrices)
111-
n_var, n_nod = ram_matrices.size_F
111+
n_obs = nobserved_vars(ram_matrices)
112+
n_var = nvars(ram_matrices)
112113
F = zeros(ram_matrices.size_F)
113114
F[CartesianIndex.(1:n_var, ram_matrices.F_ind)] .= 1.0
114115

@@ -118,23 +119,23 @@ function RAM(;
118119
M_indices = !isnothing(ram_matrices.M_ind) ? copy(ram_matrices.M_ind) : nothing
119120

120121
#preallocate arrays
121-
A_pre = zeros(n_nod, n_nod)
122-
S_pre = zeros(n_nod, n_nod)
123-
!isnothing(M_indices) ? M_pre = zeros(n_nod) : M_pre = nothing
122+
A_pre = zeros(n_var, n_var)
123+
S_pre = zeros(n_var, n_var)
124+
M_pre = !isnothing(M_indices) ? zeros(n_var) : nothing
124125

125126
set_RAMConstants!(A_pre, S_pre, M_pre, ram_matrices.constants)
126127

127128
A_pre = check_acyclic(A_pre, n_par, A_indices)
128129

129130
# pre-allocate some matrices
130-
Σ = zeros(n_var, n_var)
131-
F⨉I_A⁻¹ = zeros(n_var, n_nod)
132-
F⨉I_A⁻¹S = zeros(n_var, n_nod)
131+
Σ = zeros(n_obs, n_obs)
132+
F⨉I_A⁻¹ = zeros(n_obs, n_var)
133+
F⨉I_A⁻¹S = zeros(n_obs, n_var)
133134
I_A = similar(A_pre)
134135

135136
if gradient
136-
∇A = matrix_gradient(A_indices, n_nod^2)
137-
∇S = matrix_gradient(S_indices, n_nod^2)
137+
∇A = matrix_gradient(A_indices, n_var^2)
138+
∇S = matrix_gradient(S_indices, n_var^2)
138139
else
139140
∇A = nothing
140141
∇S = nothing
@@ -144,7 +145,7 @@ function RAM(;
144145
if meanstructure
145146
has_meanstructure = Val(true)
146147
!isnothing(M_indices) || throw(ArgumentError("You set `meanstructure = true`, but your model specification contains no mean parameters."))
147-
∇M = gradient ? matrix_gradient(M_indices, n_nod) : nothing
148+
∇M = gradient ? matrix_gradient(M_indices, n_var) : nothing
148149
μ = zeros(n_var)
149150
else
150151
has_meanstructure = Val(false)

0 commit comments

Comments
 (0)