scPTR / tests /test_gamma_dynamic.py
bryan7264's picture
Add files using upload-large-folder tool
9d901ad verified
Raw
History Blame Contribute Delete
2.37 kB
"""Tests for dynamic-mode gamma estimation."""
import numpy as np
import pytest
def test_dynamic_mode_produces_gamma(preprocessed_adata):
"""Dynamic mode produces a gamma layer."""
import scptr
scptr.tl.estimate_beta(preprocessed_adata)
# Create a synthetic velocity layer (ds/dt estimate)
n_obs, n_vars = preprocessed_adata.shape
preprocessed_adata.layers["velocity_S"] = np.random.randn(n_obs, n_vars).astype(
np.float32
)
scptr.tl.estimate_gamma(
preprocessed_adata, mode="dynamic", velocity_layer="velocity_S"
)
assert "gamma" in preprocessed_adata.layers
assert preprocessed_adata.layers["gamma"].shape == (n_obs, n_vars)
# Dynamic gamma should be non-negative (clipped)
assert np.all(preprocessed_adata.layers["gamma"] >= 0)
def test_dynamic_mode_logs_params(preprocessed_adata):
"""Dynamic mode logs mode and velocity_layer in uns."""
import scptr
scptr.tl.estimate_beta(preprocessed_adata)
n_obs, n_vars = preprocessed_adata.shape
preprocessed_adata.layers["velocity_S"] = np.random.randn(n_obs, n_vars).astype(
np.float32
)
scptr.tl.estimate_gamma(
preprocessed_adata, mode="dynamic", velocity_layer="velocity_S"
)
params = preprocessed_adata.uns["scptr"]["estimate_gamma"]
assert params["mode"] == "dynamic"
assert params["velocity_layer"] == "velocity_S"
def test_dynamic_requires_velocity_layer(preprocessed_adata):
"""Dynamic mode without velocity_layer raises ValueError."""
import scptr
scptr.tl.estimate_beta(preprocessed_adata)
with pytest.raises(ValueError, match="velocity_layer must be provided"):
scptr.tl.estimate_gamma(preprocessed_adata, mode="dynamic")
def test_steady_state_mode_default(preprocessed_adata):
"""Default mode is steady_state and works as before."""
import scptr
scptr.tl.estimate_beta(preprocessed_adata)
scptr.tl.estimate_gamma(preprocessed_adata)
params = preprocessed_adata.uns["scptr"]["estimate_gamma"]
assert params["mode"] == "steady_state"
def test_unknown_mode_raises(preprocessed_adata):
"""Unknown mode raises ValueError."""
import scptr
scptr.tl.estimate_beta(preprocessed_adata)
with pytest.raises(ValueError, match="Unknown mode"):
scptr.tl.estimate_gamma(preprocessed_adata, mode="invalid")