Précédent   Forum du club des développeurs et IT Pro > Autres langages > Python & Zope > Calcul scientifique
Calcul scientifique Forum d'entraide sur la programmation scientifique et bibliothèques associées (PIL, NumPy, SciPy, ...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 11/11/2012, 18h19   #1
anna1980
Invité de passage
 
Inscription : mai 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 44
Points : 2
Points : 2
Par défaut creation d'un dictionaire

salut
j'ai un fichier qui contient des sequences du nucleotides :
et je veux construire un dictionaire a partie de ces donnees comme ceci:

j'ai fait un programme mais ca marche pas tellment :
Code :
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
 
#!/usr/bin/env python
def position(c):
    if c=='A':
        pos = 0
    if c=='C':
        pos = 1
    if c=='G':
        pos = 2
    if c=='T':
        pos = 3
    return pos
 
 
 
 
 
 
def create_dict(seq):
 
    for i in range(0,len(seq)):
 
        q=seq[i]
        a= position(q)
 
        for j in range(0,len(dict[i])):
            if j==a:
 
                dict[i][j]='true'
            else:
                dict[i][j]='false'
 
 
liste=['CCG','AAT','CTG','TAG']
for seq in liste:
    dict = {}
 
    create_dict(seq)
anna1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2012, 18h31   #2
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
un exemple d'input/output serait plus parlant ...

genre tu as ['CCG','AAT','CTG','TAG'] en entrée, tu veux quoi en sortie ?
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2012, 18h42   #3
anna1980
Invité de passage
 
Inscription : mai 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 44
Points : 2
Points : 2
desolée encore une fois ,voici l'output pour la liste:['CCG','AAT','CTG','TAG']
Code :
1
2
3
4
5
6
 
A1A	A1C	A1G	A1T	A2A	A2C	A2G	A2T	A3A	A3C	A3G	A3T	Target
F	T	F	F	F	T	F	F	F	F	T	F	yes
T	F	F	F	T	F	F	F	F	F	F	T	yes
F	T	F	F	F	F	F	T	F	F	T	F	yes
F	F	F	T	T	F	F	F	F	F	T	F	yes
T :true
F: false
anna1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2012, 18h54   #4
josmiley
Membre chevronné
 
Homme
Inscription : avril 2004
Messages : 675
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : avril 2004
Messages : 675
Points : 728
Points : 728
heu ... je ne suis pas plus avancé ^^
tu veux créer un dictionnaire à partie de cette séquence: ['CCG','AAT','CTG','TAG']
donc, à quoi ressemblera ce dictionnaire ?
josmiley est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2012, 20h44   #5
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 941
Points : 1 412
Points : 1 412
Bonsoir,

Tout d'abord, simplifions la fonction position:
Code :
1
2
3
 
def position(letter):
    return 'ACGT'.index(letter)
Ensuite:
Code :
1
2
3
4
5
6
7
8
9
 
def create_dict(seq):
 
    for i in range(0,len(seq)):
 
        q=seq[i]
        a= position(q)
 
        for j in range(0,len(dict[i])):
devrait te lever une exception KeyError puisque ton dictionnaire est vide.
Cette fonction ne retourne rien d'autre que None donc tu la relances à chaque fois avec un dictionnaire vide.

En fait on ne comprend pas exactement ce que doit faire la fonction create_dict.

Un exemple ?
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 11h46   #6
anna1980
Invité de passage
 
Inscription : mai 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 44
Points : 2
Points : 2
merci pour vos reponces,
je vais essayer de mieux expliquer le probleme .
je dois inserer chaque sequence dans la liste dans un tableau ,par exemple pour la sequence :CGC

Code :
1
2
3
 
A1A	A1C	A1G	A1T	A2A	A2C	A2G	A2T	A3A	A3C	A3G	A3T	Target
F	T	F	F	F	F	T	F	F	T	F	F	yes
le premier nucleotide est :C donc A1C sera True et les autres A1 seront false
le 2eme est :G donc A2G sera True et les autres A2 seront false ,la meme chose pOUr le troisieme .
anna1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 13h03   #7
VinsS
Membre Expert
 
Homme
Inscription : octobre 2008
Messages : 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : octobre 2008
Messages : 941
Points : 1 412
Points : 1 412
Si je pige bien, un truc comme ça devrait le faire:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
# -*- coding: utf8 -*-
 
nucleos = ['CCG','AAT','CTG','TAG']
letters = ['A', 'C', 'G', 'T']
 
def build_dict():
    dct = {}
 
    for i in range(1, 4):
        for l in letters:
            dct['A' + str(i) + l] = False
 
    return dct
 
result = {}
for nucleo in nucleos:
    result[nucleo] = build_dict()
    for idx, l in enumerate(nucleo):
        key = 'A' + str(idx + 1) + l
        result[nucleo][key] = True
 
for nucleo in nucleos:
    print nucleo, result[nucleo]
Citation:
CCG {'A1T': False, 'A2T': False, 'A3T': False, 'A3A': False, 'A3C': False, 'A2A': False, 'A1G': False, 'A2C': True, 'A1A': False, 'A1C': True, 'A2G': False, 'A3G': True}
AAT {'A1T': False, 'A2T': False, 'A3T': True, 'A3A': False, 'A3C': False, 'A2A': True, 'A1G': False, 'A2C': False, 'A1A': True, 'A1C': False, 'A2G': False, 'A3G': False}
CTG {'A1T': False, 'A2T': True, 'A3T': False, 'A3A': False, 'A3C': False, 'A2A': False, 'A1G': False, 'A2C': False, 'A1A': False, 'A1C': True, 'A2G': False, 'A3G': True}
TAG {'A1T': True, 'A2T': False, 'A3T': False, 'A3A': False, 'A3C': False, 'A2A': True, 'A1G': False, 'A2C': False, 'A1A': False, 'A1C': False, 'A2G': False, 'A3G': True}
__________________
Vincent
Oqapy . Qarte . PaQager
VinsS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 13h39   #8
anna1980
Invité de passage
 
Inscription : mai 2008
Messages : 44
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 44
Points : 2
Points : 2
merci beaucoup ,je vais l 'essayer
anna1980 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2012, 21h27   #9
dividee
Membre Expert
 
Homme
Inscription : mars 2007
Messages : 852
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Belgique

Informations forums :
Inscription : mars 2007
Messages : 852
Points : 1 184
Points : 1 184
Je pense à ceci:
Code :
1
2
3
4
5
6
7
8
9
from itertools import product
 
nucleos = ['CCG','AAT','CTG','TAG']
bases = 'ACGT'
 
result = [[x==y for x,y in product(nucleo,bases)] for nucleo in nucleos]
 
for line in result:
    print line
Résultat:
Code :
1
2
3
4
[False, True, False, False, False, True, False, False, False, False, True, False]
[True, False, False, False, True, False, False, False, False, False, False, True]
[False, True, False, False, False, False, False, True, False, False, True, False]
[False, False, False, True, True, False, False, False, False, False, True, False]
edit: la première ligne de résultats manquait...
dividee est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h26.


 
 
 
 
Partenaires

Hébergement Web