This is the new version of the code, which uses a completely different architecture than the previous one.
The code is designed using a standard object-oriented 'Model-View-Presenter' architecture, with strong separation between the data input and management, and the visualisation. This allows for easy development of both new input file-typesand pre-processing options, and alternative GUI front-ends and settings for suggested development building on top of this flexibility). A generic 'Presenter' controls the logic of the program, and feeds data from the data models to the selected GUI view, and requests from the GUI for changes to the data models. Either the 'View' or 'Model' can be easily interchanged as long as they conform to the API expected by the 'Presenter'.