Skip to content

Commit 0af04b8

Browse files
committed
fixes to simulation
1 parent 5f66945 commit 0af04b8

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/mssmViz/sim.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ def sim1(sim_size,sim_sigma = 5.5,sim_lam = 1e-4,sim_weak_nonlin = 0.5,random_se
7171
LVp = compute_Linv(Lp,1)
7272
LV = apply_eigen_perm(Pr,LVp)
7373
V = (LV.T @ LV) * sim_sigma
74+
V = V.toarray()
75+
V[np.abs(V) < 1e-4] = 0 # Minimize numerical inaccuracies between different systems to ensure similar behavior
76+
7477
#V = scp.sparse.linalg.spsolve(sim_mat.T @ sim_mat + sim_S,scp.sparse.eye((sim_S.shape[1]),format='csc')) * sim_sigma
7578

7679
# Get matrix for x effects
@@ -116,9 +119,9 @@ def sim1(sim_size,sim_sigma = 5.5,sim_lam = 1e-4,sim_weak_nonlin = 0.5,random_se
116119
rand_matrix = np.zeros((100,len(time_pred)))
117120
for sim_idx in range(sim_size):
118121
if not random_seed is None:
119-
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=random_seed+sim_idx),cov=V.toarray(),size=1,random_state=random_seed+sim_idx)
122+
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=random_seed+sim_idx),cov=V,size=1,random_state=random_seed+sim_idx)
120123
else:
121-
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=None),cov=V.toarray(),size=1,random_state=None)
124+
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=None),cov=V,size=1,random_state=None)
122125
sample[0] = 0
123126
take = np_gen.integers(int(len(time_pred)/4),len(time_pred)+1)
124127
fact.extend(np.repeat(fl[sim_idx],take))
@@ -228,6 +231,9 @@ def sim2(sim_size,sim_sigma = 5.5,sim_lam = 1e-4,set_zero = 1,random_seed=None,f
228231
LVp = compute_Linv(Lp,1)
229232
LV = apply_eigen_perm(Pr,LVp)
230233
V = (LV.T @ LV) * sim_sigma
234+
V = V.toarray()
235+
V[np.abs(V) < 1e-4] = 0 # Minimize numerical inaccuracies between different systems to ensure similar behavior
236+
231237
#V = scp.sparse.linalg.spsolve(sim_mat.T @ sim_mat + sim_S,scp.sparse.eye((sim_S.shape[1]),format='csc')) * sim_sigma
232238

233239
# Get matrix for x effects
@@ -278,9 +284,9 @@ def sim2(sim_size,sim_sigma = 5.5,sim_lam = 1e-4,set_zero = 1,random_seed=None,f
278284
rand_matrix = np.zeros((100,len(time_pred)))
279285
for sim_idx in range(sim_size):
280286
if not random_seed is None:
281-
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=random_seed+sim_idx),cov=V.toarray(),size=1,random_state=random_seed+sim_idx)
287+
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=random_seed+sim_idx),cov=V,size=1,random_state=random_seed+sim_idx)
282288
else:
283-
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=None),cov=V.toarray(),size=1,random_state=None)
289+
sample = scp.stats.multivariate_normal.rvs(mean=scp.stats.norm.rvs(size=(sim_S.shape[1]),scale=5,random_state=None),cov=V,size=1,random_state=None)
284290
sample[0] = 0
285291
take = np_gen.integers(int(len(time_pred)/4),len(time_pred)+1)
286292

0 commit comments

Comments
 (0)