library(krt)
#> krt 0.1.0: author, validate, and export Key Resources Tables.
#> Start with new_krt(); see https://choxos.github.io/krt/krt is a standards orchestrator: a neutral core
schema plus a registry of output profiles. Exports are projections of
the core, not the source of truth.
Available profiles
krt_profiles()
#> name title license
#> 1 asap ASAP Key Resources Table profile CC-BY-4.0
#> 2 generic Generic FAIR profile GPL-3.0-only
#> 3 star-methods STAR Methods (Cell Press) interoperability profile GPL-3.0-only
#> official
#> 1 FALSE
#> 2 FALSE
#> 3 FALSE-
generic: the full core view (lossless working copy). -
asap: the six-column ASAP layout (assets under CC BY 4.0). -
star-methods: a three-column STAR Methods-style layout (interoperability rules only; no publisher template is bundled).
Project to the ASAP layout
project_profile(krt_example, "asap")[, c("RESOURCE TYPE", "IDENTIFIER", "NEW/REUSE")]
#> RESOURCE TYPE
#> 1 Antibody
#> 2 Experimental model: Cell line
#> 3 Software/code
#> 4 Dataset
#> 5 Experimental model: Organism/strain
#> 6 Protocol
#> IDENTIFIER NEW/REUSE
#> 1 Cat# AB152; RRID:AB_390204 reuse
#> 2 Cat# CRL-3216; RRID:CVCL_0063 reuse
#> 3 RRID:SCR_002285; https://imagej.net/software/fiji/ reuse
#> 4 https://doi.org/10.5281/zenodo.11111111 new
#> 5 RRID:IMSR_JAX:000664 reuse
#> 6 https://doi.org/10.17504/protocols.io.abcde123 newThe compound IDENTIFIER is composed from the typed
identifier fields, and import_asap() parses it back into
those fields on the way in.
Lossy fields
Exporting to a profile that folds structured fields into free text is reported:
mapping_lossy_fields(krt_example, "asap")
#> [1] "resource_id" "antibody_host" "antibody_clonality"
#> [4] "target" "notes" "cellosaurus_id"
#> [7] "authentication_method" "authentication_date" "mycoplasma_status"
#> [10] "organism" "taxon_id" "version"
#> [13] "language" "strain"Licensing and attribution
Profiles expose their licensing programmatically, and the ASAP profile carries the required CC BY 4.0 attribution.
krt_profile_info("asap")
#> <krt_profile> asap (v8)
#> ASAP Key Resources Table profile
#> license: CC-BY-4.0 | redistributable assets: yes | officially endorsed: no
#> columns: RESOURCE TYPE, RESOURCE NAME, SOURCE, IDENTIFIER, NEW/REUSE, ADDITIONAL INFORMATION
#> source: Aligning Science Across Parkinson's (doi:10.5281/zenodo.17917979)
krt_audit_licenses()[, c("component", "license", "redistributable")]
#> component license redistributable
#> 1 krt (R source code) GPL-3.0-only TRUE
#> 2 internal reference tables (R/sysdata.rda) GPL-3.0-only TRUE
#> 3 profile: asap CC-BY-4.0 TRUE
#> 4 profile: generic GPL-3.0-only TRUE
#> 5 profile: star-methods GPL-3.0-only TRUE
#> 6 inst/licenses/CC-BY-4.0.txt CC-BY-4.0 TRUE
cat(substr(krt_attribution("asap"), 1, 200))
#> # Attribution
#>
#> ## Source material
#>
#> **Title:** ASAP Key Resource Table Guide, FAQ, and Template
#> **Creator:** Aligning Science Across Parkinson's (ASAP)
#> **Source:** DOI [10.5281/zenodo.17917979](https:/This package is independently developed and is not an official ASAP product.
Round-trip through the ASAP format
f <- tempfile(fileext = ".csv")
export_asap(krt_example, f)
#> Warning: lossy-export: 14 field(s) are not preserved as columns in 'asap':
#> resource_id, antibody_host, antibody_clonality, target, notes, cellosaurus_id,
#> authentication_method, authentication_date, mycoplasma_status, organism.
k <- import_krt(f)
identical(length(k$resources), length(krt_example$resources))
#> [1] TRUE