The MNE-CPP Project Structure
MNE-CPP is designed as a two-layer framework, see Figure below. The library layer (Li) provides the core functionalities, which can be used during development and loaded by applications during runtime. The stand-alone applications, examples and tests are realized within the application layer of MNE-CPP. As a stand-alone software, MNE Scan (Sc) is part of the application layer and makes use of the functionality of the library layer. Minimizing the use of Software of Unknown Provenance (SOUP) is favorable when developing medical software applications meeting regulatory requirements: each third-party dependency must be tracked and its development life cycle must be auditable. Furthermore, all dependencies should be able to compile on multiple platforms and devices for cross-platform capability. MNE-CPP and MNE Scan make use of one external dependency, namely the Qt framework. Also, we use a so-called Clone-and-Own approach of the Eigen library, which is integrated in our repository. Qt provides tools for GUI creation whereas Eigen provides mathematical operations for linear algebra.