From e6446e6610688177ab3c33b0a26536f3f00f8854 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Wed, 7 Jan 2026 16:02:55 -0500 Subject: [PATCH 01/24] Add system architecture diagram to README --- README.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4a3b5e3db..65b6fb081 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,40 @@ systems. CBRAIN (and the alternative NeuroHub interface) consists of two Ruby on Rails Applications: BrainPortal and Bourreau +## System architecture + +```mermaid +flowchart LR + Users([Researchers & Web browsers]) + NH[NeuroHub Portal
Alternative UI] + BP[BrainPortal
Rails frontend] + DB[(Shared database & metadata)] + DP[Data providers
(S3/HTTP/FTP, etc.)] + BO[Bourreau
Rails backend services] + Sched[HPC scheduler
(SLURM/PBS/...)] + Compute[Compute nodes] + Scratch[(Working directories
/ shared storage)] + + Users --> BP + Users --> NH + NH --> BP + BP <--> DB + BP <--> DP + BP <--> BO + BO <--> DB + BO --> Sched --> Compute + BO <--> Scratch + Compute <--> Scratch +``` + +At a high level, researchers interact with BrainPortal (or the NeuroHub +portal) through a web browser. BrainPortal orchestrates access to data +providers, persists metadata in the shared database, and delegates +execution requests to Bourreau instances. Bourreau connects to local HPC +schedulers to launch jobs on compute nodes, manages working directories +on shared storage, and synchronizes job and file state back to the +database for BrainPortal to display. + ## BrainPortal BrainPortal is the frontend of the CBRAIN architecture. It is a @@ -45,4 +79,3 @@ running on the HPC where it resides. ## For more information CBRAIN is extensively documented in its [Wiki](https://github.com/aces/cbrain/wiki). - From 1d0d23923131e2de7ffd6cb8406334082ed64fb1 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Wed, 7 Jan 2026 16:48:25 -0500 Subject: [PATCH 02/24] Clarify diagram arrow direction in README --- README.md | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 65b6fb081..a587b74f9 100644 --- a/README.md +++ b/README.md @@ -37,22 +37,23 @@ flowchart LR Users --> BP Users --> NH NH --> BP - BP <--> DB - BP <--> DP - BP <--> BO - BO <--> DB + BP --> DB + BP --> DP + BP --> BO + BO --> DB BO --> Sched --> Compute - BO <--> Scratch - Compute <--> Scratch + BO --> Scratch + Compute --> Scratch ``` At a high level, researchers interact with BrainPortal (or the NeuroHub -portal) through a web browser. BrainPortal orchestrates access to data -providers, persists metadata in the shared database, and delegates -execution requests to Bourreau instances. Bourreau connects to local HPC -schedulers to launch jobs on compute nodes, manages working directories -on shared storage, and synchronizes job and file state back to the -database for BrainPortal to display. +portal) through a web browser. The arrows in the diagram show the primary +request flow; responses are implied by each call. BrainPortal orchestrates +access to data providers, persists metadata in the shared database, and +delegates execution requests to Bourreau instances. Bourreau connects to +local HPC schedulers to launch jobs on compute nodes, manages working +directories on shared storage, and synchronizes job and file state back +to the database for BrainPortal to display. ## BrainPortal From 208e98daf8aa1669bec9c6728e236f1a37a0b6a9 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Wed, 7 Jan 2026 16:48:29 -0500 Subject: [PATCH 03/24] Remove parentheses from diagram labels --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a587b74f9..262cc779e 100644 --- a/README.md +++ b/README.md @@ -28,11 +28,11 @@ flowchart LR NH[NeuroHub Portal
Alternative UI] BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] - DP[Data providers
(S3/HTTP/FTP, etc.)] + DP[Data providers
S3/HTTP/FTP, etc.] BO[Bourreau
Rails backend services] - Sched[HPC scheduler
(SLURM/PBS/...)] + Sched[HPC scheduler
SLURM/PBS/...] Compute[Compute nodes] - Scratch[(Working directories
/ shared storage)] + Scratch[(Working directories
Shared storage)] Users --> BP Users --> NH From 6fc026435d5a84250064e132eb7774c73cf51012 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Wed, 7 Jan 2026 23:42:09 -0500 Subject: [PATCH 04/24] Note Bourreau data provider access --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 262cc779e..ce6b11b37 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ flowchart LR BP --> DB BP --> DP BP --> BO + BO --> DP BO --> DB BO --> Sched --> Compute BO --> Scratch @@ -53,7 +54,8 @@ access to data providers, persists metadata in the shared database, and delegates execution requests to Bourreau instances. Bourreau connects to local HPC schedulers to launch jobs on compute nodes, manages working directories on shared storage, and synchronizes job and file state back -to the database for BrainPortal to display. +to the database for BrainPortal to display. Bourreau can also fetch and +stage data from providers as part of backend task execution. ## BrainPortal From 5835221570d149b5019ac45e91fb736e25105a84 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 12:48:47 -0500 Subject: [PATCH 05/24] Clarify multiple Bourreaux and compute nodes --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ce6b11b37..29b445e7c 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ flowchart LR BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] DP[Data providers
S3/HTTP/FTP, etc.] - BO[Bourreau
Rails backend services] + BO[Bourreau(s)
Rails backend services] Sched[HPC scheduler
SLURM/PBS/...] - Compute[Compute nodes] + Compute[Compute node(s)] Scratch[(Working directories
Shared storage)] Users --> BP @@ -51,11 +51,11 @@ At a high level, researchers interact with BrainPortal (or the NeuroHub portal) through a web browser. The arrows in the diagram show the primary request flow; responses are implied by each call. BrainPortal orchestrates access to data providers, persists metadata in the shared database, and -delegates execution requests to Bourreau instances. Bourreau connects to -local HPC schedulers to launch jobs on compute nodes, manages working -directories on shared storage, and synchronizes job and file state back -to the database for BrainPortal to display. Bourreau can also fetch and -stage data from providers as part of backend task execution. +delegates execution requests to one or more Bourreau instances. Bourreaux +connect to local HPC schedulers to launch jobs on pools of compute nodes, +manage working directories on shared storage, and synchronize job and file +state back to the database for BrainPortal to display. Bourreaux can also +fetch and stage data from providers as part of backend task execution. ## BrainPortal From 936d3a7f822274d773a832db6a6f14335d1fa2c4 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 12:51:10 -0500 Subject: [PATCH 06/24] Remove parentheses from diagram labels --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 29b445e7c..0ed6c6fee 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ flowchart LR BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] DP[Data providers
S3/HTTP/FTP, etc.] - BO[Bourreau(s)
Rails backend services] + BO[Bourreaux
Rails backend services] Sched[HPC scheduler
SLURM/PBS/...] - Compute[Compute node(s)] + Compute[Compute nodes] Scratch[(Working directories
Shared storage)] Users --> BP From 9ac015e5faa1bdb6489fb4f81700ad767bccd2a1 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 12:57:51 -0500 Subject: [PATCH 07/24] Show Bourreau and compute node pools in diagram --- README.md | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0ed6c6fee..a35823fa3 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,17 @@ flowchart LR BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] DP[Data providers
S3/HTTP/FTP, etc.] - BO[Bourreaux
Rails backend services] + subgraph Bourreaux[Multiple Bourreaux] + BO1[Bourreau] + BO2[Bourreau] + BO3[More...] + end Sched[HPC scheduler
SLURM/PBS/...] - Compute[Compute nodes] + subgraph ComputePool[Compute nodes pool] + Compute1[Compute node] + Compute2[Compute node] + Compute3[More...] + end Scratch[(Working directories
Shared storage)] Users --> BP @@ -39,12 +47,18 @@ flowchart LR NH --> BP BP --> DB BP --> DP - BP --> BO - BO --> DP - BO --> DB - BO --> Sched --> Compute - BO --> Scratch - Compute --> Scratch + BP --> BO1 + BP --> BO2 + BO1 --> DP + BO2 --> DP + BO1 --> DB + BO2 --> DB + BO1 --> Sched --> Compute1 + BO2 --> Sched --> Compute2 + BO1 --> Scratch + BO2 --> Scratch + Compute1 --> Scratch + Compute2 --> Scratch ``` At a high level, researchers interact with BrainPortal (or the NeuroHub From fbbec7b223d0d8414b9b39410f3326e5b9f5b6fd Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 12:58:08 -0500 Subject: [PATCH 08/24] Annotate SSH links in architecture diagram --- README.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index a35823fa3..d62e92ec8 100644 --- a/README.md +++ b/README.md @@ -47,14 +47,14 @@ flowchart LR NH --> BP BP --> DB BP --> DP - BP --> BO1 - BP --> BO2 + BP -->|SSH/XML| BO1 + BP -->|SSH/XML| BO2 BO1 --> DP BO2 --> DP BO1 --> DB BO2 --> DB - BO1 --> Sched --> Compute1 - BO2 --> Sched --> Compute2 + BO1 -->|SSH| Sched --> Compute1 + BO2 -->|SSH| Sched --> Compute2 BO1 --> Scratch BO2 --> Scratch Compute1 --> Scratch @@ -65,11 +65,12 @@ At a high level, researchers interact with BrainPortal (or the NeuroHub portal) through a web browser. The arrows in the diagram show the primary request flow; responses are implied by each call. BrainPortal orchestrates access to data providers, persists metadata in the shared database, and -delegates execution requests to one or more Bourreau instances. Bourreaux -connect to local HPC schedulers to launch jobs on pools of compute nodes, -manage working directories on shared storage, and synchronize job and file -state back to the database for BrainPortal to display. Bourreaux can also -fetch and stage data from providers as part of backend task execution. +delegates execution requests to one or more Bourreau instances, typically +over SSH/XML. Bourreaux connect to local HPC schedulers over SSH to launch +jobs on pools of compute nodes, manage working directories on shared +storage, and synchronize job and file state back to the database for +BrainPortal to display. Bourreaux can also fetch and stage data from +providers as part of backend task execution. ## BrainPortal From 41d73b23370b4e20f15e85a0e0ae9649855d71e3 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 13:05:10 -0500 Subject: [PATCH 09/24] Show Bourreaux per HPC resource --- README.md | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index d62e92ec8..f56013b24 100644 --- a/README.md +++ b/README.md @@ -29,18 +29,20 @@ flowchart LR BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] DP[Data providers
S3/HTTP/FTP, etc.] - subgraph Bourreaux[Multiple Bourreaux] + subgraph ResourceA[HPC resource A] BO1[Bourreau] - BO2[Bourreau] - BO3[More...] - end - Sched[HPC scheduler
SLURM/PBS/...] - subgraph ComputePool[Compute nodes pool] + Sched1[HPC scheduler
SLURM/PBS/...] Compute1[Compute node] Compute2[Compute node] - Compute3[More...] + Scratch1[(Working directories
Shared storage)] + end + subgraph ResourceB[HPC resource B] + BO2[Bourreau] + Sched2[HPC scheduler
SLURM/PBS/...] + Compute3[Compute node] + Compute4[Compute node] + Scratch2[(Working directories
Shared storage)] end - Scratch[(Working directories
Shared storage)] Users --> BP Users --> NH @@ -53,12 +55,12 @@ flowchart LR BO2 --> DP BO1 --> DB BO2 --> DB - BO1 -->|SSH| Sched --> Compute1 - BO2 -->|SSH| Sched --> Compute2 - BO1 --> Scratch - BO2 --> Scratch - Compute1 --> Scratch - Compute2 --> Scratch + BO1 -->|SSH| Sched1 --> Compute1 + BO2 -->|SSH| Sched2 --> Compute3 + BO1 --> Scratch1 + BO2 --> Scratch2 + Compute1 --> Scratch1 + Compute3 --> Scratch2 ``` At a high level, researchers interact with BrainPortal (or the NeuroHub @@ -66,11 +68,11 @@ portal) through a web browser. The arrows in the diagram show the primary request flow; responses are implied by each call. BrainPortal orchestrates access to data providers, persists metadata in the shared database, and delegates execution requests to one or more Bourreau instances, typically -over SSH/XML. Bourreaux connect to local HPC schedulers over SSH to launch -jobs on pools of compute nodes, manage working directories on shared -storage, and synchronize job and file state back to the database for -BrainPortal to display. Bourreaux can also fetch and stage data from -providers as part of backend task execution. +over SSH/XML. Each Bourreau runs on a specific HPC resource and connects +to the local scheduler over SSH to launch jobs on that resource's compute +nodes. Bourreaux manage working directories on shared storage, synchronize +job and file state back to the database for BrainPortal to display, and +fetch or stage data from providers as part of backend task execution. ## BrainPortal From 27541bc880db10df954bf929014523aa5a108a12 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 13:09:44 -0500 Subject: [PATCH 10/24] Show multiple data providers in architecture diagram --- README.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f56013b24..b68fa0a1d 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,11 @@ flowchart LR NH[NeuroHub Portal
Alternative UI] BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] - DP[Data providers
S3/HTTP/FTP, etc.] + subgraph DataProviders[Data providers] + DP1[Data provider
S3/HTTP/FTP, etc.] + DP2[Data provider
S3/HTTP/FTP, etc.] + DP3[More...] + end subgraph ResourceA[HPC resource A] BO1[Bourreau] Sched1[HPC scheduler
SLURM/PBS/...] @@ -48,11 +52,14 @@ flowchart LR Users --> NH NH --> BP BP --> DB - BP --> DP + BP --> DP1 + BP --> DP2 BP -->|SSH/XML| BO1 BP -->|SSH/XML| BO2 - BO1 --> DP - BO2 --> DP + BO1 --> DP1 + BO1 --> DP2 + BO2 --> DP1 + BO2 --> DP2 BO1 --> DB BO2 --> DB BO1 -->|SSH| Sched1 --> Compute1 @@ -72,7 +79,8 @@ over SSH/XML. Each Bourreau runs on a specific HPC resource and connects to the local scheduler over SSH to launch jobs on that resource's compute nodes. Bourreaux manage working directories on shared storage, synchronize job and file state back to the database for BrainPortal to display, and -fetch or stage data from providers as part of backend task execution. +fetch or stage data from multiple data providers as part of backend task +execution. ## BrainPortal From 3ba0930221a7133b2fc8d6f7ef75c9e56b08e1e6 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 15:23:15 -0500 Subject: [PATCH 11/24] Remove SSH labels for scheduler links --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b68fa0a1d..07331cd1a 100644 --- a/README.md +++ b/README.md @@ -62,8 +62,8 @@ flowchart LR BO2 --> DP2 BO1 --> DB BO2 --> DB - BO1 -->|SSH| Sched1 --> Compute1 - BO2 -->|SSH| Sched2 --> Compute3 + BO1 --> Sched1 --> Compute1 + BO2 --> Sched2 --> Compute3 BO1 --> Scratch1 BO2 --> Scratch2 Compute1 --> Scratch1 @@ -76,7 +76,7 @@ request flow; responses are implied by each call. BrainPortal orchestrates access to data providers, persists metadata in the shared database, and delegates execution requests to one or more Bourreau instances, typically over SSH/XML. Each Bourreau runs on a specific HPC resource and connects -to the local scheduler over SSH to launch jobs on that resource's compute +to the local scheduler to launch jobs on that resource's compute nodes. Bourreaux manage working directories on shared storage, synchronize job and file state back to the database for BrainPortal to display, and fetch or stage data from multiple data providers as part of backend task From 9ab539c38bc8db8a3aab729728d6e1178d66694f Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 15:23:23 -0500 Subject: [PATCH 12/24] Group HPC resources in diagram --- README.md | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 07331cd1a..19dfc0360 100644 --- a/README.md +++ b/README.md @@ -33,19 +33,22 @@ flowchart LR DP2[Data provider
S3/HTTP/FTP, etc.] DP3[More...] end - subgraph ResourceA[HPC resource A] - BO1[Bourreau] - Sched1[HPC scheduler
SLURM/PBS/...] - Compute1[Compute node] - Compute2[Compute node] - Scratch1[(Working directories
Shared storage)] - end - subgraph ResourceB[HPC resource B] - BO2[Bourreau] - Sched2[HPC scheduler
SLURM/PBS/...] - Compute3[Compute node] - Compute4[Compute node] - Scratch2[(Working directories
Shared storage)] + subgraph HPCResources[HPC resources] + subgraph ResourceA[HPC resource A] + BO1[Bourreau] + Sched1[HPC scheduler
SLURM/PBS/...] + Compute1[Compute node] + Compute2[Compute node] + Scratch1[(Working directories
Shared storage)] + end + subgraph ResourceB[HPC resource B] + BO2[Bourreau] + Sched2[HPC scheduler
SLURM/PBS/...] + Compute3[Compute node] + Compute4[Compute node] + Scratch2[(Working directories
Shared storage)] + end + ResourceMore[More...] end Users --> BP From 422cfab763951e9373f8650bef6801483c546698 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 15:23:31 -0500 Subject: [PATCH 13/24] Group BrainPortal with shared database --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19dfc0360..227a96bdd 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,10 @@ CBRAIN (and the alternative NeuroHub interface) consists of two Ruby on Rails Ap flowchart LR Users([Researchers & Web browsers]) NH[NeuroHub Portal
Alternative UI] - BP[BrainPortal
Rails frontend] - DB[(Shared database & metadata)] + subgraph Frontend[Frontend resources] + BP[BrainPortal
Rails frontend] + DB[(Shared database & metadata)] + end subgraph DataProviders[Data providers] DP1[Data provider
S3/HTTP/FTP, etc.] DP2[Data provider
S3/HTTP/FTP, etc.] From 092c7071587fddf045edbd954fc671ae4be8d799 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 15:30:21 -0500 Subject: [PATCH 14/24] Set HPC resource subgraph ordering --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 227a96bdd..db34a4342 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ flowchart LR DP3[More...] end subgraph HPCResources[HPC resources] + direction TB subgraph ResourceA[HPC resource A] BO1[Bourreau] Sched1[HPC scheduler
SLURM/PBS/...] From 670f7585370867af9a0aba5711088431cb483cfb Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 15:30:26 -0500 Subject: [PATCH 15/24] Group external resources in diagram --- README.md | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index db34a4342..46fb3237a 100644 --- a/README.md +++ b/README.md @@ -30,28 +30,31 @@ flowchart LR BP[BrainPortal
Rails frontend] DB[(Shared database & metadata)] end - subgraph DataProviders[Data providers] - DP1[Data provider
S3/HTTP/FTP, etc.] - DP2[Data provider
S3/HTTP/FTP, etc.] - DP3[More...] - end - subgraph HPCResources[HPC resources] + subgraph ExternalResources[External resources] direction TB - subgraph ResourceA[HPC resource A] - BO1[Bourreau] - Sched1[HPC scheduler
SLURM/PBS/...] - Compute1[Compute node] - Compute2[Compute node] - Scratch1[(Working directories
Shared storage)] + subgraph DataProviders[Data providers] + DP1[Data provider
S3/HTTP/FTP, etc.] + DP2[Data provider
S3/HTTP/FTP, etc.] + DP3[More...] end - subgraph ResourceB[HPC resource B] - BO2[Bourreau] - Sched2[HPC scheduler
SLURM/PBS/...] - Compute3[Compute node] - Compute4[Compute node] - Scratch2[(Working directories
Shared storage)] + subgraph HPCResources[HPC resources] + direction TB + subgraph ResourceA[HPC resource A] + BO1[Bourreau] + Sched1[HPC scheduler
SLURM/PBS/...] + Compute1[Compute node] + Compute2[Compute node] + Scratch1[(Working directories
Shared storage)] + end + subgraph ResourceB[HPC resource B] + BO2[Bourreau] + Sched2[HPC scheduler
SLURM/PBS/...] + Compute3[Compute node] + Compute4[Compute node] + Scratch2[(Working directories
Shared storage)] + end + ResourceMore[More...] end - ResourceMore[More...] end Users --> BP From ac8435d99a7e6b7cc7116abbaa81b3c879dc8d6e Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:31:12 -0500 Subject: [PATCH 16/24] Group compute nodes under subgraphs --- README.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 46fb3237a..536a06655 100644 --- a/README.md +++ b/README.md @@ -42,16 +42,22 @@ flowchart LR subgraph ResourceA[HPC resource A] BO1[Bourreau] Sched1[HPC scheduler
SLURM/PBS/...] + subgraph ComputePoolA[Compute nodes] Compute1[Compute node] Compute2[Compute node] - Scratch1[(Working directories
Shared storage)] + ComputeMoreA[More...] + end + Scratch1[(Working directories
Shared storage)] end subgraph ResourceB[HPC resource B] BO2[Bourreau] Sched2[HPC scheduler
SLURM/PBS/...] + subgraph ComputePoolB[Compute nodes] Compute3[Compute node] Compute4[Compute node] - Scratch2[(Working directories
Shared storage)] + ComputeMoreB[More...] + end + Scratch2[(Working directories
Shared storage)] end ResourceMore[More...] end @@ -76,7 +82,11 @@ flowchart LR BO1 --> Scratch1 BO2 --> Scratch2 Compute1 --> Scratch1 + Compute2 --> Scratch1 + ComputeMoreA --> Scratch1 Compute3 --> Scratch2 + Compute4 --> Scratch2 + ComputeMoreB --> Scratch2 ``` At a high level, researchers interact with BrainPortal (or the NeuroHub From e3ae50d1b32afefbe44c5aa31376509502871c33 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:31:18 -0500 Subject: [PATCH 17/24] Set data providers layout direction --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 536a06655..d179428db 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ flowchart LR subgraph ExternalResources[External resources] direction TB subgraph DataProviders[Data providers] + direction LR DP1[Data provider
S3/HTTP/FTP, etc.] DP2[Data provider
S3/HTTP/FTP, etc.] DP3[More...] From 5ad4eebd509e7d7f31d52de0e97ea22d3d7bda58 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:31:36 -0500 Subject: [PATCH 18/24] Link data provider subgraph --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d179428db..01b356b90 100644 --- a/README.md +++ b/README.md @@ -68,14 +68,11 @@ flowchart LR Users --> NH NH --> BP BP --> DB - BP --> DP1 - BP --> DP2 + BP --> DataProviders BP -->|SSH/XML| BO1 BP -->|SSH/XML| BO2 - BO1 --> DP1 - BO1 --> DP2 - BO2 --> DP1 - BO2 --> DP2 + BO1 --> DataProviders + BO2 --> DataProviders BO1 --> DB BO2 --> DB BO1 --> Sched1 --> Compute1 From 775e1225445e0f19de514f334e64ab49035da164 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:32:31 -0500 Subject: [PATCH 19/24] Route scheduler links to compute pools --- README.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 01b356b90..6c1c94885 100644 --- a/README.md +++ b/README.md @@ -75,16 +75,10 @@ flowchart LR BO2 --> DataProviders BO1 --> DB BO2 --> DB - BO1 --> Sched1 --> Compute1 - BO2 --> Sched2 --> Compute3 - BO1 --> Scratch1 - BO2 --> Scratch2 - Compute1 --> Scratch1 - Compute2 --> Scratch1 - ComputeMoreA --> Scratch1 - Compute3 --> Scratch2 - Compute4 --> Scratch2 - ComputeMoreB --> Scratch2 + BO1 --> Sched1 --> ComputePoolA + BO2 --> Sched2 --> ComputePoolB + ComputePoolA --> Scratch1 + ComputePoolB --> Scratch2 ``` At a high level, researchers interact with BrainPortal (or the NeuroHub From 146ede61db482ba289baf675e1aaf5ff6d534c9c Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:33:01 -0500 Subject: [PATCH 20/24] Set Mermaid renderer and theme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6c1c94885..93df26ab9 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ CBRAIN (and the alternative NeuroHub interface) consists of two Ruby on Rails Ap ## System architecture ```mermaid +%%{init: {"theme": "base", "flowchart": {"defaultRenderer": "elk"}}}%% flowchart LR Users([Researchers & Web browsers]) NH[NeuroHub Portal
Alternative UI] From eec089ce37d41bc8a6137887ffc24e581a181bad Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:33:35 -0500 Subject: [PATCH 21/24] Adjust more placeholders in diagram --- README.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 93df26ab9..cab9bb88e 100644 --- a/README.md +++ b/README.md @@ -34,10 +34,10 @@ flowchart LR subgraph ExternalResources[External resources] direction TB subgraph DataProviders[Data providers] - direction LR + direction TB DP1[Data provider
S3/HTTP/FTP, etc.] - DP2[Data provider
S3/HTTP/FTP, etc.] DP3[More...] + DP2[Data provider
S3/HTTP/FTP, etc.] end subgraph HPCResources[HPC resources] direction TB @@ -46,8 +46,8 @@ flowchart LR Sched1[HPC scheduler
SLURM/PBS/...] subgraph ComputePoolA[Compute nodes] Compute1[Compute node] - Compute2[Compute node] ComputeMoreA[More...] + Compute2[Compute node] end Scratch1[(Working directories
Shared storage)] end @@ -56,13 +56,12 @@ flowchart LR Sched2[HPC scheduler
SLURM/PBS/...] subgraph ComputePoolB[Compute nodes] Compute3[Compute node] - Compute4[Compute node] ComputeMoreB[More...] + Compute4[Compute node] end Scratch2[(Working directories
Shared storage)] end - ResourceMore[More...] - end + end end Users --> BP From 4fa97845fb0bcceccc4d0510c7eeee36b6a158d6 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:33:39 -0500 Subject: [PATCH 22/24] Fix Mermaid subgraph indentation --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index cab9bb88e..93bf1e274 100644 --- a/README.md +++ b/README.md @@ -44,24 +44,24 @@ flowchart LR subgraph ResourceA[HPC resource A] BO1[Bourreau] Sched1[HPC scheduler
SLURM/PBS/...] - subgraph ComputePoolA[Compute nodes] - Compute1[Compute node] - ComputeMoreA[More...] - Compute2[Compute node] - end - Scratch1[(Working directories
Shared storage)] + subgraph ComputePoolA[Compute nodes] + Compute1[Compute node] + ComputeMoreA[More...] + Compute2[Compute node] + end + Scratch1[(Working directories
Shared storage)] end subgraph ResourceB[HPC resource B] BO2[Bourreau] Sched2[HPC scheduler
SLURM/PBS/...] - subgraph ComputePoolB[Compute nodes] - Compute3[Compute node] - ComputeMoreB[More...] - Compute4[Compute node] - end - Scratch2[(Working directories
Shared storage)] + subgraph ComputePoolB[Compute nodes] + Compute3[Compute node] + ComputeMoreB[More...] + Compute4[Compute node] + end + Scratch2[(Working directories
Shared storage)] end - end + end end Users --> BP From ddc409527de251209ec717b820c7f7d93cef6ead Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:38:48 -0500 Subject: [PATCH 23/24] Move More placeholders to end --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 93bf1e274..d83d814ba 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,8 @@ flowchart LR subgraph DataProviders[Data providers] direction TB DP1[Data provider
S3/HTTP/FTP, etc.] - DP3[More...] DP2[Data provider
S3/HTTP/FTP, etc.] + DP3[More...] end subgraph HPCResources[HPC resources] direction TB @@ -46,8 +46,8 @@ flowchart LR Sched1[HPC scheduler
SLURM/PBS/...] subgraph ComputePoolA[Compute nodes] Compute1[Compute node] - ComputeMoreA[More...] Compute2[Compute node] + ComputeMoreA[More...] end Scratch1[(Working directories
Shared storage)] end @@ -56,8 +56,8 @@ flowchart LR Sched2[HPC scheduler
SLURM/PBS/...] subgraph ComputePoolB[Compute nodes] Compute3[Compute node] - ComputeMoreB[More...] Compute4[Compute node] + ComputeMoreB[More...] end Scratch2[(Working directories
Shared storage)] end From f5670503541c41ca2f87567e064aabacc42e2476 Mon Sep 17 00:00:00 2001 From: Darcy Quesnel Date: Thu, 8 Jan 2026 16:38:55 -0500 Subject: [PATCH 24/24] Restore Bourreau to scratch links --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d83d814ba..407b3a87a 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,8 @@ flowchart LR BO2 --> DB BO1 --> Sched1 --> ComputePoolA BO2 --> Sched2 --> ComputePoolB + BO1 --> Scratch1 + BO2 --> Scratch2 ComputePoolA --> Scratch1 ComputePoolB --> Scratch2 ```