Lossless BIDS JSON metadata inheritance and field provenance for raw MRI datasets.
moon update
moon run cmd/main --target wasm -- resolve examples/ds000001/manifest.json sub-01/func/sub-01_task-balloonanalogrisktask_run-01_bold.nii.gz{
"files": ["sub-01/func/sub-01_task-rest_bold.nii.gz"],
"sidecars": [
{"path": "task-rest_bold.json", "metadata": {"RepetitionTime": 2.0}},
{"path": "sub-01/func/sub-01_task-rest_bold.json", "metadata": {"EchoTime": 0.04}}
]
}moon fmt
moon fmt scripts/verify.mbtx
moon info --target all
moon check --target all --deny-warn
moon test --target all --deny-warnmoon run cmd/main --target wasm -- audit examples/ds000001/manifest.json
moon run cmd/main --target wasm -- audit examples/ds000001/manifest.json absent sub-01/func/sub-01_task-balloonanalogrisktask_run-01_bold.nii.gzmoon run cmd/main --target wasm -- diff examples/ds000001/manifest.json examples/ds000001/changed-manifest.jsonmoon run cmd/main --target wasm -- check baseline.json candidate.json --effective-only| Event | Default / AllChanges | --effective-only / EffectiveValues |
|---|---|---|
| Effective field added, removed or value token changed | Fail | Fail |
| Scan added or removed, even without metadata | Fail | Fail |
| Assignment history or applied source chain changed only | Fail | Pass |
| Resolution error in either snapshot | Indeterminate / fail | Indeterminate / fail |
| No relevant changes or errors | Pass | Pass |
moon run cmd/main --target wasm -- check examples/ds000001/manifest.json examples/ds000001/changed-manifest.json
moon run cmd/main --target wasm -- check examples/ds000001/manifest.json examples/ds000001/provenance-manifest.json --effective-only
moon run cmd/main --target wasm -- check examples/release-check/ambiguous-manifest.json examples/release-check/ambiguous-manifest.jsonmoon run cmd/main --target wasm -- discover examples/ds000001/tree
moon run cmd/main --target wasm -- discover /path/to/dataset --manifest-only > snapshot.json
moon run cmd/main --target wasm -- audit snapshot.jsonmoon run cmd/main --target wasm -- plan examples/ds000001/manifest.json task-balloonanalogrisktask_bold.json examples/edit-plan/change-repetition-time.json
moon run cmd/main --target wasm -- plan examples/ds000001/manifest.json task-balloonanalogrisktask_bold.json examples/edit-plan/change-repetition-time.json --manifest-only > candidate.json
moon run cmd/main --target wasm -- check examples/ds000001/manifest.json candidate.jsonmoon run cmd/main --target wasm -- plan-batch examples/ds000001/provenance-manifest.json examples/edit-plan/coordinated-edits.json
moon run cmd/main --target wasm -- plan-batch examples/ds000001/provenance-manifest.json examples/edit-plan/coordinated-edits.json --manifest-only > candidate.json
moon run cmd/main --target wasm -- bundle examples/ds000001/provenance-manifest.json candidate.json > review.json
moon run cmd/main --target wasm -- replay review.json{"edits":[
{"path":"task-rest_bold.json","set":{"RepetitionTime":3.0},"remove":[]},
{"path":"sub-01/func/sub-01_task-rest_run-01_bold.json","set":{},"remove":["RepetitionTime"]}
]}moon run cmd/main --target wasm -- bundle examples/ds000001/manifest.json examples/ds000001/changed-manifest.json > review.json
moon run cmd/main --target wasm -- replay review.jsonmoon run cmd/main --target wasm -- sources examples/ds000001/provenance-manifest.jsonmoon run cmd/main --target wasm -- summarize examples/ds000001/provenance-manifest.json RepetitionTime TaskName MissingFieldmoon run cmd/main --target wasm -- table examples/ds000001/provenance-manifest.json RepetitionTime TaskName MissingField > review.csvmoon run cmd/main --target wasm -- plan-sources examples/ds000001/manifest.json examples/edit-plan/rename-source.json
moon run cmd/main --target wasm -- plan-sources examples/ds000001/manifest.json examples/edit-plan/rename-source.json --manifest-only > candidate.json
moon run cmd/main --target wasm -- check examples/ds000001/manifest.json candidate.json --effective-onlymoon run cmd/main --target wasm -- expect examples/ds000001/manifest.json examples/expectations/acquisition.json
moon run cmd/main --target wasm -- expect examples/ds000001/changed-manifest.json examples/expectations/acquisition.jsonmoon run cmd/main --target wasm -- select examples/ds000001/manifest.json examples/selection/later-runs.json
moon run cmd/main --target wasm -- select examples/ds000001/manifest.json examples/selection/later-runs.json --auditmoon run cmd/main --target wasm -- filter examples/ds000001/manifest.json examples/selection/metadata-query.jsonmoon run cmd/main --target wasm -- plan-scans examples/ds000001/manifest.json examples/edit-plan/scan-inventory.json
moon run cmd/main --target wasm -- plan-scans examples/ds000001/manifest.json examples/edit-plan/scan-inventory.json --manifest-only > candidate.json
moon run cmd/main --target wasm -- check examples/ds000001/manifest.json candidate.json --effective-onlymoon run cmd/main --target wasm -- acquisition examples/ds000001/manifest.json examples/expectations/scoped-acquisition.json
moon run cmd/main --target wasm -- acquisition examples/ds000001/changed-manifest.json examples/expectations/scoped-acquisition.jsonpub struct AcquisitionReport {
// private fields
}pub struct AcquisitionRules {
// private fields
}pub struct AuditEntry {
// private fields
}pub struct AuditReport {
// private fields
}fn AuditReport::check_consistency(self : AuditReport, rules : ConsistencyRules) -> ConsistencyReportfn AuditReport::check_expectations(self : AuditReport, expectations : MetadataExpectations) -> ExpectationReportfn AuditReport::summarize_fields(self : AuditReport, keys : Array[String]) -> FieldSummaryReport raise TraceErrorpub struct BatchEditPlan {
// private fields
}pub struct ConsistencyReport {
// private fields
}pub struct ConsistencyRules {
// private fields
}fn ConsistencyRules::new(group_by : Array[String], fields : Array[String], require_present : Bool) -> ConsistencyRules raise TraceErrorpub struct DatasetChangePlan {
// private fields
}pub struct DatasetChanges {
// private fields
}fn DatasetChanges::new(scans : ScanChanges, sources : SourceChanges, edits : EditBatch) -> DatasetChanges raise TraceErrorpub struct DatasetIndex {
// private fields
}fn DatasetIndex::check_acquisition(self : DatasetIndex, rules : AcquisitionRules) -> AcquisitionReportfn DatasetIndex::from_manifest(files : Array[String], sidecars : Array[SidecarInput]) -> DatasetIndex raise TraceErrorfn DatasetIndex::merge(self : DatasetIndex, left : DatasetIndex, right : DatasetIndex) -> MergeReport raise TraceErrorfn DatasetIndex::plan_changes(self : DatasetIndex, changes : DatasetChanges) -> DatasetChangePlan raise TraceErrorfn DatasetIndex::plan_edit(self : DatasetIndex, sidecar_path : String, patch : MetadataPatch) -> EditPlan raise TraceErrorfn DatasetIndex::plan_edits(self : DatasetIndex, batch : EditBatch) -> BatchEditPlan raise TraceErrorfn DatasetIndex::plan_prune(self : DatasetIndex, source_path : String, fields : Array[String]) -> PrunePlan raise TraceErrorfn DatasetIndex::plan_scans(self : DatasetIndex, changes : ScanChanges) -> ScanChangePlan raise TraceErrorfn DatasetIndex::plan_sources(self : DatasetIndex, changes : SourceChanges) -> SourceChangePlan raise TraceErrorfn DatasetIndex::resolve(self : DatasetIndex, data_path : String) -> ResolvedMetadata raise TraceErrorpub struct DependencyGraph {
// private fields
}fn DependencyGraph::advance(self : DependencyGraph, after : DatasetIndex) -> IncrementalImpact raise TraceErrorfn DependencyGraph::dependents(self : DependencyGraph, source_path : String) -> Array[String] raise TraceErrorpub struct DiscoveryReport {
// private fields
}fn DiscoveryReport::from_inventory(paths : Array[String], sidecars : Array[SidecarInput]) -> DiscoveryReport raise TraceErrorpub struct EditBatch {
// private fields
}pub struct EditPlan {
// private fields
}pub struct ExpectationReport {
// private fields
}pub struct FieldChange {
// private fields
}pub struct FieldOrigin {
// private fields
}pub struct FieldSummaryReport {
// private fields
}pub struct ImpactEntry {
// private fields
}pub struct ImpactReport {
// private fields
}pub struct IncrementalImpact {
// private fields
}pub struct MergeConflict {
// private fields
}pub struct MergeReport {
// private fields
}fn MergeReport::reconcile(self : MergeReport, resolution : MergeResolution) -> ReconciledMerge raise TraceErrorpub struct MergeResolution {
// private fields
}pub struct MergeReviewBundle {
// private fields
}pub struct MetadataExpectations {
// private fields
}fn MetadataExpectations::with_numeric(self : MetadataExpectations, rules : NumericRules) -> MetadataExpectations raise TraceErrorpub struct MetadataPatch {
// private fields
}pub struct MetadataQuery {
// private fields
}fn MetadataQuery::with_numeric(self : MetadataQuery, rules : NumericRules) -> MetadataQuery raise TraceErrorpub struct MetadataSelection {
// private fields
}pub struct NumericRules {
// private fields
}pub struct PrunePlan {
// private fields
}pub struct ReconciledMerge {
// private fields
}fn ReconciledMerge::review_bundle(self : ReconciledMerge, policy : ReleasePolicy) -> MergeReviewBundle raise TraceErrorpub struct ReleaseCheck {
// private fields
}pub struct ResolvedMetadata {
// private fields
}pub struct ReviewBundle {
// private fields
}fn ReviewBundle::create(before : DatasetIndex, after : DatasetIndex, policy : ReleasePolicy) -> ReviewBundle raise TraceErrorpub struct ScanChangePlan {
// private fields
}pub struct ScanChanges {
// private fields
}fn ScanChanges::new(additions : Array[String], removals : Array[String]) -> ScanChanges raise TraceErrorpub struct ScanQuery {
// private fields
}pub struct ScanSelection {
// private fields
}pub struct SidecarInput {
// private fields
}pub struct SourceChangePlan {
// private fields
}pub struct SourceChanges {
// private fields
}fn SourceChanges::new(additions : Array[SidecarInput], removals : Array[String]) -> SourceChanges raise TraceErrorpub struct SourceCoverageEntry {
// private fields
}pub struct SourceCoverageReport {
// private fields
}Install
Download zipLossless BIDS JSON metadata inheritance and field provenance for raw MRI datasets.