See our documentation.
Language: Python
- Recommended by client
- Client recommended a variety of useful Python libraries
- Simple syntax
- Popular language
- Future maintainers will likely have experience with the language
- Team comfortable with language
Alternative: C++
- More complicated syntax than Python
- Less popular than Python
- Future maintainers less likely to have experience
- Client recommended only Python libraries, would have to research C++ libraries for image processing & GUI creation
- Team has less experience
Image processing: SimpleITK (GitHub)
- Supports NRRD & NIfTI file formats
- Intuitive documentation
- 8.4k commits, 680 stars
Alternatives: NiBabel (GitHub), VTK (GitHub)
- NiBabel
- VTK
- Documentation hard to read
- Unclear which file formats are supported
Image visualization: PyQtGraph (GitHub)
- Recommended by coach
- Supports 3D images well
- Easily integrates into PyQT
- 3.6k commits & 3k stars, seems well-maintained
Alternatives: PyOpenGL (GitHub), VTK (GitHub)
- PyOpenGL
- Last commit to GitHub repo was 2/19/22, perhaps not well-maintained
- OpenGL is a very low-level interface, and this is just an export to that. We want to use something high-level and easy to use
- VTK
- See earlier comments on VTK
- Both: may not be easy to integrate into PyQt
GUI: PyQt (GitHub organization)
- Recommended by client
- Python binding of cross-platform GUI toolkit Qt (GitHub organization)
- Popular visual framework
- GUI-based editor QtDesigner
- Seems similar to JavaFX’s SceneBuilder
- Tutorial repo pyqt/examples
Alternative: Tkinter
- Team does not have experience
- Less advanced capabilities
Input text file: JSON
- Client preference
- Team has experience with JSON
Alternative: YAML
- Not preferred by client
- Team has less experience
Output text file: CSV
- Client preference
- Very simple, widely used format for tabular data
Alternative: TSV
- Effectively the same as CSV, but less widely used