upload¶
Upload a TSP package to Zenodo.
Synopsis¶
Arguments¶
| Argument | Description |
|---|---|
TSP_PATH |
Path to TSP package directory |
Options¶
| Option | Required | Default | Description |
|---|---|---|---|
--token |
Yes | Zenodo API token (or ZENODO_TOKEN env var) |
|
--production |
No | Upload to production Zenodo (default: sandbox) | |
--publish |
No | Publish after upload (assigns DOI) | |
-q, --quiet |
No | Suppress progress output |
Examples¶
Test on Sandbox¶
# Create draft (review before publishing)
tsp-maker upload /my-dataset --token $ZENODO_SANDBOX_TOKEN
# Create and publish
tsp-maker upload /my-dataset --token $ZENODO_SANDBOX_TOKEN --publish
Production Upload¶
Production Uploads are Permanent
Production uploads with --publish create permanent records with real DOIs.
Always test on sandbox first!
Using Environment Variables¶
Workflow¶
- Draft deposit created on Zenodo
- Files uploaded (flattened structure)
- Metadata set from datapackage.json
- Published (if
--publishflag)
File Mapping¶
Zenodo doesn't support subdirectories, so files are flattened:
| TSP Path | Zenodo Name |
|---|---|
datapackage.json |
datapackage.json |
metadata.parquet |
metadata.parquet |
structures/batch_001.tar.gz |
structures_batch_001.tar.gz |
predictions/scores.parquet |
predictions_scores.parquet |
predictions/pae/batch_001.tar.gz |
pae_batch_001.tar.gz |
Zenodo Metadata¶
Metadata is automatically extracted from datapackage.json:
| TSP Field | Zenodo Field |
|---|---|
title |
Title |
description |
Description |
contributors |
Creators |
licenses |
License |
Additional keywords are added based on predictors used.
Output¶
On success, the command displays:
API Token Setup¶
- Go to Zenodo (or sandbox.zenodo.org)
- Settings → Applications → Personal access tokens
- Create token with
deposit:writescope
Separate Tokens
Use different tokens for sandbox and production:
Error Handling¶
Common errors:
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Invalid token | Check token is correct and has deposit:write scope |
| 400 Bad Request | Invalid metadata | Check datapackage.json is valid |
| 413 Request Entity Too Large | File too large | Zenodo has 50GB limit per deposit |