Skip to content

Commit 9cc0e8c

Browse files
committed
Implement assign_defaults
1 parent ffd8c04 commit 9cc0e8c

File tree

6 files changed

+19
-16
lines changed

6 files changed

+19
-16
lines changed

adaptive/learner/average_learner.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from adaptive.learner.base_learner import BaseLearner
1010
from adaptive.notebook_integration import ensure_holoviews
1111
from adaptive.types import Float, Real
12-
from adaptive.utils import cache_latest, default_parameters
12+
from adaptive.utils import assign_defaults, cache_latest
1313

1414
try:
1515
import pandas
@@ -89,8 +89,7 @@ def to_dataframe(
8989
raise ImportError("pandas is not installed.")
9090
df = pandas.DataFrame(sorted(self.data.items()), columns=[seed_name, y_name])
9191
if with_default_function_args:
92-
defaults = default_parameters(self.function, function_prefix)
93-
df = df.assign(**defaults)
92+
assign_defaults(self.function, df, function_prefix)
9493
return df
9594

9695
def ask(self, n: int, tell_pending: bool = True) -> tuple[list[int], list[Float]]:

adaptive/learner/average_learner1D.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from adaptive.learner.learner1D import Learner1D, _get_intervals
1616
from adaptive.notebook_integration import ensure_holoviews
1717
from adaptive.types import Real
18-
from adaptive.utils import default_parameters
18+
from adaptive.utils import assign_defaults
1919

2020
try:
2121
import pandas
@@ -171,8 +171,7 @@ def to_dataframe(
171171
columns = [seed_name, x_name, y_name]
172172
df = pandas.DataFrame(data, columns=columns)
173173
if with_default_function_args:
174-
defaults = default_parameters(self.function, function_prefix)
175-
df = df.assign(**defaults)
174+
assign_defaults(self.function, df, function_prefix)
176175
return df
177176

178177
def ask(self, n: int, tell_pending: bool = True) -> tuple[Points, list[float]]:

adaptive/learner/integrator_learner.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from adaptive.learner import integrator_coeffs as coeff
1414
from adaptive.learner.base_learner import BaseLearner
1515
from adaptive.notebook_integration import ensure_holoviews
16-
from adaptive.utils import cache_latest, default_parameters, restore
16+
from adaptive.utils import assign_defaults, cache_latest, restore
1717

1818
try:
1919
import pandas
@@ -569,8 +569,7 @@ def to_dataframe(
569569
raise ImportError("pandas is not installed.")
570570
df = pandas.DataFrame(sorted(self.data.items()), columns=[x_name, y_name])
571571
if with_default_function_args:
572-
defaults = default_parameters(self.function, function_prefix)
573-
df = df.assign(**defaults)
572+
assign_defaults(self.function, df, function_prefix)
574573
return df
575574

576575
def _get_data(self):

adaptive/learner/learner1D.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from adaptive.learner.triangulation import simplex_volume_in_embedding
1717
from adaptive.notebook_integration import ensure_holoviews
1818
from adaptive.types import Float, Int, Real
19-
from adaptive.utils import cache_latest, default_parameters
19+
from adaptive.utils import assign_defaults, cache_latest
2020

2121
try:
2222
import pandas
@@ -338,10 +338,11 @@ def to_dataframe(
338338
) -> pandas.DataFrame:
339339
if not with_pandas:
340340
raise ImportError("pandas is not installed.")
341-
df = pandas.DataFrame(sorted(self.data.items()), columns=[x_name, y_name])
341+
xs, ys = zip(*sorted(self.data.items())) if self.data else ([], [])
342+
df = pandas.DataFrame(xs, columns=["x"])
343+
df[y_name] = ys
342344
if with_default_function_args:
343-
defaults = default_parameters(self.function, function_prefix)
344-
df = df.assign(**defaults)
345+
assign_defaults(self.function, df, function_prefix)
345346
return df
346347

347348
@property

adaptive/learner/learner2D.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from adaptive.learner.base_learner import BaseLearner
1212
from adaptive.learner.triangulation import simplex_volume_in_embedding
1313
from adaptive.notebook_integration import ensure_holoviews
14-
from adaptive.utils import cache_latest, default_parameters
14+
from adaptive.utils import assign_defaults, cache_latest
1515

1616
try:
1717
import pandas
@@ -406,8 +406,7 @@ def to_dataframe(
406406
data = sorted((x, y, z) for (x, y), z in self.data.items())
407407
df = pandas.DataFrame(data, columns=[x_name, y_name, z_name])
408408
if with_default_function_args:
409-
defaults = default_parameters(self.function, function_prefix)
410-
df = df.assign(**defaults)
409+
assign_defaults(self.function, df, function_prefix)
411410
return df
412411

413412
def _scale(self, points):

adaptive/utils.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,9 @@ def default_parameters(function, function_prefix="", start_index=1):
109109
if v.default != inspect._empty and i >= start_index
110110
}
111111
return defaults
112+
113+
114+
def assign_defaults(function, df, function_prefix="", start_index=1):
115+
defaults = default_parameters(function, function_prefix, start_index)
116+
for k, v in defaults.items():
117+
df[k] = len(df) * [v]

0 commit comments

Comments
 (0)