Table des matières
Ceci est une ancienne révision du document !
Programmation appliquée à la chimie
Le cours “Programmation appliquée à la chimie” de bachelier en sciences chimiques (15 H cours et 15 H exercices, bloc2) utilise deux supports :
- Principalement, le présent wiki pour ses avantages techniques (coloration et indentation du code, recherche dans les pages, historique des modifications, …)
- Parfois, la plateforme moodle d'enseignement en ligne de l'UMONS, pour ses autres avantages techniques (authentification, devoirs, forum,…)
Si vous voulez comprendre la nécessité d'une formation informatique incluant l'initiation à l'algorithmique et la programmation, et l'apprentissage pratique via des projets, vous pouvez-consulter :
- Computer Science For All (President Obama in his 2016 State of the Union Address)
Notions de base (résumés, exemples de base,...)
- Présentation et principes de base de la programmation en Python, avec quelques applications
: version wiki en construction
- Page avec de nombreuses informations sur Python (y compris pour l'apprentissage et l'installation). Modes recommandés :
- installation de la version 3 standard via python.org
- installation de la distribution complète Anaconda (pour votre OS, en version 3 et 64 bits)
- en salle informatique UMONS : utilisation de Python sous Ubuntu
- utilisation en mode nomade de la plateforme Azure avec l'utilisation de vos codes UMONS
Algorithmes classiques
- Calcul de factorielles (pas à pas)
- Suite de Fibonacci (pas à pas)
- Manipulation de polynômes (pas à pas)
- Algorithmes sur entiers, où on parle d'atomes, de molécules, de nombres de nucléons !
Les librairies scientifiques essentielles
- Les bases de NumPy (tableaux numériques, algèbre linéaire, transformées de Fourier, nombres aléatoires)
- Les bases de SciPy : ajoute à NumPy des fonctionnalités mathématiques (intégration, optimisation, fonctions spéciales, interpolation,…)
- Pylab : permet de combiner simplement Matplotlib, NumPy et SciPy
- Scikit-learn, machine learning
- Pandas, pour l'analyse de données
Notions intermédiaires et avancées
- Lire et écrire des fichiers de données csv (comma separated values)
Applications
- Marche aléatoire 2D simple : simulation d'une chaîne polymère
- Flocon de Koch : simulation d'une fractale avec la librairie Turtle
- Traduction de l'ADN en séquence d'acides aminés (protéine) : utilisation d'un dictionnaire (type Python)
- Représentation du potentiel de Lennard-Jones, graphe élémentaire avec Matplotlib, et énergie de cohésion d'un cristal de gaz rare.
- Modélisation de la diffusion chimique dans un film : technique de différences finies, utilisation de Matplotlib
- Représentation de la distribution de vitesse de Maxwell-Boltzmann (avec et sans NumPy)
- Éléments et molécules : propriétés, masses molaires,…
- L'attracteur de Lorenz : équations différentielles ordinaires et comportement chaotique
- OpenBabel et Jmol : format de description de molécules et visualisations
- Optimisation de la température caractéristique du diamant suivant le modèle d'Einstein (avec scipy, numpy, matplotlib)
- Test de Student : exemple technologique (avec scipy, numpy)
- Bioinformatique (manipulations de séquences ADN, ARN, protéines,…)
Exemples de travaux d'étudiants
Ces travaux peuvent être entièrement originaux, ou se baser sur des éléments de code existants.
- Jeu de la vie de Conway : automate cellulaire 2D (TkInter)
- Tableau périodique : tableau avec éléments cliquables pour obtenir les informations
- Régression linéaire : entrée de couples, calcul et affichage de la droite de moindres carrés
- Ensemble de Mandelbrot : dessin d'une fractale
- Calcul matriciel, avec l'interface Tk
- Conversion de températures, avec l'interface Tk
- pH et courbe de titrage, avec l'interface Tk
- Loi des gaz parfaits, avec l'interface Tk
- Tableau périodique : une autre version, avec l'interface Tk
- Traduction ADN-ARN-protéine, avec l'interface Tk
- Solubilité en fonction du pH et de la température, interface en ligne de commande et graphiques matplotlib
- Vue 3D de l'électronégativité (tableau périodique)
Idées de travaux, projets
- Représentation de fonctions thermodynamiques de deux variables :
- avec Matplotlib, en incluant des éléments supplémentaires
- exemple : isothermes de van der Waals
- Utiliser la librairie Mayavi (3D)
- Représentation des résolutions de Fourier pour la diffusion à 1D, 2D, 3D, en fonction du temps,…
- Résolution de problèmes numériques
- intégration numérique
- racines de polynômes, de fonctions générales
- systèmes d'équations linéaires
- optimisation de fonction (minimisations)
- Approximations utilisant la formule de Stirling pour la factorielle (très utilisée en thermodynamique statistique), avec tabulation, représentations graphiques,…
- Interfacer Python et un tableur (par exemple pouvoir lire des données d'un fichier de tableur à partir d'un programme Python)
- Simulation en chimie :
- degré de polymérisation comme l'article Software for Demonstration of Features of Chain Polymerization Processes
- Traitement d'images
- mesurer des temps de réaction (s'inspirer par exemple de fonctionnalités de ce programme)
- générer du son, de la vidéo
- Calcul de la constante de Madelung (interactions coulombiennes dans un cristal ionique)
- Représentation 3D du pH d'un acide en fonction d'un ajout de base et d'une dilution globale : cf. cet article : extension de l'exemple montré
- Échelle d'électronégativité, ou autre propriété atomique : représentation à 3D ou via des barres dont la taille est proportionnelle à la valeur, en suivant le schéma général du tableau périodique
- Illustrations graphiques des séries spectrales de l'hydrogène (barres, flèches, anneaux,…)
- Visualisations s'inspirant de sites comme ChemTube 3D, ChemEd DL,…
- Diagramme de Pourbaix à 3D : cf. cet article
- Outils de base en chimie comme sur le site http://fr.webqc.org/chemicaltools.php
- Multiéquilibre (mélange d'acides et bases conjuguées) : cf..cet article
- Utilisation de régressions non-linéaires pour traiter des données de réactions enzymatiques : cf. cet article
- Tableau périodique interactif via Ipython et Bokeh (cf. cette ref)
- Simulations de ségrégation, par inspiration de ces simulations, des travaux de Thomas Schelling, et sur base du programme Mesa (agent-based modelling)
- Équilibre liquide-vapeur à deux constituants, simulation du changement de phase (cf. cette simulation)
- Approximations de la fonction de Langevin utilisée pour décrire la magnétisation d'un matériau paramagnétique : représentation de la fonction et de ses approximations, des erreurs relatives,…
- graphiques polaires et cartésiens :
- Illustration dynamique de séries de Fourier, comme ici
- Évolution de population suivant le modèle de la matrice de Leslie avec représentation de la pyramide des ages (cf ce lien)
- Créer des structures de données pour gérer les étiquettes de produits chimiques : pictogrammes, mentions de danger (Hxxx et EUHxxx), de prudence (Pxxx), codes produits,…
- Rotamères : étude simplifiée et représentation graphique (cf. cet exemple)
- Décomposition spinodale (modèle de Cahn-Hilliard), (cf. cet exemple)
- Programme basé sur une de ces librairies :
- ChEMBL base de donnée chimique
- ChemSpiPy pour accéder à la base de donnée ChemSpider
- Wikipedia chemical structure explorer, avec données exploitables via GitHub
- Charte des nucleides, et diverses représentations des instabilités. cf. Live Chart of Nuclides et les données sources indiquées
- Event-Driven hard disc simulation (dynamique moléculaire) :
- Exploitation de données chimiques de wikidata.org query (> 20000 composés),
PREFIX wdt: <http://www.wikidata.org/prop/direct/> SELECT ?compound WHERE { ?compound wdt:P31 wd:Q11173 . } - chaines de Markov sur des séquences peptidiques
- Simulation électrochimique comme dans cet article
- Splitting en RMN du proton, comme cet article
- Catalyse biochimique (Michaelis-Menten) : représentation et calcul des constantes comme dans cet article
- Simulation de l'expansion irréversible d'un gaz mono-atomique, comme dans cet article
- représentation de liaisons, densités de charge, comme dans cet article
- simulation du modèle d'Ising : http://rajeshrinet.github.io/blog/2014/ising-model/
- visualisation comme dans l'article Visualization of Buffer Capacity with 3-D “Topo” Surfaces: Buffer Ridges, Equivalence Point Canyons and Dilution Ramps
- programmes en version python analogues aux applications en chimie de l'article The Development of Computational Thinking in a High School Chemistry Course Paul S. Matsumoto and Jiankang Cao, J. Chem. Educ., 2017, 94 (9), pp 1217–1224 DOI: 10.1021/acs.jchemed.6b00973
- programmes inspirés de Teaching the Growth, Ripening, and Agglomeration of Nanostructures in Computer Experiments Jan Philipp Meyburg and Detlef Diesing, J. Chem. Educ., 2017, 94 (9), pp 1225–1231 DOI: 10.1021/acs.jchemed.6b01008
- …
Voir aussi la sélection de codes sources ActiveState avec de nombreuses applications scientifiques.
Voir aussi ces librairies.