Data & methods
The dataset
Everything behind this site is open, schema-validated JSON, and every figure and number is generated from it by a re-runnable pipeline. Take the files and check the work.
Coverage, honestly
The catalogue is a curated sample, not a census, and it was assembled outward from a well-documented metal core. That construction plausibly biases every strand comparison drawn from it, so the numbers below are worth reading before the findings are.
| Genre strand | Artists | With event data | Coverage |
|---|---|---|---|
| Mainstream Rock | 13 | 5 | 38% |
| Progressive Rock/Metal | 2 | 2 | 100% |
| Heavy Metal | 12 | 4 | 33% |
| Alternative/Indie | 16 | 11 | 69% |
| Pop | 7 | 1 | 14% |
| Hip-Hop/Rap | 8 | 1 | 13% |
| Folk & Folk Fusion | 5 | 4 | 80% |
Download the data
The generated outputs are below. The source records — one JSON file per artist and per event — live in the repository.
- bmpn-multilayer.json91 KB
The full network: every act, every edge, the layer each edge came from and the evidence behind it.
- bmpn-communities.json18 KB
Louvain communities for the observed and full passes, with modularity.
- influence-network.json123 KB
Bipartite influence graph: acts, the influences they cite, the evidence and stated confidence.
- bmpn-metrics.json62 KB
Centralities, density, modularity and community structure across all three analytical passes.
- bmpn-centrality.csv4 KB
Per-act degree, weighted degree, betweenness, eigenvector and community.
- influence-citations.csv18 KB
One row per normalised citation, with kind, confidence and whether a source was named.
- concert-classification.csv5 KB
Every event, its typology class, and the rule that classified it.
- temporal-summary.json5 KB
Formations and releases by decade, strand lifecycles, release cadence.
- data-quality-report.json4 KB
Schema validation, referential integrity and every open hygiene warning.
- artist.schema.json5 KB
JSON Schema every artist record validates against.
- concert.schema.json3 KB
JSON Schema every event record validates against.
How the numbers are made
Seven Python scripts, run in order. Every figure reads from the computed outputs rather than recomputing its own statistics, so a chart can never disagree with a number in the paper. Two consecutive runs leave the tree byte-identical.
pip install networkx matplotlib jsonschema scipy python3 analysis/scripts/validate_data.py # schema + referential integrity python3 analysis/scripts/build_bmpn.py # network layers python3 analysis/scripts/analyze_bmpn.py # communities + centrality python3 analysis/scripts/temporal_analysis.py # decade curves python3 analysis/scripts/concert_ecosystem.py # typology python3 analysis/scripts/influence_analysis.py # citations python3 analysis/scripts/make_visualizations.py # figures
Two conventions the data follows
Null over invention
Where a value is genuinely undocumented the field is null and the record is tagged needs-verification. The schema permits null on formation years and on discography years and labels for exactly this reason. A plausible guess is worse than an admitted gap.
Record the gap, don’t fill it
The 2016 Joy Bangla Concert is catalogued with an empty lineup and a note explaining why. Inferring its bill from adjacent years would have produced clean-looking data and a false network.
What this project cannot do
- No audience data of any kind
No streaming, playlist or engagement signals — blocked pending Spotify Web API and YouTube Data API v3 credentials, which the project owner must register. Every listener claim on this site is inferred from co-billing and from what artists and journalists said.
- No audio-feature analysis
Every statement about tempo, production or arrangement rests on documented description and discographic sequence, not on measured signal.
- Measurable documentation bias
The hip-hop strand shows one political-content marker against six for alternative rock, which contradicts the academic literature. That is an artefact of how the records were written, and it is reported as one rather than as a finding.
- Geographic concentration
19 of 23 events are in Dhaka. The ecosystem outside the capital is nearly invisible in this data.
The network currently carries 179 edges over 63 acts, 153 of them observational. The single change that would unblock the most is streaming API credentials — they gate the preference network, sound-evolution measurement and the whole audience side of the study. See the roadmap.