diff --git a/.gitignore b/.gitignore
index 68856936..d77a41f6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,5 @@ venv*
venv3.11/
.idea/*
.pytest_cache/*
+build/*
+*.egg-info
\ No newline at end of file
diff --git a/README.md b/README.md
index bbae4081..56e91975 100644
--- a/README.md
+++ b/README.md
@@ -34,6 +34,8 @@ Camille Maumet ([@cmaumet](https://github.com/cmaumet)) and Satrajit Ghosh ([@sa
- Cyril Regan ([@cyril-data](https://github.com/cyril-data))💻👀📖
🐛
+- Boris Clénet ([@bclenet](https://github.com/bclenet))💻📖🐛
+
This project follows the
[all-contributors](https://github.com/all-contributors/all-contributors)
specification. Contributions of any kind welcome!
@@ -80,7 +82,41 @@ Mature building blocks of NIDM:
[New features (to be included)](new_features.md)
-## Run parsers on the SPM, FSL and AFNI data
+## Using the code
+
+### Visualize your BIDSprov data
+
+To visualize your BIDSprov data, perform the following steps :
+1. [clone](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository) the code inside a `BEP028_BIDSprov` directory, and cd into this directory :
+
+```shell
+git clone git@github.com:bids-standard/BEP028_BIDSprov.git
+cd BEP028_BIDSprov
+```
+
+3. install the `bids_prov` python package :
+
+```shell
+pip install .
+```
+
+4. you should be able to launch the visualizer on your .jsonld files with the command `bids_prov_visualizer`
+
+```shell
+bids_prov_visualizer --input_file graph.jsonld --output_file graph.png
+
+bids_prov -h
+ usage: bids_prov_visualizer [-h] --input_file INPUT_FILE [--output_file OUTPUT_FILE]
+
+ options:
+ -h, --help show this help message and exit
+ --input_file INPUT_FILE
+ input BIDSprov data as a .jsonld file
+ --output_file OUTPUT_FILE
+ output .png file showing BIDSprov graph
+```
+
+### Run parsers on the SPM, FSL and AFNI data
To obtain data in **bids-prov format**, you can use the developed parsers.
* [Tutorial](https://github.com/bids-standard/BEP028_BIDSprov/blob/master/bids_prov/README.md)
diff --git a/bids_prov/visualize.py b/bids_prov/visualize.py
index fc178311..5f8bd900 100644
--- a/bids_prov/visualize.py
+++ b/bids_prov/visualize.py
@@ -111,12 +111,15 @@ def main(filename: str, output_file=None, omit_details=True) -> None:
viz_jsonld11(jsonld11, output_file)
-if __name__ == "__main__":
-
+def entry_point():
+ """ A command line tool for the visualize module """
parser = argparse.ArgumentParser()
- parser.add_argument("--input_file", type=str, default="res.jsonld", help="data jsonld file ")
- parser.add_argument("--output_file", type=str, default="res.png", help="output dir where results are written")
+ parser.add_argument("--input_file", type=str, help="input BIDSprov data as a .jsonld file ", required=True)
+ parser.add_argument("--output_file", type=str, default="output_graph.png", help="output .png file showing BIDSprov graph")
opt = parser.parse_args()
main(opt.input_file, output_file=opt.output_file, omit_details=True)
# >> python -m bids_prov.visualize --input_file ./res_temp.jsonld --output_file res.png
+
+if __name__ == "__main__":
+ entry_point()
diff --git a/examples/from_parsers/context_2024_10_04_14h05m36s.txt b/examples/from_parsers/context_2024_10_04_14h05m36s.txt
new file mode 100644
index 00000000..67e63034
--- /dev/null
+++ b/examples/from_parsers/context_2024_10_04_14h05m36s.txt
@@ -0,0 +1,72 @@
+Date : 2024_10_04_14h05m36s
+Processing files...
+ file= nidmresults-examples/afni_alt_onesided_proc.sub_001
+ file= nidmresults-examples/afni_alt_onesided_proc.sub_001
+ file= nidmresults-examples/afni_bi_sided_t_test_proc.sub_001
+ file= nidmresults-examples/afni_bi_sided_t_test_proc.sub_001
+ file= nidmresults-examples/afni_clustconn_18_proc.sub_001
+ file= nidmresults-examples/afni_clustconn_18_proc.sub_001
+ file= nidmresults-examples/afni_clustconn_26_proc.sub_001
+ file= nidmresults-examples/afni_clustconn_26_proc.sub_001
+ file= nidmresults-examples/afni_con_f_proc.sub_001
+ file= nidmresults-examples/afni_con_f_proc.sub_001
+ file= nidmresults-examples/afni_default_proc.sub_001
+ file= nidmresults-examples/afni_default_proc.sub_001
+ file= nidmresults-examples/afni_gam_proc.sub_001
+ file= nidmresults-examples/afni_gam_proc.sub_001
+ file= nidmresults-examples/afni_hrf_gammadiff_proc.sub_001
+ file= nidmresults-examples/afni_hrf_gammadiff_proc.sub_001
+ file= nidmresults-examples/afni_hrf_tent_proc.sub_001
+ file= nidmresults-examples/afni_hrf_tent_proc.sub_001
+ file= nidmresults-examples/afni_other_template_proc.sub_001
+ file= nidmresults-examples/afni_other_template_proc.sub_001
+ file= nidmresults-examples/afni_thr_clustfwep05_proc.sub_001
+ file= nidmresults-examples/afni_thr_clustfwep05_proc.sub_001
+ file= nidmresults-examples/afni_thr_clustunck10_proc.sub_001
+ file= nidmresults-examples/afni_thr_clustunck10_proc.sub_001
+ file= nidmresults-examples/afni_thr_voxelfdrp05_proc.sub_001
+ file= nidmresults-examples/afni_thr_voxelfdrp05_proc.sub_001
+ file= nidmresults-examples/afni_thr_voxelunct4_proc.sub_001
+ file= nidmresults-examples/afni_thr_voxelunct4_proc.sub_001
+ file= nidmresults-examples/fsl_con_f_multiple_report_log.html
+ file= nidmresults-examples/fsl_con_f_report_log.html
+ file= nidmresults-examples/fsl_contrast_mask_report_log.html
+ file= nidmresults-examples/fsl_default_report_log.html
+ file= nidmresults-examples/fsl_full_examples001_report_log.html
+ file= nidmresults-examples/fsl_gamma_basis_report_log.html
+ file= nidmresults-examples/fsl_gaussian_report_log.html
+ file= nidmresults-examples/fsl_group_btw_report_log.html
+ file= nidmresults-examples/fsl_group_ols_report_log.html
+ file= nidmresults-examples/fsl_group_wls_report_log.html
+ file= nidmresults-examples/fsl_hrf_fir_report_log.html
+ file= nidmresults-examples/fsl_hrf_gammadiff_report_log.html
+ file= nidmresults-examples/fsl_motion_reg_der_report_log.html
+ file= nidmresults-examples/fsl_motion_reg_report_log.html
+ file= nidmresults-examples/fsl_thr_clustfwep05_report_log.html
+ file= nidmresults-examples/fsl_thr_voxelfwep05_report_log.html
+ file= nidmresults-examples/narps_do_02_pc_with_sign0.tcsh
+ file= nidmresults-examples/narps_do_02_pc_with_sign0.tcsh
+ file= nidmresults-examples/narps_do_04_make_imgs_A.tcsh
+ file= nidmresults-examples/narps_do_04_make_imgs_A.tcsh
+ file= nidmresults-examples/narps_do_13_view_zoom.tcsh
+ file= nidmresults-examples/narps_do_13_view_zoom.tcsh
+ file= nidmresults-examples/spm_2_t_test_batch.m
+ file= nidmresults-examples/spm_HRF_informed_basis_batch.m
+ file= nidmresults-examples/spm_con_f_batch.m
+ file= nidmresults-examples/spm_conjunction_batch.m
+ file= nidmresults-examples/spm_contrast_mask_batch.m
+ file= nidmresults-examples/spm_covariate_batch.m
+ file= nidmresults-examples/spm_default_batch.m
+ file= nidmresults-examples/spm_explicit_mask_batch.m
+ file= nidmresults-examples/spm_group_ols_batch.m
+ file= nidmresults-examples/spm_group_wls_batch.m
+ file= nidmresults-examples/spm_hrf_fir_batch.m
+ file= nidmresults-examples/spm_non_sphericity_batch.m
+ file= nidmresults-examples/spm_partial_conjunction_batch.m
+ file= nidmresults-examples/spm_temporal_derivative_batch.m
+ file= nidmresults-examples/spm_thr_clustfwep05_batch.m
+ file= nidmresults-examples/spm_thr_clustunck10_batch.m
+ 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:01.927037
diff --git a/pyproject.toml b/pyproject.toml
new file mode 100644
index 00000000..9f6db35d
--- /dev/null
+++ b/pyproject.toml
@@ -0,0 +1,56 @@
+[build-system]
+requires = ["poetry-core"]
+build-backend = "poetry.core.masonry.api"
+
+[tool.poetry]
+name = "bids_prov"
+authors = [
+ "Camille Maumet",
+ "Satrajit Ghosh",
+ "Stefan Appelhoff",
+ "Chris Markiewicz",
+ "Yaroslav Halchenko",
+ "Jean-Baptiste Poline",
+ "Rémi Adon",
+ "Hermann Courteille",
+ "Thomas Betton",
+ "Cyril Regan",
+ "Boris Clénet"
+]
+description = "BIDS extension proposal 28 : BIDS Provenance"
+version = "0.1.0"
+readme = "README.md"
+requires-python = ">=3.10, <3.11"
+license = "CC-BY-4.0"
+classifiers = [
+ "Intended Audience :: Science/Research",
+ "Programming Language :: Python :: 3",
+ "Topic :: Scientific/Engineering",
+ "Topic :: Scientific/Engineering :: Medical Science Apps."
+]
+include = ["bids_prov/visualize.py"]
+exclude = ["bids_prov*"]
+
+[tool.poetry.dependencies]
+python = "^3.10.0"
+beautifulsoup4 = "^4.12.3"
+boutiques = "^0.5.26"
+click = "^8.1.7"
+deepdiff = "^7.0.1"
+graphviz = "^0.20.3"
+rdflib = "^7.0.0"
+rdflib-jsonld = "^0.6.2"
+prov = "^2.0.0"
+pydot = "^2.0.0"
+pyld = "^2.0.4"
+pyyaml = "^6.0.1"
+requests = "^2.32.3"
+
+[tool.poetry.group.dev.dependencies]
+black = "^24.4.2"
+markdownify = "^0.12.1"
+pre-commit = "^3.7.1"
+pytest-cov = "^5.0.0"
+
+[tool.poetry.scripts]
+bids_prov_visualizer = "bids_prov.visualize:entry_point"