Archive

Subtilis

trx337

from samples import subtilis
print(“subtilis contient {} bases”.format(len(subtilis)))

avec idle j’ai cherché à importer la séquence de subtilis à l’aide du site ebi puis fetch mais dans ebi je n’ai rien trouvé si ce n’est que subtilis est un bacille et qu’il est sous la forme ARN , or on travaille ici sous forme ADN et d’autre part la séquence semble très longue et risque de mettre du temps à s’afficher .
Ai je bien tout compris ?

trx337

suite : votre code fonctionne bien dans idle
par contre la partie optionelle ne fonctionne pas :
il ne comprends pas le pourcentage devant matplotlib


.

trx337

j’ai avancé d’un cran la ligne en question avec le pourcentage sont pour que les figures apparaissent dans le note book . Or moi je suis dans idle .donc j’ai supprimé cette ligne

et je suis arrivé à une nouvelle erreur :

[Traceback (most recent call last):
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\coding_regions_complet.py”, line 184, in
import matplotlib.pyplot as plt
ModuleNotFoundError: No module named ‘matplotlib’]

peut etre cet import est un de vos fichiers ?

trx337

je ne trouve pas les mêmes valeurs que vous quand j’éxécute mon programmeavec subtilis ; je voudrais savoir si vous avez pris le meme genome que moi que j’ai trouvé dans le site suivant :
subtilis

trx337

est ce que vous savez ce que veut dire cette erreur :
KeyError: ‘g’

trx337

vous écrivez ceci :
with open(“data/escherichia-coli-U00096”) as input:
e_coli = input.read()
print(“Escheria Coli a {} nucléotides”.format(len(e_coli)))

vous écrivez read()
mais on peut écrire par exemple
fichier.read()
je peux donc me dire que la séquence de Escheria Coli se trouve par exemple dans un fichier texte

