Exemplo n.º 1
0
def test_g_quad():
    # check agrees with Seifert
    for i in range(200): # do this on 200 random Seifert datas
        listdata = []
        num_pairs = random.randint(0, 10)
        e = random.randint(-100, 100)
        listdata.append(e)
        for j in range(num_pairs):
            q = random.choice(range(-100,0) + range(1,101)) # exclude 0
            while 1: # change p until gcd(p, q) = 1
                p = random.randint(2, 100)
                if abs(gcd(p, q)) == 1:
                    break
            listdata.append((p,q))
        if seifert.invariants(listdata)[1] == 0:
            assert_raises(ValueError, seifert.s_quad_form, listdata, False)
            continue
        startree = seifert.make_graph(listdata)            
        assert numpy.array_equal(seifert.s_quad_form(listdata, gui=False)[0], 
                                 g_quad(startree,
            ['N%i'%index for index in range(len(startree.nodes(data=False)))]))
    # load some files
    graph1 = GraphPopup(None, gui=False)
    graph1.load('testing/forest_ex1.txt')
    nodes1 = ['N%i'%index for index in \
              range(len(graph1.graph.nodes(data=False)))]
    assert num_bad_vertices(graph1.graph, nodes1) == 1
    assert_raises(ValueError, g_quad, graph1.graph, nodes1, False) # not negdef
    graph1.load('testing/forest_ex2.txt')
    nodes2 = ['N%i'%index for index in \
              range(len(graph1.graph.nodes(data=False)))]
    assert num_bad_vertices(graph1.graph, nodes2) == 1
    assert numpy.array_equal(g_quad(graph1.graph, nodes2, gui=False), 
                             numpy.array(\
        [[-5,1,1,1,0,1,0,0,0,0,0,0,0,0,0,0],
         [1,-3,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [1,0,-3,0,0,0,0,0,0,0,0,0,0,0,0,0],
         [1,0,0,-3,0,0,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,-1,0,0,0,0,0,1,0,0,1,0,0],
         [1,0,0,0,0,-1,0,0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,-4,1,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,1,-4,1,1,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,1,-1,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,1,0,-3,1,1,0,0,0,0],
         [0,0,0,0,1,0,0,0,0,1,-4,0,0,0,1,0],
         [0,0,0,0,0,0,0,0,0,1,0,-3,1,0,0,1],
         [0,0,0,0,0,0,0,0,0,0,0,1,-3,0,0,0],
         [0,0,0,0,1,0,0,0,0,0,0,0,0,-5,0,0],
         [0,0,0,0,0,0,0,0,0,0,1,0,0,0,-2,0],
         [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,-2]]))
    graph1.cancel()
Exemplo n.º 2
0
 def save(self, data):
     '''Save weighted star graph to file as adjacency list and node data.'''
     options = {}
     options['defaultextension'] = '.txt'
     options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
     filename = tkFileDialog.asksaveasfilename(**options)
     
     if filename:
         startree = make_graph(data)
         adjfile = open(filename, 'wb')
         nx.write_adjlist(startree, adjfile)            
         adjfile.write('\nDATA\n')
         adjfile.write(str(startree.nodes(data=True)))
         adjfile.close()
         print 'Graph data saved to %s' % filename