Skip to content
Snippets Groups Projects
Commit e0729de8 authored by nina.marthe_ird.fr's avatar nina.marthe_ird.fr
Browse files

ajouté la détection des codons stop

parent a545e4ba
No related branches found
No related tags found
No related merge requests found
...@@ -266,8 +266,10 @@ def findOtherStart(cds,segments_on_target_genome): ...@@ -266,8 +266,10 @@ def findOtherStart(cds,segments_on_target_genome):
# ajouter la vérification qu'on introduit/delete pas un codon stop # ajouter la vérification qu'on introduit/delete pas un codon stop
def print_variation_change(deleted_sequence,inserted_sequence): def print_variation_change(deleted_sequence,inserted_sequence):
stop=False
deleted_aa=traduction(get_rna(deleted_sequence)) deleted_aa=traduction(get_rna(deleted_sequence))
inserted_aa=traduction(get_rna(inserted_sequence)) inserted_aa=traduction(get_rna(inserted_sequence))
if (len(deleted_aa)!=0) & (len(inserted_aa)!=0): if (len(deleted_aa)!=0) & (len(inserted_aa)!=0):
if deleted_aa!=inserted_aa: if deleted_aa!=inserted_aa:
print("conséquence : changement de",",".join(deleted_aa),"en",",".join(inserted_aa)) print("conséquence : changement de",",".join(deleted_aa),"en",",".join(inserted_aa))
...@@ -277,6 +279,10 @@ def print_variation_change(deleted_sequence,inserted_sequence): ...@@ -277,6 +279,10 @@ def print_variation_change(deleted_sequence,inserted_sequence):
print("conséquence : insertion de",",".join(inserted_aa)) print("conséquence : insertion de",",".join(inserted_aa))
else: else:
print("conséquence : deletion de",",".join(deleted_aa)) print("conséquence : deletion de",",".join(deleted_aa))
if ("*" in inserted_aa):
print("apparition d'un codon stop dans le cds du génome cible")
stop=True
return stop
version="new" version="new"
...@@ -286,7 +292,7 @@ for feature in Features.values(): ...@@ -286,7 +292,7 @@ for feature in Features.values():
for cds_id in cds_var.keys(): for cds_id in cds_var.keys():
cds=Features[cds_id] cds=Features[cds_id]
print("analyse des variations dans le cds",cds_id) print("analyse des variations dans le cds",cds_id,"\n")
frame_shift=0 frame_shift=0
#for var in cds_var[cds_id]: #for var in cds_var[cds_id]:
for index, var in enumerate(cds_var[cds_id]): for index, var in enumerate(cds_var[cds_id]):
...@@ -320,7 +326,9 @@ for cds_id in cds_var.keys(): ...@@ -320,7 +326,9 @@ for cds_id in cds_var.keys():
len_fragment_after=(3-length_ref)%3 len_fragment_after=(3-length_ref)%3
deleted_sequence=cds.sequence[posVar[0]:posVar[0]+length_ref+len_fragment_after] deleted_sequence=cds.sequence[posVar[0]:posVar[0]+length_ref+len_fragment_after]
inserted_sequence=sequence_target[posVar[1]:posVar[1]+length_alt+len_fragment_after] inserted_sequence=sequence_target[posVar[1]:posVar[1]+length_alt+len_fragment_after]
print_variation_change(deleted_sequence,inserted_sequence) stop=print_variation_change(deleted_sequence,inserted_sequence)
if stop:
break
else: # taille diff 3k, position !=3k else: # taille diff 3k, position !=3k
print("variation au milieu d'un codon sans décalage du cadre de lecture") print("variation au milieu d'un codon sans décalage du cadre de lecture")
...@@ -337,7 +345,9 @@ for cds_id in cds_var.keys(): ...@@ -337,7 +345,9 @@ for cds_id in cds_var.keys():
total_ins=sequence_target[posVar[1]-len_fragment_before:posVar[1]+length_alt+len_fragment_after] total_ins=sequence_target[posVar[1]-len_fragment_before:posVar[1]+length_alt+len_fragment_after]
total_del=cds.sequence[posVar[0]-len_fragment_before:posVar[0]+length_ref+len_fragment_after] total_del=cds.sequence[posVar[0]-len_fragment_before:posVar[0]+length_ref+len_fragment_after]
print_variation_change(total_del,total_ins) stop=print_variation_change(total_del,total_ins)
if stop:
break
# possibilité que j'ai print en compte une variation de trop, si on a un snp sur la premiere et la derniere base d'un codon : # possibilité que j'ai print en compte une variation de trop, si on a un snp sur la premiere et la derniere base d'un codon :
# pour le traitement de la première j'ai également considéré la dernière ! # pour le traitement de la première j'ai également considéré la dernière !
...@@ -366,8 +376,10 @@ for cds_id in cds_var.keys(): ...@@ -366,8 +376,10 @@ for cds_id in cds_var.keys():
len_fragment_after_ins=(3-(len_fragment_before_ins+length_alt))%3 len_fragment_after_ins=(3-(len_fragment_before_ins+length_alt))%3
total_ins=sequence_target[posVar[1]-len_fragment_before_ins:posVar[1]+length_alt+len_fragment_after_ins] total_ins=sequence_target[posVar[1]-len_fragment_before_ins:posVar[1]+length_alt+len_fragment_after_ins]
total_del=cds.sequence[posVar[0]-len_fragment_before_del:posVar[0]+length_ref+len_fragment_after_del] total_del=cds.sequence[posVar[0]-len_fragment_before_del:posVar[0]+length_ref+len_fragment_after_del]
print_variation_change(total_del,total_ins) stop=print_variation_change(total_del,total_ins)
print("rétablissement du cadre de lecture originel") print("rétablissement du cadre de lecture originel")
if stop:
break
else: else:
# print changes from local to next var # print changes from local to next var
...@@ -377,7 +389,9 @@ for cds_id in cds_var.keys(): ...@@ -377,7 +389,9 @@ for cds_id in cds_var.keys():
if index==len(cds_var[cds_id])-1: # on est sur la dernière variation. traduire jusqu'à la fin du cds if index==len(cds_var[cds_id])-1: # on est sur la dernière variation. traduire jusqu'à la fin du cds
total_total_del=cds.sequence[posVar[0]-len_fragment_before_del:] total_total_del=cds.sequence[posVar[0]-len_fragment_before_del:]
total_total_ins=sequence_target[posVar[1]-len_fragment_before_ins:] total_total_ins=sequence_target[posVar[1]-len_fragment_before_ins:]
print_variation_change(total_total_del,total_total_ins) stop=print_variation_change(total_total_del,total_total_ins)
if stop:
break
else: else:
nextVar=cds_var[cds_id][index+1] nextVar=cds_var[cds_id][index+1]
posNextVar=[int(nextVar[12]),int(nextVar[13])] posNextVar=[int(nextVar[12]),int(nextVar[13])]
...@@ -395,7 +409,9 @@ for cds_id in cds_var.keys(): ...@@ -395,7 +409,9 @@ for cds_id in cds_var.keys():
len_fragment_before_ins_nextvar=(posNextVar[1])%3 len_fragment_before_ins_nextvar=(posNextVar[1])%3
total_total_del=cds.sequence[posVar[0]-len_fragment_before_del:posNextVar[0]-len_fragment_before_del_nextvar] total_total_del=cds.sequence[posVar[0]-len_fragment_before_del:posNextVar[0]-len_fragment_before_del_nextvar]
total_total_ins=sequence_target[posVar[1]-len_fragment_before_ins:posNextVar[1]-len_fragment_before_ins_nextvar] total_total_ins=sequence_target[posVar[1]-len_fragment_before_ins:posNextVar[1]-len_fragment_before_ins_nextvar]
print_variation_change(total_total_del,total_total_ins) stop=print_variation_change(total_total_del,total_total_ins)
if stop:
break
...@@ -405,7 +421,7 @@ for cds_id in cds_var.keys(): ...@@ -405,7 +421,7 @@ for cds_id in cds_var.keys():
if posVar[0]<=3: # pour l'instant on cherche pas d'autre start. if posVar[0]<=3: # pour l'instant on cherche pas d'autre start.
print("codon start touché donc gène non fonctionnel") print("codon start touché, gène non fonctionnel")
#findOtherStart(cds,segments_on_target_genome) #findOtherStart(cds,segments_on_target_genome)
break break
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment