Ask Your Question

Revision history [back]

Hi,

This is a problem with Sage integers fighting with numpy integers

sage: A[2] == A[4]
False
sage: type(A[2])
<type 'sage.rings.integer.Integer'>
sage: type(A[4])
<type 'numpy.int64'>

You can solve the issue working only with Sage integers as follows

sage: M = matrix(6)
sage: M[0,2]=M[2,0]=M[2,3]=1
sage: M[3,2]=M[2,1]=M[1,2]=1
sage: M[4,5]=M[5,4]=1
sage: G = Graph(M)
sage: A = G.connected_component_containing_vertex(2)
sage: A
[0, 1, 2, 3]

(using networx is fine as well)

There is already an old ticket related to that problem on the Sage trac server: #13386: comparison of Sage integer with Numpy integer

Vincent

Hi,

This is a problem with Sage integers fighting with numpy integers

sage: A[2] == A[4]
False
sage: type(A[2])
<type 'sage.rings.integer.Integer'>
sage: type(A[4])
<type 'numpy.int64'>

You can solve the issue working only with Sage integers as follows

sage: M = matrix(6)
sage: M[0,2]=M[2,0]=M[2,3]=1
sage: M[3,2]=M[2,1]=M[1,2]=1
sage: M[4,5]=M[5,4]=1
sage: G = Graph(M)
sage: A = G.connected_component_containing_vertex(2)
sage: A
[0, 1, 2, 3]

(using networx is fine as well)

There is already an old ticket related to that problem on the Sage trac server: #13386: comparison of Sage integer with Numpy integer

EDIT: if you want to solve it on your example, use

sage: nx.node_connected_component(G, np.int(2))
[0, 1, 2, 3]

If you use only numpy and networkx, there is no need to use Sage. Just use the standard Ipython you will have less troubles.

Vincent