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 :

création tableau à partir d'une liste


Sujet :

Calcul scientifique Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    rs
    Inscrit en
    Novembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : rs

    Informations forums :
    Inscription : Novembre 2016
    Messages : 15
    Points : 10
    Points
    10
    Par défaut création tableau à partir d'une liste
    Bonjour,

    Je dispose d'un fichier texte :

    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
     
    Query= B1_mid23_filt_denovo_18-09-16_c1    cov=93.24 len=6215 gc=42.56
    gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1) gene enc...   1359   0.0  
    dbj|AB618031.1|  Escherichia coli (type 1 /strain RH2) DNA, n...    751   0.0  
    >gb|M19966.1|HSEGLY13A Equine herpesvirus type 1 (EHV-1) gene encoding glycoprotein 
    Query= B1_mid23_filt_denovo_18-09-16_c2    cov=106.72 len=2860 gc=50.73
    gb|AY206683.1|  SEN virus strain SENV-H Orf2 gene, complete cds        3433   0.0   
    dbj|AB059353.1|  SEN virus SENV-H gene, complete cds                   3290   0.0   
    gb|KM593803.1|  SEN virus strain HDMU-97 ORF1 gene, partial cds        3261   0.0   
    gb|KM593802.1|  SEN virus strain HDMU-13 ORF1 gene, partial cds        3220   0.0   
    gb|AY183662.1|  SEN virus H gene, complete cds                         2489   0.0   
    gb|EU305675.1|  Homo sapiens isolate LTT7 ORF1 gene, complet...   2425   0.0   
    gb|JX157238.1|  Uncultured virus contig401 genomic sequence            1180   0.0   
    dbj|AB024373.2|  Mus musculus DNA for ORF2, ORF1, partial cds, isolat...    937   0.0   
    dbj|AB024379.1|  Mus musculus DNA for ORF2, partial cds, isolate:KC19...    632   1e-176
    gb|AF464086.1|  Mus musculus isolate BD 493-06 ORF2 mRNA, partial cds       524   5e-144
    dbj|AB038620.1|  Mus musculus complete genome, isolate:TTVsan-S039          428   3e-115
    gb|DQ186997.1|  Homo sapiens clone BM1A-09 ORF2 (ORF2) and O...    426   1e-114
    dbj|AB028669.1|  Mus musculus gene for ORF1 and ORF2, complete genome...    425   4e-114
    gb|DQ186998.1|  Homo sapiens clone BM1A-13 ORF2 (ORF2) and O...    421   5e-113
    gb|DQ186996.1|  Homo sapiens clone BM1A-02 ORF2 (ORF2) and O...    421   5e-113
    dbj|AB025946.2|  Homo sapiens 19 DNA, complete genome, isola...    417   6e-112
    emb|FR751493.1|  Homo sapiens complete genome, isolate TTV-H...    412   2e-110
    dbj|AB038619.1|  Mus musculus complete genome, isolate:TTVsan-IR1031        398   5e-106
    emb|FR751480.1|  Homo sapiens complete genome, isolate TTV-H...    390   8e-104
    emb|FR751476.1|  Homo sapiens complete genome, isolate TTV-H...    390   8e-104
    emb|FR751479.1|  Homo sapiens complete genome, isolate TTV-H...    389   3e-103
    emb|AJ620226.1|  Homo sapiens, isolate tth4, complete genome       389   3e-103
    dbj|AB064607.1|  Homo sapiens 10 DNA, complete genome, isola...    389   3e-103
    Query= B1_mid23_filt_denovo_18-09-16_c3    cov=103.24 len=815 gc=62.46
    gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1) gene enc...   1359   0.0 
    Query= B1_mid23_filt_denovo_18-09-16_c4    cov=93.47 len=65 gc=52.21
    gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1) gene enc...   1359   0.0 
    >emb|AJ315436.1| Mus musculus DNA, isolate 210a-1
    >dbj|AB054648.1| Homo sapiens DNA, complete genome, genotype 23
    >dbj|AB028300.1| Mus musculus DNA, untranslated region, isolate:TTV-3CR04
    >dbj|AB017911.1| Mus musculus DNA, TATA_signal region
    >gb|AF129887.1|AF129887 Mus musculus TTVCHN2, complete genome
    Et je souhaiterai, de manière simple et automatique obtenir un fichier de type xls ou csv du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Organisme						 Query		Total_Query	score1		score2
    gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1) c1,c3,c4	4		6215,815,65	1,1,1
    ...

    La première ligne correspondrait à : "identifiant jusque premiere virgule ou premiere paranthèse refermée", "2 dernieres lettre du deuxieme bloc de caractère des lignes commencant par "Query"", "nombre de lignes commencant par query", " chiffres retrouvés apres "len=" dans lignes query" et "nombre de fois que "organisme" (premiere cellule) est compté pour chaque "query""

    Je suis sur qu'il est possible de faire ca avec un script python, j'ai commencé quelques lignes mais n'ai pas encore le niveau necessaire pour continuer.
    Faut il couper mon fichier initial en blocs via les lignes commencant par query? Comment faire un script propre et facilement modifible par la suite s'il fallait rajouter des colonnes?

    Voila, j'espère avoir vos retours!
    Merci!

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mai 2012
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2012
    Messages : 321
    Points : 604
    Points
    604
    Par défaut
    Bonjour,

    Vu la structure, cela ressemble à un fichier HL7. Pour ce genre de fichiers, les séparateurs sont les ¦

    En position 2 de chaque analyse se trouve un code dont l'identification est unique, ce doit être un code analyse.

    De prime abord, je suggérerai de parcourir le fichier et de stoker les données que vous souhaitez retenir dans un dictionnaire, en regroupant les données dans une liste de valeurs associées à une clef correspondant justement à ce code analyse.

    A partir de là, la mise n forme d'un fichier de sortie ne devrait pas trop poser de problème.

    Attention, je ne l'ai pas vu ici, mais dans les fichiers HL7 (si c'est bien ce dont il s'agit, il existe un sous séparateur qui est souvent ^, cela pourrait aussi être utile).

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Salut et bienvenu,

    La première ligne correspondrait à : "identifiant jusque premiere virgule ou premiere paranthèse refermée", "2 dernieres lettre du deuxieme bloc de caractère des lignes commencant par "Query"", "nombre de lignes commencant par query", " chiffres retrouvés apres "len=" dans lignes query" et "nombre de fois que "organisme" (premiere cellule) est compté pour chaque "query""

    Je suis sur qu'il est possible de faire ca avec un script python, j'ai commencé quelques lignes mais n'ai pas encore le niveau necessaire pour continuer.
    Faut il couper mon fichier initial en blocs via les lignes commencant par query? Comment faire un script propre et facilement modifible par la suite s'il fallait rajouter des colonnes?
    Je commencerais par lire tout le fichier : associer à l'aide d'un dictionnaire chaque query à une liste des organismes. Et dans un second temps, effectuer le traitement pour chaque organisme : déterminer sa présence dans les query et le nombre d'occurrences.

    Les informations sur les query (les 2 derniers caractères et la longueur) peuvent s'obtenir avec une expression rationnelle (module re).
    J'ai compris que total_query est indépendant de l'organisme. Je ne vois pas l'intérêt de l'écrire en sortie.

    L'algorithme déterminé, il n'y a plus de réelle difficulté. N'hésite pas à faire un tour dans la rubrique tuto.

    Grillé par killian68

  4. #4
    Membre à l'essai
    Homme Profil pro
    rs
    Inscrit en
    Novembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : rs

    Informations forums :
    Inscription : Novembre 2016
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    merci pour vos réponses!

    ca ne marche toujours pas, je vais voir dans la rubrique tuto comment avancer à chaque étape

  5. #5
    Membre à l'essai
    Homme Profil pro
    rs
    Inscrit en
    Novembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : rs

    Informations forums :
    Inscription : Novembre 2016
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    je me suis lancé! mais je galère un peu (beaucoup!)


    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
    39
    40
    41
    42
    43
    44
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import re
    from xlwt import Workbook
     
    # creation 
    book = Workbook()
     
    # creation de la feuille 1
    feuil1 = book.add_sheet('feuille 1')
     
    # ajout des en-tetes
    feuil1.write(0,0,'organisme')
    feuil1.write(0,1,'query')
    feuil1.write(0,2,'Total_Query')
    feuil1.write(0,3,'score1')
    feuil1.write(0,4,'score2')
     
     
    # fichier entree
    fichier_entree = open("in.txt", 'r+')
     
     
    # ajout des valeurs dans la ligne suivante
    # mettre fonction
    ligne1 = feuil1.row(1)
    ligne1.write(0,'1')
    ligne1.write(1,'235.0')
    ligne1.write(2,'424.0')
    ligne1.write(3,'a')
    ligne1.write(4,'a')
     
    ligne2 = feuil1.row(2)
     
    chaine = '^(gb|dbj|emb|>gb|>dbj|>emb)' 
     
    for ligne in fichier_entree:
        if chaine in ligne:
            print ligne.ligne2
     
    # creation du fichier
    book.save('tableau.csv')
    Plusieurs questions :
    Comment parcourir le fichier et associer à l'aide d'un dictionnaire chaque query à une liste des organismes?
    Faut il que je fasse des fonctions pour chaque colonne? j'ai du mal à visualiser comment récupérer une information et le 'printer' dans une colonne spécifique (mon print ligne.ligne2 ne marche pas du tout)

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    Citation Envoyé par nmartin Voir le message
    Plusieurs questions :
    Comment parcourir le fichier et associer à l'aide d'un dictionnaire chaque query à une liste des organismes?
    J'ai utilisé l'expression rationnelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Query= \S+(\w{2}).*len=(\d+)"
    pour déterminer les query. Les organismes qui suivent lui sont associés.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    >>> import re
    >>> QUERY = re.compile(r"Query= \S+(\w{2}).*len=(\d+)")
    >>> from collections import OrderedDict
    >>> data, query_id = OrderedDict(), None
    >>> with open("query.txt", "r") as fh:
    ...     for line in fh:
    ...         m = QUERY.match(line)
    ...         if m:
    ...             query_id = m.groups()
    ...         elif query_id and "," in line:
    ...             item = line.split(",")[0]
    ...             data.setdefault(query_id, []).append(item)
    ...         elif query_id and ")" in line:
    ...             item = line.split(")")[0] + ")"
    ...             data.setdefault(query_id, []).append(item)
    ... 
    >>> from pprint import pprint
    >>> pprint(data)
    OrderedDict([(('c1', '6215'),
                  ['gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1)',
                   'dbj|AB618031.1|  Escherichia coli (type 1 /strain RH2) DNA',
                   '>gb|M19966.1|HSEGLY13A Equine herpesvirus type 1 (EHV-1)']),
                 (('c2', '2860'),
                  ['gb|AY206683.1|  SEN virus strain SENV-H Orf2 gene',
                   'dbj|AB059353.1|  SEN virus SENV-H gene',
                   'gb|KM593803.1|  SEN virus strain HDMU-97 ORF1 gene',
                   'gb|KM593802.1|  SEN virus strain HDMU-13 ORF1 gene',
                   'gb|AY183662.1|  SEN virus H gene',
                   'gb|EU305675.1|  Homo sapiens isolate LTT7 ORF1 gene',
                   'dbj|AB024373.2|  Mus musculus DNA for ORF2',
                   'dbj|AB024379.1|  Mus musculus DNA for ORF2',
                   'gb|AF464086.1|  Mus musculus isolate BD 493-06 ORF2 mRNA',
                   'dbj|AB038620.1|  Mus musculus complete genome',
                   'gb|DQ186997.1|  Homo sapiens clone BM1A-09 ORF2 (ORF2)',
                   'dbj|AB028669.1|  Mus musculus gene for ORF1 and ORF2',
                   'gb|DQ186998.1|  Homo sapiens clone BM1A-13 ORF2 (ORF2)',
                   'gb|DQ186996.1|  Homo sapiens clone BM1A-02 ORF2 (ORF2)',
                   'dbj|AB025946.2|  Homo sapiens 19 DNA',
                   'emb|FR751493.1|  Homo sapiens complete genome',
                   'dbj|AB038619.1|  Mus musculus complete genome',
                   'emb|FR751480.1|  Homo sapiens complete genome',
                   'emb|FR751476.1|  Homo sapiens complete genome',
                   'emb|FR751479.1|  Homo sapiens complete genome',
                   'emb|AJ620226.1|  Homo sapiens',
                   'dbj|AB064607.1|  Homo sapiens 10 DNA']),
                 (('c3', '815'),
                  ['gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1)']),
                 (('c4', '65'),
                  ['gb|M19966.1|HSEGLY13A  Equine herpesvirus type 1 (EHV-1)',
                   '>emb|AJ315436.1| Mus musculus DNA',
                   '>dbj|AB054648.1| Homo sapiens DNA',
                   '>dbj|AB028300.1| Mus musculus DNA',
                   '>dbj|AB017911.1| Mus musculus DNA',
                   '>gb|AF129887.1|AF129887 Mus musculus TTVCHN2'])])
    >>>

  7. #7
    Membre à l'essai
    Homme Profil pro
    rs
    Inscrit en
    Novembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : rs

    Informations forums :
    Inscription : Novembre 2016
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup pour la réponse!!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import re
    from xlwt import Workbook
     
    # creation 
    book = Workbook()
     
    # creation de la feuille 1
    feuil1 = book.add_sheet('feuille 1')
     
    # ajout des en-tetes
    feuil1.write(0,0,'organisme')
    feuil1.write(0,1,'match_organisme')
    feuil1.write(0,2,'query')
    feuil1.write(0,3,'Total_Query')
    feuil1.write(0,4,'score1')
    feuil1.write(0,5,'score2')
     
     
    # fichier entree
    fichier_entree = open("virus_mid6.txt", 'r+')
     
     
    # ajout des valeurs dans la ligne suivante
    ligne1 = feuil1.row(1)
    ligne1.write(0,'Homo sapiens')
    ligne2.write(0,'Mus musculus')
    ligne3.write(0,'Equine herpesvirus')
    ligne4.write(0,'toto')
     
    # association (avec dictionnaire) chaque query à une liste des organismes
    QUERY = re.compile(r"Query= \S+(\w{2}).*len=(\d+)")
    from collections import OrderedDict
    data, query_id = OrderedDict(), None
    with open("query.txt", "r") as fh:
       for line in fh:
          m = QUERY.match(line)
          if m:
             query_id = m.groups()
          elif query_id and "," in line:
             item = line.split(",")[0]
             data.setdefault(query_id, []).append(item)
          elif query_id and ")" in line:
             item = line.split(")")[0] + ")"
             data.setdefault(query_id, []).append(item)
     
    from pprint import pprint
    # pprint(data)
     
    with open('tableau_int.csv', 'wt') as out:
        pprint(data, stream=out)
     
     
    # effectuer le traitement pour chaque organisme
     
    # déterminer sa présence dans les query 
    from data.values
    for line in data
       if query_id == feuil1(1.0)
          print "ok" in feuil1(1.1)
          else 
             print "no" in feuil1(1.1)
       elif query_id == feuil1(2.0)
          print "ok" in feuil1(2.1)
          else 
             print "no" in feuil1(2.1)
       elif query_id == feuil1(3.0)
          print "ok" in feuil1(3.1)
          else 
             print "no" in feuil1(3.1)
       elif query_id == feuil1(4.0)
          print "ok" in feuil1(4.1)
          else 
             print "no" in feuil1(4.1)
     
    # et le nombre d'occurrences
    from data, feuil1(1.2)
    compteur = 0 
       if data.key == feuil1(1.0)
          print compteur +=1
    print compteur in feuil1(1.2)
     
     
    # creation du fichier
    book.save('tableau_resultat.csv')
    J'ai continué le script, après avoir entré dans mon fichier de sortie une liste d'organismes "références" en première colonne

    Je bloque sur le traitement pour chaque organisme :

    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
    # effectuer le traitement pour chaque organisme
     
    # déterminer sa présence dans les query 
    from data.values
    for line in data
       if query_id == feuil1(1.0)
          print "ok" in feuil1(1.1)
          else 
             print "no" in feuil1(1.1)
       elif query_id == feuil1(2.0)
          print "ok" in feuil1(2.1)
          else 
             print "no" in feuil1(2.1)
       elif query_id == feuil1(3.0)
          print "ok" in feuil1(3.1)
          else 
             print "no" in feuil1(3.1)
       elif query_id == feuil1(4.0)
          print "ok" in feuil1(4.1)
          else 
             print "no" in feuil1(4.1)
     
    # et le nombre d'occurences
    from data, feuil1(1.2)
    compteur = 0 
       if data.key == feuil1(1.0)
          print compteur +=1
    print compteur in feuil1(1.2)
    Quelles sont les erreurs?
    Merci

  8. #8
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2013
    Messages : 388
    Points : 692
    Points
    692
    Par défaut
    En continuant à partir de la description de ton premier message, la suite serait du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    all_orga = { item for orga in data.values() for item in orga }
    for one_orga in sorted(all_orga):
        for query, orga in data.items():
            if one_orga in orga:
                ...
    Ton code ne respecte pas la syntaxe Python. Prends le temps d'acquérir les fondamentaux avant de te lancer.

  9. #9
    Membre à l'essai
    Homme Profil pro
    rs
    Inscrit en
    Novembre 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : rs

    Informations forums :
    Inscription : Novembre 2016
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci pour la réponse!
    Je suis justement entrain de me former à Python; au moins cet exercice pratique me permet de comprendre beaucoup de choses!

    Je n'ai pas compris la différence entre query et query_id (quand je fais un print, je n'ai pas les même valeurs)
    Pour la suite, dois je utiliser des operateurs boolens pour avoir une reponse oui/non entre query et one_orga? un compteur?

    Merci encore

Discussions similaires

  1. [XL-2010] Mise en forme d'un tableau à partir d'une liste
    Par curt dans le forum Excel
    Réponses: 5
    Dernier message: 26/05/2014, 19h14
  2. Rechercher une valeur proche dans tableau à partir d'une liste
    Par bourgui78 dans le forum Général Python
    Réponses: 9
    Dernier message: 15/02/2013, 10h36
  3. [XL-2007] Remplir un tableau à partir d'une liste dans un autre onglet
    Par maymou27 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/06/2012, 14h34
  4. iReport Generation tableau à partir d'une List
    Par ggalou dans le forum iReport
    Réponses: 0
    Dernier message: 14/12/2010, 09h39
  5. [SQL] Obtenir un tableau à partir d'une liste
    Par JMO91 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/01/2006, 00h07

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