isValid static method

bool isValid(
  1. String smiles
)

Validate if a SMILES string is valid

Implementation

static bool isValid(String smiles) {
  // Very basic validation
  if (smiles.isEmpty) return false;

  // Check for balanced parentheses
  int openParens = 0;
  for (int i = 0; i < smiles.length; i++) {
    if (smiles[i] == '(') openParens++;
    if (smiles[i] == ')') {
      openParens--;
      if (openParens < 0) return false;
    }
  }
  if (openParens != 0) return false;

  // Check for balanced square brackets
  int openBrackets = 0;
  for (int i = 0; i < smiles.length; i++) {
    if (smiles[i] == '[') openBrackets++;
    if (smiles[i] == ']') {
      openBrackets--;
      if (openBrackets < 0) return false;
    }
  }
  if (openBrackets != 0) return false;

  // Check that the SMILES contains at least one atom
  final atomRegex = RegExp(r'Br|Cl|[BCNOPSFIbcnopsi]|(\[[^\]]+\])');
  if (!atomRegex.hasMatch(smiles)) return false;

  return true;
}