Cour 4 - LCQB

publicité
Introductionàlabio-informatique(3I019)
3I019:Cour4
Introduction à linux et python pour l’analyse de séquences
Responsables.HuguesRichard([email protected])etJulianaSilva-Bernardes
([email protected]).
Enseignantcours.JulianaSilva-Bernardes.
1
Introductionàlabio-informatique(3I019)
Linux
Lister le contenu d'un dossier
ls liste le dossier de travail courant
ls -l dossier liste au format détaillé le dossier dossier
Par exemple :
ls –l
-rw-r--r--@ 1 julianab staff 12310392 Feb 1 15:03 Saccharomyces.cerevisiae.genome
Besoin d'aide : La commande man
La plupart des commandes ont une page de manuel qui donne une description de leurs utilisations plus ou moins
détaillées, parfois utiles, parfois obscures. Certains disent qu'elles ont été appelées "man pages", parce qu'elles ne
s'adressent qu'aux vrais Hommes.
Exemple: man ls
Déplacer, renommer et copier des fichiers
•
Copier un fichier
cpfichier_sourcefichier_destination
•
Copier un dossier
cp-rdossier_sourcedossier_destination
•
Déplacer ou renommer un fichier
mvfichier1nouveau_nom_fichier1
•
Supprimer un fichier (ou une liste de fichiers)
rmfichier1[fichier2…]
•
Supprimer un dossier et tous ses sous-dossiers, à manier avec précaution
rm-rdossier1[dossier2…]
•
Créer un dossier
mkdirdossier1[dossier2…]
•
supprime un dossier vide
rmdirdossier1[dossier2…] 2
Introductionàlabio-informatique(3I019)
Visualiser et éditer les fichiers
• affiche le contenu du fichier à l'écran
catfichier
• affiche progressivement un fichier à l'écran : Entrer = descend d'une ligne,
Espace = descend d'une page, q = quitte
morefichier
• comme more, mais on peut utiliser la touche Page Précédente. Pas disponible
sur tous les systèmes.
lessfichier
• éditer un fichier avec l'éditeur nano. CtrlX pour savegarder le fichierTous.
nanofichier
• affiche par défaut les 10 premières lignes d'un fichier
headfichier
• affiche les N premières lignes d'un fichier
head-n{N}fichier
• affiche par default les 10 dernières lignes d'un fichier
tailfichier
• affiche les N dernières lignes d'un fichier
tail-n{N}fichier
Comparaison du contenu de deux fichiers avec diff
La commande diff permet de voir la différence entre deux fichiers. Nous avons deux fichiers version1 et
version2, voici un exemple de comment les comparer.
version1
1
2
4
version2
1
2
3
4
$ diff version1 version2
2a3
>3
Ici, la commande nous indique que après la deuxieme ligne du premier fichier nous devons incrusté la ligne 3 du
deuxieme fichier.
version1
1
2
4
6
version2
1
2
3
4
3
Introductionàlabio-informatique(3I019)
$ diff version1 version2
2a3
>3
4d4
<6
2a3 nous indique que après la deuxieme ligne du premier fichier nous devons incrusté la troisieme ligne du
deuxieme fichier.
4d4 nous indique que la ligne 4 du premier fichier doit être supprimés, car elle n'exist pas derrière la ligne 4 du
second.
Pipes
Le symbole tube ("pipe") "|" est utilisé pour rediriger la sortie d'une commande vers une autre.
Par exemple :
ls -l | more
Cette commande prend la sortie du listage au format long des fichiers dans un répertoire produit par "ls -l" et la
redirige vers la commande "more" (aussi appelé filtre). Dans ce cas, une très longue liste de fichier peut être vue
page par page.
Trouvez plus de detais sur les commades unix dans le liens ci-dessous
- http://www.epons.org/commandes-base-linux.php
- https://buzut.fr/101-commandes-indispensables-sous-linux/
Python
Python Strings
Les chaines de caractères sont des listes de caractères. On parle de chaine car les caractère se suive et chaque
caractère a sa place comme les maillons d'une chaine. Il est ainsi possible de faire apparaitre plusieurs fois le
même caractère dans une chaine.
>>> dna = 'CTGACCACTTTACGAGGTTAGC'
Nous pouvons donc utiliser certaines propriétés des listes comme les tranches :
>>>
>>>
>>>
>>>
dna[0]
dna[1]
dna[2]
dna[3]
'C'
'T'
'G'
'A'
A contrario des listes, les chaînes de caractères présentent toutefois une différence notable, ce sont des listes non
modifiables. Une fois définie, vous ne pouvez plus modifier un de ses éléments. Le cas échéant, Python renvoie
un message d'erreur :
>>> dna[22] = 'C'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
4
Introductionàlabio-informatique(3I019)
TypeError: 'str' object does not support item assignment
>>>
Python Functions
Il exist plusieur fonctions associée aux chaînes de caractères qui est particulièrement pratique. Par exemple:
>>> dna.lower()
'ctgaccactttacgaggttagc'
>>> rna = dna.replace('T', 'U')
>>> rna
'CUGACCACUUUACGAGGUUAGC'
La fonction split() découpe la ligne en champs, en utilisant comme séparateur les espaces ou les tabulations. Il
est possible de modifier le séparateur de champs, par exemple :
>>> dna = 'CTG ACC ACT TTA CGA GGT TAG'
>>> dna.split()
['CTG', 'ACC', 'ACT', 'TTA', 'CGA', 'GGT', 'TAG']
La fonction find() recherche une chaîne de caractères passée en argument.
>>> dna = 'CTGACCACTTTACGAGGTTAGC'
>>> dna.find('TTT')
8
Enfin, la fonction count() compte le nombre d'occurences d'une chaîne de caractères passée en argument :
>>> dna.count('TT')
2
Python Lists
Les listes (ou list / array) en python sont une variable dans laquelle on peut mettre plusieurs variables..
>>> bases = ['A', 'C', 'G', 'T']
>>> bases.append('U')
>>> bases
['A', 'C', 'G', 'T', 'U']
>>> bases.reverse()
>>> bases
['U', 'T', 'G', 'C', 'A']
>>> bases[0]
'U'
>>> bases[1]
'T'
>>> bases.remove('U')
>>> bases
['T', 'G', 'C', 'A']
>>> bases.sort()
>>> bases
['A', 'C', 'G', 'T']
Fonctions définies par l'utilisateur
Voici le processus pour créer votre propre fonction en Python. La première ligne commence par le mot-clé def,
est suivi du nom de la fonction et de tous les arguments (valeurs d'entrée attendues) entourés de parenthèses, et
5
Introductionàlabio-informatique(3I019)
se termine par un signe deux-points. Les lignes suivantes composent le corps de la fonction et doivent être
indentées. Si un commentaire de block apparaît dans la première ligne du corps, il devient une partie de la
documentation de la fonction. La dernière ligne d'une fonction retourne un résultat.
>>> def transcribe(dna):
"""Return dna string as rna string."""
return dna.replace('T', 'U')
>>> transcribe('CCGGAAGAGCTTACTTAG')
'CCGGAAGAGCUUACUUAG'
>>> def reverse(s):
"""Return the sequence string in reverse order."""
letters = list(s)
letters.reverse()
return ''.join(letters
>>> reverse('CCGGAAGAGCTTACTTAG')
'GATTCATTCGAGAAGGCC'
Python Dictionaries
Un dictionnaire Python a le même avantage qu'un dictionnaire papier. Il vous permet de localiser rapidement la
valeur (définition) associée à une clé (mot). Les dictionnaires sont désignés par des accolades et contiennent une
séquence séparée par des virgules de paires clé: valeur. Les valeurs de dictionnaire sont accédées par leur valeur
de clé, plutôt que leur position dans la séquence. Examinons quelques-unes des méthodes prises en charge par
les dictionnaires.
>>> basecomplement = {'A': 'T', 'C': 'G', 'T': 'A', 'G': 'C'}
>>> basecomplement.keys()
['A', 'C', 'T', 'G']
>>> basecomplement.values()
['T', 'G', 'A', 'C']
>>> basecomplement['A'] 'T'
>>> basecomplement['C'] 'G'
>>> for base in basecomplement.keys():
print "The complement of", base, "is", basecomplement[base]
The complement of A is T
The complement of C is G
The complement of T is A
The complement of G is C
>>> for base in basecomplement:
print "The complement of", base, "is", basecomplement[base]
The complement of A is T
The complement of C is G
The complement of T is A
The complement of G is C
L'exemple suivant démontrera une autre technique dont nous aurons besoin dans notre fonction de complément.
C'est une fonctionnalité relativement nouvelle de Python, appelée list comprehensions.
>>> letters = list('CCGGAAGAGCTTACTTAG')
>>> [basecomplement[base] for base in letters]
['G', 'G', 'C', 'C', 'T', 'T', 'C', 'T', 'C', 'G', 'A', 'A', 'T', 'G', 'A',
'A', 'T', 'C']
6
Introductionàlabio-informatique(3I019)
Une liste de compréhension renvoie une liste et fonctionne de façon similaire à une boucle for, mais dans un
format beaucoup plus compact et efficace. Dans ce cas, il nous permet de retourner une nouvelle liste dans
laquelle chaque base de la liste de lettres originale a été remplacée par son complément, que nous avons extrait
du dictionnaire de base. Voyons comment nous mettons tout cela ensemble.
>>> def complement(s):
"""Return the complementary sequence string."""
basecomplement = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'}
letters = list(s)
letters = [basecomplement[base] for base in letters]
return ''.join(letters)
>>> complement('CCGGAAGAGCTTACTTAG')
'GGCCTTCTCGAATGAATC'
Maintenant que nous avons une fonction inverse et une fonction complémentaire, nous avons les blocs de
construction d'une fonction inversée.
>>> def reversecomplement(s):
"""Return the reverse complement of the dna string."""
s = reverse(s)
s = complement(s)
return s
>>> reversecomplement('CCGGAAGAGCTTACTTAG')
'CTAAGTAAGCTCTTCCGG'
Il peut également être utile de connaître le pourcentage d'ADN composé de bases G et C. Les objets String ont
une méthode count () qui renvoie le nombre de occurrences de caractères. Avec cette information, calculer le
pourcentage est une simple question d'appliquer quelques calculs mathématiques.
>>> def gc(s):
"""Return the percentage of dna composed of G+C."""
gc = s.count('G') + s.count('C')
return gc * 100.0 / len(s)
>>> gc('CCGGAAGAGCTTACTTAG')
50.0
>>> gc('CCGGAAGAGCTTACTTAGTTA')
42.857142857142854
Trouvez plus de detais sur le langage python dans le liens ci-dessous
- https://openclassrooms.com/courses/apprenez-a-programmer-en-python
- http://www.courspython.com/introduction-python.html
7
Téléchargement