コード例 #1
0
 def setUp(self):
     self.sc1 = SimplicialComplex(simplices=[(1, 2), (2, 3), (1, 2, 3)])
     self.sc2 = AlphaComplex(ring, 0.05)
     self.ring1d = SimplicialComplex(simplices=ring1d_sc)
     self.cylinder = SimplicialComplex(simplices=cylinder_sc)
     self.torus = SimplicialComplex(simplices=torus_sc)
     self.twosphere = SimplicialComplex(simplices=twosphere_c)
コード例 #2
0
def betti(complex):
    betti = []
    # find max dimension
    sim_com = SimplicialComplex(simplices=complex)
    for i in range(3):
        betti.append(sim_com.betti_number(i))
    return (betti)
コード例 #3
0
def _parse_result(graph, data_array=[]):
    if len(data_array) > 0:
        col_names = data_array.columns
        data_array = np.array(data_array)
    data = {"nodes": [], "links": [], "betti": []}

    # nodes
    node_keys = graph['nodes'].keys()
    name2id = {}
    i = 1
    nodes_detail = {}
    for key in node_keys:
        name2id[key] = i
        cluster = graph['nodes'][key]
        nodes_detail[i] = cluster
        if len(data_array) > 0:
            cluster_data = data_array[cluster]
            cluster_avg = np.mean(cluster_data, axis=0)
            cluster_avg_dict = {}
            for j in range(len(col_names)):
                cluster_avg_dict[col_names[j]] = cluster_avg[j]
            data['nodes'].append({
                "id": str(i),
                "size": len(graph['nodes'][key]),
                "avgs": cluster_avg_dict,
                "vertices": cluster
            })
        else:
            data['nodes'].append({
                "id": str(i),
                "size": len(graph['nodes'][key]),
                "vertices": cluster
            })
        i += 1

    with open(APP_STATIC + "/uploads/nodes_detail.json", "w") as f:
        json.dump(nodes_detail, f)

    # links
    links = set()
    for link_from in graph['links'].keys():
        for link_to in graph['links'][link_from]:
            from_id = name2id[link_from]
            to_id = name2id[link_to]
            left_id = min(from_id, to_id)
            right_id = max(from_id, to_id)
            links.add((left_id, right_id))
    for link in links:
        data['links'].append({"source": link[0], "target": link[1]})
    betti0 = int(
        SimplicialComplex(simplices=graph['simplices']).betti_number(0))
    betti1 = int(
        SimplicialComplex(simplices=graph['simplices']).betti_number(1))
    betti2 = int(
        SimplicialComplex(simplices=graph['simplices']).betti_number(2))
    data['betti'].append(betti0)
    data['betti'].append(betti1)
    data['betti'].append(betti2)
    return data
コード例 #4
0
ファイル: test_simcomplex.py プロジェクト: yanyan-cas/MoguTDA
class test_simcomplex(unittest.TestCase):
    def setUp(self):
        self.sc1 = SimplicialComplex(simplices=[(1, 2), (2, 3), (1, 2, 3)])
        self.sc2 = AlphaComplex(ring, 0.05)
        self.ring1d = SimplicialComplex(simplices=ring1d_sc)
        self.cylinder = SimplicialComplex(simplices=cylinder_sc)
        self.torus = SimplicialComplex(simplices=torus_sc)
        self.twosphere = SimplicialComplex(simplices=twosphere_c)

    def tearDown(self):
        pass

    def test_ring1d(self):
        self.assertEqual(self.ring1d.betti_number(0), 1)
        self.assertEqual(self.ring1d.betti_number(1), 1)
        self.assertEqual(self.ring1d.betti_number(2), 0)

    def test_cylinder(self):
        self.assertEqual(self.cylinder.betti_number(0), 1)
        self.assertEqual(self.cylinder.betti_number(1), 0)
        self.assertEqual(self.cylinder.betti_number(2), 1)

    def test_torus(self):
        self.assertEqual(self.torus.betti_number(0), 1)
        self.assertEqual(self.torus.betti_number(1), 2)
        self.assertEqual(self.torus.betti_number(2), 1)

    def test_twosphere(self):
        self.assertEqual(self.twosphere.betti_number(0), 1)
        self.assertEqual(self.twosphere.betti_number(1), 0)
        self.assertEqual(self.twosphere.betti_number(2), 1)

    def test_sc1(self):
        self.assertEqual(self.sc1.betti_number(0), 1)
        self.assertEqual(self.sc1.betti_number(1), 0)

    def test_sc2(self):
        self.assertEqual(self.sc2.betti_number(0), 1)
        self.assertEqual(self.sc2.betti_number(1), 1)
        self.assertEqual(self.sc2.betti_number(2), 0)
