ParX
ParX is a modeling tool. With ParX you can:
- Describe your model in a simple mathematical language.
- Evaluate the behavior of your model graphically.
- Match your model against measured data.
ParX has two main applications:
- Model development
- Starting from theory you formulate a model to explain your measurement data. Then ParX will try to fit the model to the data by varying the parameters of the model. Often, your model is only partially correct: it can explain part of the data points, but not all of them. The fitting method in ParX is special in that it will show you where the model is valid, and where it requires more work. With ParX you can refine your model step by step.
- Data fitting
- Here you start with a model that is proven to be correct. You then let ParX determine the value of the model parameters that best describe your measured data. Collecting the measurement data can, however, be a messy process. Not all measurement errors are random noise, some data points are just plain wrong. ParX can identify and remove these outliers, as they are called, because they contain no useful information about the model.
ParX is available for the Mac and the iPad, and can be downloaded from the App Store. For more information visit the ParX product support site.
Development
The algorithms in ParX were developed as part of my Ph.D. thesis in April 1992 (ISBN 90-6275-764-2), as was their first implementation. This implementation is now retired as ParXCL.
The theory behind ParX as presented in the thesis is still completely valid. For power users that seek a deeper insight in the inner workings of ParX, an up-to-date version of the thesis can be downloaded here:
Since then, the software has been extended and refined multiple times, as it moved from Unix to macOS. This also offered the perfect opportunity for a major re-write and modernization of the code base. The mathematical core and the UI have been ported from C to Swift.
With the introduction by Apple of SwiftUI, a declarative UI-framework, the code base was revised again. What started out as a limited experiment of building an iPad companion app, resulted instead in a major overhaul of the foundations of the code. The (b)leading-edge character of SwiftUI, and especially of its Charts component, created many a stumbling block on the way. Compared with AppKit and UIKit, there are still many missing features and bugs. Notwithstanding, my ambition was to go for 100% SwiftUI code. This was achieved but for the ApplicationDelegate, which is still needed for lifecycle management.