Skip to content

Commit

Permalink
[ENH] clinica_pipeline decorator (#790)
Browse files Browse the repository at this point in the history
* Basic implementation of clinica_pipeline decorator

* Propagate to all pipelines

* Add Pydra-pet-volume after rebasing
  • Loading branch information
NicolasGensollen authored Nov 24, 2022
1 parent b7fbcae commit 444e4a4
Show file tree
Hide file tree
Showing 33 changed files with 77 additions and 98 deletions.
1 change: 1 addition & 0 deletions clinica/pipelines/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from ..pydra.pet_volume import pet_volume_cli as pydra_pet_volume_cli # noqa
from ..pydra.t1_linear import t1_linear_cli as pydra_t1_linear_cli # noqa
from ..pydra.t1_volume.create_dartel import cli as pydra_t1vol_cd_cli # noqa
from ..pydra.t1_volume.tissue_segmentation import cli as pydra_t1vol_ts_cli # noqa
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import click

from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline


@clinica_pipeline
@click.command(
"deeplearning-prepare-data",
deprecated=True,
Expand All @@ -18,6 +19,3 @@ def cli(*args, **kwargs):
"\n\n"
"See: https://clinicadl.readthedocs.io/en/stable/Preprocessing/Extract/"
)


run_cli.add_command(cli)
5 changes: 2 additions & 3 deletions clinica/pipelines/dwi_connectome/dwi_connectome_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "dwi-connectome"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.option_group.pipeline_specific_options
Expand Down Expand Up @@ -62,7 +63,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
5 changes: 2 additions & 3 deletions clinica/pipelines/dwi_dti/dwi_dti_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "dwi-dti"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.option_group.common_pipelines_options
Expand Down Expand Up @@ -49,7 +50,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "dwi-preprocessing-using-phasediff-fmap"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -69,7 +70,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "dwi-preprocessing-using-t1"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -70,7 +71,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
14 changes: 14 additions & 0 deletions clinica/pipelines/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@
from nipype.pipeline.engine import Workflow


def clinica_pipeline(func):
"""Turns a CLI implementation into a Clinica Pipeline.
More precisely, this decorator takes care of:
- registering the implemented command as a subcommand
of `clinica run`.
"""
from clinica.pipelines.cli import cli as run_cli

run_cli.add_command(func)

return func


def postset(attribute, value):
"""Sets the attribute of an object after the execution.
Expand Down
5 changes: 2 additions & 3 deletions clinica/pipelines/machine_learning/classification_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline
from clinica.utils.atlas import T1_VOLUME_ATLASES

pipeline_name = "machinelearning-classification"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.argument.group_label
Expand Down Expand Up @@ -228,7 +229,5 @@ def cli(
pipeline.run()


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "machinelearning-prepare-spatial-svm"


@clinica_pipeline
@click.command(pipeline_name)
@cli_param.argument.caps_directory
@cli_param.argument.group_label
Expand Down Expand Up @@ -106,7 +107,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
6 changes: 2 additions & 4 deletions clinica/pipelines/pet_linear/pet_linear_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "pet-linear"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -86,8 +87,5 @@ def cli(
)


run_cli.add_command(cli)


if __name__ == "__main__":
cli()
5 changes: 2 additions & 3 deletions clinica/pipelines/pet_surface/pet_surface_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "pet-surface"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -79,7 +80,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
5 changes: 2 additions & 3 deletions clinica/pipelines/pet_surface/pet_surface_longitudinal_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "pet-surface-longitudinal"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -79,7 +80,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
6 changes: 2 additions & 4 deletions clinica/pipelines/pet_volume/pet_volume_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "pet-volume"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -123,8 +124,5 @@ def cli(
)


run_cli.add_command(cli)


if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "statistics-surface"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.argument.group_label
Expand Down Expand Up @@ -198,7 +199,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
5 changes: 2 additions & 3 deletions clinica/pipelines/statistics_volume/statistics_volume_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "statistics-volume"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.argument.group_label
Expand Down Expand Up @@ -165,7 +166,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "statistics-volume-correction"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@click.argument("t_map", type=click.Path(exists=True, resolve_path=True))
Expand Down Expand Up @@ -90,7 +91,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
5 changes: 2 additions & 3 deletions clinica/pipelines/t1_freesurfer/t1_freesurfer_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "t1-freesurfer"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.bids_directory
@cli_param.argument.caps_directory
Expand Down Expand Up @@ -86,7 +87,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "t1-freesurfer-longitudinal"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.option_group.common_pipelines_options
Expand Down Expand Up @@ -77,7 +78,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@
import click

from clinica.pipelines import cli_param
from clinica.pipelines.cli import cli as run_cli
from clinica.pipelines.engine import clinica_pipeline

pipeline_name = "t1-freesurfer-longitudinal-correction"


@clinica_pipeline
@click.command(name=pipeline_name)
@cli_param.argument.caps_directory
@cli_param.option_group.common_pipelines_options
Expand Down Expand Up @@ -67,7 +68,5 @@ def cli(
)


run_cli.add_command(cli)

if __name__ == "__main__":
cli()
Loading

0 comments on commit 444e4a4

Please sign in to comment.