Returns all the covalent bonds in a list of `Atom` pairs.

    Notes
    -----
    Uses information `element_data`, which can be accessed directly
    through this module i.e. `isambard.ampal.interactions.element_data`.

    Parameters
    ----------
    atoms : [(`Atom`, `Atom`)]
        List of pairs of `Atoms`.
    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.

def covalent_bonds(atoms, threshold=1.1):
    """Returns all the covalent bonds in a list of `Atom` pairs.

    Notes
    -----
    Uses information `element_data`, which can be accessed directly
    through this module i.e. `isambard.ampal.interactions.element_data`.

    Parameters
    ----------
    atoms : [(`Atom`, `Atom`)]
        List of pairs of `Atoms`.
    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.
    """
    bonds=[]
    for a, b in atoms:
        bond_distance=(
                element_data[a.element.title()]['atomic radius'] + element_data[
                b.element.title()]['atomic radius']) / 100
        dist=distance(a._vector, b._vector)
        if dist <= bond_distance * threshold:
            bonds.append(CovalentBond(a, b, dist))
    return bonds