コード例 #5
0
def test_betti():

    C = [(1, 2, 3), (3, 4), (4, 2)]
    torus_sc = [(1, 2, 4), (4, 2, 5), (2, 3, 5), (3, 5, 6), (5, 6, 1),
                (1, 6, 2), (6, 7, 2), (7, 3, 2), (1, 3, 4), (3, 4, 6),
                (4, 6, 7), (4, 5, 7), (5, 7, 1), (7, 3, 1)]
    torus_c = SimplicialComplex(simplices=torus_sc)

    t1 = timeit.default_timer()
    print(betti_numbers('complexes/1.0/circle.txt', 0))
    t2 = timeit.default_timer()
    print('cas circle:', t2 - t1)
    print(betti_numbers('complexes/1.0/line.txt', 0))
    t3 = timeit.default_timer()
    print('cas line', t3 - t2)
    print(betti_numbers('complexes/1.0/sphere.txt', 0))
    t4 = timeit.default_timer()
    print('cas sphere', t4 - t3)
    print(betti_numbers('complexes/1.0/torus.txt', 0))
    t5 = timeit.default_timer()
    print('cas torus:', t5 - t4)
    print(betti_numbers('complexes/1.0/plane.txt', 0))
    t6 = timeit.default_timer()
    print('cas plane:', t6 - t5)
コード例 #6
0
# connect neurons ##############################################################
nest.CopyModel("static_synapse", "inhibitory", {"weight": (-1) * g})
nest.CopyModel("static_synapse", "excitatory", {"weight": g})

num_synapse = 0
for i in range(N):
    for j in range(N):
        if (M[i][j] == "1"):
            # nest.Connect(neurons[i],neurons[j], syn_spec="inhibitory")
            nest.Connect(neurons[i], neurons[j], syn_spec="excitatory")
            num_synapse += 1
            # print("connecting neuron " + str(i) + " to " + str(j))

# measure original homology of network #########################################
simps = mogulist_from_simplist(matrix_name)
SC = SimplicialComplex(simplices=simps)
bettis = [
    SC.betti_number(0),
    SC.betti_number(1),
    SC.betti_number(2),
    SC.betti_number(3),
    SC.betti_number(4),
    SC.betti_number(5),
    SC.betti_number(6)
]
print(bettis)

proceed = raw_input("proceed? ")
if (proceed != "y"):
    print(asdasd)
# -*- coding: utf-8 -*-
# -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.#

#* File Name : topological_data_analysis.py
#
#* Purpose :
#
#* Creation Date : 28-12-2019
#
#* Last Modified : Saturday 28 December 2019 01:00:22 PM IST
#
#* Created By :

#_._._._._._._._._._._._._._._._._._._._._.#
import numpy as np
from mogutda import SimplicialComplex

torus_sc = [(1,2,4), (4,2,5), (2,3,5), (3,5,6), (5,6,1), (1,6,2), (6,7,2), (7,3,2),
            (1,3,4), (3,4,6), (4,6,7), (4,5,7), (5,7,1), (7,3,1)]
torus_c = SimplicialComplex(simplices=torus_sc)

print(torus_c.betti_number(0))   # print 1
print(torus_c.betti_number(1))   # print 2
print(torus_c.betti_number(2))   # print 1
コード例 #8
0
ファイル: betti.py プロジェクト: atob1/imageSeg-2.5D_topo
import numpy as np
from mogutda import SimplicialComplex

e1 = [[255, 255], [255, 0]]
sc1 = SimplicialComplex(e1)
print(sc1.betti_number(0))