Platform Selection

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)

Alternatives: NiBabel (GitHub), VTK (GitHub)


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)

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

Google Doc