Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
43be88e
Merge branch 'feature/refactor-flowchart-nodes-definition' into featu…
Jul 29, 2025
6282373
Batch run feature development
Jul 29, 2025
e8e098b
Merge branch 'feature/refactor-flowchart-nodes-definition' into featu…
Jul 29, 2025
cd01555
Merge branch 'develop-feature' into feature/batch-run-feature
Jul 30, 2025
b27c52e
Batch run feature development
Jul 30, 2025
aab74f5
Batch run feature development
Jul 30, 2025
8da58e7
Merge branch 'feature/refactor-flowchart-nodes-definition' into featu…
Jul 31, 2025
b8a9ed2
increment alembic version:
Aug 12, 2025
dd4b273
Merge branch 'develop-feature' into feature/batch-run-feature
Aug 13, 2025
04ee707
fix linter
Aug 20, 2025
9c9791a
fix linter
Aug 20, 2025
41abf52
Batch run feature development
Aug 22, 2025
07e5fe2
Batch run feature development
Aug 22, 2025
8f76dd3
Batch run feature development
Aug 22, 2025
45bd883
Batch run feature development
Aug 22, 2025
1516c52
Batch run feature development
Aug 24, 2025
c946e01
Batch run feature development
Aug 25, 2025
bcdbb0a
Batch run feature development
Aug 25, 2025
aa05ad1
Batch run feature development
Aug 25, 2025
f4294aa
Batch run feature development
Aug 25, 2025
4cdc7b2
Batch run feature development
Aug 25, 2025
62b8e5b
Batch run feature development
Aug 26, 2025
3bedab7
Batch run feature development
Aug 26, 2025
9743b80
Batch run feature development
Aug 26, 2025
005b0c0
Batch run feature development
Aug 26, 2025
e7bf927
Batch run feature development
Aug 26, 2025
540ff59
Batch run feature development
Aug 26, 2025
068c2e2
Batch run feature development
Aug 26, 2025
9100096
fixed yarn test
Aug 26, 2025
aced9e0
Batch run feature development
Aug 26, 2025
ad922cb
Merge branch 'develop-feature' into feature/batch-run-feature
Aug 27, 2025
2599742
Batch run feature development
Aug 27, 2025
eeb1094
Batch run feature development
Aug 27, 2025
70e3575
Batch run feature development
Aug 27, 2025
0e77484
Batch run feature development
Aug 28, 2025
2767283
Batch run feature development
Aug 31, 2025
ba978c1
Batch run feature development
Sep 4, 2025
04561cf
Batch run feature development
Sep 4, 2025
0e0ebb4
Batch run feature development
Sep 5, 2025
0524450
Merge branch 'feature/improve-input-nodes-file-select-ui' into featur…
Sep 10, 2025
fc58f9a
Merge branch 'feature/improve-input-nodes-file-select-ui' into featur…
Sep 10, 2025
100f4fa
Batch run feature development
Sep 10, 2025
63a4b26
Batch run feature development
Sep 10, 2025
0463639
Merge branch 'feature/improve-input-nodes-file-select-ui' into featur…
Sep 11, 2025
cc950fc
Improve Input Nodes
Sep 12, 2025
e08fe33
Merge branch 'feature/improve-hdf5-mat-structure-dialog' into feature…
Sep 12, 2025
2931ec4
Batch run feature development
Sep 13, 2025
3bacfc5
Batch run feature development
Sep 13, 2025
79ffe51
Merge branch 'develop-feature' into feature/batch-run-feature
Sep 18, 2025
494e9f3
Batch run feature development
Sep 18, 2025
5f372f9
Merge branch 'develop-feature' into feature/batch-run-feature
Oct 8, 2025
0dfad6b
Added batch run feature docs
Oct 16, 2025
a4595e8
Merge branch 'merge/develop-main-to-feature' into feature/batch-run-f…
Oct 16, 2025
4b44625
Added batch run feature docs
Oct 16, 2025
bede188
Merge branch 'feature/batch-run-feature-docs' of https://github.com/a…
Oct 16, 2025
4d1f3df
Responding to comments on docs
Oct 20, 2025
e735298
Responding to comments on docs
Oct 20, 2025
e8b793d
Adjustments for the WorkspaceUpdate model
Oct 20, 2025
c7f6169
Merge pull request #952 from arayabrain/feature/batch-run-feature-docs
itutu-tienday Oct 20, 2025
31fa344
Merge branch 'develop-feature' into feature/batch-run-feature
Dec 5, 2025
98b3360
Merge branch 'develop-feature' into feature/batch-run-feature
Mar 9, 2026
d38758b
fixed lint error
Mar 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added docs/_static/workflow_batch_run/batch_button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/_static/workflow_batch_run/batch_record.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/other/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,5 @@ Other

host_for_multiuser/index
cli_execution
workflow_batch_run
debugging
124 changes: 124 additions & 0 deletions docs/other/workflow_batch_run.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
(workflow-batch-run)=
Workflow Batch Run
=================

By using the Workflow Batch Run function, you can batch-execute workflows set of input data.

\*This feature is limited to ["Multi User Mode"](host_for_multiuser/index.rst).

```{contents}
:depth: 3
```

## Usage Procedure

### Creating a Workspace (Batch Type)

<p>
<img src="../_static/workflow_batch_run/batch_workspaces.png" alt="Workspaces" />
</p>

- Specify the type of workspace as Batch when creating a Workspace.

### Batch Workspace specifics

Batch workspaces have the following UI changes:

<p>
<img src="../_static/workflow_batch_run/batch_workflow_1.png" alt="Workflow" />
</p>

- (1) Display Type: Batch
- (2) From the Batch Data section in the left side menu, you can select each Batch Input Node.
- (3) The "Run" button will display as the "Batch Run" button.

