def get_bond_wbos(mols_wbos):
    """
    Collect all bonds wbos from list of oemols that have wbos calculated

    Parameters
    ----------
    mols_wbos: list of mapped oemols

    Returns
    -------
    bonds: dict
        maps type of bonds --> bonds
                bonds --> list of WBOs
        bond --> (map_idx_1, map_idx_2)
    """
    bonds = {'rotors': {}, 'rings': {}, 'others': {}}
    for mol in mols_wbos:
        for bond in mol.GetBonds():
            a1 = bond.GetBgn()
            a2 = bond.GetEnd()
            if not a1.IsHydrogen() and not a2.IsHydrogen():
                if bond.IsRotor():
                    key = (bond.GetBgn().GetMapIdx(), bond.GetEnd().GetMapIdx())
                    if key not in bonds['rotors']:
                        bonds['rotors'][key] = []
                    bonds['rotors'][key].append(bond.GetData('WibergBondOrder'))
                elif bond.IsInRing():
                    key = (bond.GetBgn().GetMapIdx(), bond.GetEnd().GetMapIdx())
                    if key not in bonds['rings']:
                        bonds['rings'][key] = []
                    bonds['rings'][key].append(bond.GetData('WibergBondOrder'))
                else:
                    key = (bond.GetBgn().GetMapIdx(), bond.GetEnd().GetMapIdx())
                    if key not in bonds['others']:
                        bonds['others'][key] = []
                    bonds['others'][key].append(bond.GetData('WibergBondOrder'))
    return bonds