Skip to content

Commit d52e321

Browse files
committed
fix: fix zenodo
1 parent fe2284f commit d52e321

File tree

5 files changed

+58
-40
lines changed

5 files changed

+58
-40
lines changed

.zenodo.json

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"title": "ssspx: Production-grade Single-Source Shortest Paths",
3-
"description": "A deterministic single-source shortest paths solver with an optional transform, benchmarking tools, and documentation.",
3+
"description": "Reference implementation of the deterministic BMSSP algorithm from \"Breaking the Sorting Barrier for Directed Single-Source Shortest Paths\" (Duan, Mao, Mao, Shu, Yin), with tests and benchmarks for directed graphs with non-negative weights.",
44
"version": "v0.1.2",
55
"upload_type": "software",
66
"access_right": "open",
@@ -9,17 +9,31 @@
99
{
1010
"name": "Ribeiro, Diogo",
1111
"orcid": "0009-0001-2022-7072",
12-
"affiliation": "ESMAD - Instituto Politécnico do Porto"
12+
"affiliation": "ESMAD - Instituto Politécnico do Porto; MySense"
1313
}
1414
],
1515

16-
"keywords": ["graphs", "shortest paths", "Python", "algorithms", "benchmarking"],
16+
"keywords": ["graphs", "shortest paths", "BMSSP", "SSSP", "Python", "algorithms", "benchmarking"],
1717

1818
"related_identifiers": [
19+
{
20+
"identifier": "https://arxiv.org/abs/2504.17033",
21+
"relation": "isDerivedFrom",
22+
"resource_type": "publication-article",
23+
"scheme": "url"
24+
},
25+
{
26+
"identifier": "10.1145/3717823.3718179",
27+
"relation": "isDerivedFrom",
28+
"resource_type": "publication-article",
29+
"scheme": "doi"
30+
},
1931
{
2032
"identifier": "https://github.com/DiogoRibeiro7/bmssp",
2133
"relation": "isSupplementTo",
22-
"resource_type": "software"
34+
"resource_type": "software",
35+
"scheme": "url"
2336
}
2437
]
2538
}
39+

CITATION.cff

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ authors:
1010
affiliation: ESMAD - Instituto Politécnico do Porto
1111
license: MIT
1212
version: "0.1.0"
13-
doi: 10.5281/zenodo.0000000
13+
doi: 10.5281/zenodo.17381998
1414
date-released: 2024-09-01
15-
repository-code: "https://github.com/DiogoRibeiro7/bmssp-backhup"
15+
repository-code: "https://github.com/DiogoRibeiro7/bmssp"
1616
keywords:
1717
- graphs
1818
- shortest paths
@@ -27,8 +27,8 @@ preferred-citation:
2727
orcid: "https://orcid.org/0009-0001-2022-7072"
2828
title: ssspx
2929
version: "0.1.0"
30-
doi: 10.5281/zenodo.17381919
31-
url: https://github.com/DiogoRibeiro7/bmssp-backhup
30+
doi: 10.5281/zenodo.17381998
31+
url: https://github.com/DiogoRibeiro7/bmssp
3232
publisher:
3333
name: Zenodo
3434
date-released: 2024-09-01

