GSoC 2025 Project #16 CBRAIN :: A Python Command Line Interface (CLI) for the CBRAIN Distributed Computing Platform (175/350h)

Mentors: Bryan Caron <bryan.caron@mcgill.ca>, Pierre Rioux, Natacha Beck, Serge Boroday, Darcy Quesnel

Skill level: Intermediate - Advanced

Required skills: Python; experience with version control systems (i.e. git) and team-based development methodologies; good understanding of the Linux operating system and development in a Linux environment

Time commitment: part time or full time (350 hours)

Forum for discussion

About: CBRAIN is a web-enabled distributed computing platform that facilitates collaborative research on large, distributed data by creating an easy-to-use interface for users (or groups of collaborating users) to access high-performance computing (HPC) and Cloud Computing resources. Through a series of web-based services, CBRAIN manages data access, transfer, caching and provenance, as well as data processing and reporting. While predominantly used to support researchers in neuroinformatics, CBRAIN is generic and modular, and can easily be extended with new data models and tools for a broad range of research disciplines. CBRAIN is an open source, flexible Ruby on Rails framework for accessing and processing large amounts of data across a distributed network of High Performance Computing (HPC) and Cloud Computing infrastructures. With over 1800 users from over 35 countries, CBRAIN is a key resource that lowers the technical barriers for scientists to conduct neuroinformatics research. More information about CBRAIN can be found at https://cbrain.ca and GitHub - aces/cbrain: CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures..

Aims: The objective of the project is to create a python-based command line interface (CLI), leveraging the CBRAIN APIs, which will enable more advanced users to perform all the typical operations of CBRAIN for data upload / download, file querying / selection, and processing task creation, execution and monitoring from a CLI that can be run on a remote resource without requiring the user to perform the same actions through the CBRAIN web interface. A CLI approach would provide users the ability to create more complex workflows while still leveraging CBRAIN’s core abilities to manage data movement and large-scale data processing.

Website: https://cbrain.ca and GitHub - aces/cbrain: CBRAIN is a flexible Ruby on Rails framework for accessing and processing of large data on high-performance computing infrastructures.

Tech keywords: Keywords: Python, imaging, CBRAIN, distributed computing, cloud computing

1 Like

Hi!
This project looks really exciting! I’m a Computer Science undergrad specializing in Advanced and Applied ML, with experience in computational neuroscience, spiking neural networks (SNNs), and cloud computing. Given my background, I’d love to contribute to this. Is there a particular direction I should focus on to be most effective? Would diving deeper into CBRAIN’s API, distributed computing architectures, or HPC workflows be most beneficial for getting started? Thanks in advance! : )

hy @bryan.caron i mentioned you for some question can you let me know if there is any changes recent updates or changes to the CBRAIN API that would affect the design and implementation of the CLI! Additionally, are there specific new functionalities or improvements that should be prioritized in the CLI beyond the original project scope!

Hey Mentors,
I am really interested in this project for developing the python command line interface for the CBRAIN DCP. Could you share the preferred communication channel where I can be assisted and can engage in the community.

Additionally I have few question regarding this project.

  • Shoulde we prefer a minimal viable CLI first or a more feature-rich implementation from the start?
  • Is there an existing codebase or prototype for this CLI or any other reference you would like to provide us in order to start that I can study before starting from scratch.

@natacha-beck @Serge_Boroday @dlq @bryan.caron

Seems like @bryan.caron have been inactive from a long time :upside_down_face: :melting_face:

I’ll poke Bryan to get back to you but I think we’re looking for a Python with something like Click and directly uses the Swagger API spec.

Wait to hear from Bryan about how to proceed, though.

Okay I’ll have a look on both of these until Bryan is back!:grin:

Had a look at click and also found another one i.e. typer. This also looks fine. Will update you more on which would be fine.

Hey @dlq ,
Had look at both of these and pretty other things as well and feasibility n all. Had wrote something for now whatever done. Could you specify more over what do to next?