Voir le flux RSS

danielhagnoul

Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots

Noter ce billet
par , 06/03/2020 à 21h53 (1114 Affichages)
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! python3
# coding: utf-8
 
 
def compte_mots_n_lettres(brin, n):
    nb = len(brin)//n
    print('La division de la longueur du brin {} en mot de {} lettres donne {} mots.\n'.format(
        len(brin), n, nb))
    if nb*n < len(brin):
        print('Il restera {} dans le brin.\n'.format(brin[nb*n:]))
    dict_brin = {}
    mots = []
    temp = 0
    for index in range(n, len(brin)+1, n):
        mots.append(brin[temp:index])
        temp = index
    for mot in mots:
        if mot not in dict_brin:
            dict_brin[mot] = mots.count(mot)
    return dict_brin
 
 
brin = 'ACCTAGCCATGTAGAATCGCCTAGGCTTTAGCTAGCTCTAGCTAGCTG'
 
mots_2_lettres = compte_mots_n_lettres(brin, 2)
print("Contenu du dictionnaire\n")
print("nb de mots = {} ;\n mots = {}\n".format(
    len(mots_2_lettres), mots_2_lettres))
 
 
mots_3_lettres = compte_mots_n_lettres(brin, 3)
print("Contenu du dictionnaire\n")
print("nb de mots = {} ;\n mots = {}\n".format(
    len(mots_3_lettres), mots_3_lettres))
 
"""
 
La division de la longueur du brin 48 en mot de 2 lettres donne 24 mots.
 
Contenu du dictionnaire
 
nb de mots = 12 ;
 mots = {'AC': 1, 'CT': 2, 'AG': 3, 'CC': 1, 'AT': 1, 'GT': 1, 'AA': 1, 
            'TC': 2, 'GC': 6, 'TT': 1, 'TA': 4, 'TG': 1}
 
La division de la longueur du brin 48 en mot de 3 lettres donne 16 mots.
 
Contenu du dictionnaire
 
nb de mots = 12 ;
 mots = {'ACC': 1, 'TAG': 3, 'CCA': 1, 'TGT': 1, 'AGA': 1, 'ATC': 1, 
            'GCC': 1, 'GCT': 2, 'TTA': 1, 'AGC': 2, 'TCT': 1, 'CTG': 1}
 
"""

Licence Creative Commons Attribution 2.0 Belgique

Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Viadeo Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Twitter Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Google Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Facebook Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Digg Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Delicious Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog MySpace Envoyer le billet « Python. Diviser un brin d'ADN en mots de n lettres, construire un dict des mots » dans le blog Yahoo

Mis à jour 11/03/2020 à 18h34 par danielhagnoul (Correction, erreur de débutant, voir messages)

Catégories
Programmation , Python , Python

Commentaires

  1. Avatar de rawsrc
    • |
    • permalink
    salut,

    t'es sûr de ton algo parce qu'après un simple contrôle par calcul mental, je n'arrive pas au point de départ : ton brin fait 48 caractères.
    Quand on fait la somme des fréquences de tes résultats : on arrive à 2 x 23 = 46 et 3 x 15 = 45, euh t'aurais pas perdu des brins au passage ?
    J'ai refait le même boulot en PHP pour vérifier :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $brin = 'ACCTAGCCATGTAGAATCGCCTAGGCTTTAGCTAGCTCTAGCTAGCTG';
    $freq_len2 = array_count_values(str_split($brin, 2));
    $freq_len3 = array_count_values(str_split($brin, 3));
    et il te manque bien le dernier brin dans les deux cas de figure.
    Mis à jour 11/03/2020 à 14h53 par rawsrc
  2. Avatar de danielhagnoul
    • |
    • permalink


    Bien vu, merci.

    Une erreur de débutant en Python, oublier le +1 : for index in range(n, len(brin)+1, n):
    Mis à jour 11/03/2020 à 18h36 par danielhagnoul
  3. Avatar de Stellabrige
    • |
    • permalink
    Bonjour moi j'ai un problème avec le langage c