Skip to content

Commit f4fadd1

Browse files
committed
Rename methods and only keep old one for benchmarking
1 parent 0838a10 commit f4fadd1

File tree

5 files changed

+19
-19
lines changed

5 files changed

+19
-19
lines changed

dev-scripts/benchmark_printing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import xarray as xr
3737

3838
from linopy import Model
39-
from linopy.common import get_label_position
39+
from linopy.common import _get_label_position_linear
4040

4141

4242
def build_model(n_var_arrays: int, n_con_arrays: int, vars_per_array: int = 10) -> Model:
@@ -108,10 +108,10 @@ def use_original_implementation():
108108

109109
# Replace with original O(n) implementation
110110
def original_var_get_label_position(self, values):
111-
return get_label_position(self, values)
111+
return _get_label_position_linear(self, values)
112112

113113
def original_con_get_label_position(self, values):
114-
return get_label_position(self, values)
114+
return _get_label_position_linear(self, values)
115115

116116
# Original print_single_variable using .sel()
117117
def original_print_single_variable(model, label):
@@ -121,7 +121,7 @@ def original_print_single_variable(model, label):
121121
return "None"
122122

123123
variables = model.variables
124-
name, coord = get_label_position(variables, label)
124+
name, coord = _get_label_position_linear(variables, label)
125125

126126
# Original: use .sel() which is slower
127127
lower = variables[name].lower.sel(coord).item()

linopy/common.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,7 @@ def find_single_with_index(
855855
return name, coord, index
856856

857857

858-
def get_label_position(
858+
def _get_label_position_linear(
859859
obj: Any, values: int | np.ndarray
860860
) -> (
861861
tuple[str, dict]
@@ -867,7 +867,7 @@ def get_label_position(
867867
Get tuple of name and coordinate for variable labels.
868868
869869
This is the original O(n) implementation that scans through all items.
870-
For better performance with many items, use LabelPositionIndex.
870+
Used only for testing/benchmarking comparisons.
871871
"""
872872

873873
def find_single(value: int) -> tuple[str, dict] | tuple[None, None]:
@@ -903,7 +903,7 @@ def find_single(value: int) -> tuple[str, dict] | tuple[None, None]:
903903
raise ValueError("Array's with more than two dimensions is not supported")
904904

905905

906-
def get_label_position_optimized(
906+
def get_label_position(
907907
obj: Any,
908908
values: int | np.ndarray,
909909
index: LabelPositionIndex | None = None,
@@ -914,14 +914,14 @@ def get_label_position_optimized(
914914
| list[list[tuple[str, dict] | tuple[None, None]]]
915915
):
916916
"""
917-
Get tuple of name and coordinate for variable labels using binary search.
917+
Get tuple of name and coordinate for variable labels.
918918
919-
This is an optimized O(log n) implementation using a pre-built index.
919+
Uses O(log n) binary search with a cached index for fast lookups.
920920
921921
Parameters
922922
----------
923923
obj : Any
924-
Container object with items() method.
924+
Container object with items() method (Variables or Constraints).
925925
values : int or np.ndarray
926926
Label value(s) to look up.
927927
index : LabelPositionIndex, optional

linopy/constraints.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
format_string_as_variable_name,
4040
generate_indices_for_printout,
4141
get_dims_with_index_levels,
42-
get_label_position_optimized,
42+
get_label_position,
4343
group_terms_polars,
4444
has_optimized_model,
4545
infer_schema_polars,
@@ -998,7 +998,7 @@ def get_label_position(
998998
"""
999999
if self._label_position_index is None:
10001000
self._label_position_index = LabelPositionIndex(self)
1001-
return get_label_position_optimized(self, values, self._label_position_index)
1001+
return get_label_position(self, values, self._label_position_index)
10021002

10031003
def print_labels(
10041004
self, values: Sequence[int], display_max_terms: int | None = None

linopy/variables.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
format_string_as_variable_name,
4141
generate_indices_for_printout,
4242
get_dims_with_index_levels,
43-
get_label_position_optimized,
43+
get_label_position,
4444
has_optimized_model,
4545
is_constant,
4646
iterate_slices,
@@ -1439,7 +1439,7 @@ def get_label_position(self, values: int | ndarray) -> Any:
14391439
"""
14401440
if self._label_position_index is None:
14411441
self._label_position_index = LabelPositionIndex(self)
1442-
return get_label_position_optimized(self, values, self._label_position_index)
1442+
return get_label_position(self, values, self._label_position_index)
14431443

14441444
def get_label_position_with_index(
14451445
self, label: int

test/test_label_position.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from linopy import Model
1414
from linopy.common import (
1515
LabelPositionIndex,
16-
get_label_position,
16+
_get_label_position_linear,
1717
)
1818

1919

@@ -189,15 +189,15 @@ def test_matches_original_implementation(self, model):
189189
labels = rng.integers(0, max_label, size=50)
190190

191191
for label in labels:
192-
original = get_label_position(model.variables, int(label))
192+
original = _get_label_position_linear(model.variables, int(label))
193193
optimized = model.variables.get_label_position(int(label))
194194
assert original == optimized, f"Mismatch for label {label}"
195195

196196
def test_matches_original_batch(self, model):
197197
"""Test that batch lookup matches original."""
198198
labels = np.arange(min(20, model._xCounter))
199199

200-
original = get_label_position(model.variables, labels)
200+
original = _get_label_position_linear(model.variables, labels)
201201
optimized = model.variables.get_label_position(labels)
202202

203203
assert original == optimized
@@ -330,14 +330,14 @@ def test_large_model_correctness(self, large_model):
330330
# Test variables
331331
max_var = large_model._xCounter
332332
for label in rng.integers(0, max_var, size=100):
333-
original = get_label_position(large_model.variables, int(label))
333+
original = _get_label_position_linear(large_model.variables, int(label))
334334
optimized = large_model.variables.get_label_position(int(label))
335335
assert original == optimized
336336

337337
# Test constraints
338338
max_con = large_model._cCounter
339339
for label in rng.integers(0, max_con, size=100):
340-
original = get_label_position(large_model.constraints, int(label))
340+
original = _get_label_position_linear(large_model.constraints, int(label))
341341
optimized = large_model.constraints.get_label_position(int(label))
342342
assert original == optimized
343343

0 commit comments

Comments
 (0)