code: def check_aroma(cand_mol, ctr_node, nei_nodes):
      rings = [
          node
          for node in nei_nodes + [ctr_node]
          if node.mol.GetNumAtoms() >= 3
      ]
      if len(rings) < 2:
          return 0  # Only multi-ring system needs to be checked
  
      def get_nid(x):
          return 0 if x.is_leaf else x.nid
  
      benzynes = [
          get_nid(node)
          for node in nei_nodes + [ctr_node]
          if node.smiles in Vocab.benzynes
      ]
      penzynes = [
          get_nid(node)
          for node in nei_nodes + [ctr_node]
          if node.smiles in Vocab.penzynes
      ]
      if len(benzynes) + len(penzynes) == 0:
          return 0  # No specific aromatic rings
  
      n_aroma_atoms = 0
      for atom in cand_mol.GetAtoms():
          if (
              atom.GetAtomMapNum() in benzynes + penzynes
              and atom.GetIsAromatic()
          ):
              n_aroma_atoms += 1
  
      if n_aroma_atoms >= len(benzynes) * 4 + len(penzynes) * 3:
          return 1000
      else:
          return -0.001
  
imports: import rdkit
  import rdkit.Chem
  from scipy.sparse import csr_matrix
  from scipy.sparse.csgraph import minimum_spanning_tree
  from collections import defaultdict
  from rdkit.Chem.EnumerateStereoisomers import EnumerateStereoisomers, StereoEnumerationOptions
  from .vocab import Vocab
label_desc: Use image node_id 17 for calling a global function with example usage: check_aroma(cand_mol, ctr_node, nei_nodes) and returns: int, unknown, int, int, unknown