def compute_poincare_maps()

in main.py [0:0]


def compute_poincare_maps(features, labels, fout,
                        mode='features', k_neighbours=15, 
                        distlocal='minkowski', sigma=1.0, gamma=2.0,
                        epochs = 300,
                        color_dict=None, debugplot=False,
                        batchsize=-1, lr=0.1, burnin=500, lrm=1.0, earlystop=0.0001, cuda=0):

    RFA = compute_rfa(features, mode=mode,
                                k_neighbours=k_neighbours,
                                distlocal= distlocal,
                                distfn='MFIsym',
                                connected=True,
                                sigma=sigma)

    if batchsize < 0:
        batchsize = min(512, int(len(RFA)/10))
        print('batchsize = ', batchsize)
    lr = batchsize / 16 * lr

    indices = torch.arange(len(RFA))
    if cuda:
        indices = indices.cuda()
        RFA = RFA.cuda()

    dataset = TensorDataset(indices, RFA)

    # instantiate our Embedding predictor
    predictor = PoincareEmbedding(len(dataset), 2,
                                                dist=PoincareDistance,
                                                max_norm=1,
                                                Qdist='laplace', 
                                                lossfn = 'klSym',
                                                gamma=gamma,
                                                cuda=cuda)

    t_start = timeit.default_timer()
    optimizer = RiemannianSGD(predictor.parameters(), lr=lr)

    opt = PoincareOptions(debugplot=debugplot, batchsize=batchsize, lr=lr, 
        burnin=burnin, lrm=lrm, earlystop=earlystop, cuda=cuda, epochs=epochs)
        # train predictor
    print('Starting training...')
    embeddings, loss, epoch = train(predictor,
                                     dataset,
                                     optimizer,
                                     opt,
                                     fout=fout,
                                     labels=labels,
                                     earlystop=earlystop,
                                     color_dict=color_dict)

    np.savetxt(fout + '.csv', embeddings, delimiter=",")
    t = timeit.default_timer() - t_start
    titlename = f"loss = {loss:.3e}\ntime = {t/60:.3f} min"
    print(titlename)

    return embeddings, titlename