Manual / Chapter 4

ダウンロード・API

Starrydata2 のデータは、(1) 個別 Sample / Figure 単位の Web ダウンロード、 (2) 公式 Datasets スナップショット(3 つの CSV ファイル)、 (3) REST API、の 3 経路で取得できます。商用・非商用ともに無償です。

4.1 Web からの個別ダウンロード

論文一覧の各論文カードに csv / json リンクが並んでいます。クリックするとその論文に紐付くカーブデータがダウンロードできます。Data ページ内の「Get Data」「Copy to Clipboard」も同様に少量データ取得に便利です。

Acquired Data ダイアログの Copy to Clipboard / Download .CSV
図 4-1: StarryDigitizer / WebPlotDigitizer の Acquired Data ダイアログ。「Copy to Clipboard」「Download .CSV」「Graph in Plotly」を選べる。Format で桁数や区切り文字も調整可能。

4.2 公式 Datasets スナップショット(推奨)

機械学習や統計解析で 全件データを扱う場合は、グローバルナビの Datasets から公開されるスナップショットを使うのが最も効率的です。フォルダには 3 つの CSV と README.md、スナップショット時刻 (db_snapshot.txt) が同梱されます。

ファイル 主なカラム 役割
starrydata_papers.csv SID, DOI, URL, issued, author, title, container_title, volume, issue, page, ISSN, publisher, project_names, created_at 論文の書誌情報(1 行 = 1 論文)
starrydata_samples.csv sample_name, sample_id, composition, composition_details, SID, DOI, sample_info(JSON), created_at, updated_at 試料情報(1 行 = 1 試料)。sample_info は JSON で領域別の属性を含む。
starrydata_curves.csv SID, DOI, composition, sample_id, figure_id, figure_name, prop_x, prop_y, unit_x, unit_y, x(JSON 配列), y(JSON 配列), project_names, comments, created_at, updated_at カーブデータ(1 行 = 1 カーブ)。x / y は同長の JSON 配列文字列。
結合キー: 3 ファイルの結合は SID(papers ⇔ samples ⇔ curves)と sample_id(samples ⇔ curves)が基本キー。figure_id は同じ図に属する複数 Curve をまとめるのに使える(Figure 単独のテーブルは無い)。

sample_info の構造

sample_info{descriptor: {category: "", comment: "", extracted: ""}} 形式の JSON 文字列。領域ごとの descriptor 例:

  • 熱電 (ThermoelectricMaterials): MaterialFamily, DataType, Form, FabricationProcess, ElectricalMeasurement, ThermalMeasurement, Purity, RelativeDensity, GrainSize ほか
  • 磁性 (MagneticMaterials): DataType, Form, FabricationProcess, MagneticMeasurement, saturation magnetization, coercivity, remanence magnetion, magnetic field, Measurement temperature ほか
  • 電池 (BatteryMaterials): Cathode active material, Anode active material, Solvent 1/2/3, Solute 1/2/3, Electrolyte Additive 1/2/3, Current density, Upper/Lower voltage limit, Cell type ほか

4.3 領域別の主要物性

熱電: Temperature / Z-Seebeck coefficient / Electrical resistivity / Electrical conductivity / Thermal conductivity / Power factor / ZT / Carrier mobility / Hall coefficient

磁性: Temperature / Magnetic field / Magnetic field strength (H) / Magnetization / Magnetization per weight / Magnetization per volume / Magnetization (Bohr)

電池: C rate / Cycle number / Voltage / Discharge capacity / Charge capacity

4.4 Python での読み込み例

CSV 3 ファイルを pandas で結合して扱う基本形:

import json
import pandas as pd

# 3 つの CSV を読む
papers  = pd.read_csv("starrydata_papers.csv")
samples = pd.read_csv("starrydata_samples.csv")
curves  = pd.read_csv("starrydata_curves.csv")

# x / y は JSON 配列文字列 → list へ
curves["x"] = curves["x"].map(json.loads)
curves["y"] = curves["y"].map(json.loads)

# 試料情報 + 論文情報を Curve に結合(SID と sample_id を使う)
df = (
    curves
    .merge(samples[["sample_id", "sample_name", "sample_info"]], on="sample_id", how="left")
    .merge(papers[["SID", "title", "issued"]],                   on="SID",       how="left")
)

# 熱電プロジェクトの Seebeck 係数だけ抽出
seebeck = df[
    df["project_names"].str.contains("ThermoelectricMaterials", na=False) &
    (df["prop_y"] == "Seebeck coefficient")
]
print(seebeck[["SID", "composition", "prop_x", "unit_x", "unit_y"]].head())

展開して長い形式(1 点 = 1 行)にしたい場合:

long = seebeck.explode(["x", "y"]).rename(columns={"x": "x_value", "y": "y_value"})
long.to_csv("seebeck_long.csv", index=False)
単位: unit_x / unit_y は SI 基本単位の積形式(例 V*K^(-1))。表示用に整形したい場合は自前で正規表現か sympy を使う。

4.5 REST API

個別 Sample / Figure / Paper をプログラムから取得する場合は REST API も使えます。認証不要、レスポンスは JSON。

# 個別オブジェクト
GET https://starrydata.nims.go.jp/starrydata2/api/paper/{SID}
GET https://starrydata.nims.go.jp/starrydata2/api/sample/{sample_id}

# 属性を絞った取得
GET https://starrydata.nims.go.jp/starrydata2/api/paper/{SID}/title
GET https://starrydata.nims.go.jp/starrydata2/api/sample/{sample_id}/composition

# 組成(原子)で検索(AND がデフォルト、OR にしたい場合は末尾 ,or)
GET https://starrydata.nims.go.jp/starrydata2/api/paper/search?atom=Bi,Te
GET https://starrydata.nims.go.jp/starrydata2/api/sample/search?atom=Bi,Te
GET https://starrydata.nims.go.jp/starrydata2/api/sample/search?atom=Bi,Te,or
レート制限: 公開された明確な上限はありませんが、機械学習向けの大量取得は公式 Datasets スナップショット(4.2)の利用を強く推奨します。短時間に大量リクエストを送ると一時的にブロックされる場合があります。

4.6 NIMS MDR スナップショット(引用用途)

引用可能な凍結スナップショットが NIMS Materials Data Repository (MDR) でも公開されています。バージョン番号と取得日が永続的に紐付くため、研究の再現性のために MDR スナップショットの利用を推奨します。

4.7 ライセンスと引用

Starrydata2 のデータは商用・非商用を問わず無償で利用できます。論文や報告書で利用する場合は、引用すべき論文の一覧を 「引用について」ページにまとめています。

  • プロジェクト全体を引用: /cite/ を参照
  • バージョン固定で引用: NIMS MDR スナップショット(バージョン番号と取得日を明記)
  • 個別データの場合: 元論文 (CrossRef DOI) も併せて引用