MagneticResonanceImaging / MRIReco.jl

Julia Package for MRI Reconstruction
https://magneticresonanceimaging.github.io/MRIReco.jl/latest/
Other
85 stars 22 forks source link

WIP: Split MRIReco into three packages #72

Closed tknopp closed 2 years ago

tknopp commented 2 years ago

This is a first attempt into splitting MRIReco up into smaller pieces. I split it up now into

The reason for MRIBase might not be obvious on a first sight but it really is necessary since we want the IO package to be aware of e.g. sampling trajectories. So in a nutshell, MRIBase contains the most important in-memory Julia datatypes, MRIFileIO has all IO handling, and MRIReco has the remaining stuff.

This is a first attempt and up for discussions.

JakobAsslaender commented 2 years ago

Great! May I bring up the question again, if we should branch out ESPIRiT? It would be nice if it was available in a lightweight package for everyone (like @JeffFessler and myself) who want just that and not the full MRIRecon.jl package. We could put the core functions, i.e. the function

https://github.com/MagneticResonanceImaging/MRIReco.jl/blob/cc78b1ab4490974094ee5152e1f6fd2c708ef308/src/Tools/CoilSensitivity.jl#L115

and its dependencies into its own package, which would need minimal dependencies. The wrapper-function

https://github.com/MagneticResonanceImaging/MRIReco.jl/blob/cc78b1ab4490974094ee5152e1f6fd2c708ef308/src/Tools/CoilSensitivity.jl#L84

which depends on your data format, could stay in MRIRecon.jl. Thoughts?

tknopp commented 2 years ago

I started with MRIFileIO and MRIBase since these are small focused chunks where it is clear that they can be split off. That does not mean that the remaining stuff needs to be in one package. So yes, probably we can divide MRIReco further. In particular I would like to split off MRISimulations into a dedicated package.

So, the concrete question would be: Do you think that coil estimation tools could be grouped into a dedicated package? What would be the name of the package?

What might help in the discussion would be to create some dependency diagrams. Here is a tool, if you want to give that a go: https://lautgesetz.com/latreex/

tknopp commented 2 years ago

changed back MRIFileIO to MRIFiles after looking at how other packages are named in Julia. The term files is used more often than IO and in fact IO is somewhat too generic since it is also associated with network programming.

I will merge this now and register the packages, which will require about one week, since we first need to register MRIBase and then MRIFiles. In that time CI is failing but locally the tests are passing.