def load_adjacency_matrix()

in hype/graph.py [0:0]


def load_adjacency_matrix(path, format='hdf5', symmetrize=False, objects=None):
    if format == 'hdf5':
        with path_manager.open(path, 'rb') as fin:
            with h5py.File(fin, 'r') as hf:
                return {
                    'ids': hf['ids'].value.astype('int'),
                    'neighbors': hf['neighbors'].value.astype('int'),
                    'offsets': hf['offsets'].value.astype('int'),
                    'weights': hf['weights'].value.astype('float'),
                    'objects': hf['objects'].value
                }
    elif format == 'csv':
        df = pandas.read_csv(path, usecols=['id1', 'id2', 'weight'], engine='c')

        if symmetrize:
            rev = df.copy().rename(columns={'id1' : 'id2', 'id2' : 'id1'})
            df = pandas.concat([df, rev])

        idmap = {}
        idlist = []

        def convert(id):
            if id not in idmap:
                idmap[id] = len(idlist)
                idlist.append(id)
            return idmap[id]
        if objects is not None:
            objects = pandas.DataFrame.from_dict({'obj': objects, 'id': np.arange(len(objects))})
            df = df.merge(objects, left_on='id1', right_on='obj').merge(objects, left_on='id2', right_on='obj')
            df['id1'] = df['id_x']
            df['id2'] = df['id_y']
        else:
            df.loc[:, 'id1'] = df['id1'].apply(convert)
            df.loc[:, 'id2'] = df['id2'].apply(convert)
            objects = np.array(idlist)

        groups = df.groupby('id1').apply(lambda x: x.sort_values(by='id2'))
        counts = df.groupby('id1').id2.size()

        ids = groups.index.levels[0].values
        offsets = counts.loc[ids].values
        offsets[1:] = np.cumsum(offsets)[:-1]
        offsets[0] = 0
        neighbors = groups['id2'].values
        weights = groups['weight'].values
        return {
            'ids' : ids.astype('int'),
            'offsets' : offsets.astype('int'),
            'neighbors': neighbors.astype('int'),
            'weights': weights.astype('float'),
            'objects': objects
        }
    else:
        raise RuntimeError(f'Unsupported file format {format}')