Applications scientifiques

Contexte

Python est fréquemment utilisé pour des applications scientifiques haute-performances. Il est largement utilisé dans les projets universitaires et scientifiques car il est facile à écrire et donne de bons résultats.

En raison de sa nature haute performance, le calcul scientifique en Python utilise souvent des bibliothèques externes, généralement écrites dans des langages plus rapides (comme C ou FORTRAN pour les opérations matricielles). Les principales bibliothèques utilisées sont NumPy, SciPy et Matplotlib. Entrer dans le détail de ces bibliothèques va au-delà du périmètre couvert par ce guide Python. Cependant, une introduction complète à l’écosystème Python scientifique peut être trouvée dans les notes de lecture pour le Python scientifique (en)

Outils

IPython

IPython est une version améliorée de l’interpréteur Python, qui fournit des fonctionnalités d’un grand intérêt pour les scientifiques. Le mode inline permet l’affichage de graphiques et de diagrammes dans le terminal (pour la version basée sur Qt). De plus, le mode notebook supporte la programmation lettrée et la science reproductible en générant un notebook Python basé sur le Web. Ce notebook vous permet de stocker des bouts de code Python à côté des résultats et des commentaires supplémentaires (HTML, LaTeX, Markdown). Le notebook peut alors être partagé et exporté dans divers formats de fichiers.

Bibliothèques

NumPy

NumPy est une bibliothèque de bas niveau écrite en C (et FORTRAN) pour les fonctions mathématiques de haut niveau. NumPy dépasse habilement le problème d’exécuter des algorithmes plus lents sur Python en utilisant des tableaux multidimensionnels et des fonctions qui opèrent sur des tableaux. Tout algorithme peut alors être exprimé comme une fonction sur des tableaux, permettant aux algorithmes de exécuter rapidement.

NumPy fait partie du projet SciPy, et est mis à disposition comme bibliothèque séparée afin que les gens qui ont seulement besoin des exigences de base puissent l’utiliser sans installer le reste de SciPy.

NumPy est compatible avec les versions de Python 2.4 à 2.7.2 et 3.1+.

Numba

Numba est un compilateur Python conscient de NumPy (compilateur spécialisé just-in-time (JIT)) qui compile le code Python (et NumPy) annoté pour LLVM (Low Level Virtual Machine) via des décorateurs spéciaux. En bref, Numba utilise un système qui compile le code Python avec LLVM en code qui peut être exécuté nativement à l’exécution.

SciPy

SciPy est une bibliothèque qui utilise NumPy pour plus de fonctions mathématiques. SciPy utilise des tableaux numpy comme structure de base pour les données, et est livré avec des modules pour diverses tâches couramment utilisées dans la programmation scientifique, incluant l’algèbre linéaire, le calcul intégral (calcul différentiel), la résolution d’équation différentielle ordinaire et le traitement du signal.

Matplotlib

Matplotlib est une bibliothèque de création de diagrammes flexible pour créer des diagrammes 2D et 3D interactifs qui peuvent également être enregistrés comme des figures d’une qualité suffisante pour illustrer des manuscrits. L’API reflète de plusieurs façons celle de MATLAB, facilitant la transition des utilisateurs MATLAB à Python. De nombreux exemples, avec le code source pour les recréer, sont disponibles dans la galerie de matplotlib.

Pandas

Pandas est une bibliothèque de manipulation de données basée sur Numpy qui fournit de nombreuses fonctions utiles pour accéder, indexer, fusionner et le regrouper des données facilement. La structure de données principale (DataFrame) est proche de ce qui peut être trouvé dans le paquet statistique R; autrement dit, des tableaux de données hétérogènes avec l’indexation par nom, les opérations sur les séries temporelles et l’auto-alignement des données.

Rpy2

Rpy2 est le binding Python pour le logiciel statistique R permettant l’exécution de fonctions de R depuis Python et transmettant les données dans les deux sens entre les deux environnements. Rpy2 est l’implémentation orientée objet des bindings Rpy.

PsychoPy

PsychoPy est une bibliothèque pour la psychologie cognitive et lex expérimentations en neuroscience. La bibliothèque gère la présentation des stimuli, le scripting de conception expérimentale et la collecte de données.

Ressources

L’installation de paquets Python scientifiques peut être compliquée, comme beaucoup de ces paquets sont mis en œuvre comme des extensions Python en C qui doivent être compilées. Cette section liste les différentes distributions Python dites scientifiques qui fournissent des collections précompilées et faciles à installer de paquets Python scientifiques.

Binaires Windows non-officiels pour les paquets d’extension Python

Beaucoup de gens qui font le calcul scientifique sont sous Windows, et encore beaucoup de paquets de calcul scientifique sont notoirement difficiles à builder et à installer sur cette plateforme. Christoph Gohlke cependant, a compilé une liste de binaires Windows pour de nombreux paquets Python utiles. La liste des paquets a grossi en devenant une ressource Python principalement scientifique à une liste plus générale. Si vous êtes sur Windows, vous pouvez y jeter un œil.

Anaconda

Continuum Analytics met à disposition la distribution Python Anaconda Python qui inclue tous les paquets Python scientifiques les plus courants, ainsi que de nombreux paquets liés à l’analyse de données et au big data. Anaconda lui-même est gratuit, et Continuum vend un certain nombre d’add-ons propriétaires. Des licences gratuites pour ces add-ons sont disponibles pour les universitaires et les chercheurs.

Canopy

Canopy est une autre distribution de Python scientifique, produit par Enthought. Une variante limitée ‘Canopy Express’ est disponible gratuitement, mais Enthought facture pour la distribution complète. Des licences gratuites sont disponibles pour les universitaires.