So far we have a general preference for packages prefixed with scikit, but looking at this, it may be incompatible with our PythonTemplate. Prefix of weiss or weisskit is good for sponsors, but doesn't tell users what it does. What about
or substitute 'cas' or 'igi' for 'surgery', but again 'surgery' will inform other people on the web what its for better than 'cas' or 'igi'. Then apps can call these as appropriate and be called whatever they like, and owned by whomever they like.
Tom Dowrick - I think scikit-surgery is a good choice for the project name (pip install scikit-surgery), if we go with the convention the top level package would then be sksurgery (import sksurgery).
Should the list of above packages just be one package with many modules? We could have a package called 'scikit-surgery' then modules inside like:
As we are doing python, then dependency management is a bit easier than C++, as things are imported as you need them. So, if you aren't using something, its not loaded. But in this case for example, the gui module would install PySide2, the visualisation module would require VTK or matplotlib and VTK can be difficult to install. Video would require OpenCV, which may require lots of config settings, or a custom compile.
I think Ive just talked myself into separate modules, to avoid problems with compile time issues and custom settings. Image Guided Surgery can be quite difficult with all the different devices you may need, and an algorithm developer will not want to be bothered with setting everything up, as you are then moving towards the same scenario we have in C++.
So, while it may look "odd" to have lots of packages registered with scikit, i think I (Matt) prefer multiple packages, each containing 1 or more modules as necessary.
Sorry being the usual intrusive Yipeng here - at first glance, "one package" looks more pythonic (whatever it means) and clean. Hey, if we want to do something different, we need to fight against intuitions (Linus said something similar...). I agree with Matt, multiple packages are more independent, separable, compact and perhaps easier to manage for users. - oh definitely use "surgery"!
Tom Dowrick The Python versions of OpenCV/PySide/VTK/matplotlib all have PyPi wheels, so getting them to install when needed is straightforward and shouldn't be an issue (I've got them all setup on both Windows and Ubuntu with minimal effort). However, I do think that separating the modules somehow is a good idea, to keep a sensible abstraction between different elements of the software. The GUI stuff should definitely be separate, and I think for clinical deployment it is probably better to have an entirely separate GUI for each application to keep things streamlined.
A few thoughts on how me might organise:
Given that is is trivial to move a module from one package to another, we could just start with everything (except GUI) in one package, and see if a sensible separation emerges as we develop more modules.
Keep anything that only used the core scikit dependencies (these are listed as numpy, scipy, matplotlib, pandas, ipython, sympy on the scikits homepage) in one package. Anything that needs something else (opencv/vtk etc) can go in a separate packaage.