Finds all covalent bonds in the AMPAL object.

    Parameters
    ----------
    ampal : AMPAL Object
        Any AMPAL object with a `get_atoms` method.
    max_range : float, optional
        Used to define the sector size, so interactions at longer ranges
        will not be found.
    threshold : float, optional
        Allows deviation from ideal covalent bond distance to be included.
        For example, a value of 1.1 would allow interactions up to 10% further
        from the ideal distance to be included.
    tag : bool, optional
        If `True`, will add the covalent bond to the tags dictionary of
        each `Atom` involved in the interaction under the `covalent_bonds`
        key.

def find_covalent_bonds(ampal, max_range=2.2, threshold=1.1, tag=True):
    """Finds all covalent bonds in the AMPAL object.

    Parameters
    ----------
    ampal : AMPAL Object
        Any AMPAL object with a `get_atoms` method.
    max_range : float, optional
        Used to define the sector size, so interactions at longer ranges
        will not be found.
    threshold : float, optional
        Allows deviation from ideal covalent bond distance to be included.
        For example, a value of 1.1 would allow interactions up to 10% further
        from the ideal distance to be included.
    tag : bool, optional
        If `True`, will add the covalent bond to the tags dictionary of
        each `Atom` involved in the interaction under the `covalent_bonds`
        key.
    """
    sectors=gen_sectors(ampal.get_atoms(), max_range * 1.1)
    bonds=[]
    for sector in sectors.values():
        atoms=itertools.combinations(sector, 2)
        bonds.extend(covalent_bonds(atoms, threshold=threshold))
    bond_set=list(set(bonds))
    if tag:
        for bond in bond_set:
            a, b=bond.a, bond.b
            if 'covalent_bonds' not in a.tags:
                a.tags['covalent_bonds']=[b]
            else:
                a.tags['covalent_bonds'].append(b)
            if 'covalent_bonds' not in b.tags:
                b.tags['covalent_bonds']=[a]
            else:
                b.tags['covalent_bonds'].append(a)
    return bond_set