Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions tests/benchmarks/test_bench_detrending.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""Detrending method benchmarks: delta, identity, z-score, second-difference."""

import numpy as np
import pytest

from delaynet import detrend

TS_LEN = 1000

_rng = np.random.default_rng(2154)
_ts = _rng.normal(0, 1, TS_LEN)
_ts_wave = np.sin(np.linspace(0, 4 * np.pi, TS_LEN))


@pytest.mark.benchmark(group="detrend")
@pytest.mark.parametrize(
"method,kwargs,data",
[
("delta", {"window_size": 10}, _ts),
("delta", {"window_size": 100}, _ts),
("identity", {}, _ts),
("z_score", {"periodicity": 1}, _ts),
("z_score", {"periodicity": 10, "max_periods": 5}, _ts),
("second_difference", {}, _ts_wave),
],
ids=[
"delta-w10",
"delta-w100",
"identity",
"z_score-p1",
"z_score-p10",
"second_difference",
],
)
def test_detrend_method(benchmark, method, kwargs, data):
benchmark(detrend, data, method=method, **kwargs)
6 changes: 6 additions & 0 deletions tests/benchmarks/test_bench_metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

from delaynet.connectivities.continuous_ordinal_patterns import random_patterns
from delaynet.connectivities.granger import gt_multi_lag
from delaynet.connectivities.gravity import gravity
from delaynet.connectivities.linear_correlation import linear_correlation
from delaynet.connectivities.rank_correlation import rank_correlation
from delaynet.connectivities.mutual_information import mutual_information
Expand Down Expand Up @@ -37,6 +38,11 @@ def test_continuous_metric(benchmark, metric_func, kwargs):
benchmark(metric_func, TS1, TS2, lag_steps=LAG_STEPS, **kwargs)


@pytest.mark.benchmark(group="metrics")
def test_gravity(benchmark):
benchmark(gravity, TS1, TS2, lag_steps=LAG_STEPS, n_tests=N_TESTS)


@pytest.mark.benchmark(group="metrics")
def test_granger_f_test(benchmark):
ts = gen_delayed_causal_network(ts_len=50, n_nodes=5, l_dens=0.3, rng=0)[2].T
Expand Down
41 changes: 41 additions & 0 deletions tests/benchmarks/test_bench_network_analysis.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
"""Network analysis metric benchmarks: global efficiency, transitivity, etc."""

import numpy as np
import pytest

from delaynet.network_analysis import global_efficiency, transitivity, link_density

N_NODES = 50
DENSITY = 0.3

_rng = np.random.default_rng(152)
_adj = (_rng.uniform(0, 1, (N_NODES, N_NODES)) < DENSITY).astype(float)
np.fill_diagonal(_adj, 0)

# ensure at least some structure: a directed chain
for i in range(N_NODES - 1):
_adj[i, i + 1] = 1.0

# symmetric version for undirected metrics
_adj_sym = (_adj + _adj.T) > 0
_adj_sym = _adj_sym.astype(float)


@pytest.mark.benchmark(group="network-analysis")
@pytest.mark.parametrize(
"metric_func, kwargs, data",
[
(global_efficiency, {"directed": True}, _adj),
(global_efficiency, {"directed": False}, _adj_sym),
(transitivity, {}, _adj_sym),
(link_density, {"directed": True}, _adj),
],
ids=[
"global_efficiency-dir",
"global_efficiency-undir",
"transitivity",
"link_density",
],
)
def test_network_metric(benchmark, metric_func, kwargs, data):
benchmark(metric_func, data, **kwargs)
Loading