IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

creation d'un dictionaire


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Points : 16
    Points
    16
    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 : 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
     
    #!/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)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 048
    Points : 1 378
    Points
    1 378
    Par défaut
    un exemple d'input/output serait plus parlant ...

    genre tu as ['CCG','AAT','CTG','TAG'] en entrée, tu veux quoi en sortie ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Points : 16
    Points
    16
    Par défaut
    desolée encore une fois ,voici l'output pour la liste:['CCG','AAT','CTG','TAG']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 048
    Points : 1 378
    Points
    1 378
    Par défaut
    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 ?

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Bonsoir,

    Tout d'abord, simplifions la fonction position:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    def position(letter):
        return 'ACGT'.index(letter)
    Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Points : 16
    Points
    16
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  7. #7
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Si je pige bien, un truc comme ça devrait le faire:

    Code : 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
     
    # -*- 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]
    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}

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 44
    Points : 16
    Points
    16
    Par défaut
    merci beaucoup ,je vais l 'essayer

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Je pense à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

Discussions similaires

  1. [VB6] Création de composant
    Par Tchetch dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/10/2002, 14h52
  2. [c++ builder] creation de surface sur TPanel
    Par JEG dans le forum DirectX
    Réponses: 7
    Dernier message: 23/09/2002, 22h41
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo