Docs
dynamic-pdb is the command line client for the registry. Use it to deposit datasets: entries, models, their files, and the metrics measured against them.
Installation
Install the client:
curl -fsSL https://dynamicpdb.com/install.sh | bashmacOS and Linux, amd64 and arm64.
Authentication
Depositing requires an account. Log in with the login command:
dynamic-pdb loginThe command prints a URL and a one-time code; enter the code in your browser to authorize the client through GitHub.
To log out:
dynamic-pdb logoutCreate a manifest
A manifest describes what to upload: the entries, their models, the artifacts belonging to each, and where metadata and metrics are read from. Generate a draft from a data folder:
dynamic-pdb upload manifest init ./my-datasetThis writes dynamic-pdb.manifest.yaml to the current directory. Use --out to write it elsewhere.
version: 1
data_root: .
filter:
include:
- 9ZZZ
entries:
- pdb_id: "{{ pdb_id }}"
name: "{{ pdb_id }} room-temperature refinement"
metadata:
resolution:
- source:
files:
- metadata/{{ pdb_id }}.json
extract:
json:
field: entry.resolution
artifacts:
- id: fasta
source:
files:
- sequences/{{ pdb_id }}.fasta
level: L0
models:
- id: model_1
name: "{{ pdb_id }} refined model"
model_type: Single Conformer
purpose: Refinement
artifacts:
- id: coordinates
source:
files:
- models/{{ pdb_id }}_model.pdb
level: L2
- id: reflections
source:
files:
- models/{{ pdb_id }}_model.mtz
level: L1
metrics:
r_free:
- source:
artifact: coordinates
extract:
pdb:
field: REMARK 3 FREE R VALUEWhich entries get uploaded
{{ pdb_id }} is a wildcard for a four-character PDB ID. The client walks data_root, and every file that matches becomes an entry:
manifest: models/{{ pdb_id }}_model.pdb
on disk: models/5rgd_model.pdb → entry 5RGD
models/6zbx_model.pdb → entry 6ZBXArtifacts
Every artifact needs a source and a level:
artifacts:
- id: coordinates
source:
files:
- models/{{ pdb_id }}_model.pdb
level: L2level is L0 raw source, L1 processed source, L2 structural models or L3 evaluations. Artifacts listed on the entry belong to the dataset; artifacts listed inside a model belong to that model.
Metadata and metrics
From JSON, by dotted path:
metadata: # title, method, resolution, organism, space_group
resolution:
- source:
files:
- metadata/{{ pdb_id }}.json
extract:
json:
field: entry.resolutionFrom a PDB file, by REMARK field:
metrics: # r_work, r_free, clashscore, ramachandran_outliers
r_free:
- source:
artifact: coordinates # an artifact declared above, by id
extract:
pdb:
field: REMARK 3 FREE R VALUEFrom a CSV or TSV:
extract:
csv: # or tsv:
column: r_free
where:
column: pdb_id
equals: "{{ pdb_id }}"From an mmCIF tag:
extract:
mmcif:
field: _refine.ls_R_factor_R_freeUpload files
Pass the manifest to upload start:
dynamic-pdb upload start dynamic-pdb.manifest.yaml--concurrency <n>— entries in parallel. Default 1.--upload-part-concurrency <n>— parts per file in parallel. Default 1.--include <pdb-id>[,...]— upload only these IDs.--skip <pdb-id>[,...]— leave these IDs out.