Skip to content

Commit c7372d4

Browse files
authored
Merge branch 'bids-standard:master' into master
2 parents c7a2197 + 05d9728 commit c7372d4

File tree

2 files changed

+116
-3
lines changed

2 files changed

+116
-3
lines changed

bids_prov/utils.py

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import shutil
66
import uuid
77
from typing import Mapping, Union, Tuple
8+
import re
89

910
CONTEXT_URL = "https://raw.githubusercontent.com/bids-standard/BEP028_BIDSprov/master/context.json"
1011

@@ -120,6 +121,44 @@ def compute_sha_256_entity(entities: dict):
120121
shutil.rmtree(directory)
121122

122123

124+
def simplify_urns(graph: str) -> str:
125+
"""
126+
Replace URNs of a json-ld graph with simpler (not random) values defined by their order of appearance in the graph.
127+
128+
Parameters
129+
----------
130+
graph : str
131+
The json-ld graph dumped as a string
132+
133+
Returns
134+
-------
135+
str
136+
The input string with simplified urns.
137+
"""
138+
139+
# Get all occurrences of ("urn:" + 36 following chars)
140+
urn_occurrences = [i for i in re.finditer(r'urn:[a-zA-Z0-9\-]{36}', graph)]
141+
142+
# Prepare a dict in which :
143+
# - key is an urn as present in the original graph
144+
# - value is an id corresponding to the order of appearance of the urn in the graph.
145+
known_urns = dict()
146+
counter = 0
147+
148+
# Assign one simpler id to each urn
149+
for urn in urn_occurrences:
150+
if urn.group() not in known_urns:
151+
known_urns[urn.group()] = f"urn:{str(counter).zfill(36)}"
152+
counter += 1
153+
154+
# Replace all urns in the input graph with their assigned id
155+
output_graph = graph
156+
for key, value in known_urns.items():
157+
output_graph = output_graph.replace(key, value)
158+
159+
return output_graph
160+
161+
123162
def writing_jsonld(graph, indent, output_file):
124163
"""
125164
Write a json-ld in memory unless it already exists and contains the same content
@@ -140,10 +179,12 @@ def writing_jsonld(graph, indent, output_file):
140179
"""
141180
if os.path.isfile(output_file):
142181
with open(output_file, "r") as f:
143-
existing_content = f.read()
182+
existing_content = simplify_urns(f.read())
183+
184+
new_content = simplify_urns(json.dumps(graph, indent=indent))
144185

145-
if existing_content == json.dumps(graph, indent=indent):
146-
return True
186+
if existing_content == new_content:
187+
return True
147188

