Skip to main content
← OpenMECP Documentation

validate_geometries

Function validate_geometries 

Source
pub fn validate_geometries(geometries: &[Geometry]) -> Result<(), String>
Expand description

Validates that interpolated geometries are chemically and numerically reasonable.

This function performs comprehensive validation of a set of geometries, checking for common issues that can arise during interpolation such as inconsistent atom counts, non-finite coordinates, and unreasonably large coordinate values.

§Arguments

  • geometries - A slice of geometries to validate

§Returns

Returns Ok(()) if all geometries pass validation, or Err(String) with a descriptive error message if any issues are found.

§Validation Checks

  1. Non-empty: Ensures at least one geometry is provided
  2. Consistent atom count: All geometries have the same number of atoms
  3. Consistent elements: All geometries have the same element types
  4. Finite coordinates: No NaN or infinite coordinate values
  5. Reasonable coordinates: No coordinates with absolute value > 1000 Angstrom

§Examples

use omecp::lst::{interpolate_linear, validate_geometries};
use omecp::geometry::Geometry;

let elements = vec!["H".to_string(), "H".to_string()];
let coords1 = vec![0.0, 0.0, 0.0, 1.0, 0.0, 0.0];
let coords2 = vec![0.0, 0.0, 0.0, 2.0, 0.0, 0.0];

let geom1 = Geometry::new(elements.clone(), coords1);
let geom2 = Geometry::new(elements, coords2);

let path = interpolate_linear(&geom1, &geom2, 3);
assert!(validate_geometries(&path).is_ok());

§Error Conditions

The function returns an error in the following cases:

  • Empty geometry vector
  • Inconsistent number of atoms between geometries
  • Different element types between geometries
  • Non-finite coordinates (NaN or infinite values)
  • Coordinates with absolute values exceeding 1000 Angstrom

§Notes

  • The 1000 Angstrom limit is a safety check for obviously incorrect structures
  • This validation should be called after any interpolation operation
  • Failed validation often indicates issues with input geometries or numerical problems during interpolation