README.md

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,49 @@
1-
# ssspx — Production‑grade Single‑Source Shortest Paths (Python)
1+
# ssspx — Production-grade Single-Source Shortest Paths (Python)
2+
3+
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17381998.svg)](https://doi.org/10.5281/zenodo.17381998)
24

3-
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.0000000.svg)](https://doi.org/10.5281/zenodo.0000000)
45
<!-- GitHub stars/forks -->
5-
[![GitHub stars](https://img.shields.io/github/stars/diogoribeiro7/bmssp.svg?style=social)](https://github.com/diogoribeiro7/bmssp/stargazers)
6-
[![GitHub forks](https://img.shields.io/github/forks/diogoribeiro7/bmssp.svg?style=social)](https://github.com/diogoribeiro7/bmssp/network/members)
76

8-
`ssspx` is a clean, typed, and tested implementation of a deterministic **Single‑Source Shortest Paths** solver for directed graphs with non‑negative weights. It follows a BMSSP‑style divide‑and‑conquer design (levels, `FindPivots`, bounded base case) and includes a switchable frontier, an optional constant‑outdegree transform, a CLI, exports, and a small benchmark harness.
7+
[![GitHub stars](https://img.shields.io/github/stars/diogoribeiro7/bmssp.svg?style=social)](https://github.com/DiogoRibeiro7/bmssp/stargazers)
8+
[![GitHub forks](https://img.shields.io/github/forks/diogoribeiro7/bmssp.svg?style=social)](https://github.com/DiogoRibeiro7/bmssp/network/members)
9+
10+
`ssspx` is a clean, typed, and tested implementation of a deterministic **Single-Source Shortest Paths** solver for directed graphs with non-negative weights.
11+
It follows a BMSSP-style divide-and-conquer design (levels, `FindPivots`, bounded base case) and includes a switchable frontier, an optional constant-outdegree transform, a CLI, exports, and a small benchmark harness.
912

10-
> For the advertised asymptotics, use the **block frontier** with the **constant‑outdegree transform** enabled. Distances are exact either way.
13+
> Research context: this is an implementation of the algorithmic approach from
14+
> **“Breaking the Sorting Barrier for Directed Single-Source Shortest Paths” (arXiv:2504.17033)** by Duan, Mao, Mao, Shu, and Yin.
15+
> Distances are exact. For the advertised asymptotics, use the **block frontier** with the **constant-outdegree transform** enabled.
1116
1217
---
1318

1419
## Features
1520

16-
* Two frontiers: `block` (paperstyle) and `heap` (baseline)
17-
* Optional constantoutdegree transform (cap configurable, default 4)
21+
* Two frontiers: `block` (paper-style) and `heap` (baseline)
22+
* Optional constant-outdegree transform (cap configurable, default 4)
1823
* Path reconstruction in original vertex IDs (works with or without transform)
19-
* Shortestpath DAG export to **JSON** and **GraphML**
24+
* Shortest-path DAG export to **JSON** and **GraphML**
2025
* CLI with CSV/TSV/JSONL/MTX/GraphML input, random graphs, and optional cProfile
2126
* Benchmark harness vs. Dijkstra
2227
* Typed (mypy), linted (flake8/black/isort), tested (pytest + Hypothesis)
2328

2429
## Limitations
2530

2631
* Edge weights must be **non-negative**. Supplying a negative weight raises a
27-
``GraphFormatError`` that points to the exact offending edge.
32+
`GraphFormatError` that points to the exact offending edge.
2833

2934
## Documentation
3035

3136
Full guides and the API reference live at the
3237
[project documentation site](https://DiogoRibeiro7.github.io/ssspx/).
3338
Algorithmic details are covered in the
34-
[BMSSP design notes](docs/design/ssspx.md), and key tradeoffs are tracked in
39+
[BMSSP design notes](docs/design/ssspx.md), and key trade-offs are tracked in
3540
[Architecture Decision Records](docs/decisions/).
3641

3742
## Stability policy
3843

3944
Public modules and classes are listed in our
4045
[API stability policy](docs/policy/api.md). Deprecated names emit warnings and
41-
are removed after the stated ``remove_in`` release.
46+
are removed after the stated `remove_in` release.
4247

4348
## Contributing
4449

@@ -63,11 +68,10 @@ Install with NumPy extras:
6368
poetry install -E numpy-backend
6469
```
6570

66-
The DOI above is a placeholder. After your first release, run `python tools/update_citation.py <doi>` to update this citation and CITATION.cff.
67-
6871
---
6972

7073
## Quick start (Python)
74+
7175
```python
7276
>>> from ssspx import Graph, SSSPSolver, SolverConfig
7377
>>> G = Graph.from_edges(4, [(0, 1, 1.0), (1, 2, 2.0), (0, 2, 4.0), (2, 3, 1.0)])
@@ -148,7 +152,7 @@ G_np = NumpyGraph.from_edges(3, edges)
148152
res = SSSPSolver(G_np, 0).solve()
149153
```
150154

151-
`NumpyGraph` is dropin because the solver only needs `G.n` and iteration over `G.adj[u] -> (v, w)`.
155+
`NumpyGraph` is drop-in because the solver only needs `G.n` and iteration over `G.adj[u] -> (v, w)`.
152156

153157
---
154158

@@ -158,7 +162,7 @@ res = SSSPSolver(G_np, 0).solve()
158162
poetry run python -m ssspx.bench
159163
```
160164

161-
This uses a small default graph set; provide ``--sizes`` to benchmark custom
165+
This uses a small default graph set; provide `--sizes` to benchmark custom
162166
graphs. Treat results as sanity checks. For serious evaluations, pin seeds and
163167
sizes and run multiple trials.
164168

@@ -200,39 +204,39 @@ track the upstream resolution.
200204

201205
---
202206

203-
## Versioning, releases & archiving (optional)
204-
205-
Configured for **semantic‑release** with Conventional Commits (Angular style). On pushes to `main`, it bumps the version, updates `CHANGELOG.md`, and creates a GitHub Release.
207+
## Versioning, releases & archiving
206208

207-
To mint a DOI, enable the repository at [Zenodo](https://zenodo.org/account/settings/github/). After the first tagged release, Zenodo will archive it and assign a DOI. Replace the badge at the top of this README with the issued DOI.
209+
Configured for **semantic-release** with Conventional Commits (Angular style). On pushes to `main`, it bumps the version, updates `CHANGELOG.md`, and creates a GitHub Release.
208210

209-
Guidance on publishing to PyPI and preparing a conda-forge feedstock lives in the [Publishing how-to](docs/howto/publish.md).
211+
Releases are archived on **Zenodo**. The latest release DOI is **[10.5281/zenodo.17381998](https://doi.org/10.5281/zenodo.17381998)** (badge at the top).
210212

211213
Common prefixes: `feat:`, `fix:`, `perf:`, `refactor:`, `docs:`, `test:`, `chore:`.
212214

213215
---
214216

215217
## Cite this work
216218

217-
If you use `ssspx` in academic work, please cite it using the metadata in
218-
[CITATION.cff](CITATION.cff) or the following BibTeX entry:
219+
If you use `ssspx` in academic work, please cite:
220+
221+
**The algorithmic paper**
222+
223+
> Duan, R., Mao, J., Mao, X., Shu, X., & Yin, L. (2025). *Breaking the Sorting Barrier for Directed Single-Source Shortest Paths.* arXiv:2504.17033.
224+
225+
**This software**
219226

220227
```bibtex
221228
@software{ribeiro_ssspx_2025,
222229
author = {Ribeiro, Diogo},
223-
title = {ssspx},
224-
year = {2024},
225-
doi = {10.5281/zenodo.0000000},
226-
url = {https://github.com/DiogoRibeiro7/ssspx},
230+
title = {ssspx — Production-grade Single-Source Shortest Paths (Python)},
231+
year = {2025},
232+
doi = {10.5281/zenodo.17381998},
233+
url = {https://github.com/DiogoRibeiro7/bmssp},
227234
publisher = {Zenodo}
228235
}
229236
```
230237

231-
The DOI above is a placeholder. After your first release, run `python tools/update_citation.py <doi>` to update this citation and CITATION.cff.
232-
233238
---
234239

235240
## License
236241

237242
MIT — see `LICENSE`.
238-

mkdocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
site_name: ssspx
2-
repo_url: https://github.com/DiogoRibeiro7/bmssp-backhup
2+
repo_url: https://github.com/DiogoRibeiro7/bmssp
33
theme:
44
name: material
55
plugins:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "ssspx"
3-
version = "0.1.2"
3+
version = "0.1.3"
44
description = "Deterministic SSSP (BMSSP-style) with optional constant-outdegree transform and switchable frontier"
55
authors = ["Diogo Ribeiro <[email protected]>"]
66
license = "MIT"

0 commit comments

Comments
 (0)