### Selecting Data

<p>
<img src="../_static/workflow_batch_run/batch_workflow_2.png" alt="Workflow" />
</p>

- (1) Batch Input Nodes
- Place a Batch Input Node from "Batch Data" in the left side menu.
- As an example, batch_image and batch_behavior are placed here.
- Each Batch Input Node corresponds to a standard Input Node.
- `batch_{image, csv, fluo, behavior, microscope, hdf5, matlab}`
- (2) File Select dialog
- Each Batch Input Node can select multiple files.

```{eval-rst}
.. note::
* **Data set handling**
* Data are processed in the order they are selected.
* All input data are matched based on their order, whereby image and behaviour in position 1 will be processed together, followed by all of the data in position 2, and so on.
* Data in each node can be easily reordered by dragging up or down in the data list of that node.
* **Validation rule**
* Verify that the number of data in each Batch Input Data Node matches.
* Only the number of data items is checked. File names and data contents are not checked.
```

### Setting dialogs

<p>
<img src="../_static/workflow_batch_run/batch_workflow_3.png" alt="Workflow" />
</p>

- (1) CSV Setting dialog
- For CSV-based Nodes (`batch_{cvs, fluo, behavior}`), various settings can be made in the CSV Setting dialog.
- In the CSV Setting dialog, **the contents of the first file** is previewed, and **same settings are applied to all files**.
- (2) Select Structure dialog
- For Structured data type Nodes (`batch_{hdf5, matlab}`), the path of Input Data can be selected in the Select Structure dialog.
- In the Select Structure dialog, **the contents of the first file (Structure)** is displayed, and **same settings are applied to all files**.
- (3) Node Param Setting
- The parameter settings for each node apply **the same settings to all workflows**.

```{eval-rst}
.. note::
* All workflows will complete with the **same parameter configuration**.
```

### Batch Run

<p>
<img src="../_static/workflow_batch_run/batch_button.png" alt="Batch Run Button" />
</p>

#### Batch Run Button execution behavior

- Validation for Input Data
- Check the number of items for each Batch Input Data
- \***The only check condition is the number of items.** File names and data contents are not checked.
- Execute Batch Run
- No reservations, immediate execution only
- As soon as the process is successfully started, the Workflow will immediately have a completed status.
- The following records are generated
- Batch Workflow Template
- Generate one Template Workflow as the basis of Running Workflow .
- Batch Workflow
- Automatically create Workflows for the number of Data items based on Batch Workflow Template and start parallel execution.

```{eval-rst}
.. note::
* About workflow behavior after RUN BATCH
* When submitting a RUN BATCH command, "the template workflow" then submits a new workflow (job) for each set of data.
* The template workflow will be shown as successful if this job submission itself is successful. However, this does **not** mean any of the jobs themselves have been completed successfully.
* The progress of each job can be seen in the RECORDS tab. Note that individual workflows run independently and some may still succeed or fail depending on the data contents and parameters selected.
```

## Record Screen

<p>
<img src="../_static/workflow_batch_run/batch_record.png" alt="Record" />
</p>

- (1) Record of Batch Workflow Template
- Created when Batch Run Button is executed.
- This Workflow does not run snakemake directly.
- (2) Record of Batch Workflow
- Records of each workflow actually executed based on Batch Workflow Template
- Same content as regular Workflow Record
- "Name" is automatically generated based on the Template Name
- (3) Other menu of Batch Workflow Template
- Reproduce ... Batch Workflow Template can be reproduced
- Download workflow yaml ... You can also download and import Batch Workflow Template workflow.yaml
- Download snakemake yaml ... It is not possible to download snakemake.yaml of Batch Workflow Template (because it is not subject to snakemake execution)
11 changes: 11 additions & 0 deletions frontend/src/api/run/Run.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,17 @@ export async function runByUidApi(
return response.data
}

export async function batchRunApi(
workspaceId: number,
data: RunPostData,
): Promise<string> {
const response = await axios.post(
`${BASE_URL}/run/util/batch_run/${workspaceId}`,
data,
)
return response.data
}

export type RunResultDTO = {
[nodeId: string]: {
status: string
Expand Down
7 changes: 6 additions & 1 deletion frontend/src/api/workspace/index.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
import { stringify } from "qs"

import { WORKSPACE_TYPE } from "const/Workspace"
import {
ItemsWorkspace,
WorkspaceDataDTO,
ListUserShareWorkspaceDTO,
} from "store/slice/Workspace/WorkspaceType"
import axios from "utils/axios"

export type WorkspacePostDataDTO = { name: string; id?: number }
export type WorkspacePostDataDTO = {
id?: number
name: string
type: WORKSPACE_TYPE
}

export const getWorkspaceApi = async (id: number): Promise<ItemsWorkspace> => {
const response = await axios.get(`/workspace/${id}`)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@ import { AddToPhotos } from "@mui/icons-material"
import { IconButton, Tooltip } from "@mui/material"

import { ConfirmDialog } from "components/common/ConfirmDialog"
import { WORKSPACE_TYPE } from "const/Workspace"
import { clearFlowElements } from "store/slice/FlowElement/FlowElementSlice"
import { selectPipelineIsStartedSuccess } from "store/slice/Pipeline/PipelineSelectors"
import { RootState } from "store/store"

export const CreateWorkflowButton = memo(function CreateWorkflowButton() {
const [open, setOpen] = useState(false)
const dispatch = useDispatch()
const isPending = useSelector(selectPipelineIsStartedSuccess)
const workspaceType = WORKSPACE_TYPE.DEFAULT // Currently a fixed value
const workspaceType = useSelector(
(state: RootState) => state.workspace.currentWorkspace.type,
)

const openDialog = () => {
setOpen(true)
Expand Down
Loading