Source code for molsysmt.element.group.terminal_capping.get_bonded_atom_pairs

import numpy as np

_sorted = sorted

[docs] def get_bonded_atom_pairs(group_name, atom_names, atom_indices=None, sorted=True): from . import group_names, get_group_db if group_name not in group_names: raise ValueError if atom_indices is None: atom_indices = np.arange(len(atom_names), dtype=int).tolist() db = get_group_db(group_name) is_in = -1 for ii,jj in enumerate(db['topology']): if np.all(np.isin(atom_names, jj['atoms'])): is_in=ii break if is_in!=-1: bonds = [] for ii,jj in db['topology'][is_in]['bonds']: if ii in atom_names: if jj in atom_names: iii = atom_indices[atom_names.index(ii)] jjj = atom_indices[atom_names.index(jj)] if iii<jjj: bonds.append([iii,jjj]) else: bonds.append([jjj,iii]) else: print(group_name, atom_names) raise ValueError if sorted: return _sorted(bonds) else: return bonds