Skip to content
This repository was archived by the owner on Oct 21, 2025. It is now read-only.

Commit 03eb895

Browse files
added support for constraints in continuous models with interactions
1 parent 9797135 commit 03eb895

2 files changed

Lines changed: 10 additions & 8 deletions

File tree

diffxpy/testing/tests.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,6 @@ def wald(
595595
np.arange(design_loc.shape[-1])[design_loc.design_info.slice(x)]
596596
for x in factor_loc_totest
597597
])
598-
print(col_indices)
599598
assert len(col_indices) > 0, "Could not find any matching columns!"
600599
if coef_to_test is not None:
601600
if len(factor_loc_totest) > 1:
@@ -2046,7 +2045,6 @@ def continuous_1d(
20462045
dtype=dtype,
20472046
**kwargs
20482047
)
2049-
print(de_test.model_estim.input_data.loc_names)
20502048
de_test = DifferentialExpressionTestWaldCont(
20512049
de_test=de_test,
20522050
noise_model=noise_model,

diffxpy/unit_test/test_continuous_null.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,12 @@ def _fit_continuous_interaction(
5151
data=sim.input_data,
5252
sample_description=sample_description,
5353
gene_names=["gene" + str(i) for i in range(sim.input_data.num_features)],
54-
formula_loc="~ 1 + continuous + batch + continuous:batch",
54+
formula_loc="~ 1 + continuous + condition + continuous:condition" if not constrained else \
55+
"~ 1 + continuous + condition + continuous:condition + batch",
5556
formula_scale="~ 1",
56-
factor_loc_totest=["continuous", "continuous:batch"],
57+
factor_loc_totest=["continuous", "continuous:condition"],
5758
continuous="continuous",
59+
constraints_loc={"batch": "condition"} if constrained else None,
5860
size_factors="size_factors",
5961
df=3,
6062
spline_basis=spline_basis,
@@ -108,8 +110,10 @@ def _test_interaction(
108110
random_sample_description = pd.DataFrame({
109111
"continuous": np.asarray(np.random.randint(0, n_timepoints, size=sim.nobs), dtype=float)
110112
})
111-
random_sample_description["batch"] = [str(np.random.randint(0, 3))
112-
for x in random_sample_description["continuous"]]
113+
random_sample_description["condition"] = [str(np.random.randint(0, 2))
114+
for x in random_sample_description["continuous"]]
115+
random_sample_description["batch"] = [x + str(np.random.randint(0, 3))
116+
for x in random_sample_description["condition"]]
113117
random_sample_description["size_factors"] = np.random.uniform(0.9, 1.1, sim.nobs) # TODO put into simulation.
114118
det = self._fit_continuous_interaction(
115119
sim=sim,
@@ -280,7 +284,7 @@ def test_null_distribution_wald_unconstrained(self):
280284

281285
self.noise_model = "nb"
282286
np.random.seed(1)
283-
#self._test_null_model_all_splines(ngenes=100, test="wald", constrained=False)
287+
self._test_null_model_all_splines(ngenes=100, test="wald", constrained=False)
284288
self._test_null_model_all_splines_interaction(ngenes=100, test="wald", constrained=False)
285289
return True
286290

@@ -301,7 +305,7 @@ def test_null_distribution_wald_constrained(self):
301305
self.noise_model = "nb"
302306
np.random.seed(1)
303307
self._test_null_model_all_splines(ngenes=100, test="wald", constrained=True)
304-
# Interaction not supported yet.
308+
self._test_null_model_all_splines_interaction(ngenes=100, test="wald", constrained=True)
305309
return True
306310

307311
def _test_null_distribution_lrt(self):

0 commit comments

Comments
 (0)