validation_utils

Validation utility functions for input processing. These functions handle specific validation tasks following single responsibility principle.

Module Contents

validation_utils.safe_convert_to_mol(value: Any) Any | None

Safely convert a value to molecule format with robust NaN/empty string handling.

Parameters:

value – Input value to convert

Returns:

Converted molecule object or None if invalid/empty

validation_utils.split_single_substrate_components(value: Any) List[str]

Split single-column substrate values into individually validatable components.

Rules: - InChI values are treated as a single token. - SMILES values are split by ‘.’ to support multi-component entries

like “A.B” in the “Substrate” column.

validation_utils.validate_csv_structure(dataframe: pandas.DataFrame) str | None

Validate that CSV has required columns for substrate/protein validation.

Parameters:

dataframe – Pandas DataFrame to validate

Returns:

Error message if validation fails, None if valid

validation_utils.validate_single_substrate_schema(dataframe: pandas.DataFrame) List[Dict[str, Any]]

Validate substrates using single-substrate schema (Substrate column).

Parameters:

dataframe – DataFrame containing Substrate column

Returns:

List of validation errors

validation_utils.validate_substrate_list_schema(dataframe: pandas.DataFrame) List[Dict[str, Any]]

Validate ordered substrates and optional products using list schema.

Parameters:

dataframe – DataFrame containing Substrates and optional Products columns

Returns:

List of validation errors

validation_utils.validate_products_column(dataframe: pandas.DataFrame) List[Dict[str, Any]]

Validate every supplied product token for mandatory submission preflight.

validation_utils.validate_substrates(dataframe: pandas.DataFrame) List[Dict[str, Any]]

Validate substrate data based on available columns in the dataframe.

Parameters:

dataframe – DataFrame to validate substrates from

Returns:

List of substrate validation errors

validation_utils.validate_protein_sequence_characters(sequence: str) List[str]

Validate that protein sequence contains only valid amino acid characters.

Parameters:

sequence – Protein sequence string

Returns:

List of invalid characters found in sequence

validation_utils.calculate_sequence_length_violations(sequence_length: int) Dict[str, int]

Calculate which models would reject a sequence based on length limits.

Parameters:

sequence_length – Length of the protein sequence

Returns:

Dictionary mapping model names to violation count (0 or 1)

validation_utils.validate_protein_sequences(dataframe: pandas.DataFrame) Tuple[List[Dict[str, Any]], Dict[str, int]]

Validate protein sequences for character validity and length constraints.

Parameters:

dataframe – DataFrame containing Protein Sequence column

Returns:

Tuple of (invalid_proteins_list, aggregated_length_violations)

validation_utils.clean_data_for_json(data: Any) Any

Recursively clean data to make it JSON-serializable. Converts pandas NaN values to string “NaN”.

Parameters:

data – Data to clean (can be nested lists/dicts)

Returns:

JSON-serializable version of the data

validation_utils.parse_csv_file(file) pandas.DataFrame

Parse and clean a CSV file from request.

Parameters:

file – File object from Django request

Returns:

Cleaned pandas DataFrame

Raises:

Exception – If CSV parsing fails

validation_utils.validate_file_format(file, allowed_extensions: List[str] | None = None) str | None

Validate file format based on allowed extensions.

Parameters:
  • file – File object from request

  • allowed_extensions – List of allowed extensions (defaults to [‘.csv’])

Returns:

Error message if invalid, None if valid

validation_utils.validate_required_columns(dataframe: pandas.DataFrame, required_columns: List[str]) str | None

Validate that DataFrame contains all required columns.

Parameters:
  • dataframe – DataFrame to validate

  • required_columns – List of required column names

Returns:

Error message if validation fails, None if valid

validation_utils.validate_column_emptiness(dataframe: pandas.DataFrame, column_name: str, max_empty_percent: float = 0.1) str | None

Validate that a column doesn’t have too many empty values.

Parameters:
  • dataframe – DataFrame to validate

  • column_name – Name of the column to check

  • max_empty_percent – Maximum allowed percentage of empty rows (default 0.1 = 10%)

Returns:

Error message if validation fails, None if valid