Md Sakir Ahmed
Github id: sakirr05
Mentors: @cvvergara, @robe
Organization: OSGeo / pgRouting
OSGeo Profile: OSGeo Profile Link
Project Wiki: Github Wiki Link
Repository: Repo Link
Hello everyone,
This is my tenth weekly report of Official coding period for GSoC 2026
Week 10 Report (2 august ~ 9 august)
What did I get done this week?
pgr_planarFaces - PR #614:
- Added pgtap tests checking the face count actually satisfies Euler’s formula,
V - E + F = 2on a connected subgraph - While writing them found test 4 was wrong. It said “Triangle has 6 rows (2 faces x 3 edges)” but edges 8, 10, 12 are 7-11, 7-8, 8-12, which is an open path not a triangle, it has 1 face not 2. Row count of 6 was right for the wrong reason, fixed the description
- Checked the numbers by hand on a few subgraphs first: edges 8,10,12 gives V=4 E=3 F=1, id < 10 gives V=9 E=9 F=2, full graph gives V=17 E=18 F=7
- The full graph works out to 6 not 2 because it has 3 components (confirmed with pgr_connectedComponents), the traversal walks the outer face of each component separately so it generalises to V - E + F = 2C
- Added tests for both the connected and disconnected case, documented the formula in the rst. pgtap went 8 → 10
pgr_coreNumbers - PR #616:
-
Self loop fix: a vertex whose only edge was a self loop was coming back as core 2, because boost counts a self loop as degree 2 on an undirected graph. That is wrong for k-core since a k-core needs real neighbours. Added a filter to drop self loops before peeling, so a self-loop-only vertex now returns no result and a self loop next to a real edge no longer inflates the core number
-
Updated the pgtap test for that case and documented the corrected behaviour in the rst
-
Mentor’s @cvvergara and @robe did a live demo folding
pgr_coreNumbersinto the sharedcoloring_process.h/coloring_driver.cpp, the same pattern already used for coloring and components. Went through it step by step on my own code: switchedcoreNumbers.cto usecoloring_process.h, addedCORENUMBERSto the enum and toget_name, joined the self loop removal, theinsert_min_edges_no_parallelcall and acase CORENUMBERSintocoloring_driver.cpp -
Removed the now unused
coreNumbers_process.cpp,coreNumbers_process.h,coreNumbers_driver.cpp,coreNumbers_driver.hpp, fixedCMakeLists.txtafter -
Verified none of the other functions sharing
coloring_driver.cppbroke: makeConnected, connectedComponents, biconnectedComponents, strongComponents, sequentialVertexColoring, bipartite, edgeColoring all still return correct results -
Synced with pgrouting/develop along the way, merged clean, no conflicts
Am I blocked on anything?
No
References:
1] Link to wiki page:
wiki page
2] Link to github repository:
github repository