Comments (2)
It looks like we're moving from passing a dictionary of fieldmaps and metadata to passing a PyBIDS
BIDSFile
object that provides access to these things.I am concerned that we are tying the methods, which are general, too closely to a BIDS organizational scheme. While I think ingesting BIDS datasets is good, this tool will almost never be used in isolation, because you aren't generally going to want to susceptibility-correct non-motion-corrected files. From the perspective of benchmarking and making comparisons, too much BIDS integration may reduce flexibility, as well.
The change is only for the workflow that orchestrates the available fieldmaps. I've been back and forth with this - whether it should be part of fMRIPrep's codebase or offered here for other tools to reuse.
Right now it is probably an overkill but in the near future we can think of averaging several solutions or allowing more complex IntendedFor
prescriptions.
This is partly inspired by Neurostars #5207, which asks about the selection process as an isolable tool. By tying too closely to BIDS, we may be making this less usable in isolation.
When attempting to use in isolation, one should directly access the appropriate workflow. I don't think this particular change affects that.
There's also a concern with relying on PyBIDS data structures like
BIDSFile
. From FitLins work, I can tell you that keeping in sync with the PyBIDS API can be difficult.
Yes, I'm also concerned with this. Perhaps, I accepted this friction because the BIDSFile object is not to be passed down the line to subworkflows.
I think an interface or function to populate the available fieldmaps and metadata from BIDS is a good thing to provide, but I would think that it would be ideal if the actual workflows simply worked with nipype inputs and some vanilla Python data structures (e.g.,
dict
).
I'll try to think this through, it might be possible to find a common ground where the interaction with PyBIDS can be scoped into a function that returns the fieldmap correction schedule with vanilla Python structure.
from sdcflows.
The preferred interface now is lists of pairs (str path, metadata dict). Please reopen if there is something else to do here. SDCFlows also provides a convenience method to generate these from a pyBIDS get_fieldmap() call.
from sdcflows.
Related Issues (20)
- B0FieldIdentifier: some characters should be replaced to set workflow name to avoid crashes in graph creation HOT 2
- Help wanted: SyN registration of anatomical T1 to diffusion b0 image fails after printing 'Negative spacing is not supported and may result in undefined behavior' HOT 8
- Conceptual question: can I run sdc on average b0s after registering them, or should I run sdc separately on each ? HOT 2
- Limits on rotations when combining EPIs? HOT 1
- BSplineApprox dimension mismatch
- Unwarp resample leading to out of bounds error HOT 2
- Tag ApplyCoeffsField with estimated memory usage HOT 1
- SDC b-spline matrix issue HOT 3
- Potential issue when (phase difference) fieldmap PE orientation does not match EPI HOT 1
- PEPOLAR with GE-EPI and multiple use images HOT 2
- Generate untransformed fieldmap in reference space
- Support BIDS-URIs in `IntendedFor`
- Tracking LAS phasediff issue HOT 3
- Add --bids-filter-file to sdcflows-find-estimators
- *The problem* of SDCFlows (and how to fix it) HOT 11
- Slightly rotated phase1/phase2 images should not fail to be aligned HOT 9
- Partial fieldmaps still failing (phasediff w/o magnitude)
- syn preprocessing `epi_reference_wf` does not distinguish between different matrix sizes HOT 6
- Distortion correction translating instead of unwarping HOT 5
- Verify SyN can be constructed with B0FieldIdentifier HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdcflows.