@@ -743,30 +743,38 @@ def update_bed(expanded_scaffold):
743
743
s_right = 0
744
744
if len (path ) == 2 :
745
745
contig = path [0 ].split (':' )[0 ]
746
- scaffold_re [key ] = re_counts [contig ]
746
+ ori = path [0 ].split (':' )[1 ]
747
+ left ,right = re_counts [contig ]
748
+ if ori == 'B' :
749
+ scaffold_re [key ] = (left ,right )
750
+ else :
751
+ scaffold_re [key ] = (right ,left )
747
752
else :
753
+ midpoint = length / 2
748
754
for i in xrange (0 ,len (path ),2 ):
749
755
contig = path [i ].split (':' )[0 ]
750
756
contig2scaffold [contig ] = key
751
757
left ,right = re_counts [contig ]
752
- midpoint = length / 2
753
758
curr_contig_start = contig2info [contig ][0 ]
754
759
curr_contig_end = contig2info [contig ][1 ]
755
- curr_contig_ori = contig2info [contig ][2 ]
760
+ # curr_contig_ori = contig2info[contig][2]
756
761
#print contig
757
762
#print curr_contig_start
758
763
#print curr_contig_end
759
764
#print curr_contig_ori
760
- if curr_contig_end <= midpoint :
765
+ if curr_contig_end < midpoint :
761
766
s_left += (left + right )
762
- if curr_contig_start >= midpoint :
767
+ if curr_contig_start > midpoint :
763
768
s_right += (left + right )
764
769
765
770
if curr_contig_start <= midpoint and curr_contig_end >= midpoint :
766
771
left_part = midpoint - curr_contig_start
767
772
right_part = curr_contig_end - midpoint
768
773
#print "Left part = " + str(left_part)
769
774
#print "Right part = " + str(right_part)
775
+ s_left += float (left + right )/ contig_length [contig ]* left_part
776
+ s_right += float (left + right )/ contig_length [contig ]* right_part
777
+ '''
770
778
if curr_contig_ori == "FOW":
771
779
s_left += (left+right)*left_part/contig_length[contig]
772
780
s_right += (left+right)*right_part/contig_length[contig]
@@ -777,6 +785,7 @@ def update_bed(expanded_scaffold):
777
785
s_right += (right+left)*left_part/contig_length[contig]
778
786
#print "Right RE = " + str(left_part/contig_length[contig])
779
787
#print "Left RE = " + str(right*right_part/contig_length[contig])
788
+ '''
780
789
781
790
'''
782
791
if offset <= length/2 and i+2 < len(path):
@@ -802,7 +811,7 @@ def update_bed(expanded_scaffold):
802
811
#scaffold_length[key] += contig_length[contig]
803
812
'''
804
813
#print key+"\t"+str(s_left)+"\t"+str(s_right)
805
- scaffold_re [key ] = (s_left , s_right )
814
+ scaffold_re [key ] = (int ( s_left ), int ( s_right ) )
806
815
#print "=============================="
807
816
808
817
o_lines = ""
@@ -835,16 +844,24 @@ def update_bed(expanded_scaffold):
835
844
prev_info = contig2info [prev_contig ]
836
845
prev_start = int (prev_attrs [1 ])
837
846
prev_end = int (prev_attrs [2 ])
838
- new_prev_start = prev_start + prev_info [0 ]
839
- new_prev_end = prev_end + prev_info [0 ]
847
+ if prev_info [2 ] == 'FOW' :
848
+ new_prev_start = prev_info [0 ] + prev_start
849
+ new_prev_end = prev_info [0 ] + prev_end
850
+ else :
851
+ new_prev_start = prev_info [0 ] + contig_length [prev_contig ] - prev_end
852
+ new_prev_end = prev_info [0 ] + contig_length [prev_contig ] - prev_start
840
853
o_lines += prev_scaffold + '\t ' + str (new_prev_start )+ '\t ' + str (new_prev_end )+ '\t ' + prev_attrs [3 ]+ '\n '
841
854
count += 1
842
855
843
856
curr_info = contig2info [curr_contig ]
844
857
curr_start = int (curr_attrs [1 ])
845
858
curr_end = int (curr_attrs [2 ])
846
- new_curr_start = curr_start + curr_info [0 ]
847
- new_curr_end = curr_end + curr_info [0 ]
859
+ if curr_info [2 ] == 'FOW' :
860
+ new_curr_start = curr_info [0 ] + curr_start
861
+ new_curr_end = curr_info [0 ] + curr_end
862
+ else :
863
+ new_curr_start = curr_info [0 ] + contig_length [curr_contig ] - curr_end
864
+ new_curr_end = curr_info [0 ] + contig_length [curr_contig ] - curr_start
848
865
o_lines += curr_scaffold + '\t ' + str (new_curr_start )+ '\t ' + str (new_curr_end )+ '\t ' + curr_attrs [3 ]+ '\n '
849
866
count += 1
850
867
if count == 1000000 :
0 commit comments