Guides#
User Guide
Extending the Framework
- Project Architecture Overview
- Nipype Integration Guide
- Nipype Architecture Diagrams
- Building a workflow
- TL;DR
- The four decorators
- Path declarations
- A complete, annotated example
ProcessingContext: the state carrierinputnode/outputnodecontracts (for composability)- Logging rule (and the Function-node exception)
- Owning a config section
- Registration and discovery
- Common gotchas
- Runnable examples
- Where to look next
- Adapting an arbitrary Nipype script to the framework
- The single biggest shift
- Step 1 — Wrap the script body in a single
@workflowfunction - Step 2 — Replace hardcoded input paths with
@requires/PatientFile - Step 3 — Replace
DataSink/ manual output dirs with@produces/OutputDir - Step 4 — Thread subject identity through
ProcessingContext, not globals - Step 5 — Remove
sys.path/importlibhacks and sibling-module imports - Step 6 — Declare a Pydantic schema for the workflow’s YAML block
- Step 7 — Fix logging (
printinsideFunctionnodes) - Putting it together — the assembled file
- Step 8 — Register and run it
- Verify it runs
- Troubleshooting
- See also
- Best Practices for This Framework
- Contributing to Thesis Imaging Pipeline