Skip to content

Commit 7f350bc

Browse files
Mircusclaude
andcommitted
Repo hygiene: version sync, changelog, archive stale docs, README update
- Bump pyproject.toml to 0.1.2 (was still 0.1.0) - Add v0.1.1 and v0.1.2 changelog entries - Archive stale CORE-manual.md and FMT-SR-manual.md to docs/internal/archive (described old imports, deps, and architecture that no longer match the repo) - Remove empty src/__init__.py (src/she/ is the canonical package) - Add "Repo status" table to README (version, canonical path, maturity, stable vs experimental surface) - Update README examples table with notebooks - Tighten worked-example narrative: explicitly describe what each score is and that these are heuristics, not topological invariants Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 715f097 commit 7f350bc

File tree

6 files changed

+84
-12
lines changed

6 files changed

+84
-12
lines changed

CHANGELOG.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,52 @@
11
# Changelog
22

3+
## v0.1.2 — Export, Decay Windows, Real Data (2026-03-26)
4+
5+
### Added
6+
7+
- **Result export**`ranked_items_to_csv/json`, `bridges_to_csv/json`, `cohesion_to_csv/json`
8+
for feeding SHE outputs into pandas, dashboards, or downstream tools
9+
- **Decay-weighted temporal accumulation**`decay_window()` applies exponential
10+
decay (configurable half-life) so older interactions fade rather than vanish at
11+
a hard boundary
12+
- **Real public dataset notebook**`examples/eu_email_analysis.ipynb` analyses the
13+
SNAP EU Email Dept3 network (20 most-active members, 812 interactions, 27 months)
14+
with Louvain community detection, temporal bridge/cohesion tracking, and matplotlib
15+
plots
16+
- **Bundled dataset**`data/eu_email_dept3.jsonl` (pre-processed from SNAP)
17+
18+
### Tests
19+
20+
- 41 tests passing (10 new: 6 export, 4 decay window)
21+
22+
---
23+
24+
## v0.1.1 — Modeling Layer, Social Analysis, Temporal (2026-03)
25+
26+
### Added
27+
28+
- **`SHEHyperstructure`** — decorated, weighted higher-order relational structure
29+
with entity attributes, typed relations, and arbitrary per-simplex metadata
30+
- **Social analysis**`rank_diffusers`, `rank_entity_diffusers`,
31+
`rank_simplex_diffusers`, `find_bridge_simplices`, `group_cohesion`,
32+
`rank_influencers` (graph centrality vs simplex diffusion contrast)
33+
- **Bulk ingestion**`from_records`, `from_csv`, `from_jsonl`
34+
- **Temporal windowing**`window()` and `rolling_windows()` for time-sliced analysis
35+
- Worked use case: `examples/social_media_diffusers.py`
36+
- Temporal notebook: `examples/temporal_diffusion_analysis.ipynb`
37+
38+
### Fixed
39+
40+
- Diffusion scoring: switched to rank-percentile normalisation with `lambda=1.0`
41+
(previously scores saturated at 1.0 due to identity-term dominance)
42+
- `analyze_diffusion` no longer truncates to top 10 internally
43+
44+
### Tests
45+
46+
- 31 tests across 7 files (up from 8 in v0.1.0)
47+
48+
---
49+
350
## v0.1.0 — Research Preview (2025)
451

552
First public release of SHE as a small, runnable research preview.

README.md

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,17 @@ diffusion analysis**.
1414
This is a **Research Preview** released under the non-commercial
1515
[HNCL v1.0](LICENCE.md) license (not OSI open-source).
1616

17+
## Repo status
18+
19+
| | |
20+
|---|---|
21+
| **Version** | 0.1.2 |
22+
| **Canonical package** | `src/she/` — install with `pip install -e .`, import as `import she` |
23+
| **Maturity** | Research preview — API may change between releases |
24+
| **Stable surface** | `SHEHyperstructure`, social analysis functions, temporal windowing, export |
25+
| **Experimental** | `src/core/` (legacy monolith, convolution), `src/morse/` (discrete Morse) — not part of the public API |
26+
| **Tests** | 41 passing (CI on Python 3.10–3.12) |
27+
1728
## Why SHE?
1829

1930
Standard graph analysis collapses every interaction to a pairwise edge.
@@ -34,23 +45,30 @@ Use SHE when:
3445
SHE does not replace graph libraries. It adds a layer for the cases where
3546
graphs are not enough.
3647

