Partage
  • Partager sur Facebook
  • Partager sur Twitter

ajout distance

    7 mars 2011 à 16:56:32

    Pourquoi tu te borne à ne pas utiliser de base de données ?
    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2011 à 17:02:39

      J'ai pense aussi mais le souci c'est que je me connais pas trop en base de donne, et ensuite il me faut un fichier de sortie que je dois utiliser par la suite

      merci
      • Partager sur Facebook
      • Partager sur Twitter
        7 mars 2011 à 17:44:21

        Utilise le module gadfly. Et franchement, le SQL, c'est pas la mer à boire non plus

        >>> Cours de Gérard Swinnen

        Voici un programme quelquonque utilisant gadfly :

        import gadfly
        
        bdd = gadfly.gadfly("[Nom de la BDD]",'[Repertoire dans lequel se situe la BDD]') # => Cette ligne doit être exécuté si la base existe
        # OU
        bdd.startup("[Nom de la BDD]",'[Repertoire dans lequel se situe la BDD]') # => Cette ligne ne doit être exécuté que si la base de données n'existe pas, auquel cas la base existante sera écrasé sans avertissement
        
        cur = bdd.cursor()
        cur.execute("Requête SQL 1")
        cur.execute("Requête SQL 2")
        cur.execute("...")
        cur.execute("Requête SQL n")
        bdd.commit()
        
        bdd.close()
        


        Bien sur, les fonctionalités de gadfly ne s'arrête pas là
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          7 mars 2011 à 17:59:31

          Sinon la 1ere ligne se récupère toujours de la même façon et tu peux récupérer tes distances à l'aide de la méthode split.4

          with open(fichier) as f:
              print f.readline().split()
          


          Mais en y réfléchissant bien, travailler avec les bases de données, ça doit être nickel pour se genre de travail.
          • Partager sur Facebook
          • Partager sur Twitter
            7 mars 2011 à 22:21:36

            Citation : Lord Casque Noir

            Des fois, utiliser l'outil adapté ...

            test=> CREATE TABLE a (id SERIAL PRIMARY KEY, a TEXT, b TEXT, c FLOAT, d INT, e INT, f INT, g INT, h INT, i INT, j INT, k FLOAT, l FLOAT);
            NOTICE:  CREATE TABLE créera des séquences implicites « a_id_seq » pour la colonne serial « a.id »
            NOTICE:  CREATE TABLE / PRIMARY KEY créera un index implicite « a_pkey » pour la table « a »
            CREATE TABLE
            Temps : 109,035 ms
            test=> \copy a (a,b,c,d,e,f,g,h,i,j,k,l) FROM aster1.txt
            Temps : 0,852 ms
            test=> 
            test=> CREATE TABLE b (id SERIAL PRIMARY KEY, a TEXT, b TEXT, c FLOAT, d INT, e INT, f INT, g INT, h INT, i INT, j INT, k FLOAT, l FLOAT);
            NOTICE:  CREATE TABLE créera des séquences implicites « b_id_seq » pour la colonne serial « b.id »
            NOTICE:  CREATE TABLE / PRIMARY KEY créera un index implicite « b_pkey » pour la table « b »
            CREATE TABLE
            Temps : 211,233 ms
            test=> \copy b (a,b,c,d,e,f,g,h,i,j,k,l) FROM aster2.txt
            Temps : 0,876 ms
            test=> 
            test=> SELECT DISTINCT ON (a) * FROM a ORDER BY a, id;
             id |      a       |      b      |   c   |  d  |  e  | f |  g  |  h  |  i  |  j  |   k    |  l   
            ----+--------------+-------------+-------+-----+-----+---+-----+-----+-----+-----+--------+------
              1 | C169v2-00004 | Aster-05984 | 47.09 | 223 | 110 | 4 |   1 | 218 |  24 | 243 |  9e-55 |  207
              2 | C169v2-00005 | Aster-03546 | 66.67 | 264 |  88 | 0 |   1 | 264 |  13 | 276 | 5e-101 |  362
              3 | C169v2-00006 | Aster-06981 | 29.01 | 262 | 162 | 6 | 119 | 362 | 180 | 435 |  2e-20 | 96.3
             21 | C169v2-00007 | Aster-02416 | 71.79 | 156 |  42 | 2 |   3 | 158 |   4 | 157 |  5e-53 |  201
             22 | C169v2-00008 | Aster-00624 | 54.82 | 166 |  74 | 1 | 144 | 308 |   1 | 166 |  2e-48 |  187
            (5 lignes)
            
            Temps : 0,439 ms
            test=> SELECT DISTINCT ON (a) * FROM b ORDER BY a, id;
             id |      a      |      b       |   c   |  d  |  e  | f  |  g  |  h   |  i  |  j  |   k   |  l   
            ----+-------------+--------------+-------+-----+-----+----+-----+------+-----+-----+-------+------
             18 | Aster-02416 | C169v2-00007 | 26.92 | 104 |  69 |  2 | 138 |  241 | 122 | 218 | 0.004 | 37.4
              2 | Aster-03090 | C169v2-05737 | 33.23 | 668 | 374 | 14 | 413 | 1069 |  11 | 617 | 3e-84 |  308
              9 | Aster-03091 | C169v2-07318 | 37.23 | 188 | 108 |  4 | 131 |  317 | 161 | 339 | 2e-26 |  115
              8 | Aster-03546 | C169v2-00005 | 30.16 |  63 |  42 |  1 | 129 |  189 | 163 | 225 |   8.2 | 28.5
              1 | Aster-05984 | C169v2-00004 | 40.35 | 575 | 297 | 10 | 415 |  987 |  30 | 560 | 2e-92 |  336
            (5 lignes)
            
            Temps : 0,441 ms
            test=> WITH a AS (SELECT DISTINCT ON (a) * FROM a ORDER BY a, id), b AS (SELECT DISTINCT ON (a) * FROM b ORDER BY a, id) SELECT * FROM a JOIN b ON (a.a=b.b AND a.b=b.a);
             id |      a       |      b      |   c   |  d  |  e  | f | g |  h  | i  |  j  |   k    |  l  | id |      a      |      b       |   c   |  d  |  e  | f  |  g  |  h  |  i  |  j  |   k   |  l   
            ----+--------------+-------------+-------+-----+-----+---+---+-----+----+-----+--------+-----+----+-------------+--------------+-------+-----+-----+----+-----+-----+-----+-----+-------+------
              1 | C169v2-00004 | Aster-05984 | 47.09 | 223 | 110 | 4 | 1 | 218 | 24 | 243 |  9e-55 | 207 |  1 | Aster-05984 | C169v2-00004 | 40.35 | 575 | 297 | 10 | 415 | 987 |  30 | 560 | 2e-92 |  336
              2 | C169v2-00005 | Aster-03546 | 66.67 | 264 |  88 | 0 | 1 | 264 | 13 | 276 | 5e-101 | 362 |  8 | Aster-03546 | C169v2-00005 | 30.16 |  63 |  42 |  1 | 129 | 189 | 163 | 225 |   8.2 | 28.5
             21 | C169v2-00007 | Aster-02416 | 71.79 | 156 |  42 | 2 | 3 | 158 |  4 | 157 |  5e-53 | 201 | 18 | Aster-02416 | C169v2-00007 | 26.92 | 104 |  69 |  2 | 138 | 241 | 122 | 218 | 0.004 | 37.4
            (3 lignes)
            


            Je pense que ça résoud bien ton problème. Tu as tout ce dont il te faut maintenant
            • Partager sur Facebook
            • Partager sur Twitter
              8 mars 2011 à 9:04:02

              Bonjour, est ce que vous savez comment puis faire ceci il faut que j'ai un sgbd sous la main ?
              Ou bien oppen office peut marcher?
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                8 mars 2011 à 9:43:10

                Avec python (2.6 à 3.x), tu as SQLite 3 installé par défaut. Il est simple, léger et fera très bien l'affaire pour ton projet. Swinnen en fait une courte introduction dans la dernière version de son tuto (Python 3).

                import sqlite3
                with sqlite3.connect(filename) as conn:
                    cur = conn.cursor()
                    # manipuler la bdd...
                    conn.commit()
                    cur.close()
                
                • Partager sur Facebook
                • Partager sur Twitter
                  8 mars 2011 à 10:00:09

                  Ben, j'ai continue mon code mais le soucis c'est que si je rajoute dans le dictionnaire , le num3 est vide:
                  En fait je peux recuperer les positiosn dans le premier fichier car cest toujours la meme chose.
                  Donc un seul dico des positions suffit
                  #! /usr/bin/python
                  
                  
                  #coding=utf-8
                  
                  #parseur 1-----------------------reciprocal best blast hits-------------------------------------------------------------------------------
                  
                  
                  d1, d2 = {}, {} # dcitionnaire
                  d3,d4={}, {}
                  essai1=[]
                  with open('coco_aster.txt') as fichier:# ouverture du fichier coco_aster, lecture de chaque ligne et comparaison des doublons....
                    	   for line in fichier:
                       		  cv, aster = line.split('\t')[:2]
                  		  psositon=line.split('\t')[6:10]
                  		  if cv not in d1:
                           		 d1[cv] = aster         #remplissage dans un dico
                  			 d3[cv] = psositon   
                  
                  
                  with open('aster_coco.txt') as fichier:# ouverture du fichier aster_coco, lecture de chaque ligne et comparaison des doublons....
                    	 for line in fichier:
                      		   aster, cv = line.split('\t')[:2]
                  		   psositon=line.split('\t')[6:10]
                       		   if aster not in d2 :
                           			   d2[aster] = cv  #remplissage dans un dico
                  				  
                  
                  
                  num1 = [(cv, aster) for cv, aster in d1.iteritems()] 
                  num2 = [(cv, aster) for aster, cv in d2.iteritems()]
                  num4=	[(cv,  psositon ) for cv,  psositon  in d3.iteritems()] 
                  num3 = [t for t in num1 if t in num2]			#best hit
                  


                  PS: JE ne peux pas utiliser sqlite car je ne suis pas sur mon ordi donc j'ai pas le droit d'administartion pour faire une mise a jour de mon python.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    8 mars 2011 à 11:29:53

                    modifie

                    cette ligne

                    num2 = [(cv, aster) for aster, cv in d2.iteritems()]
                    


                    par

                    num2 = [(cv, aster) for cv, aster in d2.iteritems()]
                    


                    t'as juste inversé cv et aster
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 mars 2011 à 11:35:37

                      Bonjour, je ne comprends pas en quoi en inversant le num 2 ca va changer car la j'ai modifie le code en ceci:
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        8 mars 2011 à 12:10:04

                        Heuuu t'as testé avant de dire en quoi ça ne change rien?

                        Moi je répond à ci-dessous

                        Citation

                        Ben, j'ai continue mon code mais le soucis c'est que si je rajoute dans le dictionnaire , le num3 est vide



                        Réponse : C'est parce-que t'as inversé aster et cv, point.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 mars 2011 à 9:40:03

                          Bonjour,
                          la je suis partie en faisant d'une autre facon:

                          • Partager sur Facebook
                          • Partager sur Twitter
                            9 mars 2011 à 12:48:52

                            Citation : k.mamoud

                            PS: JE ne peux pas utiliser sqlite car je ne suis pas sur mon ordi donc j'ai pas le droit d'administartion pour faire une mise a jour de mon python.



                            SQLite3 est installé par défaut, et que ce soit Python 2.6 ou Python 3.1, tu n'as rien à installer. (par contre, je n'ai rien trouvé pour Gadfly sous Python 3)
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              9 mars 2011 à 12:58:15

                              Citation

                              par contre, je n'ai rien trouvé pour Gadfly sous Python 3



                              Oui et d'ailleurs sur la version 2.6 et 2.7 gadfly ne fonctionnera pas car le module md5 est déprécié.

                              Si ça t'intéresse, j'ai réussi à faire fonctionner gadfly en modifiant sa classe en virant md5 et le remplacer par le module hashlib, je pourrais te donner le déroulement simple sur Ubuntu ;)
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                9 mars 2011 à 13:06:55

                                Pour les versions antérieur à python 2.6, il y a aussi sqlite :
                                import sqlite # version 1
                                import sqlite2 # version 2
                                

                                ;)
                                • Partager sur Facebook
                                • Partager sur Twitter

                                ajout distance

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown