rxnfit.expdata_reader module — rxnfit 20260314 documentation

# 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