Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .github/workflows/draft-pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ jobs:
# Step 1: Checkout repository
- name: Checkout
uses: actions/checkout@v4
with:
lfs: true

# Step 2: Build draft PDF using Open Journals action
- name: Build draft PDF
Expand All @@ -34,4 +36,4 @@ jobs:
uses: EndBug/add-and-commit@v9
with:
message: '(auto) Paper PDF Draft'
add: 'paper/*.pdf' # or 'paper/*.pdf' for multiple PDFs
add: 'paper/*.pdf' # or 'paper/*.pdf' for multiple PDFs
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<h1 align="center">Cardiotensor</h1>
<h1 align="center">CardioTensor</h1>

<p align="center">
<picture>
Expand All @@ -14,7 +14,7 @@
[![CI](https://github.com/JosephBrunet/cardiotensor/actions/workflows/ci.yml/badge.svg)](https://github.com/JosephBrunet/cardiotensor/actions/workflows/ci.yml)
[![Doc](https://img.shields.io/badge/docs-dev-blue.svg)](https://JosephBrunet.github.io/cardiotensor/)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/b0e80972e3104ffa890532738882f42e)](https://app.codacy.com?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![License](https://img.shields.io/github/license/JosephBrunet/cardiotensor)](https://github.com/JosephBrunet/cardiotensor/blob/main/LICENSE)
[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/JosephBrunet/cardiotensor/blob/main/LICENSE)
[![Python Version](https://img.shields.io/pypi/pyversions/cardiotensor.svg)](https://pypi.python.org/pypi/cardiotensor)
[![PyPI version](https://img.shields.io/pypi/v/cardiotensor.svg)](https://pypi.org/project/cardiotensor/)

Expand Down
1 change: 1 addition & 0 deletions docs/advanced/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Pages:

- [Transmural Analysis](./cardio-analysis.md): Extract transmural profiles from angle and FA maps with `cardio-analysis`.
- [Streamlines](./streamlines.md): Generate and visualize 3D streamlines with `cardio-generate-streamlines` and `cardio-visualize-streamlines`.
- [SLURM Launcher](./slurm-launcher.md): Submit chunked `cardio-tensor` jobs on HPC clusters.

See also:

Expand Down
63 changes: 63 additions & 0 deletions docs/advanced/slurm-launcher.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# SLURM Launcher

Use `cardio-tensor-slurm` to submit chunked orientation jobs as SLURM array tasks.

## What It Does

- Splits a dataset into chunks.
- Generates a `.slurm` script.
- Submits one or more SLURM arrays with `sbatch`.
- Monitors output progress.

The launcher calls `cardio-tensor` on each task with:

```bash
cardio-tensor <conf_file> --start_index <start> --end_index <end>
```

## Basic Usage

```bash
cardio-tensor-slurm path/to/parameters.conf
```

## Useful Options

```bash
cardio-tensor-slurm path/to/parameters.conf \
--start_index 0 \ # First slice index (inclusive)
--end_index 5000 \ # Last slice index (exclusive)
--chunk_size 100 \ # Slices processed per SLURM task
--time_limit 4:00:00 \ # Wall-time limit for each task
--cpus_per_task 8 \ # CPU cores requested per task
--mem_gb 64 \ # Memory requested per task (GB)
--array_parallel 50 \ # Max concurrent tasks in the SLURM array
--partition nice \ # Optional partition/queue name
--log_dir /path/to/logs \ # Where SLURM stdout/stderr logs are written
--submit_dir /path/to/slurm_scripts # Where generated .slurm scripts are saved
```

Other useful flags:

- `--no_monitor`: submit jobs and return immediately (do not watch output progress).
- `--dry_run`: generate the `.slurm` script and print `sbatch` command without submitting.

Run help for the full list:

```bash
cardio-tensor-slurm -h
```

## Troubleshooting

- **`sbatch` fails**
Verify partition/account/time/memory policy on your cluster.

- **Job fails before running `cardio-tensor`**
Check logs in `OUTPUT_PATH/slurm/log/`.

- **No progress in monitor**
Confirm output folder permissions and that tasks can write outputs.

- **Want to debug without submitting jobs**
Use `--dry_run`.
2 changes: 1 addition & 1 deletion docs/getting-started/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The `./examples/` directory contains:

1. **Heart Volume**:
- Path: `./data/635.2um_LADAF-2021-17_heart_overview_/`
- Description: A downsampled 3D heart image volume designed for testing. The full-resolution dataset is available at the [Human Organ Atlas](https://human-organ-atlas.esrf.fr/datasets/1659197537).
- Description: A 3D heart image volume, downsampled 32 times from the original 19.85 µm/voxel dataset, resulting in an effective voxel size of 635.2 µm. The full-resolution dataset is available at the [Human Organ Atlas](https://human-organ-atlas.esrf.fr/datasets/1659197537).

2. **Binary Mask**:
- Path: `./data/mask/`
Expand Down
4 changes: 4 additions & 0 deletions docs/reference/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Compute myocyte orientation from a 3D volume using a configuration file.
- `cardio-tensor`
Computes structure tensor, helix/transverse angle, FA, and eigenvectors.

- `cardio-tensor-slurm`
Submits chunked `cardio-tensor` runs as SLURM array jobs.
See [SLURM Launcher](../advanced/slurm-launcher.md).

See the [example](../getting-started/examples.md) to get started.

---
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified examples/data/mask/binary_000000.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000001.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000002.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000003.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000004.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000005.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000006.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000007.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000008.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000009.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000010.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000011.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000012.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000013.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000014.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000015.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000016.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000017.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000018.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000019.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000020.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000021.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000022.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000023.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000024.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000025.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000026.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000027.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000028.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000029.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000030.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000031.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000032.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000033.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000034.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000035.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000036.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000037.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000038.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000039.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000040.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000041.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000042.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000043.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000044.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000045.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000046.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000047.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000048.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000049.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000050.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000051.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000052.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000053.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000054.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000055.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000056.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000057.tif
Binary file not shown.
Binary file modified examples/data/mask/binary_000058.tif
Binary file not shown.
Loading
Loading