summaryrefslogtreecommitdiff
path: root/src/cython/example/ex_clustering.py
blob: bee8241453c09fcc3395b3b76b0c5ea2ec242391 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import numpy as np
from sklearn.metrics import pairwise_distances
import os
import gudhi as gd
import sys
sys.path.append("../sktda/")
from clustering import *

X = np.loadtxt("human")

print("Mapper computation with point cloud")
mapper = MapperComplex(inp="point cloud", 
                       filters=X[:,[2,0]], 
                       filter_bnds=np.array([[np.nan,np.nan],[np.nan,np.nan]]), 
                       resolutions=np.array([np.nan,np.nan]), gains=np.array([0.33,0.33]), 
                       colors=X[:,2:3],
                       ).fit(X)

f = open("mapper_pc", "w")
f.write("%s\n%s\n%s\n%f %f\n%d %d\n" % ("human", "coord2-0", "coord2", 10, 0.33, len(mapper.mapper_.get_skeleton(0)), len([edge for (edge,f) in mapper.mapper_.get_skeleton(1) if len(edge)==2])))
for (vertex,_) in mapper.mapper_.get_skeleton(0):
    f.write(str(vertex[0]) + " " + str(mapper.node_info_[vertex[0]]["colors"][0]) + " " + str(mapper.node_info_[vertex[0]]["size"]) + "\n")
for (edge,_) in mapper.mapper_.get_skeleton(1):
    if len(edge) == 2:
        f.write(str(edge[0]) + " " + str(edge[1]) + "\n")
f.close()

os.system("python3 ~/Git/gudhi-devel/src/Nerve_GIC/utilities/KeplerMapperVisuFromTxtFile.py -f ~/Git/gudhi-devel/src/cython/example/mapper_pc")
os.system("rm ~/Git/gudhi-devel/src/cython/example/mapper_pc")

dgms = mapper.compute_persistence_diagrams()
plot = gd.plot_persistence_diagram(dgms[0])
plot.show()

distrib = mapper.compute_distribution(X, N=10)
print("Distance threshold associated to confidence 90 percent is " + str(distrib[int(np.floor(0.9 * len(distrib)))]))

print("Mapper computation with pairwise distances only")
X = pairwise_distances(X)
mapper = MapperComplex(inp="distance matrix", 
                       filters=X[:,[2,0]], 
                       filter_bnds=np.array([[np.nan,np.nan],[np.nan,np.nan]]), 
                       resolutions=np.array([np.nan,np.nan]), gains=np.array([0.33,0.33]), 
                       colors=np.max(X, axis=1)[:,np.newaxis],
                       ).fit(X)

f = open("mapper_dm", "w")
f.write("%s\n%s\n%s\n%f %f\n%d %d\n" % ("human", "coord2-0", "coord2", 10, 0.33, len(mapper.mapper_.get_skeleton(0)), len([edge for (edge,f) in mapper.mapper_.get_skeleton(1) if len(edge)==2])))
for (vertex,_) in mapper.mapper_.get_skeleton(0):
    f.write(str(vertex[0]) + " " + str(mapper.node_info_[vertex[0]]["colors"][0]) + " " + str(mapper.node_info_[vertex[0]]["size"]) + "\n")
for (edge,_) in mapper.mapper_.get_skeleton(1):
    if len(edge) == 2:
        f.write(str(edge[0]) + " " + str(edge[1]) + "\n")
f.close()

os.system("python3 ~/Git/gudhi-devel/src/Nerve_GIC/utilities/KeplerMapperVisuFromTxtFile.py -f ~/Git/gudhi-devel/src/cython/example/mapper_dm")
os.system("rm ~/Git/gudhi-devel/src/cython/example/mapper_dm")

dgms = mapper.compute_persistence_diagrams()
plot = gd.plot_persistence_diagram(dgms[0])
plot.show()

distrib = mapper.compute_distribution(X, N=10)
print("Distance threshold associated to confidence 90 percent is " + str(distrib[int(np.floor(0.9 * len(distrib)))]))