The MolVS Validator provides a way to identify and log unusual and potentially troublesome characteristics of a molecule.

The validation process makes no actual changes to a molecule – that is left to the standardization process, which fixes many of the issues identified through validation. There is no real requirement to validate a molecule before or after standardizing it - the process simply provides additional information about potential problems.

Validating a molecule

The validate_smiles() function is a convenient way to quickly validate a single SMILES string:

>>> from molvs import validate_smiles
>>> validate_smiles('O=C([O-])c1ccccc1')
['INFO: [NeutralValidation] Not an overall neutral system (-1)']

It returns a list of log messages as strings.

The Validator class provides more flexibility when working with multiple molecules or when a custom Validation list is required:

>>> fmt = '%(asctime)s - %(levelname)s - %(validation)s - %(message)s'
>>> validator = Validator(log_format=fmt)
>>> mol = Chem.MolFromSmiles('[2H]C(Cl)(Cl)Cl')
>>> validator.validate(mol)
['2014-08-05 16:04:23,682 - INFO - IsotopeValidation - Molecule contains isotope 2H']

Available validations

The API documentation contains a full list of the individual validations that are available.