Skip to content

Commit b325b44

Browse files
work on parmaters
1 parent 06f18f7 commit b325b44

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

src/sbmlsim/sensitivity/parameters.py

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)