|
38 | 38 | __all__ = [ |
39 | 39 | "run_simulation_to_cached_functions", |
40 | 40 | "simulate_petab_to_cached_functions", |
| 41 | + "simulate_petab_v2_to_cached_functions", |
41 | 42 | ] |
42 | 43 |
|
43 | 44 | LOG_E_10 = np.log(10) |
44 | 45 |
|
45 | 46 |
|
46 | | -def transform_gradient_lin_to_lin(gradient_value, _): |
| 47 | +def _transform_gradient_lin_to_lin(gradient_value, _): |
47 | 48 | return gradient_value |
48 | 49 |
|
49 | 50 |
|
50 | | -def transform_gradient_lin_to_log(gradient_value, parameter_value): |
| 51 | +def _transform_gradient_lin_to_log(gradient_value, parameter_value): |
51 | 52 | return gradient_value * parameter_value |
52 | 53 |
|
53 | 54 |
|
54 | | -def transform_gradient_lin_to_log10(gradient_value, parameter_value): |
| 55 | +def _transform_gradient_lin_to_log10(gradient_value, parameter_value): |
55 | 56 | return gradient_value * (parameter_value * LOG_E_10) |
56 | 57 |
|
57 | 58 |
|
58 | 59 | transforms = { |
59 | | - LIN: transform_gradient_lin_to_lin, |
60 | | - LOG: transform_gradient_lin_to_log, |
61 | | - LOG10: transform_gradient_lin_to_log10, |
| 60 | + LIN: _transform_gradient_lin_to_lin, |
| 61 | + LOG: _transform_gradient_lin_to_log, |
| 62 | + LOG10: _transform_gradient_lin_to_log10, |
62 | 63 | } |
63 | 64 |
|
64 | 65 |
|
@@ -93,20 +94,13 @@ def transform_gradient_lin_to_log10(gradient_value, parameter_value): |
93 | 94 | } |
94 | 95 |
|
95 | 96 |
|
96 | | -def rdata_array_transpose(array: np.ndarray, variable: str) -> tuple[int]: |
| 97 | +def _rdata_array_transpose(array: np.ndarray, variable: str) -> tuple[int]: |
97 | 98 | if array.size == 0: |
98 | 99 | return array |
99 | 100 | original_parameter_dimension = derivative_parameter_dimension[variable] |
100 | 101 | return np.moveaxis(array, original_parameter_dimension, -1) |
101 | 102 |
|
102 | 103 |
|
103 | | -def fiddy_array_transpose(array: np.ndarray, variable: str) -> tuple[int]: |
104 | | - if array.size == 0: |
105 | | - return array |
106 | | - original_parameter_dimension = derivative_parameter_dimension[variable] |
107 | | - return np.moveaxis(array, -1, original_parameter_dimension) |
108 | | - |
109 | | - |
110 | 104 | default_derivatives = { |
111 | 105 | k: v |
112 | 106 | for k, v in all_rdata_derivatives.items() |
@@ -181,7 +175,7 @@ def function(point: Type.POINT): |
181 | 175 | def derivative(point: Type.POINT, return_dict: bool = False): |
182 | 176 | rdata = run_amici_simulation(point=point, order=SensitivityOrder.first) |
183 | 177 | outputs = { |
184 | | - variable: rdata_array_transpose( |
| 178 | + variable: _rdata_array_transpose( |
185 | 179 | array=fiddy_array(getattr(rdata, derivative_variable)), |
186 | 180 | variable=derivative_variable, |
187 | 181 | ) |
@@ -244,48 +238,6 @@ def derivative(point: Type.POINT, return_dict: bool = False): |
244 | 238 | TYPE_STRUCTURE = tuple[int, int, tuple[int, ...]] |
245 | 239 |
|
246 | 240 |
|
247 | | -def flatten(arrays: dict[str, Type.ARRAY]) -> Type.ARRAY: |
248 | | - flattened_value = np.concatenate([array.flat for array in arrays.values()]) |
249 | | - return flattened_value |
250 | | - |
251 | | - |
252 | | -def reshape( |
253 | | - array: Type.ARRAY, |
254 | | - structure: TYPE_STRUCTURE, |
255 | | - sensitivities: bool = False, |
256 | | -) -> dict[str, Type.ARRAY]: |
257 | | - reshaped = {} |
258 | | - for variable, (start, stop, shape) in structure.items(): |
259 | | - # array is currently "flattened" w.r.t. fiddy dimensions |
260 | | - # hence, if sensis, reshape w.r.t. fiddy dimensions |
261 | | - if sensitivities and ( |
262 | | - dimension0 := derivative_parameter_dimension.get( |
263 | | - "s" + variable, False |
264 | | - ) |
265 | | - ): |
266 | | - shape = [ |
267 | | - size |
268 | | - for dimension, size in enumerate(shape) |
269 | | - if dimension != dimension0 |
270 | | - ] + [shape[dimension0]] |
271 | | - |
272 | | - array = array[start:stop] |
273 | | - if array.size != 0: |
274 | | - array = array.reshape(shape) |
275 | | - |
276 | | - # now reshape to AMICI dimensions |
277 | | - if sensitivities and ( |
278 | | - derivative_parameter_dimension.get(f"s{variable}", False) |
279 | | - ): |
280 | | - array = fiddy_array_transpose( |
281 | | - array=array, |
282 | | - variable=f"s{variable}", |
283 | | - ) |
284 | | - reshaped[variable] = array |
285 | | - |
286 | | - return reshaped |
287 | | - |
288 | | - |
289 | 241 | def simulate_petab_to_cached_functions( |
290 | 242 | petab_problem: petab.Problem, |
291 | 243 | amici_model: Model, |
|
0 commit comments