3
3
[ ![ PyPI - Version] [ pypi-version ]] [ pypi-project ]
4
4
[ ![ PyPI - Python Version] [ pypi-pyversions ]] [ pypi-project ]
5
5
[ ![ PyPI - Downloads] [ pypi-downloads ]] [ pypi-project ]
6
- ![ ] [ status-docs ]
7
- ![ ] [ status-test ]
6
+ [ ![ Status-docs ] [ status-docs-badge ]] [ status-docs-link ]
7
+ [ ![ Status-CICD ] [ status-cicd-badge ]] [ status-cicd-link ]
8
8
9
9
----
10
10
@@ -24,7 +24,7 @@ for FMRI, MRI and DTI brain imaging data.
24
24
- [ Development] ( #development )
25
25
- [ License] ( #license )
26
26
27
- ## Available tasks
27
+ ## Tested interfaces
28
28
29
29
| Module | Tasks |
30
30
| --------| --------------------------------------------------------------------------------------------------------------------|
@@ -48,26 +48,137 @@ A separate installation of FSL is required to use this package.
48
48
Please review the FSL [ installation instructions] [ fsl-install ]
49
49
and [ licensing details] [ fsl-license ] .
50
50
51
+ ## Installation
52
+
53
+ ``` console
54
+ pip install pydra-fsl
55
+ ```
56
+
57
+ A separate installation of FreeSurfer is required to use this package.
58
+ Please review the following [ instructions] [ fsl-install ]
59
+ and [ licensing details] [ fsl-license ] .
60
+
61
+ ## Automatic Conversion
62
+
63
+ Automatically generated tasks can be found in the ` pydra.tasks.fsl.auto ` sub-package.
64
+ These interfaces should be treated with caution as they likely do not pass testing.
65
+ Generated tasks that have been edited and pass testing will be imported into one or more of the
66
+ ` pydra.tasks.fsl.v* ` sub-packages (e.g. ` pydra.tasks.fsl.v7_4 ` ) corresponding
67
+ to the version of the fsl toolkit they are designed for.
68
+
69
+
70
+ ### Continuous integration
71
+
72
+ This template uses [ GitHub Actions] ( https://docs.github.com/en/actions/ ) to run tests and
73
+ deploy packages to PYPI. New packages are built and uploaded when releases are created on
74
+ GitHub, or new releases of Nipype or the Nipype2Pydra conversion tool are released.
75
+ Releases triggered by updates to Nipype or Nipype2Pydra are signified by the ` postN `
76
+ suffix where ` N = <nipype-version><nipype2pydra-version> ` with the '.'s stripped, e.g.
77
+ ` v0.2.3post185010 ` corresponds to the v0.2.3 tag of this repository with auto-generated
78
+ packages from Nipype 1.8.5 using Nipype2Pydra 0.1.0.
79
+
51
80
## Development
52
81
53
- This project is managed with [ Hatch] [ hatch ] :
82
+ ### Methodology
83
+
84
+ The development of this package is expected to have two phases
85
+
86
+ 1 . Where the corresponding Nipype interfaces are considered to be the ground truth, and
87
+ the Pydra tasks are generated from them
88
+ 2 . When the Pydra tasks are considered be mature and they are edited by hand
89
+
90
+ Different tasks will probably mature at different times so there will probably be an
91
+ intermediate phase between 1 and 2.
92
+
93
+ ### Developer installation
94
+
95
+ Before the pydra task interfaces can be generated and installed, the file-format classes
96
+ [ fileformats] ( https://arcanaframework.github.io/fileformats/ ) packages
97
+ corresponding to FSL specific file formats will need to be installed
98
+
99
+ ``` console
100
+ pip install -e ./related-packages/fileformats[dev]
101
+ pip install -e ./related-packages/fileformats-extras[dev]
102
+ ```
103
+
104
+ Next install the requirements for running the auto-conversion script and generate the
105
+ Pydra task interfaces from their Nipype counterparts
106
+
107
+ ``` console
108
+ pip install -r nipype-auto-conv/requirements.txt
109
+ ```
110
+
111
+ The run the conversion script to convert Nipype interfaces to Pydra
112
+
113
+ ``` console
114
+ nipype-auto-conv/generate
115
+ ```
116
+
117
+ Install repo in developer mode from the source directory and install pre-commit to
118
+ ensure consistent code-style and quality.
54
119
55
120
``` console
56
- pipx install hatch
121
+ pip install -e .[test,dev]
122
+ pre-commit install
57
123
```
58
124
59
- To run the test suite:
125
+ ### Auto-conversion phase
126
+
127
+ The auto-converted Pydra tasks are generated from their corresponding Nipype interface
128
+ in combination with "conversion hints" contained in YAML specs
129
+ located in ` nipype-auto-conv/specs/ ` . The self-documented conversion specs are
130
+ to be edited by hand in order to assist the auto-converter produce valid pydra tasks.
131
+ After editing one or more conversion specs the ` pydra.tasks.fsl.auto ` package should
132
+ be regenerated by running
133
+
134
+ ``` console
135
+ nipype-auto-conv/generate
136
+ ```
137
+
138
+ The tests should be run on the auto-generated tasks to see if they are valid
60
139
61
140
``` console
62
- hatch run test
141
+ pytest pydra/tasks/fsl/auto/tests/test_<the-name-of-the-task-you-edited>.py
63
142
```
64
143
65
- To fix linting issues:
144
+ If the test passes you should then edit the ` pydra/tasks/fsl/v*/__init__.py ` file
145
+ to import the auto-generated task interface to signify that it has been validated and is
146
+ ready for use, where v* corresponds to the version of FSL that you have tested
147
+ it against e.g.
66
148
67
149
``` console
68
- hatch run lint:fix
150
+ from pydra.tasks.fsl.auto import <the-task-you-have-validated>
69
151
```
70
152
153
+ and copy the test file ` pydra/tasks/fsl/auto/tests/test_<validated-task>.py `
154
+ into ` pydra/tasks/fsl/v*/tests ` .
155
+
156
+
157
+ ### File-formats and sample test data
158
+
159
+ The automatically generated tests will attempt to provided the task instance to be tested
160
+ with sensible default values based on the type of the field and any constraints it has
161
+ on it. However, these will often need to be manually overridden after consulting the
162
+ underlying tool's documentation.
163
+
164
+ For file-based data, automatically generated file-system objects will be created for
165
+ selected format types, e.g. Nifti, Dicom. Therefore, it is important to specify the
166
+ format of the file using the "mime-like" string corresponding to a
167
+ [ fileformats] ( https://github.com/ArcanaFramework/fileformats ) class
168
+ in the ` inputs > types ` and ` outputs > types ` dicts of the YAML spec.
169
+
170
+ If the required file-type is not found implemented within fileformats, please see the ` fileformats `
171
+ docs [ https://arcanaframework.github.io/fileformats/developer.html ] for instructions on how to define
172
+ new fileformat types, and see
173
+ [ fileformats-medimage-extras] ( https://github.com/ArcanaFramework/fileformats-medimage-extras/blob/6c2dabe91e95687eebc2639bb6f034cf9595ecfc/fileformats/extras/medimage/nifti.py#L30-L48 )
174
+ for an example on how to implement methods to generate sample data for them. Implementations of
175
+ new fileformats that are specific to FSL, and functions to
176
+ generate sample data for them, should be defined in ` related-packages/fileformats `
177
+ and ` related-packages/fileformats-extras ` , respectively.
178
+
179
+
180
+
181
+
71
182
## License
72
183
73
184
This project is distributed under the terms of the [ Apache License, Version 2.0] [ license ] .
@@ -95,3 +206,11 @@ This project is distributed under the terms of the [Apache License, Version 2.0]
95
206
[ hatch ] : https://hatch.pypa.io/
96
207
97
208
[ license ] : https://spdx.org/licenses/Apache-2.0.html
209
+
210
+ [ status-docs-badge ] : https://img.shields.io/badge/docs-latest-brightgreen.svg?style=flat
211
+
212
+ [ status-cicd-badge ] : https://github.com/nipype/pydra-fsl/actions/workflows/ci-cd.yaml/badge.svg
213
+
214
+ [ status-docs-link ] : https://nipype.github.io/pydra-fsl/
215
+
216
+ [ status-cicd-link ] : https://github.com/nipype/pydra-fsl/actions/workflows/ci-cd.yaml
0 commit comments