Skip to content

Commit 884fe73

Browse files
Rename least_core_value to subsidy
The term value in pyDVL is meant for data values
1 parent e425f3b commit 884fe73

File tree

6 files changed

+32
-32
lines changed

6 files changed

+32
-32
lines changed

src/pydvl/value/least_core/_common.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,19 @@ def _solve_least_core_linear_program(
7777
"maximum number of iterations in options",
7878
RuntimeWarning,
7979
)
80-
least_core_value = e.value.item()
81-
# HACK: sometimes the returned least core value
80+
subsidy = e.value.item()
81+
# HACK: sometimes the returned least core subsidy
8282
# is negative but very close to 0
8383
# to avoid any problems with the subsequent quadratic program
8484
# we just set it to 0.0
85-
if least_core_value < 0:
85+
if subsidy < 0:
8686
warnings.warn(
87-
f"Least core value '{least_core_value}' is negative but close to zero. "
87+
f"Least core subsidy e={subsidy} is negative but close to zero. "
8888
"It will be set to 0.0",
8989
RuntimeWarning,
9090
)
91-
least_core_value = 0.0
92-
return x.value, least_core_value
91+
subsidy = 0.0
92+
return x.value, subsidy
9393

9494
if problem.status in cp.settings.INF_OR_UNB:
9595
warnings.warn(
@@ -100,7 +100,7 @@ def _solve_least_core_linear_program(
100100

101101

102102
def _solve_egalitarian_least_core_quadratic_program(
103-
least_core_value: float,
103+
subsidy: float,
104104
A_eq: NDArray[np.float_],
105105
b_eq: NDArray[np.float_],
106106
A_lb: NDArray[np.float_],
@@ -122,7 +122,7 @@ def _solve_egalitarian_least_core_quadratic_program(
122122
:math:`b_{ub}`, :math:`b_{eq}`, :math:`l`, and :math:`u` are vectors; and
123123
:math:`A_{ub}` and :math:`A_{eq}` are matrices.
124124
125-
:param least_core_subsidy: Minimal subsidy returned by :func:`_solve_least_core_linear_program`
125+
:param subsidy: Minimal subsidy returned by :func:`_solve_least_core_linear_program`
126126
:param A_eq: The equality constraint matrix. Each row of ``A_eq`` specifies the
127127
coefficients of a linear equality constraint on ``x``.
128128
:param b_eq: The equality constraint vector. Each element of ``A_eq @ x`` must equal
@@ -137,16 +137,16 @@ def _solve_egalitarian_least_core_quadratic_program(
137137
"""
138138
logger.debug(f"Solving quadratic program : {A_eq=}, {b_eq=}, {A_lb=}, {b_lb=}")
139139

140-
if least_core_value < 0:
141-
raise ValueError("Passed least core value should be positive.")
140+
if subsidy < 0:
141+
raise ValueError("The least core subsidy must be non-negative.")
142142

143143
n_variables = A_eq.shape[1]
144144

145145
x = cp.Variable(n_variables)
146146
objective = cp.Minimize(cp.norm2(x))
147147
constraints = [
148148
A_eq @ x == b_eq,
149-
A_lb @ x + least_core_value * np.ones(len(A_lb)) >= b_lb,
149+
A_lb @ x + subsidy * np.ones(len(A_lb)) >= b_lb,
150150
]
151151
problem = cp.Problem(objective, constraints)
152152

src/pydvl/value/least_core/montecarlo.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -165,29 +165,30 @@ def montecarlo_least_core(
165165
A_lb, unique_indices = np.unique(A_lb, return_index=True, axis=0)
166166
b_lb = b_lb[unique_indices]
167167

168-
_, least_core_value = _solve_least_core_linear_program(
168+
_, subsidy = _solve_least_core_linear_program(
169169
A_eq=A_eq, b_eq=b_eq, A_lb=A_lb, b_lb=b_lb, **options
170170
)
171171

172172
values: Optional[NDArray[np.float_]]
173173

174-
if least_core_value is None:
174+
if subsidy is None:
175175
logger.debug("No values were found")
176176
status = ValuationStatus.Failed
177177
values = np.empty(n)
178178
values[:] = np.nan
179-
least_core_value = np.nan
179+
subsidy = np.nan
180+
180181
return ValuationResult(
181182
algorithm="montecarlo_least_core",
182183
status=status,
183184
values=values,
185+
subsidy=subsidy,
184186
stderr=None,
185187
data_names=u.data.data_names,
186-
least_core_value=least_core_value,
187188
)
188189

189190
values = _solve_egalitarian_least_core_quadratic_program(
190-
least_core_value,
191+
subsidy,
191192
A_eq=A_eq,
192193
b_eq=b_eq,
193194
A_lb=A_lb,
@@ -200,15 +201,15 @@ def montecarlo_least_core(
200201
status = ValuationStatus.Failed
201202
values = np.empty(n)
202203
values[:] = np.nan
203-
least_core_value = np.nan
204+
subsidy = np.nan
204205
else:
205206
status = ValuationStatus.Converged
206207

207208
return ValuationResult(
208209
algorithm="montecarlo_least_core",
209210
status=status,
210211
values=values,
212+
subsidy=subsidy,
211213
stderr=None,
212214
data_names=u.data.data_names,
213-
least_core_value=least_core_value,
214215
)

src/pydvl/value/least_core/naive.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,29 +82,30 @@ def exact_least_core(
8282
b_lb = utility_values
8383
b_eq = utility_values[-1:]
8484

85-
_, least_core_value = _solve_least_core_linear_program(
85+
_, subsidy = _solve_least_core_linear_program(
8686
A_eq=A_eq, b_eq=b_eq, A_lb=A_lb, b_lb=b_lb, **options
8787
)
8888

8989
values: Optional[NDArray[np.float_]]
9090

91-
if least_core_value is None:
91+
if subsidy is None:
9292
logger.debug("No values were found")
9393
status = ValuationStatus.Failed
9494
values = np.empty(n)
9595
values[:] = np.nan
96-
least_core_value = np.nan
96+
subsidy = np.nan
97+
9798
return ValuationResult(
9899
algorithm="exact_least_core",
99100
status=status,
100101
values=values,
102+
subsidy=subsidy,
101103
stderr=None,
102104
data_names=u.data.data_names,
103-
least_core_value=least_core_value,
104105
)
105106

106107
values = _solve_egalitarian_least_core_quadratic_program(
107-
least_core_value,
108+
subsidy,
108109
A_eq=A_eq,
109110
b_eq=b_eq,
110111
A_lb=A_lb,
@@ -117,15 +118,15 @@ def exact_least_core(
117118
status = ValuationStatus.Failed
118119
values = np.empty(n)
119120
values[:] = np.nan
120-
least_core_value = np.nan
121+
subsidy = np.nan
121122
else:
122123
status = ValuationStatus.Converged
123124

124125
return ValuationResult(
125126
algorithm="exact_least_core",
126127
status=status,
127128
values=values,
129+
subsidy=subsidy,
128130
stderr=None,
129131
data_names=u.data.data_names,
130-
least_core_value=least_core_value,
131132
)

tests/value/least_core/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ def miner_utility(request) -> Tuple[Utility, ValuationResult]:
5656
u = MinerUtility(n_miners=n_miners)
5757
if n_miners % 2 == 0:
5858
exact_values = np.array([0.5] * n_miners)
59-
least_core_value = 0.0
59+
subsidy = 0.0
6060
else:
6161
exact_values = np.array([(n_miners - 1) / (2 * n_miners)] * n_miners)
62-
least_core_value = (n_miners - 1) / (2 * n_miners)
62+
subsidy = (n_miners - 1) / (2 * n_miners)
6363
result = ValuationResult(
6464
algorithm="exact",
6565
values=exact_values,
66-
least_core_value=least_core_value,
66+
subsidy=subsidy,
6767
stderr=np.zeros_like(exact_values),
6868
data_names=np.arange(len(exact_values)),
6969
status=ValuationStatus.Converged,

tests/value/least_core/test_montecarlo.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ def test_montecarlo_least_core(miner_utility, rtol, n_iterations):
2222
values = montecarlo_least_core(
2323
u, n_iterations=n_iterations, progress=False, n_jobs=4
2424
)
25-
check_values(
26-
values, exact_values, rtol=rtol, extra_values_names=["least_core_value"]
27-
)
25+
check_values(values, exact_values, rtol=rtol, extra_values_names=["subsidy"])
2826

2927

3028
@pytest.mark.parametrize(

tests/value/least_core/test_naive.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@ def test_naive_least_core(miner_utility):
1313
u, exact_values = miner_utility
1414
values = exact_least_core(u, progress=False)
1515
check_total_value(u, values)
16-
check_values(values, exact_values, extra_values_names=["least_core_value"])
16+
check_values(values, exact_values, extra_values_names=["subsidy"])

0 commit comments

Comments
 (0)