Skip to content

Automated Boutiques descriptor creation for neuroimaging pipelines #72

Open

Description

@michellewang

Title

Automated Boutiques descriptor creation for neuroimaging pipelines

Short description and the goals for the OHBM BrainHack

Boutiques is a framework to describe (and execute) command-line tools. Pipelines described with a Boutiques descriptor JSON file can easy be integrated with downstream projects like Nipoppy and NiWrap. Automating the creation of descriptors and shipping them directly with pipelines (e.g. following the BIDS App execution spec) can make them much more widely available than they currently are.

Unfortunately, it is currently not always straightforward to create and maintain Boutiques descriptors for a given pipeline.

This project aims to create an easy-to-use tool that can enable (BIDS App or other) pipeline developers to:

  1. easy (automatically) create an up-to-date Boutiques descriptor for the current version of their pipeline (provided it is written with Python and uses argparse.ArgumentParser for its CLI)
  2. ship the descriptor and expose it via a CLI argument (e.g., --bids-exec-spec for BIDS Apps)

Link to the Project

https://boutiques.github.io/

Image/Logo for the OHBM brainhack website

https://boutiques.github.io/images/logo.png

Project lead

Michelle Wang, michellewang (GitHub), michelle__wang (Discord)

Main Hub

Bordeaux

Link to the Project pitch

No response

Other hubs covered by the leaders

  • Bordeaux
  • Hybrid (Asia / Pacific)
  • Hybrid (Europe / Middle East / Africa)
  • Hybrid (Americas)

Skills

  • Python

Nice to have:

  • Boutiques
  • GitHub Actions and CI workflows

Recommended tutorials for new contributors

No response

Good first issues

No response

Twitter summary

No response

Short name for the Discord chat channel (~15 chars)

easy-boutiques

Please read and follow the OHBM Code of Conduct

  • I agree to follow the OHBM Code of Conduct during the hackathon

Activity

  1. jennydaman commented on Jun 11, 2026

    @jennydaman

    This project idea is similar to something I've worked on for the ChRIS project.

    It's a Python decorator which accepts an argparse.ArgumentParser object, e.g.

    from chris_plugin import chris_plugin
    from argparse import ArgumentParser
    
    parser = ArgumentParser()
    parser.add_argument('--name', required=True)
    
    @chris_plugin(parser=parser, title='Example')
    def main(options, inputdir, outputdir):
        print(f'hello, {parser.name}')

    Then by running the chris_plugin_info command (which is installed by the chris_plugin package), you get a JSON file containing project metadata (author, license, etc.) and a list of its command-line arguments, e.g.

    {
       "parameters": [
        {
          "name": "example",
          "type": "str",
          "optional": false,
          "flag": "--name",
          "short_flag": "-n",
          "action": "store",
          "help": "The help text of some CLI parameter.",
          "default": null,
          "ui_exposed": true
        },
      ],
      "authors": "Example <example@example.org>",
      "license": "MIT",
      "version": "0.1.3"
    }

    Ref: https://fnndsc.github.io/chris_plugin/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions