Python and PyIMSL for Analytics

There are a number of reasons why the Python language used in conjunction with the IMSL Numerical Libraries is a good choice for researchers and developers. The IMSL Numerical Libraries have been the cornerstone of high-performance and deep computing as well as predictive analytics applications in science, technical and business environments for well over three decades. These embeddable mathematical and statistical algorithms are used in a broad range of applications: modeling airplane flight dynamics, weather prediction, innovative study of the human genome, forecasting stock market behavior, and investment portfolio optimization. The IMSL Libraries are regarded as the most sophisticated, flexible, scalable and highly accessible technology available for numerical analysis in the most important mainstream programming environments in use today.

The PyIMSL package provides an interface between the C implementation of the Python language (often called CPython) and the IMSL C Numerical Libraries. Extensions to the CPython language are most often written in C for performance, and providing such an extension to allow the IMSL C Numerical Libraries to be called opens up a vast collection of mathematic and statistical algorithms for the Python user.

While there are some collections of open source analytics available for Python, none can offer the breadth that the industry standard IMSL libraries bring. The IMSL libraries provide algorithms that have been carefully written for performance and accuracy, and which have been tuned and tested for each platform they are ported to. Excellent technical support is also provided as well as consulting services to assist in implementing analytics, performing statistical research, or even modifying the underlying algorithms to provide custom features.

For those who currently use the IMSL C Numerical Libraries, the ability to use Python for prototyping work can provide significant productivity gains over prototyping in C/C++. When the prototype application is ready to be deployed as a C application or embedded into other software, the PyIMSL function calls can be easily be converted to C calls and the same underlying C library used, which guarantees that identical numerical results will be obtained.

For users who develop strictly in Python, either for ad-hoc analysis or full application development, the use of the PyIMSL wrappers offers high performance and numerical accuracy. There are a wide range of open source tools and development environments for Python including the IPython shell, Eclipse development environment, charting, scientific computing packages, high performance computing, user interface development, and web deployment tools. These tools and the powerful Python language provide a rich and growing environment for development and research. The IMSL libraries add trusted and accurate analytics which rounds out this rich environment.

PyIMSL is designed to expose all of the functionality of the IMSL C Numerical Libraries but in a way that is true to the Python language philosophy. Functions requiring arrays can be called with anything that behaves like an array in Python, including lists, tuples and NumPy ndarrays. Camel case naming is used and keyword parameters are used extensively in function interfaces. Error handling is performed using standard Python exception handling. Using PyIMSL delivers minimalist and readable code – “pythonic” is the term used to describe this in the Python community. At the same time those wishing to translate Python code to C for deployment will have no trouble matching the routines and parameters with the IMSL C Numerical Libraries interface.

For users of Java Python (Jython) and the .NET python (IronPython), Rogue Wave Software already provides solutions in the JMSL Numerical Library for Java and the IMSL C# Library, which can be directly called from Jython and IronPython respectively. For the users of CPython there has not been an easy solution for accessing IMSL libraries until the release of PyIMSL.