class: center, middle # Quelques modules de bioinformatique --- # Modules de bioinformatique * Quelques modules utiles : * `biopython` : manipulation de séquences et requête de bases de données * `numpy` : opérations mathématiques sur des tableaux et des matrices * `pandas` : manipulation de tableaux * `matplotlib` : génération de graphiques * Et d'autres qui ne seront pas abordés : * `argparse` : gestion des arguments * `csv` : lire et écrire des fichiers au format csv * `gffpandas` : lecture d'annotations GFF3 * `networkx` : gérer des graphes * `random` : générer des nombres aléatoires * `scikit-learn` : faire de l'apprentissage automatique * `sqlite3` : gérer une base de données SQLite * `tensorflow`, `keras`, `pytorch` : constuire des réseaux de neurones * `...` --- # Installation d'un module Trois situations possibles : * le module est un module de base (argparse, csv) : rien à faire ! * le module peut être installé avec l'outil « `pip` » (https://pypi.org/) ```bash pip install pandas ``` * remarque : l'outil « `conda` » est un autre outil de plus en plus répandu pour gérer les modules. Lien vers
Anaconda
. * le module est un fichier « fait maison » (ex. : votre module `sequence.py`) * positioner le ficher à la racine du programme Dans tous les cas, pour utiliser le module : ```python # mon_script.py import argparse import pandas import sequence ``` --- class: center, middle # Numpy --- # Module Numpy * L'objet principal de numpy : un tableau à (n) dimensions:
ndarray
. * WNG ! Il y a une classe array.array en python, ne pas confondre. * https://docs.scipy.org/doc/numpy/user/quickstart.html --- # Module Numpy * Exemple : ```python >>> import numpy as np >>> a = np.arange(15).reshape(3, 5) >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) >>> a.shape (3, 5) >>> a.ndim 2 >>> a.size 15 ``` --- # Module Numpy : création de tableaux * array prend une
liste
en argument : ```python >>> a = np.array([1,2,3,4]) # une dimension >>> a array([1, 2, 3, 4]) >>> b = np.array([(1.5,2,3),(4,5,6)]) # deux dimensions >>> b array([[1.5, 2. , 3. ], [4. , 5. , 6. ]]) ``` * Préciser le
type
des valeurs : ```python >>> b.dtype.name 'float64' >>> c = np.array( [ [1,2], [3,4] ], dtype=complex ) >>> c array([[1.+0.j, 2.+0.j], [3.+0.j, 4.+0.j]]) ``` --- # Module Numpy : création de tableaux * Initialiser avec des valeurs : ```python >>> np.zeros((3,4)) # tuple pour initialiser array([[0., 0., 0., 0.], [0., 0., 0., 0.], [0., 0., 0., 0.]]) >>> np.ones((3,4)) array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]]) >>> np.empty((2,3)) # valeurs aléatoires array([[1.5, 2. , 3. ], [4. , 5. , 6. ]]) ``` * Initialiser avec des ranges : ```python >>> np.arange( 10, 30, 5) array([10, 15, 20, 25]) ``` --- # Module Numpy : afficher les tableaux * numpy présente les tableaux comme suit : >* la dernière dimension (axe) est affichée de gauche à droite. >* l'avant dernière dimension est affichée de haut en bas. >* les dimensions restantes sont également affichées de haut en bas séparées par une ligne blanche. ```python >>> c = np.arange(24).reshape(2,3,4) >>> print (c) # fonction print 1 [[[ 0 1 2 3] # dernière dimension: 4 colonnes 2 [ 4 5 6 7] 3 [ 8 9 10 11]] # avant dernière dimension: 3 lignes 4 5 [[12 13 14 15] 6 [16 17 18 19] 7 [20 21 22 23]]] # première dimension: 2 tableaux de 3 lignes et 4 colonnes ``` --- # Module Numpy : Indexes * L'indexation fonctionne comme pour les listes. * Le premier index correspond à la première dimension, ... ```python >>> print (c) [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]] ``` ```python >>> print (c[1]) # second tableau [[12 13 14 15] [16 17 18 19] [20 21 22 23]] ``` ```python >>> print (c[1][1]) # seconde ligne du second tableau [16 17 18 19] ``` --- # Module Numpy : opérations mathématiques * Moyenne ```python >>> a = np.array([[1, 2, 3],[4, 5, 6],[7, 8, 9]]) # du tableau complet >>> np.mean(a) 5.0 # par dimension >>> np.mean (a, axis=1) array([2., 5., 8.]) ``` * Maximum ```python >>> np.max(a) 9 ``` * Somme ```python >>> np.sum(a, axis=0) array([12, 15, 18]) ``` --- # Travaux pratiques Le tableau suivant représente 4 relevés de températures pour chaque jour de la semaine : ```python Lun 12 11 14 12 Mar 12 10 14 11 Mer 11 11 14 13 Jeu 18 23 23 17 Ven 17 22 21 17 Sam 16 20 22 16 Dim 18 25 22 17 ``` Créez un programme python « `temp.py` » ou un notebook Jupyter « `temp.ipynb` » qui indique le jour le plus chaud de la semaine. Remarques : * il est possible d'itérer sur un `np.array` comme sur une liste, * `np.mean()` : méthode `mean()` de `numpy`, * `max()` et `index()` de la classe `list` peuvent être utile...