@@ -38,13 +38,14 @@ def __hash__(self):
3838 return hash (self .uid )
3939
4040 @staticmethod
41- def parameters_to_df (parameters : Iterable [SensitivityParameter ]) -> pd .DataFrame :
41+ def parameters_to_df (parameters : Iterable [SensitivityParameter ], sort : bool = True ) -> pd .DataFrame :
4242 """Create parameter table from parameters."""
4343 items = []
4444 for item in parameters :
4545 items .append (item .model_dump ())
46- console .print (items )
4746 df = pd .DataFrame (items )
47+ if sort :
48+ df .sort_values (by = ["type" , "uid" ], ascending = True , inplace = True , ignore_index = True )
4849 return df
4950
5051 @staticmethod
@@ -81,44 +82,34 @@ def parameters_for_sensitivity_analysis(
8182 r : roadrunner .RoadRunner = roadrunner .RoadRunner (str (sbml_path ))
8283 doc : libsbml .SBMLDocument = libsbml .readSBMLFromFile (str (sbml_path ))
8384 sbml_model : libsbml .Model = doc .getModel ()
84-
85+ parameters = []
8586
8687 def parameter_from_sbase (sbase : libsbml .SBase ) -> SensitivityParameter :
8788 """Create parameter from SBase for sensitivity analysis."""
8889 uid = sbase .getId ()
8990
9091 name = sbase .getName () if sbase .isSetName () else uid
9192 udef : libsbml .UnitDefinition = sbase .getDerivedUnitDefinition ()
92- unit : str = libsbml .UnitDefinition .printUnits (ud = udef , compact = True )
93- unit_str : str = udef_to_string (udef , model = None , format = "str" )
93+ unit : str = udef_to_string (udef , model = None , format = "str" )
9494
9595 # handle the species concentration
96- typecode = sbase .getTypeCode ()
97- if typecode == libsbml .SpeciesType :
98- s : libsbml .Species = sbase
99- if s .getHasOnlySubstanceUnits ():
100- value = r .getValue (f"[{ uid } ]" )
101- else :
102- value = r .getValue (uid )
103- else :
104- value = r .getValue (uid )
96+ ruid = uid
97+ if (sbase .getTypeCode () == libsbml .SpeciesType ) and (sbase .getHasOnlySubstanceUnits ()):
98+ ruid = f"[{ uid } ]"
99+
100+ value = r .getValue (ruid )
105101
106- # FIXME: get bound information from SBML model or table
107102 parameter = SensitivityParameter (
108103 uid = uid ,
109104 name = name ,
110105 value = value ,
111- unit = unit_str ,
106+ unit = unit ,
112107 lower_bound = np .nan ,
113108 upper_bound = np .nan ,
114109 )
115110
116111 return parameter
117112
118-
119- parameters = []
120- excluded : list [SensitivityParameter ] = []
121-
122113 # constant parameters
123114 p : libsbml .Parameter
124115 for p in sbml_model .getListOfParameters ():
0 commit comments