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