forbids 0.0.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. forbids-0.0.2/.devcontainer/Dockerfile +12 -0
  2. forbids-0.0.2/.devcontainer/devcontainer.json +44 -0
  3. forbids-0.0.2/.github/dependabot.yml +22 -0
  4. forbids-0.0.2/.github/template-sync.yml +21 -0
  5. forbids-0.0.2/.github/workflows/CI.yml +21 -0
  6. forbids-0.0.2/.github/workflows/publish.yml +10 -0
  7. forbids-0.0.2/.github/workflows/schedule-update-actions.yml +25 -0
  8. forbids-0.0.2/.github/workflows/semantic-pr-check.yml +17 -0
  9. forbids-0.0.2/.github/workflows/sphinx.yml +18 -0
  10. forbids-0.0.2/.github/workflows/template-sync.yml +12 -0
  11. forbids-0.0.2/.gitignore +132 -0
  12. forbids-0.0.2/.pre-commit-config.yaml +60 -0
  13. forbids-0.0.2/.pypirc +10 -0
  14. forbids-0.0.2/.vscode/launch.json +19 -0
  15. forbids-0.0.2/.vscode/settings.json +29 -0
  16. forbids-0.0.2/CODE_OF_CONDUCT.md +9 -0
  17. forbids-0.0.2/LICENSE +21 -0
  18. forbids-0.0.2/PKG-INFO +56 -0
  19. forbids-0.0.2/README.md +14 -0
  20. forbids-0.0.2/SECURITY.md +41 -0
  21. forbids-0.0.2/SUPPORT.md +25 -0
  22. forbids-0.0.2/docs/Makefile +20 -0
  23. forbids-0.0.2/docs/conf.py +68 -0
  24. forbids-0.0.2/docs/devcontainer.md +16 -0
  25. forbids-0.0.2/docs/developer.md +3 -0
  26. forbids-0.0.2/docs/index.rst +20 -0
  27. forbids-0.0.2/docs/make.bat +35 -0
  28. forbids-0.0.2/docs/modules.rst +7 -0
  29. forbids-0.0.2/docs/pre-commit-config.md +6 -0
  30. forbids-0.0.2/docs/pylint.md +507 -0
  31. forbids-0.0.2/docs/pyproject.md +9 -0
  32. forbids-0.0.2/docs/python_package.hello_world.rst +21 -0
  33. forbids-0.0.2/docs/python_package.rst +29 -0
  34. forbids-0.0.2/docs/requirements.txt +3 -0
  35. forbids-0.0.2/docs/static/forBIDS_logo.svg +154 -0
  36. forbids-0.0.2/docs/static/forbids_logo.png +0 -0
  37. forbids-0.0.2/docs/vscode.md +1 -0
  38. forbids-0.0.2/docs/workflows.md +4 -0
  39. forbids-0.0.2/pyproject.toml +322 -0
  40. forbids-0.0.2/src/README.md +1 -0
  41. forbids-0.0.2/src/forbids/__init__.py +7 -0
  42. forbids-0.0.2/src/forbids/cli/__init__.py +0 -0
  43. forbids-0.0.2/src/forbids/cli/run.py +79 -0
  44. forbids-0.0.2/src/forbids/config/mri_tags.json +83 -0
  45. forbids-0.0.2/src/forbids/init.py +171 -0
  46. forbids-0.0.2/src/forbids/schema.py +170 -0
  47. forbids-0.0.2/src/forbids/validation.py +141 -0
  48. forbids-0.0.2/tests/conftest.py +30 -0
  49. forbids-0.0.2/tests/test_init.py +0 -0
  50. forbids-0.0.2/tests/test_schema.py +30 -0
  51. forbids-0.0.2/tests/test_validation.py +0 -0
