Note
The duplicated sample_id issue was fixed on 2026-09-08
Datasets published between 2026-04-01 and 2026-09-08 contain duplicated
sample_id values: the same sample_id can refer to samples belonging to
different papers. Joining tables on sample_id alone mixes data from
unrelated papers. In the 2026-09-03 snapshot, 10.4% of sample_id values
were affected.
If you are using a dataset from that period, please replace it. If you
cannot, join on the pair (SID, sample_id), which is unique even in the
affected copies. The same applies to (SID, figure_id).
Google Drive and the GitHub Releases of this repository are already corrected. Monthly archives on Figshare will include the fix from 2026-10-01.
Identifiers that originated in the public Starrydata database were not changed, so existing analyses using those values remain valid. Only identifiers imported from internal databases were reassigned, and uniqueness constraints have been added to the database so that this cannot recur.
Questions: MATO.Tomoya@nims.go.jp
Daily per-project splits of the Starrydata2 dataset, with a browsable download page at https://starrydata.github.io/starrydata_datasets/.
Historically this repository also hosted the raw CSVs (from 2019/7/11 until 2022/12/22); those older archives are still available via git tags.
| Repository | Description | Update schedule | Period |
|---|---|---|---|
| Google Drive | Latest full dataset (single ZIP) | Daily at 02:00 JST | from 2024/06/13 |
| GitHub Releases (this repo) | Per-project splits + full dataset, as .csv.gz |
Daily around 03:00 JST | from 2026/06/25 |
| Figshare | Archival snapshots | Monthly, on the 1st at 04:00 JST | from 2022/12/22 |
| GitHub tags (this repo) | Legacy snapshots | As needed | 2019/7/11 – 2022/12/22 |
All schedules above are driven by cron jobs on the batch server. The Google Drive upload happens at the end of the 02:00 dataset job, so the ZIP is usually in place well before the 03:00 split workflow of this repository runs.
Every day the Daily split & release workflow:
- Downloads the latest full ZIP from Google Drive (
starrydata_dataset.zip). - Runs
scripts/split.py, which produces per-project files by looking at each row ofstarrydata_curves.csvand reading itsproject_namesJSON array. - Publishes two GitHub Releases:
data-YYYYMMDD— the dated snapshot.latest— recreated to always mirror the newest snapshot.
- Commits
docs/manifest.jsontomaster, which triggers a GitHub Pages redeploy.
Membership is defined from curves outward, so the counts match starrydata.github.io/links/:
- curves: rows whose
project_namesarray contains the project. - papers: rows in
starrydata_papers.csvwhoseSIDappears in the project's curves. - samples: rows in
starrydata_samples.csvwhose composite key(SID, sample_id)appears in the project's curves (sample_idalone is paper-local, not globally unique). - figures: number of distinct non-empty
figure_idvalues in the project's curves.
Every file lives under a stable URL that always points at the newest snapshot:
https://github.com/starrydata/starrydata_datasets/releases/latest/download/<FILENAME>
| File | Contents |
|---|---|
all_papers.csv.gz |
Every paper |
all_samples.csv.gz |
Every sample |
all_curves.csv.gz |
Every curve |
For each project (e.g. ThermoelectricMaterials, BatteryMaterials, MagneticMaterials, OrganicThermoelectricMaterials, …), three files:
<Project>_papers.csv.gz<Project>_samples.csv.gz<Project>_curves.csv.gz
The canonical list of available projects and files is manifest.json (see below).
import pandas as pd
BASE = "https://github.com/starrydata/starrydata_datasets/releases/latest/download"
curves = pd.read_csv(f"{BASE}/ThermoelectricMaterials_curves.csv.gz", compression="gzip").csv.gz is gzipped — decompress first (gunzip <file> on macOS/Linux, or 7-Zip on Windows) and open the resulting .csv.
docs/manifest.json is regenerated on every run and mirrored to https://starrydata.github.io/starrydata_datasets/manifest.json. Its schema:
The project list is dynamic — every project name that appears in any curve's project_names array shows up here. No hardcoded allowlist.
Other pages on starrydata.github.io consume this same manifest.
Web UI: Run workflow.
CLI:
gh workflow run "Daily split & release" -R starrydata/starrydata_datasetsThe workflow has concurrency: daily-split so a manual run and the scheduled run will serialize, not collide.
The workflow opens an issue titled Daily split pipeline failed on the first failure, comments on it if it fails again, and auto-closes it on the next success. While an incident is open, the always-fresh full ZIP is still available directly from Google Drive.
.github/workflows/daily-split.yml # daily schedule + workflow_dispatch
scripts/
split.py # ZIP → per-project CSV.gz + manifest.json
requirements.txt
docs/
index.html # Pages UI, renders from manifest.json alone
manifest.json # latest snapshot metadata (auto-committed)
- Fixed the duplicated
sample_idissue. Integer identifiers (sample_id,figure_idandSID) are now unique across the whole database. Verified on the 2026-09-08 15:49 snapshot: 105,999 samples with 105,999 distinctsample_id, 56,489 papers with 56,489 distinctSID, and nosample_idorfigure_idinstarrydata_curves.csvreferring to more than one paper. - Identifiers that originated in the public database were not changed, so existing analyses using those values remain valid. Only identifiers imported from internal databases were reassigned. Uniqueness constraints were added to the database so that this cannot recur.
- Google Drive and the GitHub Releases of this repository are corrected as of this date. Figshare archives will include the fix from the monthly upload on 2026-10-01.
- The interim
starrydata_dataset_renumbered.zipon Google Drive has been removed; use the regularstarrydata_dataset.zip.
- [IMPORTANT] Datasets published between 2026-04-01 and 2026-09-08 contain duplicated
sample_idvalues — the samesample_idcan refer to samples from different papers. Joining tables onsample_idalone will mix unrelated data. Workaround: join on(SID, sample_id), which is unique; the same applies to(SID, figure_id). In the 2026-09-03 snapshot, 10.4% ofsample_idvalues were affected. Fixed on 2026-09-08 (see above). - Cause: on 2026-03-31 several internal databases were merged into the public database. Paper identifiers (
SID) were reassigned correctly, butsample_idandfigure_idwere carried over from the source databases without reassignment, so they collided with identifiers already in use. The underlying data was never corrupted — curves reference samples and figures by object ID internally, so the problem appeared only in the exported CSV files, where the integer identifiers serve as join keys.
- Added UTF-8 BOM to all CSV outputs so files open correctly in Excel without character corruption.
- Rebuilt the Pages listing and Starrydata
linkspage to read directly from this repo's dailymanifest.json. New projects (e.g.OrganicThermoelectricMaterials) now appear the day they're added to the DB, instead of waiting for the monthly Figshare mirror. Addedtotalsand per-projectcounts(includingfigures) tomanifest.json.
- Added per-project dataset downloads at https://starrydata.github.io/starrydata_datasets/. Each project can now be downloaded separately as
papers/samples/curvesfiles, alongside the full unsplit dataset. - Compressed all downloads as gzipped CSV (
.csv.gz) to reduce file size. Load directly withpandas.read_csv(url, compression="gzip")or decompress before opening in Excel.
- Add
figure_namefield to curve dataset.
- Excluded datasets with the data type "calculation" in the descriptor from the sample dataset and curve dataset. As of 2024/07/01 12:00:01 UTC+0900 (JST), there were 346 samples.
- Changed dataset file name prefix from
alltostarrydata. For example,all_curves.csvis nowstarrydata_curves.csv. - Changed the file extension of the paper dataset from JSON to CSV for availability.
- Reduced the columns in the paper dataset to only those necessary for citation, reducing the file size from 400 MB to about 50 MB.
- Added
project_namesandcreated_atto the paper dataset.
- The latest datasets are now uploaded to Google Drive.
- Fixed the character corruption issue when users open
all_samples.csvin certain applications, such as Excel, by adding a BOM. - The upload schedule to Figshare has been changed from daily to monthly.
- Fixed the incorrect timestamp format in the dataset. For example, corrected
"2024-05-17 00:00:01 JST+0900"to"2024-05-17 00:00:01 GMT+0900 (JST)".
- The values in the XY value list were originally strings enclosed in double quotations. These double quotations were removed for easier analysis.
- e.g.
["299.8597", "324.8683"]→[299.8597, 324.8683]
- Added
updated_at,created_at, andcomposition_detailstoall_samples.csv.
- The dataset location was changed from this GitHub repository to Figshare.
{ "generated_at": "2026-07-17T08:47:07+00:00", // when this manifest was built (UTC ISO) "db_snapshot": "2026-07-17 16:58:34 UTC+0900 (JST)", // upstream Starrydata DB snapshot time "source_zip": "starrydata_dataset.zip", "totals": { // Whole-DB counts (match links page definitions) "papers": 17381, // unique non-empty SID in curves ("papers with data") "figures": 60228, // unique non-empty figure_id in curves "samples": 105260, // total rows in starrydata_samples.csv "curves": 234029 // total rows in starrydata_curves.csv }, "all_data": { "papers": { "filename": "all_papers.csv.gz", "rows": 56473, "bytes": 9460869, "sha256": "..." }, "samples": { "filename": "all_samples.csv.gz", "rows": 105260, "bytes": 4675538, "sha256": "..." }, "curves": { "filename": "all_curves.csv.gz", "rows": 234029, "bytes": 43423914, "sha256": "..." } }, "projects": { "ThermoelectricMaterials": { "papers": { "filename": "...", "rows": ..., "bytes": ..., "sha256": "..." }, "samples": { "filename": "...", "rows": ..., "bytes": ..., "sha256": "..." }, "curves": { "filename": "...", "rows": ..., "bytes": ..., "sha256": "..." }, "counts": { "papers": ..., "figures": ..., "samples": ..., "curves": ... } } } }