Skip to content
Open
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
24 changes: 16 additions & 8 deletions bids_prov/merge.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def get_associated_sidecar(layout: BIDSLayout, data_file: BIDSFile) -> dict:
return layout.get_file(sidecar_filename)

def filter_provenance_group(files: list, group: str) -> list:
""" Filter a given BIDSFile list, returning the sub-list containig the BIDS
""" Filter a given BIDSFile list, returning the sub-list containing the BIDS
`prov` entity equal to group
"""
return [f for f in files if f'prov-{group}' in f.filename]
Expand Down Expand Up @@ -62,10 +62,15 @@ def get_described_datasets(layout: BIDSLayout) -> list:
for file in files:
metadata = file.get_dict()
if 'GeneratedBy' in metadata:
for generated_by_obj in metadata['GeneratedBy']:
if 'Id' in generated_by_obj:
out_files.append(file)
break
# If GeneratedBy is either a list of objects or a list of activity ids
if isinstance(metadata['GeneratedBy'], list):
for generated_by_obj in metadata['GeneratedBy']:
if 'Name' not in generated_by_obj:
out_files.append(file)
break
# If GeneratedBy is an activity id
else:
out_files.append(file)

return out_files

Expand Down Expand Up @@ -98,9 +103,12 @@ def get_dataset_entity_record(description_file: BIDSJSONFile) -> dict:
}

# Get provenance-related metadata
for generated_by_obj in metadata['GeneratedBy']:
if 'Id' in generated_by_obj:
entity['GeneratedBy'].append(generated_by_obj['Id'])
if isinstance(metadata['GeneratedBy'], list):
for generated_by_obj in metadata['GeneratedBy']:
if 'Name' not in generated_by_obj:
entity['GeneratedBy'].append(generated_by_obj)
else:
entity['GeneratedBy'].append(metadata['GeneratedBy'])

return entity

Expand Down
7 changes: 6 additions & 1 deletion context.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,11 +39,16 @@
"@id": "prov:used",
"@type": "@id"
},
"ActedOnBehalfOf" : {
"@id": "prov:actedOnBehalfOf",
"@type": "@id"
},
"Entities": "prov:Entity",
"Entity": "prov:Entity",
"Environments": "prov:Entity",
"Activities": "prov:Activity",
"Activity": "prov:Activity",
"Software": "prov:Agent",
"Software": "prov:SoftwareAgent",
"Atlocation": "prov:atLocation"
}
}
3 changes: 2 additions & 1 deletion dev-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ pre-commit
rdflib
boutiques
markdownify
rfc3986
rfc3986
pybids
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Date : 2025_07_11_14h40m18s
Date : 2025_09_30_09h08m00s
Processing files...
file= nidmresults-examples/afni_alt_onesided_proc.sub_001
file= nidmresults-examples/afni_alt_onesided_proc.sub_001
Expand Down Expand Up @@ -69,4 +69,4 @@ Processing files...
file= nidmresults-examples/spm_thr_voxelfdrp05_batch.m
file= nidmresults-examples/spm_thr_voxelfwep05_batch.m
file= nidmresults-examples/spm_thr_voxelunct4_batch.m
End of processed files. Results in dir : 'examples/from_parsers'. Time required: 0:00:02.016392
End of processed files. Results in dir : 'examples/from_parsers'. Time required: 0:00:02.101514
1 change: 1 addition & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ pydot = "^2.0.0"
pyld = "^2.0.4"
pyyaml = "^6.0.1"
requests = "^2.32.3"
pybids = "^0.18.1"

[tool.poetry.group.dev.dependencies]
black = "^24.4.2"
Expand Down
Loading