Validation Helper

GitHub Link to Code.

Trajectory validation helper for pipeline operations.

Provides validation logic for trajectory-changing operations in the pipeline, ensuring that existing features are properly handled before modifications.

class mdxplain.trajectory.helper.validation_helper.trajectory_validation_helper.TrajectoryValidationHelper

Helper class for validating trajectory operations in pipeline context.

static check_features_before_trajectory_changes(pipeline_data: PipelineData, force: bool, operation_name: str, traj_indices: List[int] | None = None) None

Check if features exist before trajectory modification.

Parameters

pipeline_dataPipelineData

Pipeline data object containing feature data

forcebool

Whether to force the operation despite existing features

operation_namestr

Name of the operation for error messages

traj_indicesList[int], optional

Trajectory indices to check for features. If None, checks if ANY features exist at all.

Raises

ValueError

If features exist and force=False

static validate_slice_parameters(frames: int | slice | List[int] | None) None

Validate parameters for trajectory slicing.

Parameters

framesint, slice, list, or None

Frame specification for slicing

Returns

None

Performs validation, does not return value

Raises

ValueError

If frames parameter is invalid

Examples

>>> TrajectoryValidationHelper.validate_slice_parameters(1000)  # OK
>>> TrajectoryValidationHelper.validate_slice_parameters(slice(100, 500))  # OK
>>> TrajectoryValidationHelper.validate_slice_parameters([0, 10, 20])  # OK
>>> TrajectoryValidationHelper.validate_slice_parameters(-100)  # ValueError
static validate_data_selector(pipeline_data: PipelineData, data_selector: str) Any

Validate DataSelector exists and has data.

Parameters

pipeline_dataPipelineData

Pipeline data object

data_selectorstr

Name of DataSelector to validate

Returns

DataSelectorData

The validated selector data object

Raises

ValueError

If DataSelector does not exist or has no data

Examples

>>> selector_data = TrajectoryValidationHelper.validate_data_selector(
...     pipeline_data, "folded_frames"
... )
>>> print(f"Selector has {len(selector_data.trajectory_frames)} trajectories")
static resolve_and_validate_traj_pair(trajectory_data: TrajectoryData, target_traj: int | str, source_traj: int | str) Tuple[int, int]

Resolve and validate trajectory pair for join/stack operations.

Parameters

trajectory_dataTrajectoryData

Trajectory data container

target_trajint or str

Target trajectory selector

source_trajint or str

Source trajectory selector

Returns

tuple

(target_idx, source_idx) as integers

Raises

ValueError

If selectors don’t resolve to exactly one trajectory each

ValueError

If target and source refer to same trajectory

static validate_superpose_parameters(pipeline_data: PipelineData, reference_traj: int, reference_frame: int, atom_selection: str, traj_selection: int | str | List[int | str] | str) tuple

Validate all parameters for superpose operation.

Parameters

pipeline_dataPipelineData

Pipeline data container with trajectory data

reference_trajint

Index of trajectory containing the reference frame

reference_frameint

Frame index within reference trajectory

atom_selectionstr

MDTraj selection string for alignment atoms

traj_selectionvarious

Selection of trajectories to align

Returns

tuple

(reference_trajectory, traj_indices, ref_frame, ref_atom_indices)

Raises

ValueError

If any parameter is invalid

Examples

>>> ref_traj, indices, ref_frame, atom_indices = \
...     TrajectoryValidationHelper.validate_superpose_parameters(
...         pipeline_data, 0, 0, "backbone", "all"
...     )