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

Python Discussion :

Conversion python 3 vers python 2.7


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Par défaut Conversion python 3 vers python 2.7
    Bonjour à tous,

    Je dois "réécrire" un script python qui a été codé en python 3.

    Il faut que je le réécrive afin qu'il soit interprétable en python 2.7

    Cette partie de mon code me pose souci, elle n'est pas lisible en python 2.7 et je ne vois pas comment la modifier afin qu'elle soit lisible:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    yield from chain(maillon, pathway +[m])

    Voici mon code en entier si ça peut aider (la ligne en question est la ligne 28):

    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
     
    import sys
    sys.setrecursionlimit(1000000)
    from collections import defaultdict
    dd = defaultdict(set)
    L=[]
     
    with open ("C:/Users/lveillat/Desktop/Données stage/Fichiers tests/testchaines3.txt","r") as f1:
    	for ligne in f1:
    		#ðif ligne.startswith('9606'):
    		lp = ligne.rstrip('\n').split(" ")
    		prot1 = lp[0] #je sélectionne la première protéine de chaques interactions
    		prot2 = lp[1] #je sélectionne la seconde protéine de chaques interactions
    		dd[prot1].add(prot2) #Je crée mon dictionnaire avec en clé la première prot de l'interaction et en valeurs l'ensembles des prots avec qui elle peut interagir
    #print(dd)
     
    def chain(maillon, pathway, limite=11): #Je définis une fonction chain(maillon, chaine d'interaction, limite de taille de la chaine)
    	next_= maillon.get(pathway[-1], None) #next_ = On rajoute un maillon à la chaine existante en fonction de la dernière protéine du pathway
     
    	if next_ is None or len(pathway) >= limite : #Si il n'y a pas de protéine trouvée interagissant avec la dernière protéine du pathway, ou si la taille dépasse la limite alors on passe a la chaine suivante
    		yield pathway #yield est pratique quand on sait que la fonction va retourner de nombreuses valeurs qu?on ne souhaite lire qu?une seule fois (c'est notre cas ici), permet d'économiser de la mémoire.
     
     
    	if len(pathway) < limite  : #Si on trouve encore des protéines interagissant  avec la dernière protéine du pathway et si la taille limite n'est pas atteinte,
    		for m in next_: # pour une interaction dans l'ensemble des interactions possibles de pathway[-1]
    			if m not in pathway:
     
    				yield from chain(maillon, pathway + [m]) #On rajoute une autre prot à la chaine uniquement si la protéine que l'on rajoute n'est pas déjà apparue dans la chaine
     
    			else:
    				if len(pathway) >=2:
     
    					if m==pathway[-2]:
    						if len(next_)==1:
    							yield pathway
     
     
    						if len(next_)>1:
    							continue
     
    					if m!=pathway[-2]:
     
    						if len (next_)==2:
    							yield pathway
     
     
    						if len (next_)>2:
    							if m in pathway and pathway not in L:
    								L.append(pathway)
    								yield pathway
     
    for k in dd: # Pour chaques prot du dico
    	for z in chain(dd, pathway = [k]): #Pour chaques chaines
    		print (' '.join(z))
    Merci de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    yield from chain(maillon, pathway +[m])
    devrait pouvoir se remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for z in chain(maillon, pathway +[m]):
         yield z
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Conversion Python en C
    Par N7Heroes dans le forum C
    Réponses: 3
    Dernier message: 10/04/2018, 18h54
  2. [Conversion]Applet Java Vers Java Web Start
    Par robin206 dans le forum JWS
    Réponses: 2
    Dernier message: 20/04/2005, 09h28
  3. [Think Pascal] Portage/conversion Think Pascal vers MAC/Windows/Linux
    Par Alain Vitry dans le forum Autres IDE
    Réponses: 1
    Dernier message: 19/03/2005, 11h24
  4. Conversion distance , angle vers coordonnées de points
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/03/2004, 22h55
  5. Algorithme de conversion de RTF vers HTML
    Par youtch dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 10/09/2002, 12h35

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