Skip to content

[BEP028] provenance - dcm2niix conversion #494

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,3 +362,14 @@
| name | description | datatypes | suffixes | link to full data | maintained by |
|:--------------------------------------------------------------------------------|:-----------------------------------------------------------------|:----------------|:-----------|:--------------------|:-----------------------------------------|
| [pheno004](https://github.com/bids-standard/bids-examples/tree/master/pheno004) | Minimal dataset with subjects with imaging and/or phenotype data | phenotype, anat | T1w | n/a | [@ericearl](https://github.com/ericearl) |

### Provenance

<!--
TABLE BELOW IS GENERATED AUTOMATICALLY.
DO NOT EDIT DIRECTLY.
-->

| name | description | datatypes | suffixes | link to full data | maintained by |
|:------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------|:------------|:-------------------------|:------------------------------------------------------------------------------------------------|:---------------------------------------|
| [provenance_dcm2niix](https://github.com/bids-standard/bids-examples/tree/master/provenance_dcm2niix) | Shows minimal example of provenance records for a DICOM to Nifti conversion, performed by [`dcm2niix`](https://github.com/rordenlab/dcm2niix) | anat | T1w, act, ent, env, soft | This example is buid upon [hirni-demo](https://github.com/psychoinformatics-de/hirni-demo) data | [@bclenet](https://github.com/bclenet) |

Check failure on line 375 in README.md

View workflow job for this annotation

GitHub Actions / codespell

buid ==> build
1 change: 1 addition & 0 deletions dataset_listing.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,4 @@
xeeg_hed_score EEG and iEEG data with annotations of artifacts, seizures and modulators using HED-SCORE [@dorahermes](https://github.com/dorahermes) anat, eeg, ieeg T1w, channels, coordsystem, eeg, electrodes, events, ieeg
dwi_deriv exemplifies the storage of diffusion MRI derivates that may be generated on the Siemens XA platform. dwi dwi
pheno004 Minimal dataset with subjects with imaging and/or phenotype data [@ericearl](https://github.com/ericearl) phenotype, anat T1w
provenance_dcm2niix Shows minimal example of provenance records for a DICOM to Nifti conversion, performed by [`dcm2niix`](https://github.com/rordenlab/dcm2niix) This example is buid upon [hirni-demo](https://github.com/psychoinformatics-de/hirni-demo) data [@bclenet](https://github.com/bclenet) anat T1w, act, ent, env, soft

Check failure on line 86 in dataset_listing.tsv

View workflow job for this annotation

GitHub Actions / codespell

buid ==> build
21 changes: 21 additions & 0 deletions provenance_dcm2niix/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# BEP028 example dataset - Provenance records for `dcm2niix`

This example aims at showing provenance records for a DICOM to Nifti conversion, performed by [`dcm2niix`](https://github.com/rordenlab/dcm2niix
). Provenance records were created manually ; they act as a guideline for further machine-generated records by `dcm2niix`.

After conversion, and adding provenance traces, the directory tree is as follows:

```
prov/
├── prov-dcm2niix_act.json
├── prov-dcm2niix_ent.json
├── prov-dcm2niix_env.json
└── prov-dcm2niix_soft.json
sourcedata/
sub-02/
└── anat
├── sub-02_T1w.json
└── sub-02_T1w.nii
```

Note that the `sourcedata/` directory contains the source dataset (DICOM files) known as [hirni-demo](https://github.com/psychoinformatics-de/hirni-demo).
14 changes: 14 additions & 0 deletions provenance_dcm2niix/dataset_description.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"Name": "Provenance records for dcm2niix",
"BIDSVersion": "1.10.0",
"DatasetType": "raw",
"License": "CC0",
"Authors": [
"Boris Clénet"
],
"SourceDatasets": [
{
"URL": "https://github.com/psychoinformatics-de/hirni-demo"
}
]
}
14 changes: 14 additions & 0 deletions provenance_dcm2niix/prov/prov-dcm2niix_act.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"Activities": [
{
"Id": "bids::prov/#conversion-00f3a18f",
"Label": "Conversion",
"Command": "dcm2niix -o . -f sub-%i/anat/sub-%i_T1w sourcedata/hirni-demo/acq1/dicoms/example-dicom-structural-master/dicoms",
"AssociatedWith": "bids::prov/#dcm2niix-khhkm7u1",
"Used": [
"bids::prov/#fedora-uldfv058",
"bids::sourcedata/hirni-demo/acq1/dicoms/example-dicom-structural-master/dicoms"
]
}
]
}
9 changes: 9 additions & 0 deletions provenance_dcm2niix/prov/prov-dcm2niix_ent.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"Entities": [
{
"Id": "bids::sourcedata/hirni-demo/acq1/dicoms/example-dicom-structural-master/dicoms",
"Type": "Entity",
"Label": "dicoms"
}
]
}
9 changes: 9 additions & 0 deletions provenance_dcm2niix/prov/prov-dcm2niix_env.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"Environments": [
{
"Id": "bids::prov/#fedora-uldfv058",
"Label": "Fedora release 36 (Thirty Six)",
"OperatingSystem": "GNU/Linux 6.2.15-100.fc36.x86_64"
}
]
}
9 changes: 9 additions & 0 deletions provenance_dcm2niix/prov/prov-dcm2niix_soft.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"Software": [
{
"Id": "bids::prov/#dcm2niix-khhkm7u1",
"Label": "dcm2niix",
"Version": "v1.0.20220720"
}
]
}
25 changes: 25 additions & 0 deletions provenance_dcm2niix/sub-02/anat/sub-02_T1w.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"Modality": "MR",
"ManufacturersModelName": "nifti2dicom",
"SoftwareVersions": "0.4.11",
"SeriesDescription": "anat-T1w",
"ProtocolName": "anat-T1w",
"ImageType": ["DERIVED", "SECONDARY"],
"RawImage": false,
"SeriesNumber": 401,
"AcquisitionTime": "13:25:18.000000",
"AcquisitionNumber": 1,
"SliceThickness": 0.666667,
"SpacingBetweenSlices": 0.666667,
"ImageOrientationPatientDICOM": [
0.999032,
-0.0217884,
0.0382096,
0.0265195,
0.991414,
-0.128044 ],
"ConversionSoftware": "dcm2niix",
"ConversionSoftwareVersion": "v1.0.20220720",
"GeneratedBy": "bids::prov/#conversion-00f3a18f",
"SidecarGeneratedBy": "bids::prov/#conversion-00f3a18f"
}
Empty file.
3 changes: 3 additions & 0 deletions tools/print_dataset_listing.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
"PET": "pet",
"qMRI": "",
"Phenotype": "phenotype",
"Provenance": "",
}

DELIMITER = "<!-- ADD EXAMPLE LISTING HERE -->"
Expand Down Expand Up @@ -176,6 +177,8 @@ def add_tables(df: pd.DataFrame, output_file: Path, names) -> None:
mask = names.str.contains("qmri_")
elif table_name == "HED":
mask = names.str.contains("_hed_")
elif table_name == "Provenance":
mask = names.str.contains("provenance_")
else:
mask = df["datatypes"].str.contains(table_datatypes, regex=True)

Expand Down
Loading