# HPCI v5 再計算パッケージ

6実作品の112曲を対象とする2026年9月11日版です。データ利用条件は[CC BY 4.0](https://creativecommons.org/licenses/by/4.0/)。人物同定の根拠は `aliases.csv` と `identity-review-v5.csv` にあります。入力の `identity_source_urls` は今回の人物同定の照合先であり、作品全体のクレジットを網羅する出典一覧ではありません。

`works` は Take Care / Views / Scorpion / For All the Dogs / GNX / 10 Til' Midnight の6作品だけです。合成例は `examples/` に入力と結果を分離しています。

## 独立した再現検証

索引 `index.json` の `files[].name` と同じ相対パスで全ファイルを保存してください。Python 3.9以降・標準ライブラリのみで動きます。元の計算モジュールは使いません。

```sh
python3 reproduce_v5.py --root .
```

URLからの照合は、この版の配布ファイルがURLに揃った後に実行できます。

```sh
python3 reproduce_v5.py --url https://hiphopnewscs.jp/data/hpci/
```

入力＋aliasから独立してC/R/D/S/RP/Jaccardを計算し、JSONの表示値、本文表の値、全配布ファイルのSHA-256を確認します。`checks_passed: true` が一致を示します。URLモードはファイル取得を行うだけです。

## 通常の計算コード

計算自体はPython標準ライブラリのみで動きます。パッケージのルートから実行します。出力先は自分で指定した `calculated/` です。

```sh
python3 src/compute_hpci.py --album take_care --csv inputs/take_care_input.csv --aliases aliases.csv --out-json calculated/take_care.json --out-csv calculated/results.csv
python3 src/compute_hpci.py --album gnx --csv inputs/gnx_input.csv --aliases aliases.csv --out-json calculated/gnx.json --out-csv calculated/results.csv
```

他の4作品も `--album` と入力ファイル名を各slugに変更して計算できます。本文のSHA表は算出・読込・図2ファイルと本人alias定義の5コード、および `aliases.csv` の6点です。索引にはこれらを含む全配布ファイルの指紋があります。

## 図の再生成

描画に使った環境はPython 3.14、Matplotlib 3.11.1、NumPy 2.5.3です。計算値はPython 3.9でも照合できます。ピクセルの同一性はフォントや描画環境にも依存します。

```sh
python3 -m venv .venv
.venv/bin/python -m pip install matplotlib==3.11.1 numpy==2.5.3
.venv/bin/python src/generate_comparison_chart.py --albums take_care,gnx --results-dir results --out-png calculated/comparison.png --out-base64 calculated/comparison-base64.txt
.venv/bin/python src/generate_chart.py --overview --out-png calculated/overview.png
.venv/bin/python src/generate_chart.py --reading-guide --out-png calculated/reading-guide.png
```

表示は共通の `format_value` による小数第2位までのROUND_HALF_UP（3.125→3.13）です。中間値は表示桁に丸めず、JSON内の数値と `display` 文字列を分けています。

RPは曲間の重なりの補助指標です。固定メンバーの確認には入力CSV、または作品別結果の `track_credit_sets` を読み、RP・平均Jaccardは補助情報として使います。
