webinterface.pages.base_pages.utils.parameter_filters module#

Parameter-based filtering for benchmark datapoints.

Provides both the pure filtering logic (apply_parameter_filters) and the Streamlit UI rendering (generate_parameter_filters).

webinterface.pages.base_pages.utils.parameter_filters.apply_parameter_filters(data: DataFrame, filter_selections: Dict[str, Any]) DataFrame[source]#

Apply parameter-based filters to a DataFrame of benchmark datapoints.

Parameters:
  • data (pd.DataFrame) – The benchmark datapoints to filter.

  • filter_selections (dict) – Mapping of column name to the selected filter value(s).

Returns:

The subset of data matching all active filters.

Return type:

pd.DataFrame

webinterface.pages.base_pages.utils.parameter_filters.generate_parameter_filters(data: DataFrame, key_prefix: str = 'param_filter', pinned_indices: Index | None = None) DataFrame[source]#

Render parameter-based filter widgets and return the filtered DataFrame.

Parameters:
  • data (pd.DataFrame) – Benchmark datapoints (already filtered by the k-slider).

  • key_prefix (str, optional) – Prefix for Streamlit session-state keys to avoid collisions.

  • pinned_indices (pd.Index, optional) – Row indices that must always be included in the result regardless of filter settings (e.g. a newly submitted datapoint in tab 4).

Returns:

The subset of data matching all active parameter filters, plus any pinned_indices rows.

Return type:

pd.DataFrame

webinterface.pages.base_pages.utils.parameter_filters.keep_latest_version_per_tool(datapoints: DataFrame, software_col: str = 'software_name', version_col: str = 'software_version', protect_col: str = 'old_new', protect_value: str = 'new') DataFrame[source]#

Filter datapoints to the newest version of each software tool.

Rows whose protect_col equals protect_value (e.g. a just-uploaded datapoint) are always kept regardless of their version.

webinterface.pages.base_pages.utils.parameter_filters.parse_version_key(version: Any) tuple[source]#

Build a sortable key from a free-text software version string.

Numeric chunks are compared as integers so that "1.10" sorts after "1.9". Non-numeric chunks are sorted lexicographically.