Skip to content

Commit 2d48ef8

Browse files
committed
Restructure deprecation functions
1 parent 7212cc4 commit 2d48ef8

4 files changed

Lines changed: 73 additions & 49 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""Reference implementations for testing consistency and backward compatibility.
2+
3+
This package contains reference implementations of previously deprecated or
4+
parametrized model components, used for testing consistency and backward compatibility
5+
in the test suite.
6+
"""
7+
8+
from .deprecated_transforms import (
9+
cebra_transform_deprecated,
10+
multiobjective_transform_deprecated,
11+
)
12+
from .reference_offset_models import (
13+
Offset5ModelReference,
14+
Offset10ModelReference,
15+
Offset15ModelReference,
16+
Offset20ModelReference,
17+
Offset36Reference,
18+
Offset40Reference,
19+
Offset50Reference,
20+
)
21+
22+
__all__ = [
23+
"cebra_transform_deprecated",
24+
"multiobjective_transform_deprecated",
25+
"Offset5ModelReference",
26+
"Offset10ModelReference",
27+
"Offset15ModelReference",
28+
"Offset20ModelReference",
29+
"Offset36Reference",
30+
"Offset40Reference",
31+
"Offset50Reference",
32+
]

tests/_utils_deprecated.py renamed to tests/_reference_implementations/deprecated_transforms.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import cebra.models
1212

1313

14-
#NOTE: Deprecated: transform is now handled in the solver but the original
15-
# method is kept here for testing.
14+
#NOTE(celia): Deprecated: transform is now handled in the solver but the original
15+
# method is kept here for testing consistency.
1616
def cebra_transform_deprecated(cebra_model,
1717
X: Union[npt.NDArray, torch.Tensor],
1818
session_id: Optional[int] = None) -> npt.NDArray:
@@ -72,9 +72,9 @@ def cebra_transform_deprecated(cebra_model,
7272
return output
7373

7474

75-
# NOTE: Deprecated: batched transform can now be performed (more memory efficient)
75+
# NOTE(celia): Deprecated: batched transform can now be performed (more memory efficient)
7676
# using the transform method of the model, and handling padding is implemented
77-
# directly in the base Solver. This method is kept for testing purposes.
77+
# directly in the base Solver. This method is kept for testing consistency.
7878
@torch.no_grad()
7979
def multiobjective_transform_deprecated(solver: "cebra.solvers.Solver",
8080
inputs: torch.Tensor) -> torch.Tensor:
@@ -90,7 +90,7 @@ def multiobjective_transform_deprecated(solver: "cebra.solvers.Solver",
9090

9191
warnings.warn(
9292
"The method is deprecated "
93-
"but kept for testing puroposes."
93+
"but kept for testing purposes."
9494
"We recommend using `transform` instead.",
9595
DeprecationWarning,
9696
stacklevel=2)

tests/test_integration_xcebra.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import pickle
22

3-
import _utils_deprecated
3+
import _reference_implementations
44
import numpy as np
55
import pytest
66
import torch
@@ -174,7 +174,7 @@ def test_synthetic_data_training(synthetic_data, device):
174174
atol=1e-4)
175175

176176
# Test and compare the previous transform (transform_deprecated)
177-
deprecated_transform_embedding = _utils_deprecated.multiobjective_transform_deprecated(
177+
deprecated_transform_embedding = _reference_implementations.multiobjective_transform_deprecated(
178178
solver, data.neural.to(device))
179179
assert np.allclose(embedding,
180180
deprecated_transform_embedding,

tests/test_sklearn.py

Lines changed: 34 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import tempfile
2626
import warnings
2727

28+
import _reference_implementations
2829
import _util
29-
import _utils_deprecated
3030
import numpy as np
3131
import packaging.version
3232
import pytest
@@ -1412,7 +1412,8 @@ def test_new_transform(model_architecture, device):
14121412
# time contrastive
14131413
cebra_model.fit(X)
14141414
embedding1 = cebra_model.transform(X)
1415-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model, X)
1415+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1416+
cebra_model, X)
14161417
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14171418
atol=1e-8), "Arrays are not close enough"
14181419

@@ -1421,20 +1422,20 @@ def test_new_transform(model_architecture, device):
14211422
assert cebra_model.num_sessions is None
14221423

14231424
embedding1 = cebra_model.transform(X)
1424-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model, X)
1425+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1426+
cebra_model, X)
14251427
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14261428
atol=1e-8), "Arrays are not close enough"
14271429

14281430
embedding1 = cebra_model.transform(torch.Tensor(X))
1429-
embedding2 = _utils_deprecated.cebra_transform_deprecated(
1431+
embedding2 = _reference_implementations.cebra_transform_deprecated(
14301432
cebra_model, torch.Tensor(X))
14311433
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14321434
atol=1e-8), "Arrays are not close enough"
14331435

14341436
embedding1 = cebra_model.transform(torch.Tensor(X), session_id=0)
1435-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1436-
torch.Tensor(X),
1437-
session_id=0)
1437+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1438+
cebra_model, torch.Tensor(X), session_id=0)
14381439
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14391440
atol=1e-8), "Arrays are not close enough"
14401441

@@ -1444,55 +1445,52 @@ def test_new_transform(model_architecture, device):
14441445
# discrete behavior contrastive
14451446
cebra_model.fit(X, y_d)
14461447
embedding1 = cebra_model.transform(X)
1447-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model, X)
1448+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1449+
cebra_model, X)
14481450
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14491451
atol=1e-8), "Arrays are not close enough"
14501452

14511453
# mixed
14521454
cebra_model.fit(X, y_c1, y_c2, y_d)
14531455
embedding1 = cebra_model.transform(X)
1454-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model, X)
1456+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1457+
cebra_model, X)
14551458
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14561459
atol=1e-8), "Arrays are not close enough"
14571460

14581461
# multi-session discrete behavior contrastive
14591462
cebra_model.fit([X, X_s2], [y_d, y_d_s2])
14601463

14611464
embedding1 = cebra_model.transform(X, session_id=0)
1462-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1463-
X,
1464-
session_id=0)
1465+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1466+
cebra_model, X, session_id=0)
14651467
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14661468
atol=1e-8), "Arrays are not close enough"
14671469

14681470
embedding1 = cebra_model.transform(torch.Tensor(X), session_id=0)
1469-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1470-
torch.Tensor(X),
1471-
session_id=0)
1471+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1472+
cebra_model, torch.Tensor(X), session_id=0)
14721473
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14731474
atol=1e-8), "Arrays are not close enough"
14741475

14751476
embedding1 = cebra_model.transform(X_s2, session_id=1)
1476-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1477-
X_s2,
1478-
session_id=1)
1477+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1478+
cebra_model, X_s2, session_id=1)
14791479
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14801480
atol=1e-8), "Arrays are not close enough"
14811481

14821482
# multi-session continuous behavior contrastive
14831483
cebra_model.fit([X, X_s2], [y_c1, y_c1_s2])
14841484

14851485
embedding1 = cebra_model.transform(X, session_id=0)
1486-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1487-
X,
1488-
session_id=0)
1486+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1487+
cebra_model, X, session_id=0)
14891488
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14901489
atol=1e-8), " are not close enough"
14911490

14921491
embedding1 = cebra_model.transform(torch.Tensor(X), session_id=0)
1493-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1494-
torch.Tensor(X),
1495-
session_id=0)
1492+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1493+
cebra_model, torch.Tensor(X), session_id=0)
14961494
assert np.allclose(embedding1, embedding2, rtol=1e-5,
14971495
atol=1e-8), "Arrays are not close enough"
14981496

@@ -1511,47 +1509,41 @@ def test_new_transform(model_architecture, device):
15111509
cebra_model.fit([X, X_s2, X], [y_d, y_d_s2, y_d])
15121510

15131511
embedding1 = cebra_model.transform(X, session_id=0)
1514-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1515-
X,
1516-
session_id=0)
1512+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1513+
cebra_model, X, session_id=0)
15171514
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15181515
atol=1e-8), "Arrays are not close enough"
15191516

15201517
embedding1 = cebra_model.transform(X_s2, session_id=1)
1521-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1522-
X_s2,
1523-
session_id=1)
1518+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1519+
cebra_model, X_s2, session_id=1)
15241520
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15251521
atol=1e-8), "Arrays are not close enough"
15261522

15271523
embedding1 = cebra_model.transform(X, session_id=2)
1528-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1529-
X,
1530-
session_id=2)
1524+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1525+
cebra_model, X, session_id=2)
15311526
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15321527
atol=1e-8), "Arrays are not close enough"
15331528

15341529
# multi-session continuous behavior contrastive, more than two sessions
15351530
cebra_model.fit([X, X_s2, X], [y_c1, y_c1_s2, y_c1])
15361531

15371532
embedding1 = cebra_model.transform(X, session_id=0)
1538-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1539-
X,
1540-
session_id=0)
1533+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1534+
cebra_model, X, session_id=0)
15411535
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15421536
atol=1e-8), "Arrays are not close enough"
15431537

15441538
embedding1 = cebra_model.transform(X_s2, session_id=1)
1545-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1546-
X_s2,
1547-
session_id=1)
1539+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1540+
cebra_model, X_s2, session_id=1)
15481541
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15491542
atol=1e-8), "Arrays are not close enough"
15501543

15511544
embedding1 = cebra_model.transform(X, session_id=2)
1552-
embedding2 = _utils_deprecated.cebra_transform_deprecated(cebra_model,
1553-
X,
1554-
session_id=2)
1545+
embedding2 = _reference_implementations.cebra_transform_deprecated(
1546+
cebra_model, X, session_id=2)
15551547
assert np.allclose(embedding1, embedding2, rtol=1e-5,
15561548
atol=1e-8), "Arrays are not close enough"
15571549

0 commit comments

Comments
 (0)