POO: fonction de retour, liste et AttributeError
Bonjour à tous,
Je poursuis mon apprentissage de la programmation en python. J'ai abordé la POO. Je suis en train d'écrire un programme dont le but est d'ouvrir et analyser un fichier fasta avec diverses méthodes.
Voici mon code:
Code:
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
|
import os, sys
pyScriptName = sys.argv[0]
RNASequence = sys.argv[1]
#outputProtein = sys.argv[2]
# Dictionnaire codon
Codon = {
"AUG": "Methionine",
"UUU": "Phenylalanine",
"UUC": "Phynylalanine",
"UUA": "Leucine",
"UUG": "Leucine",
"UCU": "Serine",
"UCC": "Serine",
"UCA": "Serine",
"UCG": "Serine",
"UAU": "Tyrosine",
"UAC": "Tyrosine",
"UGU": "Cysteine",
"UGC": "Cysteine",
"UGG": "Tryptophan",
"UAA": "STOP",
"UAG": "STOP",
"UGA": "STOP"
}
fasta_dict = {}
class Fasta():
"""Classe pour manipuler des fichiers fasta."""
def __init__(self, RNASequence):
self.RNASequence = RNASequence
def openFasta(self):
"""ouvre un fichier fasta, stocke l'id et la séquence dans un dictionnaire."""
with open(RNASequence, "r") as fasta_file:
sequence_id = ""
for line in fasta_file:
if line.startswith(">"):
sequence_id = line.strip()
fasta_dict[sequence_id] = ""
else:
fasta_dict[sequence_id] += line.strip()
return(fasta_dict)
def sequence(self):
"""Récuperer la sequence"""
seq_list = []
for seque in fasta_dict:
seq_list.append(fasta_dict[seque])
return(seq_list)
def RNAtoProteins(self):
"""Traduire la sequence ARN en protéine."""
for sequen in seq_list:
print(sequen)
protein = []
for i in range(0, len(sequen), 3):
aa = Codon[sequen[i:i+3]]
protein.append(aa)
if aa == "STOP":
break
return(protein)
if __name__ == "__main__":
test_file = Fasta(RNASequence)
my_file = test_file.openFasta()
print("Voici le resultat")
print(my_file)
result2 = test_file.sequence()
print("Resultat de .sequence")
print(result2)
proteinefromRNA = result2.RNAtoProteins()
print(proteinefromRNA) |
Lorsque, j'exécute le code avec les séquences dans un fichier fasta (voir ci-dessous), j'obtiens le message d'erreur suivant:
Code:
AttributeError: 'list' object has no attribute 'RNAtoProteins'
Si j'ai bien compris, cette erreur me dit que l'assignation de l'attribut ne fonctionne pas. Que faire pour corriger cela ?
Merci pour votre aide.
A bientôt !
Code:
1 2 3 4 5 6 7 8 9
|
>Sequence 1
AUGUUUUCUUAAAUG
>Sequence 2
AUGUUUUCUAAAAUGCUUAUAGCAGCUAAU
>Sequence 3
AUGUUUUCUUAAAUUAUGCCCGUAA |