#################
Development ideas
#################
Some ideas for future development of MDT.

- to discuss: add 'scale_factor' to the parameters as a simple scaling factor
    - for use in MLE and FIM
    - replacing ScaleTransform and scale_factor in numdiff_info
    - perhaps add it to MCMC as well
- MPT (Microstructure Prototol Toolbox)
    - Perhaps a different package using MDT and MOT for protocol optimization
- More optimization routines:
    - L-BFGS-B
    - BOBYQA or NEWUOA from Powell
    - Particle Swarm
    - See the book "Introduction to derivative free optimization" or similar books
- More sampling routines:
    - emcee
- Automatic derivatives
    - This is only doable with OpenCL 2.2
- Python 3.7:
    - removed ordereddict
    - use f-strings
- OpenCL 2.0:
    - remove priors and merge with the constraints
- remove the JohnsonNoise model
    - have the OffsetGaussian an separate input for the offset
- protocol options using a selection matrix.
    - i.e. per protocol row a 0 or 1 if that protocol is supposed to be used
    - Allows protocol options per voxel.
- remove mot_float_type, replace with either float or double depending on insight/tests
- move g to gx, gy, gz
- Move to using an OpenCL Context instead of the devices
- Add more model documentation, in particular what all the output maps are
- DynamicGlobal kernel data element
    - as a substitute for Local where needed
- Add more documentation on how to change devices
