Python packages for scientific research
This page lists some useful packages for scientific research with Python. If you are new to Python, start with the introductory tutorials of the reScipy lectures to learn how to use this programming language to perform data analysis.
Packages are divided into different categories, depending on the application domain, with a link to the relevant section of the lectures. Many of these packages are already included in the most common Python distributions, others can be installed as explained in their documentation or in the Packages installation appendix.
Environments
See Python language for a brief introduction to these packages.
jupyterlab | Extensible user interface for interactive and reproducible computing.
spyder | Integrated development environment for scientific data analysis.
Data structures
See Data handling for a brief introduction to these packages.
numpy | Multi-dimensional arrays and matrices, with a collection of high-level mathematical functions to operate on them.
pandas | Data structures and operations for manipulating columnar and tabular data, built on NumPy.
xarray | Labeled multi-dimensional NumPy-based arrays with dimensions, coordinates and attributes.
NeXus/HDF5
See Data handling for a brief introduction to these packages.
nexusformat | Python API to open, create, and manipulate NeXus data written in the HDF5 format.
nxarray | xarray extension for high-level NeXus file input and output.
Core plotting libraries
See Plotting for a brief introduction to these packages.
matplotlib | Core plotting library for Python and NumPy arrays.
bokeh | Plotting library for interactive visualization in web browsers.
High-level plotting
See Plotting for a brief introduction to these packages.
Data analysis
See the related websites and the documentation links provided for an exhaustive description of these packages.
mantid | General-purpose graphical user interface and Python library to support the processing of materials-science data.
scipy | Performant algorithms for scientific computing such as optimization, integration, interpolation, algebraic equations, differential equations (see also Scipy : high-level scientific computing and Image manipulation and processing using Numpy and Scipy).
scikit-image | Collection of algorithms for image processing (see also Scikit-image: image processing).
lmfit | Advanced high-level interface for non-linear optimization and curve fitting.
nexpy | Graphical user interface to easily access and analyse NeXus data (see in particular NeXpy - Python Graphical User Interface).
Visualization and dashboarding
If you are specifically interested in an overview of the packages for data visualization and dashboarding then pyviz.org is what you are looking for. In the following are listed some of these packages.
Multi-dimensional visualization
Dashboarding
streamlit | Framework to quickly build shareable web apps from scripts.
panel | Library to create custom interactive web apps and dashboards with user-defined widgets.
voila | Conversion of Jupyter notebooks into shareable interactive dashboards.
ipywidgets | Widget library to build interactive user interfaces within jupyterlab.