@@ -46,19 +46,22 @@ class Problem:
4646 sbml_reader: Stored to keep object alive (deprecated).
4747 sbml_document: Stored to keep object alive (deprecated).
4848 sbml_model: PEtab SBML model (deprecated)
49+ extensions_config: Information on the extensions used
4950 """
5051
51- def __init__ (self ,
52- sbml_model : libsbml .Model = None ,
53- sbml_reader : libsbml .SBMLReader = None ,
54- sbml_document : libsbml .SBMLDocument = None ,
55- model : Model = None ,
56- condition_df : pd .DataFrame = None ,
57- measurement_df : pd .DataFrame = None ,
58- parameter_df : pd .DataFrame = None ,
59- visualization_df : pd .DataFrame = None ,
60- observable_df : pd .DataFrame = None ):
61-
52+ def __init__ (
53+ self ,
54+ sbml_model : libsbml .Model = None ,
55+ sbml_reader : libsbml .SBMLReader = None ,
56+ sbml_document : libsbml .SBMLDocument = None ,
57+ model : Model = None ,
58+ condition_df : pd .DataFrame = None ,
59+ measurement_df : pd .DataFrame = None ,
60+ parameter_df : pd .DataFrame = None ,
61+ visualization_df : pd .DataFrame = None ,
62+ observable_df : pd .DataFrame = None ,
63+ extensions_config : Dict = None ,
64+ ):
6265 self .condition_df : Optional [pd .DataFrame ] = condition_df
6366 self .measurement_df : Optional [pd .DataFrame ] = measurement_df
6467 self .parameter_df : Optional [pd .DataFrame ] = parameter_df
@@ -80,6 +83,7 @@ def __init__(self,
8083 sbml_document = sbml_document )
8184
8285 self .model : Optional [Model ] = model
86+ self .extensions_config = extensions_config or {}
8387
8488 def __getattr__ (self , name ):
8589 # For backward-compatibility, allow access to SBML model related
@@ -113,6 +117,7 @@ def from_files(
113117 Iterable [Union [str , Path ]]] = None ,
114118 observable_files : Union [str , Path ,
115119 Iterable [Union [str , Path ]]] = None ,
120+ extensions_config : Dict = None ,
116121 ) -> 'Problem' :
117122 """
118123 Factory method to load model and tables from files.
@@ -124,6 +129,7 @@ def from_files(
124129 parameter_file: PEtab parameter table
125130 visualization_files: PEtab visualization tables
126131 observable_files: PEtab observables tables
132+ extensions_config: Information on the extensions used
127133 """
128134 warn ("petab.Problem.from_files is deprecated and will be removed in a "
129135 "future version. Use `petab.Problem.from_yaml instead." ,
@@ -154,12 +160,15 @@ def from_files(
154160 observable_files , observables .get_observable_df ) \
155161 if observable_files else None
156162
157- return Problem (model = model ,
158- condition_df = condition_df ,
159- measurement_df = measurement_df ,
160- parameter_df = parameter_df ,
161- observable_df = observable_df ,
162- visualization_df = visualization_df )
163+ return Problem (
164+ model = model ,
165+ condition_df = condition_df ,
166+ measurement_df = measurement_df ,
167+ parameter_df = parameter_df ,
168+ observable_df = observable_df ,
169+ visualization_df = visualization_df ,
170+ extensions_config = extensions_config ,
171+ )
163172
164173 @staticmethod
165174 def from_yaml (yaml_config : Union [Dict , Path , str ]) -> 'Problem' :
@@ -258,12 +267,15 @@ def from_yaml(yaml_config: Union[Dict, Path, str]) -> 'Problem':
258267 observable_files , observables .get_observable_df ) \
259268 if observable_files else None
260269
261- return Problem (condition_df = condition_df ,
262- measurement_df = measurement_df ,
263- parameter_df = parameter_df ,
264- observable_df = observable_df ,
265- model = model ,
266- visualization_df = visualization_df )
270+ return Problem (
271+ condition_df = condition_df ,
272+ measurement_df = measurement_df ,
273+ parameter_df = parameter_df ,
274+ observable_df = observable_df ,
275+ model = model ,
276+ visualization_df = visualization_df ,
277+ extensions_config = yaml_config .get (EXTENSIONS , {})
278+ )
267279
268280 @staticmethod
269281 def from_combine (filename : Union [Path , str ]) -> 'Problem' :
@@ -281,10 +293,10 @@ def from_combine(filename: Union[Path, str]) -> 'Problem':
281293 # other SWIG interfaces
282294 try :
283295 import libcombine
284- except ImportError :
296+ except ImportError as e :
285297 raise ImportError (
286298 "To use PEtab's COMBINE functionality, libcombine "
287- "(python-libcombine) must be installed." )
299+ "(python-libcombine) must be installed." ) from e
288300
289301 archive = libcombine .CombineArchive ()
290302 if archive .initializeFromArchive (str (filename )) is None :
0 commit comments