148189
with open(output_file, "w") as fd:
149190
json.dump(graph, fd, indent=indent)
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
Date : 2024_06_13_07h55m05s
2+
Processing files...
3+
file= nidmresults-examples/afni_alt_onesided_proc.sub_001
4+
file= nidmresults-examples/afni_alt_onesided_proc.sub_001
5+
file= nidmresults-examples/afni_bi_sided_t_test_proc.sub_001
6+
file= nidmresults-examples/afni_bi_sided_t_test_proc.sub_001
7+
file= nidmresults-examples/afni_clustconn_18_proc.sub_001
8+
file= nidmresults-examples/afni_clustconn_18_proc.sub_001
9+
file= nidmresults-examples/afni_clustconn_26_proc.sub_001
10+
file= nidmresults-examples/afni_clustconn_26_proc.sub_001
11+
file= nidmresults-examples/afni_con_f_proc.sub_001
12+
file= nidmresults-examples/afni_con_f_proc.sub_001
13+
file= nidmresults-examples/afni_default_proc.sub_001
14+
file= nidmresults-examples/afni_default_proc.sub_001
15+
file= nidmresults-examples/afni_gam_proc.sub_001
16+
file= nidmresults-examples/afni_gam_proc.sub_001
17+
file= nidmresults-examples/afni_hrf_gammadiff_proc.sub_001
18+
file= nidmresults-examples/afni_hrf_gammadiff_proc.sub_001
19+
file= nidmresults-examples/afni_hrf_tent_proc.sub_001
20+
file= nidmresults-examples/afni_hrf_tent_proc.sub_001
21+
file= nidmresults-examples/afni_other_template_proc.sub_001
22+
file= nidmresults-examples/afni_other_template_proc.sub_001
23+
file= nidmresults-examples/afni_thr_clustfwep05_proc.sub_001
24+
file= nidmresults-examples/afni_thr_clustfwep05_proc.sub_001
25+
file= nidmresults-examples/afni_thr_clustunck10_proc.sub_001
26+
file= nidmresults-examples/afni_thr_clustunck10_proc.sub_001
27+
file= nidmresults-examples/afni_thr_voxelfdrp05_proc.sub_001
28+
file= nidmresults-examples/afni_thr_voxelfdrp05_proc.sub_001
29+
file= nidmresults-examples/afni_thr_voxelunct4_proc.sub_001
30+
file= nidmresults-examples/afni_thr_voxelunct4_proc.sub_001
31+
file= nidmresults-examples/fsl_con_f_multiple_report_log.html
32+
file= nidmresults-examples/fsl_con_f_report_log.html
33+
file= nidmresults-examples/fsl_contrast_mask_report_log.html
34+
file= nidmresults-examples/fsl_default_report_log.html
35+
file= nidmresults-examples/fsl_full_examples001_report_log.html
36+
file= nidmresults-examples/fsl_gamma_basis_report_log.html
37+
file= nidmresults-examples/fsl_gaussian_report_log.html
38+
file= nidmresults-examples/fsl_group_btw_report_log.html
39+
file= nidmresults-examples/fsl_group_ols_report_log.html
40+
file= nidmresults-examples/fsl_group_wls_report_log.html
41+
file= nidmresults-examples/fsl_hrf_fir_report_log.html
42+
file= nidmresults-examples/fsl_hrf_gammadiff_report_log.html
43+
file= nidmresults-examples/fsl_motion_reg_der_report_log.html
44+
file= nidmresults-examples/fsl_motion_reg_report_log.html
45+
file= nidmresults-examples/fsl_thr_clustfwep05_report_log.html
46+
file= nidmresults-examples/fsl_thr_voxelfwep05_report_log.html
47+
file= nidmresults-examples/narps_do_02_pc_with_sign0.tcsh
48+
file= nidmresults-examples/narps_do_02_pc_with_sign0.tcsh
49+
file= nidmresults-examples/narps_do_04_make_imgs_A.tcsh
50+
file= nidmresults-examples/narps_do_04_make_imgs_A.tcsh
51+
file= nidmresults-examples/narps_do_13_view_zoom.tcsh
52+
file= nidmresults-examples/narps_do_13_view_zoom.tcsh
53+
file= nidmresults-examples/spm_2_t_test_batch.m
54+
file= nidmresults-examples/spm_HRF_informed_basis_batch.m
55+
file= nidmresults-examples/spm_con_f_batch.m
56+
file= nidmresults-examples/spm_conjunction_batch.m
57+
file= nidmresults-examples/spm_contrast_mask_batch.m
58+
file= nidmresults-examples/spm_covariate_batch.m
59+
file= nidmresults-examples/spm_default_batch.m
60+
file= nidmresults-examples/spm_explicit_mask_batch.m
61+
file= nidmresults-examples/spm_group_ols_batch.m
62+
file= nidmresults-examples/spm_group_wls_batch.m
63+
file= nidmresults-examples/spm_hrf_fir_batch.m
64+
file= nidmresults-examples/spm_non_sphericity_batch.m
65+
file= nidmresults-examples/spm_partial_conjunction_batch.m
66+
file= nidmresults-examples/spm_temporal_derivative_batch.m
67+
file= nidmresults-examples/spm_thr_clustfwep05_batch.m
68+
file= nidmresults-examples/spm_thr_clustunck10_batch.m
69+
file= nidmresults-examples/spm_thr_voxelfdrp05_batch.m
70+
file= nidmresults-examples/spm_thr_voxelfwep05_batch.m
71+
file= nidmresults-examples/spm_thr_voxelunct4_batch.m
72+
End of processed files. Results in dir : 'examples/from_parsers'. Time required: 0:00:02.365113

0 commit comments

Comments
 (0)