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 :

Question fonction split


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut Question fonction split
    Bonjour à tous,

    J'essaie de splitter cette ligne : L=[tta,ttg,ctt,ctc,cta,ctg].

    afin d'obtenir : L=["tta","ttg","ctt","ctc","cta","ctg"].

    J'ai essayé avec le commande suivante : matchnt=re.split("[,]",ligne).

    et me donne le résultat suivant : ['L=[tta', 'ttg', 'ctt', 'ctc', 'cta', 'ctg]'].

    Pouvez-vous m'aider svp ?

    Merci

  2. #2
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> s = 'L=[tta,ttg,ctt,ctc,cta,ctg]'
    >>> locals()[s[:s.find('=')]] = [n.strip() for n in s[s.find('[')+1:-1].split(',')]
    >>> L
    ['tta', 'ttg', 'ctt', 'ctc', 'cta', 'ctg']
    Maintenant pourquoi as-tu ce genre de valeur stockée comme chaîne de caractères ? Car ce n'est pas vraiment une bonne solution de stocker des valeurs ainsi.
    Le temps ronge l'amour comme l'acide.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Merci pour votre réponse rapide !

    Je suis étudiant en Bioinformatique et on me demande de créer un algorithme afin de vérifier que l'étape de traduction des nucléotides en chaîne d'acides aminés s'est déroulée avec succès.

    Pour ce faire, je me suis crée un fichier texte avec le code génétique qui se présente sous cette forme :

    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
    F=[ttt,ttc]
    S=[tct,tcc,tca,tcg,agt,agc]
    Y=[tat,tac]
    C=[tgt,tgc]
    L=[tta,ttg,ctt,ctc,cta,ctg]
    *=[taa,tga,tag]
    W=[tgg]
    P=[cct,ccc,cca,ccg]
    H=[cat,cac]
    R=[cgt,cgc,cga,cgg,aga,agg]
    Q=[caa,cag]
    I=[att,atc,ata]
    T=[act,acc,aca,acg]
    N=[aat,aac]
    K=[aaa,aag]
    M=[atg]
    V=[gtt,gtc,gta,gtg]
    A=[gct,gcc,gca,gcg]
    D=[gat,gac]
    G=[ggt,ggc,gga,ggg]
    E=[gaa,gag]
    Je voulais donc créer un dictionnaire avec pour clé l'acide aminé (la lettre majuscule) et en valeur le ou les codons correspondants (les trois lettres minuscules).

    Je ne sais pas si mes explications sont très claires ^^

  4. #4
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    En effet, le format choisi n'est pas le meilleur, il n'y a pas trop d'intérêts à utiliser des crochets.

    S=tct,tcc,tca,tcg,agt,agc
    Serait beaucoup plus simple et ne gènerait pas la lisibilité.
    Et puis oui, mieux vaudrait mettre tes valeurs dans un dictionnaire plutôt que de faire X variables distinctes.

    Sinon il y a d'autres formats de fichiers standards comme le csv, xml, json, le csv étant le plus simple, le json quant à lui gère les listes. Bon ce sera beaucoup moins lisible que des valeurs inlines, c'est sûr
    Le temps ronge l'amour comme l'acide.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Je vais essayer de modifier mon programme pour arranger ça alors

    Une dernière question que je me pose; j'ai une séquence nucléotidique (par exemple : atcgtaccatgccatccg) et je cherche à diviser cette chaine de caractère par lettres de 3 pour pouvoir faire un nouveau dictionnaire avec des codons et l'acide aminé que la traduction à produit (je vais par la suite comparer mon dictionnaire "code génétique" avec ce nouveau dictionnaire) Je cherche donc à obtenir "atc","gta","cca","tgc","cat" et "ccg".

    Une idée ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Tu fais un for qui t'apprends les mots dans une liste avec un pas de 3 et ensuite tu utilises les slices sur les chaines de caractère.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Bonjour à tous, je fais face à un nouveau problème...

    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with open ("sequencetest.txt" , "r") as f2:
    	for lignes in f2:
    		lignes=lignes.rstrip("\n")
    		matchprot=re.search("(^[A-Z]+)",lignes) #Regex pour isoler notre séquence protéique
    		matchnucl=re.search("(^[a-z]+)",lignes) #Regex pour isoler notre séquence nucléique
    		if matchprot:
    			seqprot=matchprot.group(1) #On a isolé la séquence protéique
    			acidesamines = re.findall('.{1}', seqprot) #On divise notre séquence protéique lettre par lettre pour garder les acides aminés.
    		if matchnucl:
    			seqnucl=matchnucl.group(1) #On a isolé la séquence nucléique
    			codons = re.findall('.{1,3}', seqnucl) #On divise notre séquence nucléotidique par lettres de 3 (codons).	
    		dSequencedetude[acidesamines] = codons
     
    print (dSequencedetude)

    Or lorsque je lance mon programme, le terminal m'indique que "codons" et "acidesamines" ne sont pas définis. Pourtant quand je les prints ils me ressortent bien ce que je veux....

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Amniote Voir le message
    Bonjour à tous
    Bonjour à toi
    Citation Envoyé par Amniote Voir le message
    je fais face à un nouveau problème...
    Alors nouveau topic. Déjà c'est plus simple pour tout le monde et en plus ça attire plus de monde (certains, voyant le nombre de réponses de ce topic, pourraient hésiter à y entrer pensant que tout a déjà été dit).

    Citation Envoyé par Amniote Voir le message
    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with open ("sequencetest.txt" , "r") as f2:
    	for lignes in f2:
    		lignes=lignes.rstrip("\n")
    		matchprot=re.search("(^[A-Z]+)",lignes) #Regex pour isoler notre séquence protéique
    		matchnucl=re.search("(^[a-z]+)",lignes) #Regex pour isoler notre séquence nucléique
    		if matchprot:
    			seqprot=matchprot.group(1) #On a isolé la séquence protéique
    			acidesamines = re.findall('.{1}', seqprot) #On divise notre séquence protéique lettre par lettre pour garder les acides aminés.
    		if matchnucl:
    			seqnucl=matchnucl.group(1) #On a isolé la séquence nucléique
    			codons = re.findall('.{1,3}', seqnucl) #On divise notre séquence nucléotidique par lettres de 3 (codons).	
    		dSequencedetude[acidesamines] = codons
     
    print (dSequencedetude)
    Or lorsque je lance mon programme, le terminal m'indique que "codons" et "acidesamines" ne sont pas définis. Pourtant quand je les prints ils me ressortent bien ce que je veux....
    "codons" n'est défini que si le code passe dans le "if". S'il n'y passe pas, alors "codons" n'est pas défini. Idem pour "acidesamines"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. question fonction split
    Par fessebleu dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2006, 02h33
  2. Réponses: 5
    Dernier message: 13/10/2005, 12h46
  3. [String] fonction split
    Par tck-lt dans le forum Langage
    Réponses: 2
    Dernier message: 19/07/2005, 17h45
  4. procedure stockée et fonction "split"
    Par wehtam dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/07/2005, 16h21
  5. [Fortran 90] Fonction Split()
    Par gchazelle dans le forum Fortran
    Réponses: 2
    Dernier message: 02/03/2005, 10h16

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