From 9b956e3966b82b733077387701ce4b358295337a Mon Sep 17 00:00:00 2001
From: NMarthe <nina.marthe@ird.fr>
Date: Tue, 7 Nov 2023 11:36:11 +0100
Subject: [PATCH] =?UTF-8?q?corrig=C3=A9=20la=20position=20des=20d=C3=A9l?=
 =?UTF-8?q?=C3=A9tions=20qui=20fonctionnait=20pas=20quand=20on=20deletait?=
 =?UTF-8?q?=20le=20premier=20segment?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Functions.py        | 15 +++++++++------
 Functions_output.py |  2 +-
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/Functions.py b/Functions.py
index b47b6f9..be2508f 100644
--- a/Functions.py
+++ b/Functions.py
@@ -342,6 +342,7 @@ def reset_var(variation):
     variation.type='' # type énuméré.
     variation.size_var=0
     variation.start_var=''
+    variation.start_var_index=0
     variation.ref=''
     variation.alt=''
 
@@ -359,27 +360,29 @@ def get_old_new_pos_insertion(variation,feat_start,list_segfeat_azu,feat):
     pos_new=str(start_var-start_feat+1)
     return [pos_old,pos_new] # pos_old is the base right after the insertion. pos_new is the base after the first inserted base.
 
-def get_old_new_pos_deletion(variation,feat_start,list_segfeat_azu,feat,i):
+def get_old_new_pos_deletion(variation,feat_start,list_segfeat_azu,feat):
+    i=variation.start_var_index
     if i==0:
-        pos_old=int(Segments[variation.start_var].start)-int(feat_start)+Features[feat].pos_start+1
+        pos_old=int(Segments[variation.start_var].start)-int(feat_start)+Features[feat].pos_start-1
     else:
         pos_old=int(Segments[variation.start_var].start)-int(feat_start)+1
-        if pos_old<1:
-            pos_old=1
+        if pos_old<0:
+            pos_old=0
 
     if variation.last_seg_in_target=="": # deletion of the beggining of the feature, so no segment placed in the new genome yet. 
-        pos_new=1
+        pos_new=0
     else:
         start_feat=get_feature_start_on_genome(list_segfeat_azu[0][1:],feat) 
         start_var=int(segments_on_target_genome[variation.last_seg_in_target][2])+1 
         pos_new=str(start_var-start_feat+1)
-    return [pos_old,pos_new] # pos_old is the first base deleted. pos_new is the base right after the deletion
+    return [pos_old,pos_new] # pos_old and pos_new are the bases right before the deletion
 
 
 
 def init_new_var(variation,type,list_segfeat_nb,list_segfeat_azu,i,j,seg_seq,feature):
     variation.type=type
     variation.start_var=list_segfeat_nb[i][1:]
+    variation.start_var_index=i
     if type=="substitution":
         variation.start_on_target=list_segfeat_azu[j][1:]
         variation.ref=get_segment_sequence(seg_seq,list_segfeat_nb[i])
diff --git a/Functions_output.py b/Functions_output.py
index c035e5d..8469584 100644
--- a/Functions_output.py
+++ b/Functions_output.py
@@ -250,7 +250,7 @@ def print_current_var(variation,feat_start,list_segfeat_azu,feat,i):
         line=f'{variation.feature_id}\t{variation.feature_type}\t{variation.chr}\t{variation.start_new}\t{variation.stop_new}\t{variation.size_new}\t{variation.inversion}\t{variation.size_diff}\tinsertion\t-\t{variation.alt}\t{len(variation.alt)}\t{pos_old}\t{pos_new}{warning}\n'
         write_line(line,output_variations,False)
     elif variation.type=='deletion':
-        [pos_old,pos_new]=get_old_new_pos_deletion(variation,feat_start,list_segfeat_azu,feat,i)
+        [pos_old,pos_new]=get_old_new_pos_deletion(variation,feat_start,list_segfeat_azu,feat)
         line=f'{variation.feature_id}\t{variation.feature_type}\t{variation.chr}\t{variation.start_new}\t{variation.stop_new}\t{variation.size_new}\t{variation.inversion}\t{variation.size_diff}\tdeletion\t{variation.ref}\t-\t{len(variation.ref)}\t{pos_old}\t{pos_new}{warning}\n'
         write_line(line,output_variations,False)
     elif variation.type=='substitution':
-- 
GitLab