def _get_angle_type_key(
    angle, sigma_conversion_factor, epsilon_conversion_factor
):
    """Get the angle_type key for an harmonic angle

    Parameters
    ----------
    angle : parmed.topologyobjects.Angle
        The angle information from the parmed.topologyobjects.Angle
    sigma_conversion_factor : float or int
        The sigma conversion factor
    epsilon_conversion_factor : float or int
        The epsilon conversion factor

    Returns
    ----------
    tuple, (angle_k_constant, angle_theta_o, angle_center_atom_type_2, angle_end_atom_types_1_and_3_tuple,
        angle_residue_atom_1, angle_residue_atom_2, angle_residue_atom_3)
        angle_k_constant : float
            Harmonic angle k-constant or bond energy scaling factor
        angle_theta_o : float
            Harmonic equilbrium angle between the atoms
        angle_center_atom_type_2 : str
            The center atom type for the angle (atom type 2)
        angle_end_atom_types_1_and_3_tuple : tuple
            A sorted tuple of atom types (strings) for the end angle atoms
            (atoms 1 and 3).
        angle_atom_1_residue_name : str
            The residue name for atom 1 in the angle (end atom).
        angle_atom_2_residue_name : str
            The residue name for atom 2 in the angle (center atom).
        angle_atom_3_residue_name : str
            The residue name for atom 3 in the angle (end atom).
    """

    angle_k_constant = round(
        angle.type.k
        * (sigma_conversion_factor ** 2 / epsilon_conversion_factor),
        8,
    )
    angle_theta_o = round(angle.type.theteq, 8)
    angle_center_atom_type_2 = angle.atom2.type
    angle_end_atom_types_1_and_3_tuple = tuple(
        sorted((angle.atom1.type, angle.atom3.type))
    )
    angle_residue_atom_1 = angle.atom1.residue.name
    angle_residue_atom_2 = angle.atom2.residue.name
    angle_residue_atom_3 = angle.atom3.residue.name

    return (
        angle_k_constant,
        angle_theta_o,
        angle_center_atom_type_2,
        angle_end_atom_types_1_and_3_tuple,
        angle_residue_atom_1,
        angle_residue_atom_2,
        angle_residue_atom_3,
    )