Skip to content

Commit 344f632

Browse files
authored
Merge pull request #1437 from mrvisscher/fix-paramter-mc
Fixed parameter manager for Monte Carlo runs
2 parents 3da042e + e98bf97 commit 344f632

2 files changed

Lines changed: 9 additions & 11 deletions

File tree

activity_browser/bwutils/manager.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -300,13 +300,8 @@ class MonteCarloParameterManager(ParameterManager, Iterator):
300300

301301
def __init__(self, seed: Optional[int] = None):
302302
super().__init__()
303-
parameters = itertools.chain(
304-
ProjectParameter.select(),
305-
DatabaseParameter.select(),
306-
ActivityParameter.select(),
307-
)
308303
self.uncertainties = UncertaintyBase.from_dicts(
309-
*[getattr(p, "data", {}) for p in parameters]
304+
*[p.data for p in self.parameters]
310305
)
311306
self.mc_generator = MCRandomNumberGenerator(self.uncertainties, seed=seed)
312307

@@ -340,7 +335,8 @@ def next(self) -> np.ndarray:
340335
recalculation.
341336
"""
342337
values = self.mc_generator.next()
343-
self.parameters.update(values)
338+
keys = [(p.group, p.name) for p in self.parameters]
339+
self.parameters.update({key: value for key, value in zip(keys, values)})
344340
data = self.calculate()
345341
return self.indices.mock_params(data)
346342

activity_browser/bwutils/utils.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from typing import Iterable, List, NamedTuple, Optional
44

55
import numpy as np
6+
from stats_arrays import UncertaintyBase
67

78
from activity_browser.mod import bw2data as bd
89
from activity_browser.mod.bw2data.backends import (ActivityDataset,
@@ -26,6 +27,7 @@ class Parameter(NamedTuple):
2627
name: str
2728
group: str
2829
amount: float = 1.0
30+
data: dict = {}
2931
param_type: Optional[str] = None
3032

3133
def as_gsa_tuple(self) -> tuple:
@@ -131,15 +133,15 @@ def from_bw_parameters(cls) -> "Parameters":
131133
return cls(
132134
chain(
133135
(
134-
Parameter(p.name, "project", p.amount, "project")
136+
Parameter(p.name, "project", p.amount, p.data, "project")
135137
for p in ProjectParameter.select()
136138
),
137139
(
138-
Parameter(p.name, p.database, p.amount, "database")
140+
Parameter(p.name, p.database, p.amount, p.data, "database")
139141
for p in DatabaseParameter.select()
140142
),
141143
(
142-
Parameter(p.name, p.group, p.amount, "activity")
144+
Parameter(p.name, p.group, p.amount, p.data, "activity")
143145
for p in ActivityParameter.select()
144146
),
145147
)
@@ -159,7 +161,7 @@ def static(data: dict, needed: set) -> dict:
159161
"""
160162
return {k: data[k] for k in data.keys() & needed}
161163

162-
def update(self, new_values: dict[str, float]) -> None:
164+
def update(self, new_values: dict[tuple[str, str], float]) -> None:
163165
"""Replace parameters in the list if their linked value is not
164166
NaN.
165167
"""

0 commit comments

Comments
 (0)