Skip to content

Build a Python command line configuration wizard for Neurobagel #6

@alyssadai

Description

@alyssadai

Title

Build a Python command line configuration wizard for Neurobagel

Leaders

Sebastian Urchs (_surchs)
Alyssa Dai (daialyssa)
Arman Jahanpour (rmanaem)

Collaborators

No response

Project Description

Neurobagel is a tool ecosystem and network of global data nodes that lets you search for subject-level neuroscience cohorts across distributed datasets stored at other institutes or sites. To participate, institutes deploy local Neurobagel “nodes” that then connect to the global network to become discoverable and queryable.

We want to make it easier to deploy a Neurobagel node so that more sites can join Neurobagel, including those with more limited technical resources. Currently, configuring a Neurobagel node requires copying and editing local configuration files by hand. This configuration is important, because it controls options such as whether queries return aggregated results or full records, and other privacy-relevant settings.

The current approach is cumbersome and overwhelming for users for several reasons:

  • There are many config options, so the template file is long and hard to edit
  • We are actively developing Neurobagel, so new config options are regularly introduced that users then must manually update in their existing setup
  • Neurobagel has different deployment use cases, and many config options are only relevant to certain ones
  • Users can only find out if their config files are correct by launching the node and waiting for it to fail

Our goal: To create a command line tool that will simplify the process of generating a valid configuration for a Neurobagel node.

Come talk to us if you:

  • Want to (learn to) build the command line tool with us
  • and/or are interested in using Neurobagel and want to give us your view as a potential user
    We are very excited for both kinds of contributions!

Link to project repository/sources

Goals for Brainhack Montreal

  • Gather feedback from contributors to design a simple, user-friendly, and mostly automated process for providing configurations settings for a Neurobagel node via .env/config files
  • Collaboratively develop an easy-to-use Python CLI tool that will simplify Neurobagel node setup by automatically generating a full deployment .env file from a minimal config.ini file including only variables users wish to customize
  • The tool should:
    • Parse and validate user-provided configuration values that explicitly override default settings
    • Allow users to easily update an existing config with different values or newly supported variables
    • Output a deployable configuration file for a Neurobagel node containing either default values or user-supplied values

Skills

As a user:

  • Experience running Python-based tools or commands in the terminal
  • Interest in making data discoverable

As a developer (helpful, but not required):

  • Python

  • Terminal/Bash

    Nice to have:

    • Docker
    • Familiarity with Python command line input tools (e.g., Typer or argparse)
    • Git/GitHub
      • We recommend creating a GitHub account if you don’t already have one

Tech stack

This BrainHack project will use the following tools:

  • Python
  • Typer
  • Docker (not the main focus, previous experience not required)

Onboarding documentation / Expectations

You can find our code contribution guidelines here https://neurobagel.org/contributing/CONTRIBUTING/, but reading them isn’t required to get started - project leads will guide you through all steps of contributing!

What will participants learn?

  • How to build a standalone Python tool that takes user input on the command line
  • How to set up and contribute to a GitHub repository step-by-step (fork -> commit -> push -> pull request)
  • How to write useful tests of key functions
  • How to release and ship the finished tool so others can install it
  • How to work with .env files for tool configuration

Data to use

No response

Credit to collaborators

  • Contributors will be included as co-authors on pull requests and will appear under the “Contributors” list of the GitHub repo
  • We will mention contributors when we announce and distribute the tool to our network of nodes

Image

No response

Type

data_management

Project Maturity Status

2 - releases existing

Topic

other

Tools

other

Programming language

Python

Modalities

not_applicable

Git skills

1_commit_push

Anything else?

No response

Things to do after the project is submitted and ready to review.

  • Short summary of your project pitch to present during the hackathon.

Metadata

Metadata

Assignees

No one assigned

    Labels

    project-submissionTrigger the workflow to add the project to the website

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions