Développement de code par le scientifique

SCI-CODE2 days

Objectives

Le développement informatique dans le domaine scientifique (simulation numérique) est exigeant à plus d'un titre puisqu'il nécessite à la fois de solides connaissances théoriques du domaine scientifique concerné ainsi qu'une bonne maîtrise de l'outil informatique lui-même. De ce fait, l'acquisition de bonnes pratiques informatiques dans ce domaine, notamment pour des individus dont le premier métier n'est pas l'informatique, est fondamentale pour une gestion de projet saine, d'autant plus lorsque les développements se font de façon collaborative. Adopter de ces bonnes pratiques au plus tôt est un gage qualité et d'efficacité et constitue généralement le premier pas vers un travail scientifique (ou de recherche) reproductible.
La formation proposée ici se déroule sur 2 jours et a pour objectif d'offrir un aperçu des bonnes pratiques de travail dans un environnement informatique, ainsi que de présenter les bases nécessaires au développement d'un code de calcul souple et performant.
La formation aborde différentes thématiques spécifiques au calcul scientifique et au développement d'application industrielle, et présente les solutions existantes pour répondre aux besoins rencontrés. Les concepts présentés dans ce cours seront appuyés d'exemples d'utilisation en langage Python. Python est un langage puissant, orienté objet, convenant parfaitement à la majorité des travaux de développement génériques et scientifique en particulier, notamment du fait de sa syntaxe concise, de sa rapidité de développement, et de la richesse des bibliothèques dont il dispose dans le domaine scientifique.


Audience

Scientifiques désireux d'acquérir des bonnes méthodes de travail pour améliorer leur utilisation de l'outil informatique, la qualité de leur code et apprendre à programmer de manière collaborative.


Prerequisites

Une bonne familiarité avec les systèmes d'exploitation Unix® ou Windows® est nécessaire, ainsi que des connaissances sur le calcul numérique. Une expérience de l'utilisation d'environnements de calculs tels que Matlab®, Scilab, octave, IDL® est un plus.


program

Outils et méthodes de programmation pour le scientifique

  • Système de gestion de source

    pourquoi il deviendra votre meilleur ami, présentation d'un système de gestion de source distribué : Mercurial
  • Paradigmes de programmation

    présentation de la programmation procédurale, fonctionnelle ou orientée objet, gestion des erreurs par code de retour ou par exceptions
  • Développement piloté par les tests

    concepts et intérêts du Test-Driven-Development, tests fonctionnels et unitaires, exemple de processus en TDD ; utilisation conjointe avec un système de contrôle de version
  • Et après

    traçabilité, recherche reproductible, hébergement de projet logiciel, revue de code, intégration continue, etc.

Présentation de Python comme couteau suisse du scientifique

  • Python pour le scientifique

    intérêts de Python pour le scientifique, structures de données et complexité algorithmique
  • Numpy

    utilisation des tableaux multidimensionnels, algèbre linéaire
  • Scipy

    bibliothèques de calcul scientifique (optimisation, fitting, traitement du signal, interpolation, algèbre linéaire pour des matrices creuses)
  • Analyses de données et statistiques

    analyse et modélisation statistisques, traitement de données temporelles, traitement de données manquantes ou invalides, bibliothèque Pandas
  • Présentation de IPython

    notebook, mode parallèle
  • Visualisation

    Matplotlib, Paraview, Mayavi, graphiques pour la publication

Performance et calcul parallèle

  • Interfaçage de codes compilés avec Python

    appeler des fonctions Fortran ou des DLL (f2py, ISO C Bindings) et réalisation d'interface avec Cython
  • Performances en Python

    différences entre langage interprété et langage compilé, utilisation de Cython pour porter une fonction en C
  • Exécution de processus en parallèle

    multithreading, multiprocessing, IPython parallel...

Architecture de codes de calcul

  • Modélisation des données

    notions de modèle de données, formats d'échange et de stockage
  • Architecture

    structure d'un code de calcul, étude de codes de calculs existants
  • Interface utilisateur

    d'un modèle descriptif vers un modèle programmatique
  • Lire et écrire des données dans des fichiers

    formats texte classique (ASCII, CSV), formats spécifiques (NetCDF, HDF5)

Industrialisation

  • Documentation de code source

    documentation utilisateur, documentation développeur, présentation de Sphinx
  • Distribution

    distribution des sources, chaîne de compilation, empaquetage pour des distributions Linux
  • Mise en place de chaînes de calcul

    modélisation métier, pré et post traitements, optimisation


Customization

Cette formation peut être adaptée afin de répondre au mieux à vos besoins. En particulier, il est possible d'approfondir les bibliothèques ou les modules intéressant prioritairement les auditeurs. Logilab dispose aujourd'hui d'une palette très large de modules pédagogiques permettant la personnalisation de ses formations.
L'adaptation des cours en intra-entreprise ne pose aucun problème ; cette opération est cependant plus difficile pour les cours en inter-entreprises. N'hésitez pas à demander conseil à notre service commercial.


Terms

Des sessions en inter-entreprises sont organisées régulièrement dans nos locaux à Paris et Toulouse. Il est possible d'organiser, à votre demande, une ou plusieurs sessions en intra-entreprise (sur site) n'importe où en France ou en Europe.
Chaque participant à la formation dispose d'un exemplaire personnel du support de cours.

Durée

2 jours soit 14h heures.

Langue

Au choix, française ou anglaise

Intervenant

Tous les intervenants animant cette formation bénéficient de compétences pédagogiques reconnues. D'autre part, ils participent activement au développement du langage Python ainsi que de sa bibliothèque standard, et sont intervenus dans des projets d'informatique scientifique utilisant Python et ses bibliothèques spécialisées, ainsi que des codes de simulation en C++, C et Fortran.

Inter-entreprises

  • groupes de 4 personnes minimum et 8 personnes maximum
  • Paris ou Toulouse
  • déjeuner inclus

Intra-entreprise

  • groupes de 10 personnes maximum
  • 2 journées