37-
## What v0.1 includes
48+
## What v0.1.x includes
3849

3950
**Modeling layer**
4051
- `SHEHyperstructure` — decorated, weighted higher-order relational object
41-
with entity attributes, typed relations, and bulk record ingestion
52+
with entity attributes, typed relations, and bulk ingestion (`from_csv`, `from_jsonl`)
4253

4354
**Social analysis**
4455
- `rank_diffusers` / `rank_entity_diffusers` / `rank_simplex_diffusers`
4556
- `find_bridge_simplices` — cross-community higher-order bridges
4657
- `group_cohesion` — structural cohesion scoring for candidate groups
4758
- `rank_influencers` — graph centrality vs. simplex diffusion comparison
4859

60+
**Temporal**
61+
- `window` / `rolling_windows` — hard time-range slicing
62+
- `decay_window` — exponential decay with configurable half-life
63+
64+
**Export**
65+
- `ranked_items_to_csv/json`, `bridges_to_csv/json`, `cohesion_to_csv/json`
66+
4967
**Core simplicial engine**
5068
- Simplicial-complex construction (wraps [TopoNetX](https://github.com/pyt-team/TopoNetX))
5169
- Graph-to-simplicial lifting via clique detection
5270
- Hodge-Laplacian spectral analysis and harmonic-form extraction
53-
- Diffusion centrality ranking
71+
- Diffusion centrality ranking (rank-percentile normalisation)
5472
- Minimal matplotlib visualisation
5573

5674
## Installation
@@ -88,27 +106,35 @@ for b in find_bridge_simplices(hs):
88106

89107
## Worked use case: social-media diffusers
90108

91-
`examples/social_media_diffusers.py` builds a two-community social scenario
109+
`examples/social_media_diffusers.py` builds a synthetic two-community scenario
92110
where a high-degree hub dominates graph centrality, but a cross-community
93-
triad is the actual diffusion engine. The example compares graph-only
94-
ranking with simplex-level analysis and shows where they disagree.
111+
triad carries more weight as a higher-order structure.
95112

96113
```bash
97114
python examples/social_media_diffusers.py
98115
```
99116

100117
Output highlights:
101-
- **Graph centrality** ranks the hub (u0) first.
102-
- **Bridge detection** surfaces the {u3, u5, u7} triad as the top
103-
cross-community structure.
104-
- **Group cohesion** scores the triad as structurally tight despite
118+
- **Graph centrality** (eigenvector on the 1-skeleton) ranks the hub (u0) first —
119+
it has the most and heaviest pairwise edges.
120+
- **Bridge detection** (heuristic: community-span x relation weight) surfaces the
121+
{u3, u5, u7} triad as the top cross-community structure — it spans both
122+
communities and carries high group weight.
123+
- **Group cohesion** (geometric mean of internal weight, pair density, and
124+
higher-order support) scores the triad as structurally tight despite
105125
containing no individually prominent member.
106126

127+
These are heuristic scores, not topological invariants. The point is that
128+
graph-only centrality never even sees group-level structures, while SHE makes
129+
them queryable.
130+
107131
## Examples
108132

109133
| Script | Description |
110134
|--------|-------------|
111135
| `examples/social_media_diffusers.py` | Graph vs. simplex ranking on a two-community scenario |
136+
| `examples/eu_email_analysis.ipynb` | Real-data notebook: SNAP EU Email network, temporal bridge/cohesion plots |
137+
| `examples/temporal_diffusion_analysis.ipynb` | Synthetic temporal scenario: bridge formation over three periods |
112138
| `examples/toy_triangle.py` | Smallest nontrivial complex — Hodge Laplacian printout |
113139
| `examples/social_group_lift.py` | Lift a small social graph to simplices via cliques |
114140
| `examples/group_diffusion_demo.py` | Weighted Karate Club diffusion analysis |
File renamed without changes.
File renamed without changes.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "she"
7-
version = "0.1.0"
7+
version = "0.1.2"
88
description = "Simplicial Hyperstructure Engine -- weighted simplicial-complex toolkit for higher-order relational modelling and Hodge diffusion analysis."
99
authors = [{name = "Holomathics"}]
1010
readme = "README.md"

src/__init__.py

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)