Lecture Notes

Collected lectures notes in computational biology

Un second cours de Python

(L3 level ~ In french) These notes are meant to be the backbone of a "second course" in Python programming. They assume that the students already have basic knowledge of programming in general and python in particular. They are really a collection of interesting concepts and pitfalls that most scientist will come across in their day to day job.

I used them during the "Advanced Python Programming" lectures taught by Dr. Pierre Vincens in 2018 in the Biology department of the École normale supérieure de Paris.

Antisèches Python pour Biologiste Pressé

Jupyter Notebook
Types de données primaires et opérateurs
Entiers, flottants Booléens Chaînes de caractères Un type spécial, None
Variables
Structures de données
Listes (ordonné, modifiable) N-uplets ou Tuples (ordonné, immuable) Dictionnaires (clé/valeur, non-ordonné, modifiable) Ensembles (non-ordonné, modifiable)
Structures de contrôle et Itérables
Fonctions
Compréhensions de listes
Classes
Modules
Fichiers
Expressions Régulières
Calcul numérique avec Numpy
Graphes avec Matplotlib
Calcul scientifique avec Scipy
Intégration numérique Statistiques
Calcul symbolique avec Sympy
Tableaux de données avec Pandas

Un point sur les variables et espaces de noms

Les variables en Python sont des références nommées
Objets immuables et modifiables, Attention aux pièges !
Les espaces de noms
Piège: les arguments par défaut des fonctions Un dernier example illustré La fermeture des espaces de nom (Avancé)
Pourquoi Python est lent ? L'idée centrale derrière Numpy
Quel est l'avantage de numpy en terme de vitesse ?

Les paradigmes de programmation

La place de la programmation dans la recherche
Le menuisier et l'architecte De l'abstraction Comment écrire des abstractions ?
La programmation Impérative (et procédurale)
La programmation Orientée Objet
Créer un objet (Avancé) Accesseurs, Mutateurs et Propriétés
La programmation Fonctionnelle
Fonctions pures Comprendre les itérables Opérations de bases en programmation fonctionnelle: map, filter, reduce Applications partielles

Recherche reproductible et interfaces

Assurer le caractère pratique de son code
De l'importance d'une bonne interface L'interface console (CLI) avec argparse L'interface programmatique (API) avec un module Quelques mots sur import Mais où sont les modules ? Installer un module Un path temporaire pour chaque projet: virtualenv Écrire un paquet Python Exercice:
Assurer le caractère reproductible de son code
Assurer le caractère correct de son code
Les assertions et la programmation défensive Les Tests

Exercice: Calcul de pi par la méthode de Monte-Carlo

Exercice: Détection des cadres de lecture ouverts

Question 1: Écrire une fonction qui construit une séquence d'ADN générée aléatoirement de longueur N
Question 2: Écrire une fonction qui recherche les codons d'initiation (ATG) dans une séquence
Question 3: Écrire une fonction qui recherche le premier codon stop (TAA, TAG, TGA) suivant un codon AUG dans le même cadre de lecture
Question 4: Modifier la fonction pour qu'elle retourne la distance entre un codon d'initiation et le premier codon stop suivant dans le même cadre de lecture
Question 5: Déterminer quel est le nombre d'ORFs dans une séquence aléatoire d'ADN de longueur N. Pour chacun, calculer sa longueur.
Quel est le nombre d'ORF attendus dans une séquence aléatoire uniforme ? Quelle est la longueur attendue d'un ORF dans une séquence aléatoire uniforme ?
Question 6: Écrire un programme qui traduit une séquence nucléique en une série de protéines.
Question 7: Écrire une fonction pour lire et une pour écrire au format fasta
Question 8 : Exporter les positions d'ORF au format CSV

Exercice: Cytomégalovirus humain en Ouganda (et intro à pandas)

Origine des données
Notice des variables

Lecture

Test de cohérence (sanity check)

Modification du jeu de donnée pour les analyses futures

Export

Exercice: Expressions régulières et Dinosaures