car je viens de mettre ma séquence de subtilus (glou =" AATT etc" dans un fichier fichierGlou.txt
donc j’ai écris ceci :

import os
n=open(‘fichierGlou.txt’,‘r’)
glou = n.read()

mais ensuite il me fait une erreur comme ceci si je fais :

import reverse_complement
reverse1 = reverse_complement.truc(glou)
print("reverse1:  \n\n",reverse1)

avec ma fonction truc :

def truc (dna):
    """
    Calcule la séquence complémentaire (A->T, etc...) et
    inversée (les premiers sont les derniers)
    d'un brin d'ADN
    """
    # la liste des nucléotides complémentaires
    liste = [complement[nucleo] for nucleo in dna]
    # la même liste mais inversée
    liste.reverse()
    # il ne reste plus qu'à retransformer en chaine
    return "".join(liste)

et là rien ne va plus :

Traceback (most recent call last):
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\coding_regions_reverse_6_phasesComplet.py”, line 186, in
reverse1 = reverse_complement.truc(glou)
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\reverse_complement.py”, line 26, in truc
liste = [complement[nucleo] for nucleo in dna]
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\reverse_complement.py”, line 26, in
liste = [complement[nucleo] for nucleo in dna]
KeyError: ‘g’

Pourtant dans l’autre programme plus simple , tout ceci fonctionait donc je ne sais pas si vous m’avez suivi et moi je patauge

IsabellePoirier

Bonjour trx337,

mais on peut écrire par exemple
fichier.read()

C’est ce que fait le programme :wink:

    with open("data/escherichia-coli-U00096") as input:
        e_coli = input.read()

signifie que le programme va lire le fichier "data/escherichia-coli-U00096".
Dans le programme, l’objet fichier s’appelle input.

Si tu utilises n=open(‘fichierGlou.txt’,‘r’), il faudra penser à fermer le fichier à la fin de ton programme, avec n.close().
L’avantage d’utiliser with, c’est que cela sera fait automatiquement.

L’erreur KeyError: ‘g’ vient du fait que ton programme essaie de trouver la lettre ‘g’ dans ton dictionnaire complement. Il faut faire attention à la casse. ‘g’ et ‘G’ ne sont pas la même chose.

trx337

voilà donc je résous beaucoup de chose
vu que j’ai écris dans mon fichier : glou = "ATT etc "
le petit g vient de glou
et cela fait une erreur dans reverse alors que ça marchait pour le reste
si on écrit print(glou) il réponds
glou = "ATCTTTTTCG
TAAGTTGTGGATTGATTTCAC etc "

je me demande si dans le fichier il ne faut pas enlever ce glou = car quand il calcul il commence peut etre aussi par g or on veut que ça commence sur AGT ou C

n’est ce pas docteur?

IsabellePoirier

Effectivement, le fichier ne doit contenir que la chaîne de caractères.

trx337

avec les 3 apostrophes pour le fichier .py ?

IsabellePoirier

Non, sans apostrophes ni guillemets, juste la chaîne.

trx337

je ne m’en sortirai pas .

maintenant il dit :

Traceback (most recent call last):
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\coding_regions_reverse_6_phasesComplet.py”, line 189, in
reverse1 = truc(glou)
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\reverse_complement.py”, line 27, in truc
liste = [complement[nucleo] for nucleo in dna]
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\reverse_complement.py”, line 27, in
liste = [complement[nucleo] for nucleo in dna]
KeyError: ‘\n’

c’est surement là qu’intervient
glou.replace('\n','')

mais je l’ai mis à deux endroits différents et ça n’a pas marché

pour rappel mon script le voici

import os
n=open('fichierGlou.txt','r')
glou = n.read()
glou.replace('\n','')
print("glou")

est ce que ça , ce n’est pas mieux ?

glou=""
with open("fichierGlou.txt", "r") as genome1:
	for 1 in genome1: glou+=1
print(glou)

ou bien

glou=""
with open(“fichierGlou.txt”) as input:
glou = input.read()

IsabellePoirier

La méthode replace ne modifie pas la chaîne en place, mais retourne un nouvel objet.
Il faut donc écrire glou = glou.replace('\n', '')

print("glou") va afficher la chaîne de caractères glou et non le contenu de la variable glou.
Essaie avec print(glou) plutôt.

Et il n’est pas indispensable d’initialiser la variable glou à la chaîne vide avant de lui affecter le résultat de input.read()

trx337

oui merci je venais de le voir donc j’ai rajouté
dans le script reverse :

def truc (dna):
“”"
Calcule la séquence complémentaire (A->T, etc…) et
inversée (les premiers sont les derniers)
d’un brin d’ADN
“”"
dna = dna.replace(’\n’, ‘’)
# la liste des nucléotides complémentaires
liste = [complement[nucleo] for nucleo in dna]

et ça y est ça marche
maintenant ce que je ne comprends pas c’est que j’ai un résultat différent du votre alors que j’ai le meme nombre de bases au départ
j’avais pris mon genome ici
https://www.ncbi.nlm.nih.gov/nuccore/NC_000964.3?report=fasta

Sur genes_enSortie_de_fonction6 les 6 phases on a trouvé 3429 gènes
subtilis contient 4275828 bases
On a trouvé 330 gènes sur la phase 0
optionel
longueur moyenne des gènes 372.9818181818182
min = 300, max = 753
Pourcentage de région codante 0.028786003552996053

trx337

pour le script rbs j’ai d’abord un script qui fonctionne bien

puis j’ai mis toutes les fonctions dans un script
et je les ai appelées dans un autre script
et là il me dit ceci :

Traceback (most recent call last):
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\rbs_avec_Import.py”, line 78, in
algo_simple = coding_regions_one_phase(glou, phase)
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\rbs_definitions.py”, line 172, in coding_regions_one_phase
start = next_start_codon(dna, stop1)
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\rbs_definitions.py”, line 24, in next_start_codon
index = dna.find(start_codon, index)
NameError: name ‘start_codon’ is not defined

pour trouver l’erreur faut il penser que le problème vient de la ligne du haut ou celle du bas ?
car je ne vois pas ou peut se trouver l’erreur
avez vous assez d’éléments pour répondre ?

IsabellePoirier

La fonction next_start_codon fait appel à la variable start_codon.
Il faut donc penser à définir cette variable comme dans le notebook :
start_codon = "ATG"

trx337

super , vous avez trouvé , je l’avais effacé quand j’ai écrit mes definitions

maintenant je tombe toujours sur la division pas zero qui donne une erreur

je ne comprends pas pourquoi vous n’avez pas pris en compte ce phénomène dans vos scripts ?

ne pourrait on pas écrire
if nom_du_diviseur = 0:
continue

RESTART: C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\rbs_avec_Import.py
Escheria Coli glou a 3915 nucléotides
how_many 8
L’algorithme simple trouve 8 regions, taille moyenne = 432.00 sur la phase 0
how_many 0
Traceback (most recent call last):
File “C:\Users\genevieve\AppData\Local\Programs\Python\Python37\zbiologie\semaine3\rbs_avec_Import.py”, line 84, in
average_size = total_length / how_many
ZeroDivisionError: division by zero