def test_remove_nodes_from(atoms, bonds, interactions, removed, expected): """ Test whether molecule.remove_nodes_from also removes the corresponding interactions """ molecule = vermouth.molecule.Molecule() molecule.add_nodes_from(atoms) molecule.add_edges_from(bonds) for type_, atoms, params in interactions: molecule.add_interaction(type_, atoms, params) molecule.remove_nodes_from(removed) assert molecule.interactions == expected
def molecule(): molecule = vermouth.molecule.Molecule() molecule.meta['test'] = True molecule.meta['test_mutable'] = [0, 1, 2] # The node keys should not be in a sorted order as it would mask any issue # due to the keys being accidentally sorted. molecule.add_node(2, atomname='CC') molecule.add_node(0, atomname='AA', mutable=[7, 8, 9]) molecule.add_node(1, atomname='BB') molecule.add_edge(0, 1) molecule.add_edge(0, 2) molecule.add_interaction( type_='bonds', atoms=(0, 1), parameters=['1', '2'], meta={'unmutable': 0, 'mutable': [4, 5, 6]}, ) molecule.add_interaction( type_='bonds', atoms=(0, 2), parameters=['a', 'b'], ) return molecule