parq_blockmodel.schema.service.SchemaService#

class parq_blockmodel.schema.service.SchemaService(geometry, schema=None, engine_initializer=None, intrinsic_volume_column='volume')[source]#

Manages schema, geometry, and df-eval operations for a block model.

This service provides stateful operations that depend on both a schema and geometry context. It handles: - Intrinsic operations (e.g., volume calculation) - Available df-eval operations (schema + intrinsic) - Calculated column classification - Application of df-eval operations and validation

Parameters:
  • geometry (RegularGeometry) – The block model geometry.

  • schema (DataFrameSchema or None) – Optional pandera schema.

  • engine_initializer (Callable, optional) – Optional callable to customize the df-eval Engine. Signature: Callable[[Engine], Engine].

  • intrinsic_volume_column (str, default "volume") – Name of the intrinsic volume column.

__init__(geometry, schema=None, engine_initializer=None, intrinsic_volume_column='volume')[source]#

Initialize the schema service.

Parameters:
  • geometry (RegularGeometry) – The block model geometry.

  • schema (DataFrameSchema, optional) – Pandera schema for validation and calculated columns.

  • engine_initializer (Callable, optional) – Optional engine configuration function.

  • intrinsic_volume_column (str, default "volume") – Name for the intrinsic volume column.

Methods

__init__(geometry[, schema, ...])

Initialize the schema service.

apply_df_eval_operations(dataframe[, operations])

Apply df-eval operations including alias, decimals, and expressions.

apply_intrinsic_operations(dataframe, operations)

Apply intrinsic operations to a DataFrame.

available_df_eval_operations()

Get all available df-eval operations (schema + intrinsic).

calculated_attribute_flags(calculated_columns)

Classify calculated columns as attributes or positional.

get_schema_column_names()

Extract schema column names in definition order.

intrinsic_df_eval_operations()

Get intrinsic df-eval operations (e.g., volume calculation).

report_schema_metadata(selected_columns)

Extract metadata descriptions for reporting.

schema_column_attribute_flags()

Get attribute classification flags from schema metadata.

validate_chunk(dataframe)

Validate and coerce a DataFrame chunk against the schema.

Attributes

INTRINSIC_VOLUME_COLUMN

POSITION_COLUMNS

apply_df_eval_operations(dataframe, operations=None)[source]#

Apply df-eval operations including alias, decimals, and expressions.

Pipeline order: 1. Apply alias transforms (rename columns) 2. Apply decimals transforms (round output) 3. Apply df-eval operations (expr/lookup/function)

Parameters:
  • dataframe (pd.DataFrame) – Input DataFrame to transform.

  • operations (dict[str, dict[str, Any]], optional) – Pre-extracted operations. If None, extracted from schema.

Returns:

Transformed DataFrame with all operations applied.

Return type:

pd.DataFrame

Raises:

ImportError – If df-eval or pandera is not installed.

apply_intrinsic_operations(dataframe, operations)[source]#

Apply intrinsic operations to a DataFrame.

Parameters:
  • dataframe (pd.DataFrame) – Input DataFrame.

  • operations (dict[str, dict[str, Any]]) – Operations to apply.

Returns:

DataFrame with operations applied.

Return type:

pd.DataFrame

available_df_eval_operations()[source]#

Get all available df-eval operations (schema + intrinsic).

Returns:

Combined operations from schema and intrinsic sources.

Return type:

dict[str, dict[str, Any]]

calculated_attribute_flags(calculated_columns)[source]#

Classify calculated columns as attributes or positional.

Parameters:

calculated_columns (list[str]) – List of available calculated column names.

Returns:

Mapping of column names to is_attribute boolean.

Return type:

dict[str, bool]

get_schema_column_names()[source]#

Extract schema column names in definition order.

Returns:

Column names from schema, or empty list if no schema.

Return type:

list[str]

intrinsic_df_eval_operations()[source]#

Get intrinsic df-eval operations (e.g., volume calculation).

Returns:

Operations not from schema but built into the model (e.g., volume).

Return type:

dict[str, dict[str, Any]]

report_schema_metadata(selected_columns)[source]#

Extract metadata descriptions for reporting.

Parameters:

selected_columns (list[str]) – Column names to extract descriptions for.

Returns:

(column_descriptions, dataset_metadata) tuples or (None, None).

Return type:

tuple[dict[str, str], dict[str, str]]

schema_column_attribute_flags()[source]#

Get attribute classification flags from schema metadata.

Returns:

Mapping of column names to is_attribute boolean.

Return type:

dict[str, bool]

validate_chunk(dataframe)[source]#

Validate and coerce a DataFrame chunk against the schema.

Parameters:

dataframe (pd.DataFrame) – Chunk to validate.

Returns:

Validated (and possibly coerced) DataFrame.

Return type:

pd.DataFrame

Raises:
  • ValueError – If no schema is available.

  • pandera.errors.SchemaErrors – If validation fails.