rxnfit.expdata_reader module

Load experimental time-course data from DataFrames.

Experimental data is passed as a list of DataFrames and returned as a list of (t_list, C_exp_list) tuples. Functions handle missing values and align data to ODE function names order. Time column (0th column) unit and consistency across DataFrames are also provided.

rxnfit.expdata_reader.align_expdata_to_function_names(t_list, C_exp_list, columns, function_names)

Align time_course output to function_names order.

time_course returns data in df.columns[1:] order. This function reorders to match ODE function_names.

Parameters:
  • t_list (list) – List of time arrays from time_course (DataFrame column order).

  • C_exp_list (list) – List of concentration arrays from time_course.

  • columns (list[str]) – DataFrame column names (species only, no time).

  • function_names (list[str]) – Chemical species names in ODE order.

Returns:

(t_aligned, C_aligned) in function_names order.

Return type:

tuple

Raises:

ValueError – If a species in function_names is not in columns.

rxnfit.expdata_reader.expdata_read(df_list)

Read experimental data from a list of DataFrames.

Each DataFrame must have the same columns (time + species). Always returns a list, even for a single DataFrame.

Parameters:

df_list (list[pandas.DataFrame]) – List of DataFrames containing experimental data. All DataFrames must have same column names.

Returns:

List of (t_list, C_exp_list) tuples, one per DataFrame.

Each t_list is a list of time arrays (one per species column). Each C_exp_list is a list of concentration arrays (one per species column). Missing values are removed per species.

Return type:

list[tuple]

Raises:

ValueError – If df_list is empty or if DataFrames have different column names.

rxnfit.expdata_reader.get_t0_from_expdata(df_list)

Extract initial time from first row of each DataFrame.

The first column is assumed to be time. Returns one float per DataFrame.

Parameters:

df_list (list[pandas.DataFrame]) – List of DataFrames with time in the first column.

Returns:

Initial time (first row, first column) for each

DataFrame. len(return) == len(df_list).

Return type:

list[float]

rxnfit.expdata_reader.get_time_unit_from_expdata(df_list)

Get time axis unit from the 0th column name and check consistency.

The unit is derived from the first column name: if it contains ‘_’, the part after the last ‘_’ is used (e.g. “t_s” -> “s”); otherwise the full column name is used. When multiple DataFrames are given, their 0th column names must match; otherwise a warning is emitted and the first DataFrame’s column is used.

Parameters:

df_list (list[pandas.DataFrame]) – List of DataFrames with time in the first column. Can be a single DataFrame (wrapped in a list).

Returns:

The time unit string (e.g. “s”, “min”, “hr”), or None

if df_list is empty.

Return type:

str or None

Raises:

ValueError – If df_list is empty.

rxnfit.expdata_reader.get_y0_from_expdata(df_list, function_names)

Extract initial concentrations from first row of each DataFrame.

Returns concentrations in function_names order. For multiple DataFrames, returns a list of y0 vectors, one per DataFrame. The time of the first row can be obtained with get_t0_from_expdata; it is not required to be 0.

Parameters:
  • df_list (list[pandas.DataFrame]) – List of DataFrames with time column and chemical species columns.

  • function_names (list[str]) – List of chemical species names in ODE variable order.

Returns:

List of initial concentration vectors, one per

DataFrame. Each y0 is in function_names order. Missing values are filled with 0. len(return) == len(df_list).

Return type:

list[list[float]]

Raises:

ValueError – If df_list is empty or a species name is not found in the DataFrame columns.

rxnfit.expdata_reader.time_course(df)

Extract time and concentration arrays from a DataFrame.

The first column must contain time values. Missing values are removed per series (chemical species).

Parameters:

df (pandas.DataFrame) – DataFrame with time in the first column and chemical species concentrations in subsequent columns.

Returns:

  • t_list: List of time arrays, one per species. Each array contains only the time points where that species has valid data.

  • C_exp_list: List of concentration arrays, one per species. Each array contains only the valid concentration values.

Return type:

tuple