From 7c05f0890166f0850224d8e57dae24f5824f2142 Mon Sep 17 00:00:00 2001 From: Chris Markiewicz Date: Wed, 28 Feb 2024 19:43:28 -0500 Subject: [PATCH] ENH: Determine dataset type from bundled dataset_description.json --- tools/schemacode/bidsschematools/__main__.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tools/schemacode/bidsschematools/__main__.py b/tools/schemacode/bidsschematools/__main__.py index a7594a5379..be23877afc 100644 --- a/tools/schemacode/bidsschematools/__main__.py +++ b/tools/schemacode/bidsschematools/__main__.py @@ -1,3 +1,4 @@ +import json import logging import os import re @@ -69,14 +70,30 @@ def pre_receive_hook(schema, input_, output): lines = fobj.readlines() split = lines.index("0001\n") - ignore = [line.rstrip() for line in lines[:split]] + preamble = [line.rstrip() for line in lines[:split]] filenames = [line.rstrip() for line in lines[split + 1 :]] + try: + split = preamble.index("0000") + except ValueError: + description = {} + ignore = preamble + else: + description = json.loads("".join(preamble[:split])) + ignore = preamble[split + 1 :] + + dataset_type = description.get("DatasetType", "raw") schema = load_schema(schema) all_rules = chain.from_iterable( regexify_filename_rules(group, schema, level=2) for group in (schema.rules.files.common, schema.rules.files.raw) ) + if dataset_type == "derivative": + all_rules = chain( + all_rules, + regexify_filename_rules(schema.rules.files.derivatives, schema, level=2), + ) + regexes = [rule["regex"] for rule in all_rules] # XXX Hack for phenotype files - this can be removed once we # have a schema definition for them