![Create React App Officially Deprecated Amid React 19 Compatibility Issues](https://cdn.sanity.io/images/cgdhsj6q/production/04fa08cf844d798abc0e1a6391c129363cc7e2ab-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
This Python package allows the manipulation of directed and non-directed graphs. Also supports embedded graphs. It is suitable for graphs with thousands of nodes.
from pgraph import *
import json
# load places and routes
with open('places.json', 'r') as f:
places = json.loads(f.read())
with open('routes.json', 'r') as f:
routes = json.loads(f.read())
# build the graph
g = UGraph()
for name, info in places.items():
g.add_vertex(name=name, coord=info["utm"])
for route in routes:
g.add_edge(route[0], route[1], cost=route[2])
# plan a path from Hughenden to Brisbane
p = g.path_Astar('Hughenden', 'Brisbane')
g.plot(block=False) # plot it
g.highlight_path(p) # overlay the path
Graphs belong to the class UGraph
or DGraph
for undirected or directed graphs respectively. The graph is essentially a container for the vertices.
g.add_vertex()
add a vertex
g.n
the number of vertices
g
is an iterator over vertices, can be used as for vertex in g:
g[i]
reference a vertex by its index or name
g.add_edge()
connect two vertices
g.edges()
all edges in the graph
g.plot()
plots the vertices and edges
g.nc
the number of graph components, 1 if fully connected
g.component(v)
the component that vertex v
belongs to
g.path_BFS()
breadth-first search
g.path_Astar()
A* search
g.adjacency()
adjacency matrix
g.Laplacian()
Laplacian matrix
g.incidence()
incidence matrix
Vertices belong to the class UVertex
(for undirected graphs) or DVertex
(for directed graphs), which are each subclasses of Vertex
.
v.coord
the coordinate vector for embedded graph (optional)v.name
the name of the vertex (optional)v.neighbours()
is a list of the neighbouring verticesv1.samecomponent(v2)
predicate for vertices belonging to the same componentVertices can be named and referenced by name.
Edges are instances of the class Edge
.
Edges are not referenced by the graph object, each edge references a pair of vertices, and the vertices reference the edges. For a directed graph only the start vertex of an edge references the edge object, whereas for an undirected graph both vertices reference the edge object.
e.cost
cost of edge for planning methodse.next(v)
vertex on edge e
that is not v
e.v1
, e.v2
the two vertices that define the edge e
g.remove(v)
remove vertex v
e.remove()
remove edge e
Consider a user class Foo
that we would like to connect using a graph overlay, ie.
instances of Foo
becomes vertices in a graph.
DVertex
or UVertex
depending on graph typeFoo
into the graph using add_vertex
and create edges as requiredclass Foo(UVertex):
# foo stuff goes here
f1 = Foo(...)
f2 = Foo(...)
g = UGraph() # create a new undirected graph
g.add_vertex(f1)
g.add_vertex(f2)
f1.connect(f2, cost=3)
for f in f1.neighbours():
# say hi to the neighbours
The key objects and their interactions are shown below.
This is a re-engineered version of PGraph.m which ships as part of the Spatial Math Toolbox for MATLAB. This class is used to support bundle adjustment, pose-graph SLAM and various planners such as PRM, RRT and Lattice.
The Python version was designed from the start to work with directed and undirected graphs, whereas directed graphs were a late addition to the MATLAB version. Semantics are similar but not identical. In particular the use of subclassing rather than references to user data is encouraged.
FAQs
Mathematical graphs for Python
We found that pgraph-python demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.