@@ -0,0 +1,12 @@
1
+ FROM mcr.microsoft.com/devcontainers/python:3
2
+
3
+ RUN python -m pip install --upgrade pip \
4
+ && python -m pip install 'flit>=3.8.0'
5
+
6
+ ENV FLIT_ROOT_INSTALL=1
7
+
8
+ COPY pyproject.toml .
9
+ RUN touch README.md \
10
+ && mkdir -p src/python_package \
11
+ && python -m flit install --only-deps --deps develop \
12
+ && rm -r pyproject.toml README.md src
@@ -0,0 +1,44 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2
+ // https://github.com/microsoft/vscode-dev-containers/tree/v0.222.0/containers/python-3-miniconda
3
+ {
4
+ "name": "Python Environment",
5
+ "build": {
6
+ "dockerfile": "Dockerfile",
7
+ "context": ".."
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": [
12
+ "editorconfig.editorconfig",
13
+ "github.vscode-pull-request-github",
14
+ "ms-azuretools.vscode-docker",
15
+ "ms-python.python",
16
+ "ms-python.vscode-pylance",
17
+ "ms-python.pylint",
18
+ "ms-python.isort",
19
+ "ms-python.flake8",
20
+ "ms-python.black-formatter",
21
+ "ms-vsliveshare.vsliveshare",
22
+ "ryanluker.vscode-coverage-gutters",
23
+ "bungcip.better-toml",
24
+ "GitHub.copilot"
25
+ ],
26
+ "settings": {
27
+ "python.defaultInterpreterPath": "/usr/local/bin/python",
28
+ "black-formatter.path": [
29
+ "/usr/local/py-utils/bin/black"
30
+ ],
31
+ "pylint.path": [
32
+ "/usr/local/py-utils/bin/pylint"
33
+ ],
34
+ "flake8.path": [
35
+ "/usr/local/py-utils/bin/flake8"
36
+ ],
37
+ "isort.path": [
38
+ "/usr/local/py-utils/bin/isort"
39
+ ]
40
+ }
41
+ }
42
+ },
43
+ "onCreateCommand": "pre-commit install-hooks"
44
+ }
@@ -0,0 +1,22 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "13:00"
8
+ open-pull-requests-limit: 10
9
+ reviewers:
10
+ - bpinsard
11
+ allow:
12
+ - dependency-type: direct
13
+ - dependency-type: indirect
14
+ commit-message:
15
+ prefix: "fix: "
16
+ - package-ecosystem: "github-actions"
17
+ directory: "/"
18
+ schedule:
19
+ interval: daily
20
+ time: "13:00"
21
+ commit-message:
22
+ prefix: "fix: "
@@ -0,0 +1,21 @@
1
+ files:
2
+ - ".gitignore" # include
3
+ - ".github"
4
+ - ".vscode"
5
+ - "tests/conftest.py"
6
+ - ".flake8"
7
+ - ".pre-commit-config.yml"
8
+ - ".pypirc"
9
+ - "docs"
10
+ - "src/README.md"
11
+ - "CODE_OF_CONDUCT.md"
12
+ - "LICENSE"
13
+ - "README.md"
14
+ - "SECURITY.md"
15
+ - "SUPPORT.md"
16
+ - "pyproject.toml"
17
+
18
+ - "!.github/workflows/template-sync.yml"
19
+ - "!.github/template-sync.yml"
20
+ - "!src/python_project"
21
+ - "!tests/test_methods.py"
@@ -0,0 +1,21 @@
1
+ name: Python CI
2
+ on:
3
+ push:
4
+ branches: [ main ]
5
+ pull_request:
6
+ branches: [ main ]
7
+ release:
8
+ types: [created]
9
+ workflow_dispatch:
10
+
11
+ jobs:
12
+ validation:
13
+ uses: microsoft/action-python/.github/workflows/validation.yml@0.7.3
14
+ with:
15
+ workdir: '.'
16
+
17
+ publish:
18
+ uses: microsoft/action-python/.github/workflows/publish.yml@0.7.3
19
+ secrets:
20
+ PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
21
+ TEST_PYPI_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }}
@@ -0,0 +1,10 @@
1
+ name: Python Publish Workflow
2
+ on:
3
+ workflow_call:
4
+
5
+ jobs:
6
+ publish:
7
+ uses: microsoft/action-python/.github/workflows/publish.yml@0.7.3
8
+ secrets:
9
+ PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
10
+ TEST_PYPI_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }}
@@ -0,0 +1,25 @@
1
+ name: GitHub Actions Version Updater
2
+
3
+ # Controls when the action will run.
4
+ on:
5
+ workflow_dispatch:
6
+ schedule:
7
+ # Automatically run on every Sunday
8
+ - cron: '0 0 * * 0'
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v4.1.7
16
+ with:
17
+ # [Required] Access token with `workflow` scope.
18
+ token: ${{ secrets.PAT }}
19
+
20
+ - name: Run GitHub Actions Version Updater
21
+ uses: saadmk11/github-actions-version-updater@v0.8.1
22
+ with:
23
+ # [Required] Access token with `workflow` scope.
24
+ token: ${{ secrets.PAT }}
25
+ pull_request_title: "ci: Update GitHub Actions to Latest Version"
@@ -0,0 +1,17 @@
1
+ name: "Semantic PR Check"
2
+
3
+ on:
4
+ pull_request_target:
5
+ types:
6
+ - opened
7
+ - edited
8
+ - synchronize
9
+
10
+ jobs:
11
+ main:
12
+ name: Validate PR title
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: amannn/action-semantic-pull-request@v5.5.3
16
+ env:
17
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,18 @@
1
+ name: Deploy Sphinx documentation to Pages
2
+
3
+ on:
4
+ push:
5
+ branches: [main] # branch to trigger deployment
6
+
7
+ jobs:
8
+ pages:
9
+ runs-on: ubuntu-20.04
10
+ environment:
11
+ name: github-pages
12
+ url: ${{ steps.deployment.outputs.page_url }}
13
+ permissions:
14
+ pages: write
15
+ id-token: write
16
+ steps:
17
+ - id: deployment
18
+ uses: sphinx-notes/pages@v3
@@ -0,0 +1,12 @@
1
+ name: Template Sync
2
+ on:
3
+ workflow_dispatch:
4
+ jobs:
5
+ sync:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v4.1.7 # important!
9
+ - uses: euphoricsystems/action-sync-template-repository@v2.5.1
10
+ with:
11
+ github-token: ${{ secrets.GITHUB_TOKEN }}
12
+ dry-run: true
@@ -0,0 +1,132 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ target/
76
+
77
+ # Jupyter Notebook
78
+ .ipynb_checkpoints
79
+
80
+ # IPython
81
+ profile_default/
82
+ ipython_config.py
83
+
84
+ # pyenv
85
+ .python-version
86
+
87
+ # pipenv
88
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
90
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
91
+ # install all needed dependencies.
92
+ #Pipfile.lock
93
+
94
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95
+ __pypackages__/
96
+
97
+ # Celery stuff
98
+ celerybeat-schedule
99
+ celerybeat.pid
100
+
101
+ # SageMath parsed files
102
+ *.sage.py
103
+
104
+ # Environments
105
+ .env
106
+ .venv
107
+ env/
108
+ venv/
109
+ ENV/
110
+ env.bak/
111
+ venv.bak/
112
+
113
+ # Spyder project settings
114
+ .spyderproject
115
+ .spyproject
116
+
117
+ # Rope project settings
118
+ .ropeproject
119
+
120
+ # mkdocs documentation
121
+ /site
122
+
123
+ # mypy
124
+ .mypy_cache/
125
+ .dmypy.json
126
+ dmypy.json
127
+
128
+ # Pyre type checker
129
+ .pyre/
130
+
131
+
132
+ data-multi-subject
@@ -0,0 +1,60 @@
1
+ ci:
2
+ autoupdate_commit_msg: "chore: update pre-commit hooks"
3
+ autofix_commit_msg: "style: pre-commit fixes"
4
+
5
+ repos:
6
+ - repo: https://github.com/pre-commit/pre-commit-hooks
7
+ rev: v4.1.0
8
+ hooks:
9
+ - id: check-added-large-files
10
+ - id: check-case-conflict
11
+ - id: check-merge-conflict
12
+ - id: check-symlinks
13
+ - id: check-yaml
14
+ - id: debug-statements
15
+ - id: end-of-file-fixer
16
+ - id: mixed-line-ending
17
+ - id: requirements-txt-fixer
18
+ - id: trailing-whitespace
19
+
20
+ - repo: https://github.com/PyCQA/isort
21
+ rev: 5.12.0
22
+ hooks:
23
+ - id: isort
24
+ args: ["-a", "from __future__ import annotations"]
25
+
26
+ - repo: https://github.com/asottile/pyupgrade
27
+ rev: v2.31.0
28
+ hooks:
29
+ - id: pyupgrade
30
+ args: [--py37-plus]
31
+
32
+ - repo: https://github.com/hadialqattan/pycln
33
+ rev: v1.2.5
34
+ hooks:
35
+ - id: pycln
36
+ args: [--config=pyproject.toml]
37
+ stages: [manual]
38
+
39
+ - repo: https://github.com/codespell-project/codespell
40
+ rev: v2.1.0
41
+ hooks:
42
+ - id: codespell
43
+
44
+ - repo: https://github.com/pre-commit/pygrep-hooks
45
+ rev: v1.9.0
46
+ hooks:
47
+ - id: python-check-blanket-noqa
48
+ - id: python-check-blanket-type-ignore
49
+ - id: python-no-log-warn
50
+ - id: python-no-eval
51
+ - id: python-use-type-annotations
52
+ - id: rst-backticks
53
+ - id: rst-directive-colons
54
+ - id: rst-inline-touching-normal
55
+
56
+ - repo: https://github.com/mgedmin/check-manifest
57
+ rev: "0.47"
58
+ hooks:
59
+ - id: check-manifest
60
+ stages: [manual]
forbids-0.0.2/.pypirc ADDED
@@ -0,0 +1,10 @@
1
+ [distutils]
2
+ index-servers =
3
+ pypi
4
+ testpypi
5
+
6
+ [pypi]
7
+ repository = https://upload.pypi.org/legacy/
8
+
9
+ [testpypi]
10
+ repository = https://test.pypi.org/legacy/
@@ -0,0 +1,19 @@
1
+ {
2
+ "version": "0.1.0",
3
+ "configurations": [
4
+ {
5
+ "name": "Python: Debug Tests",
6
+ "type": "python",
7
+ "request": "launch",
8
+ "program": "${file}",
9
+ "purpose": [
10
+ "debug-test"
11
+ ],
12
+ "console": "integratedTerminal",
13
+ "justMyCode": false,
14
+ "env": {
15
+ "PYTEST_ADDOPTS": "--no-cov -n0 --dist no"
16
+ }
17
+ }
18
+ ]
19
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "editor.formatOnSave": true,
3
+ "editor.formatOnPaste": true,
4
+ "files.trimTrailingWhitespace": true,
5
+ "files.autoSave": "onFocusChange",
6
+ "git.autofetch": true,
7
+ "[jsonc]": {
8
+ "editor.defaultFormatter": "vscode.json-language-features"
9
+ },
10
+ "[python]": {
11
+ "editor.defaultFormatter": "ms-python.black-formatter"
12
+ },
13
+ "python.defaultInterpreterPath": "/usr/local/bin/python",
14
+ "python.formatting.provider": "black",
15
+ "python.testing.unittestEnabled": false,
16
+ "python.testing.pytestEnabled": true,
17
+ "pylint.args": [
18
+ "--rcfile=pyproject.toml"
19
+ ],
20
+ "black-formatter.args": [
21
+ "--config=pyproject.toml"
22
+ ],
23
+ "flake8.args": [
24
+ "--toml-config=pyproject.toml"
25
+ ],
26
+ "isort.args": [
27
+ "--settings-path=pyproject.toml"
28
+ ]
29
+ }
@@ -0,0 +1,9 @@
1
+ # Microsoft Open Source Code of Conduct
2
+
3
+ This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4
+
5
+ Resources:
6
+
7
+ - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8
+ - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9
+ - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
forbids-0.0.2/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE
forbids-0.0.2/PKG-INFO ADDED
@@ -0,0 +1,56 @@
1
+ Metadata-Version: 2.4
2
+ Name: forbids
3
+ Version: 0.0.2
4
+ Summary: forBIDS - BIDS protocol compliance validation
5
+ Author-email: Basile Pinsard <basile.pinsard@gmail.com>
6
+ Requires-Python: >=3.11.0
7
+ Description-Content-Type: text/markdown
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Programming Language :: Python :: 3 :: Only
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ License-File: LICENSE
14
+ Requires-Dist: pybids
15
+ Requires-Dist: apischema
16
+ Requires-Dist: openapi-schema-validator
17
+ Requires-Dist: coloredlogs
18
+ Requires-Dist: pyspark>=3.0.0 ; extra == "spark"
19
+ Requires-Dist: bandit[toml]==1.7.10 ; extra == "test"
20
+ Requires-Dist: black==24.8.0 ; extra == "test"
21
+ Requires-Dist: check-manifest==0.49 ; extra == "test"
22
+ Requires-Dist: flake8-bugbear==24.8.19 ; extra == "test"
23
+ Requires-Dist: flake8-docstrings ; extra == "test"
24
+ Requires-Dist: flake8-formatter_junit_xml ; extra == "test"
25
+ Requires-Dist: flake8 ; extra == "test"
26
+ Requires-Dist: flake8-pyproject ; extra == "test"
27
+ Requires-Dist: pre-commit==3.8.0 ; extra == "test"
28
+ Requires-Dist: pylint==3.3.1 ; extra == "test"
29
+ Requires-Dist: pylint_junit ; extra == "test"
30
+ Requires-Dist: pytest-cov==5.0.0 ; extra == "test"
31
+ Requires-Dist: pytest-mock<3.14.1 ; extra == "test"
32
+ Requires-Dist: pytest-runner ; extra == "test"
33
+ Requires-Dist: pytest==8.3.3 ; extra == "test"
34
+ Requires-Dist: pytest-github-actions-annotate-failures ; extra == "test"
35
+ Requires-Dist: shellcheck-py==0.10.0.1 ; extra == "test"
36
+ Project-URL: Documentation, https://github.com/UNFMontreal/forbids
37
+ Project-URL: Source, https://github.com/UNFMontreal/forbids
38
+ Project-URL: Tracker, https://github.com/UNFMontreal/forbids/issues
39
+ Provides-Extra: spark
40
+ Provides-Extra: test
41
+
42
+ # ![forBIDS logo](docs/static/forbids_logo.png) forBIDS: a protocol compliance check
43
+
44
+ forBIDS aims to be a tool for BIDS that forbids deviation from a established acquisition protocol.
45
+
46
+ It is meant to be ran continuously on session newly converted to BIDS, as a validation before being merged into a dataset.
47
+
48
+ It aims to check that all planned sequences have been acquired (allowing optional ones), and check that a configured set of sequence parameters match expected values.
49
+ It is designed for multi-centric/multi-vendor studies: the sequence parameters constraint can be set conditional to Manufacter/Model/Instrument/SoftwareVersion.
50
+
51
+
52
+ ## design
53
+
54
+ - `forbids init <bids_path>` : create a `.forbids` folder that contains a BIDS-like structure with json schemas for each series in a BIDS dataset with a set of sessions from each scanner.
55
+ - `forbids validate <bids_path> --participant-label <sub> [--session-label <ses>]` : validate the subject/session against the schema found in `.forbids` by validating all schema files against the subject/session BIDS files and checking for missing or extra/unwanted BIDS files.
56
+
@@ -0,0 +1,14 @@
1
+ # ![forBIDS logo](docs/static/forbids_logo.png) forBIDS: a protocol compliance check
2
+
3
+ forBIDS aims to be a tool for BIDS that forbids deviation from a established acquisition protocol.
4
+
5
+ It is meant to be ran continuously on session newly converted to BIDS, as a validation before being merged into a dataset.
6
+
7
+ It aims to check that all planned sequences have been acquired (allowing optional ones), and check that a configured set of sequence parameters match expected values.
8
+ It is designed for multi-centric/multi-vendor studies: the sequence parameters constraint can be set conditional to Manufacter/Model/Instrument/SoftwareVersion.
9
+
10
+
11
+ ## design
12
+
13
+ - `forbids init <bids_path>` : create a `.forbids` folder that contains a BIDS-like structure with json schemas for each series in a BIDS dataset with a set of sessions from each scanner.
14
+ - `forbids validate <bids_path> --participant-label <sub> [--session-label <ses>]` : validate the subject/session against the schema found in `.forbids` by validating all schema files against the subject/session BIDS files and checking for missing or extra/unwanted BIDS files.
@@ -0,0 +1,41 @@
1
+ <!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
2
+
3
+ ## Security
4
+
5
+ Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6
+
7
+ If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
8
+
9
+ ## Reporting Security Issues
10
+
11
+ **Please do not report security vulnerabilities through public GitHub issues.**
12
+
13
+ Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
14
+
15
+ If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
16
+
17
+ You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
18
+
19
+ Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20
+
21
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22
+ * Full paths of source file(s) related to the manifestation of the issue
23
+ * The location of the affected source code (tag/branch/commit or direct URL)
24
+ * Any special configuration required to reproduce the issue
25
+ * Step-by-step instructions to reproduce the issue
26
+ * Proof-of-concept or exploit code (if possible)
27
+ * Impact of the issue, including how an attacker might exploit the issue
28
+
29
+ This information will help us triage your report more quickly.
30
+
31
+ If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
32
+
33
+ ## Preferred Languages
34
+
35
+ We prefer all communications to be in English.
36
+
37
+ ## Policy
38
+
39
+ Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
40
+
41
+ <!-- END MICROSOFT SECURITY.MD BLOCK -->
@@ -0,0 +1,25 @@
1
+ # TODO: The maintainer of this repo has not yet edited this file
2
+
3
+ **REPO OWNER**: Do you want Customer Service & Support (CSS) support for this product/project?
4
+
5
+ - **No CSS support:** Fill out this template with information about how to file issues and get help.
6
+ - **Yes CSS support:** Fill out an intake form at [aka.ms/spot](https://aka.ms/spot). CSS will work with/help you to determine next steps. More details also available at [aka.ms/onboardsupport](https://aka.ms/onboardsupport).
7
+ - **Not sure?** Fill out a SPOT intake as though the answer were "Yes". CSS will help you decide.
8
+
9
+ *Then remove this first heading from this SUPPORT.MD file before publishing your repo.*
10
+
11
+ # Support
12
+
13
+ ## How to file issues and get help
14
+
15
+ This project uses GitHub Issues to track bugs and feature requests. Please search the existing
16
+ issues before filing new issues to avoid duplicates. For new issues, file your bug or
17
+ feature request as a new Issue.
18
+
19
+ For help and questions about using this project, please **REPO MAINTAINER: INSERT INSTRUCTIONS HERE
20
+ FOR HOW TO ENGAGE REPO OWNERS OR COMMUNITY FOR HELP. COULD BE A STACK OVERFLOW TAG OR OTHER
21
+ CHANNEL. WHERE WILL YOU HELP PEOPLE?**.
22
+
23
+ ## Microsoft Support Policy
24
+
25
+ Support for this **PROJECT or PRODUCT** is limited to the resources listed above.
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = .
9
+ BUILDDIR = _build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)