Class: Chemicalml::Convention::Molecular::Constraints::BondAtomRefs2ShouldBeDistinct
- Inherits:
-
Constraint::NodeConstraint
- Object
- Constraint
- Constraint::NodeConstraint
- Chemicalml::Convention::Molecular::Constraints::BondAtomRefs2ShouldBeDistinct
- Defined in:
- lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb
Overview
A <bond>'s atomRefs2 SHOULD reference two distinct atom
ids. A self-bond (a1 a1) is chemically meaningless.
Warning severity — there are edge cases in non-classical
chemistry (e.g. agostic interactions).
Instance Method Summary collapse
Methods inherited from Constraint::NodeConstraint
Instance Method Details
#check_node(node, _path) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/chemicalml/convention/molecular/constraints/bond_atom_refs2_should_be_distinct.rb', line 15 def check_node(node, _path) ids = parse_refs(node.atom_refs2) return [] if ids.size < 2 return [] if ids.uniq.size == ids.size duplicates = ids.group_by { |i| i }.select { |_, v| v.size > 1 }.keys [violation(path: yield_path(node), message: "bond #{node.id.inspect} atomRefs2 should reference two distinct atoms; " \ "duplicate ids: #{duplicates.inspect}", severity: :warning, value: node.atom_refs2)] end |