Skip to main content

d2b 包的插件,用于确定性地统一不同的采集运行

项目描述

d2b-nth-of-type

PyPI 版本 代码风格 类型检查 测试

d2b 包的插件,用于确定性地统一不同的采集运行

安装

pip install d2b-nth-of-type

入门

该插件将向每个 JSON sidecar 中注入属性,这些属性可以区分不同的运行,随后可以criteria在 d2b 配置文件的规范中使用。

具体来说,这个插件将向__nth_of_type__每个 JSON sidecar 中注入一个属性 , 。此属性的值是一个索引为 0 的整数。

此插件对采集进行分组,并为组中的每次运行提供一个唯一的(0 索引)标签,按指定顺序递增。

默认情况下,采集按(按升序SeriesDescription)分组和排序。SeriesNumber

例如,如果一个主题有一个会话,其中获取了 3 个字段图,例如,3 个边车(截断)的形式为:

  • 场图 1:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 3
    }
    
  • 场图 2:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 16
    }
    
  • 场图 3:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 24
    }
    

然后,当d2b run安装了这个插件运行时,这个插件将注入__nth_of_type__到每个边车中,导致边车(截断)看起来像:

  • 场图 1:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 3,
      "__nth_of_type__": 0
    }
    
  • 场图 2:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 16,
      "__nth_of_type__": 1
    }
    
  • 场图 3:

    {
      "SeriesDescription": "my_fmap",
      "SeriesNumber": 24,
      "__nth_of_type__": 2
    }
    

实用程序是这些值在更改时将保持不变SeriesNumber

因此,如果“第一个”fmap 用于 BOLD 采集,而“第二个”fmap 用于 PCASL 采集,我们可以使用该__nth_of_type__字段安全地挑选出每个 fmap。

例如,我们可以有以下形式的 d2b 配置文件(注意:d2b-yamlyaml 配置文件需要插件,您可能还需要d2b-aslASL 数据插件):

descriptions:
  # BOLD Resting State
  - id: my-bold-rs
    dataType: func
    modalityLabel: bold
    customLabels: task-rest

    criteria:
      # ...

  # PCASL
  - id: my-pcasl
    dataType: perf
    modalityLabel: asl
    customLabels:
      acq: pcasl

    criteria:
      # ...
    aslContext:
      # ...

  # FIRST FMAP - for BOLD - phase encoding = AP
  - dataType: fmap
    modalityLabel: epi
    customLabels:
      dir: AP
    IntendedFor:
      - my-bold-rs
    criteria:
      ManufacturersModelName: Prisma_fit
      SidecarFilename: "*SpinEchoFieldMap_AP*"
      __nth_of_type__: 0 # <-- HERE

  # FIRST FMAP - for BOLD - phase encoding = PA
  - dataType: fmap
    modalityLabel: epi
    customLabels:
      dir: PA
    IntendedFor:
      - my-bold-rs
    criteria:
      ManufacturersModelName: Prisma_fit
      SidecarFilename: "*SpinEchoFieldMap_PA*"
      __nth_of_type__: 0 # <-- HERE

  # SECOND FMAP - for PCASL - phase encoding = AP
  - dataType: fmap
    modalityLabel: epi
    customLabels:
      dir: AP
    IntendedFor:
      - my-pcasl
    criteria:
      ManufacturersModelName: Prisma_fit
      SidecarFilename: "*SpinEchoFieldMap_AP*"
      __nth_of_type__: 1 # <-- HERE

  # SECOND FMAP - for PCASL - phase encoding = PA
  - dataType: fmap
    modalityLabel: epi
    customLabels:
      dir: PA
    IntendedFor:
      - my-pcasl
    criteria:
      ManufacturersModelName: Prisma_fit
      SidecarFilename: "*SpinEchoFieldMap_PA*"
      __nth_of_type__: 1 # <-- HERE

配置

这个插件可以通过d2b run命令选项或环境来配置:

  • --nth-of-type-enabled | --nth-of-type-disabled

    启用或禁用此插件。(默认:启用)

    也可以通过D2B_NTH_OF_TYPE_ENABLED环境变量进行配置。命令行参数优先于环境变量。

  • --nth-of-type-sort-by <string>

    按哪个边车字段对收购进行排序(默认值:)SeriesNumber:asc

    要按降序排序,请附加:desc到字段名上,例如:SeriesNumber:desc. 如果不存在方向/排序后缀 ( :asc/ :desc),则采集按升序排序。

    也可以通过D2B_NTH_OF_TYPE_SORT_BY环境变量进行配置。命令行参数优先于环境变量。

  • --nth-of-type-group-by <string>

    哪个 sidecar 字段将采集分组(默认值:)SeriesDescription

    要按多个字段进行分组,请传递一个逗号分隔的列表,例如:SeriesDescription,RepetitionTime

    也可以通过D2B_NTH_OF_TYPE_GROUP_BY环境变量进行配置。命令行参数优先于环境变量。

贡献

  1. 拥有或安装最新版本的poetry(版本 >= 1.1)
  2. 分叉回购
  3. 设置一个虚拟环境(但是你喜欢)
  4. poetry install
  5. pre-commit install
  6. 添加您的更改(添加/更新测试也总是很好)
  7. 提交您的更改 + 推送到您的分叉
  8. 打开公关

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

d2b-nth-of-type-1.0.1.tar.gz (5.9 kB 查看哈希

已上传 source

内置分布

d2b_nth_of_type-1.0.1-py3-none-any.whl (5.6 kB 查看哈希

已上传 py3