From c6500c6285a9344d613e6df2416366fdd124ad98 Mon Sep 17 00:00:00 2001 From: Remi Gau Date: Thu, 12 Sep 2024 10:52:05 +0200 Subject: [PATCH] use validator --- .github/workflows/docker.yml | 4 ++-- Dockerfile | 9 +++++++-- code/_parsers.py | 14 ++++++++++---- code/main.py | 11 +++++++++++ makefile | 2 +- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index bd57d80..2ebe1be 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -34,9 +34,9 @@ jobs: - name: Run simple commands run: | docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} --help - docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} . . participant view tfce --verbose 3 + docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} . /foo participant view tfce --verbose 3 docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} . /foo participant copy tfce --verbose 3 - docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} . /foo segment --help + docker run --rm ${{env.USER_NAME}}/${{env.REPO_NAME}} . /foo participant segment --help - name: Save docker image run: | mkdir -p ${{ env.IMAGE }} diff --git a/Dockerfile b/Dockerfile index d8d223c..2101ffb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,9 +16,10 @@ ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/opt/MCR-${MCR_V MATLABCMD="/opt/MCR-${MCR_VERSION}/v93/toolbox/matlab" \ XAPPLRESDIR="/opt//opt/MCR-${MCR_VERSION}/v93/x11/app-defaults" \ MCRROOT="/opt/MCR-${MCR_VERSION}/v93" \ - CAT_VERSION=".8.1_r2042_R${MCR_VERSION}" + CAT_VERSION=".8.1_r2042_R${MCR_VERSION}" \ + DENO_INSTALL="/root/.deno" ENV SPMROOT="/opt/CAT12${CAT_VERSION}" \ - PATH="/opt/CAT12${CAT_VERSION}:$PATH" \ + PATH="$DENO_INSTALL/bin:/opt/CAT12${CAT_VERSION}:$PATH" \ STANDALONE="/opt/CAT12${CAT_VERSION}/standalone" RUN export ND_ENTRYPOINT="/neurodocker/startup.sh" \ @@ -64,6 +65,10 @@ RUN echo "Downloading standalone CAT12 ..." \ # Test && /opt/CAT12${CAT_VERSION}/spm12 function exit +## Install BIDS validator +RUN curl -fsSL https://deno.land/install.sh | sh && \ + deno install -Agf -n bids-validator jsr:@bids/validator@1.14.12 + # transfer code and set permission RUN mkdir -p /code COPY ./code/requirements.txt /code diff --git a/code/_parsers.py b/code/_parsers.py index 726cbc8..8342c9e 100644 --- a/code/_parsers.py +++ b/code/_parsers.py @@ -64,7 +64,7 @@ def _add_common_arguments(parser: ArgumentParser) -> ArgumentParser: nargs="+", required=False, ) - parser = _add_versbose(parser) + parser = _add_verbose(parser) parser.add_argument( "--bids_filter_file", help=""" @@ -73,6 +73,12 @@ def _add_common_arguments(parser: ArgumentParser) -> ArgumentParser: """, required=False, ) + parser.add_argument( + "--skip_validation", + help="Do not run the bids validation.", + action="store_true", + required=False, + ) return parser @@ -90,7 +96,7 @@ def _add_target(parser, with_all=False): return parser -def _add_versbose(parser): +def _add_verbose(parser): parser.add_argument( "--verbose", help=""" @@ -127,7 +133,7 @@ def common_parser( formatter_class=parser.formatter_class, ) view_parser = _add_target(view_parser) - view_parser = _add_versbose(view_parser) + view_parser = _add_verbose(view_parser) copy_parser = subparsers.add_parser( "copy", @@ -135,7 +141,7 @@ def common_parser( formatter_class=parser.formatter_class, ) copy_parser = _add_target(copy_parser, with_all=True) - copy_parser = _add_versbose(copy_parser) + copy_parser = _add_verbose(copy_parser) segment_parser = subparsers.add_parser( "segment", diff --git a/code/main.py b/code/main.py index 89db21e..df3ad9f 100644 --- a/code/main.py +++ b/code/main.py @@ -85,6 +85,9 @@ def main(): ) sys.exit(EXIT_CODES["DATAERR"]["Value"]) + if not args.skip_validation: + run_validation(bids_dir) + layout_in = get_dataset_layout(bids_dir) output_dir = output_dir / f"CAT12_{__version__}" @@ -231,5 +234,13 @@ def copy_files(layout_in, output_dir, subjects): progress.update(copy_loop, advance=1) +def run_validation(bids_dir): + """Run bids validator.""" + try: + subprocess.run(f"bids-validator {bids_dir}", shell=True, check=True) + except subprocess.CalledProcessError: + sys.exit(EXIT_CODES["DATAERR"]["Value"]) + + if __name__ == "__main__": main() diff --git a/makefile b/makefile index d955088..5ef4fa9 100644 --- a/makefile +++ b/makefile @@ -14,7 +14,7 @@ copy: docker run --rm -it cat12 . /foo participant copy tfce --verbose 3 segment: tests/data/MoAEpilot - docker run --rm -it -v $${PWD}/tests/data/MoAEpilot:/data cat12 /data /data/derivatives participant segment --verbose 3 --type segment + docker run --rm -it -v $${PWD}/tests/data/MoAEpilot:/data cat12 /data /data/derivatives participant segment --verbose 3 --type default simple: tests/data/MoAEpilot docker run --rm -it -v $${PWD}/tests/data/MoAEpilot:/data cat12 /data /data/derivatives participant segment --verbose 3 --type simple