graph_tool.dynamics.PottsGlauberState#
- class graph_tool.dynamics.PottsGlauberState(g, f, w=1, h=0, s=None)[source]#
- Bases: - DiscreteStateBase- Glauber dynamics of the Potts model. - Parameters:
- gGraph
- Graph to be used for the dynamics 
- flist of lists or two-dimensional numpy.ndarray
- Matrix of interactions between spin values, of dimension \(q\times q\), where \(q\) is the number of spins. 
- wEdgePropertyMaporfloat(optional, default:1.)
- Edge interaction strength. If a scalar is provided, it’s used for all edges. 
- hVertexPropertyMapor iterable orfloat(optional, default:0.)
- Vertex local field. If an iterable is provided, it will be used as the field for all vertices. If a scalar is provided, it will be used for all spins values and vertices. 
- sVertexPropertyMap(optional, default:None)
- Initial global state. If not provided, a random state will be chosen. 
 
- g
 - Notes - This implements the Glauber dynamics of the Potts model [potts-model] on a network. - If a node \(i\) is updated at time \(t\), the transition to state \(s_i(t+1) \in \{0,\dots,q-1\}\) is done with probability \[P(s_i(t+1)|\boldsymbol s(t)) \propto \exp\left(\sum_jA_{ij}w_{ij}f_{s_i(t+1), s_j(t)} + h^{(i)}_{s_i(t+1)}\right)\]- References - Examples - >>> g = gt.GraphView(gt.collection.data["polblogs"].copy(), directed=False) >>> gt.remove_parallel_edges(g) >>> g = gt.extract_largest_component(g, prune=True) >>> f = np.eye(4) * 0.1 >>> state = gt.PottsGlauberState(g, f) >>> ret = state.iterate_async(niter=1000 * g.num_vertices()) >>> gt.graph_draw(g, g.vp.pos, vertex_fill_color=state.s, ... output="glauber-potts.pdf") <...>   - State of a Glauber Potts dynamics with \(q=4\) on a political blog network.# - Methods - copy()- Return a copy of the state. - Returns list of "active" nodes, for states where this concept is used. - Returns the internal - VertexPropertyMapwith the current state.- iterate_async([niter])- Updates nodes asynchronously (i.e. single vertex chosen randomly), niter number of times. - iterate_sync([niter])- Updates nodes synchronously (i.e. a full "sweep" of all nodes in parallel), niter number of times. - Resets list of "active" nodes, for states where this concept is used. - copy()#
- Return a copy of the state. 
 - get_active()#
- Returns list of “active” nodes, for states where this concept is used. 
 - get_state()#
- Returns the internal - VertexPropertyMapwith the current state.
 - iterate_async(niter=1)#
- Updates nodes asynchronously (i.e. single vertex chosen randomly), niter number of times. This function returns the number of nodes that changed state. 
 - iterate_sync(niter=1)#
- Updates nodes synchronously (i.e. a full “sweep” of all nodes in parallel), niter number of times. This function returns the number of nodes that changed state. - If enabled during compilation, this algorithm runs in parallel (i.e. using more than one thread.) 
 - reset_active()#
- Resets list of “active” nodes, for states where this concept is used.