@@ -33,7 +33,7 @@ def __init__(self, region_name, ncoords=None, nt_seq=None, pcoords=None, aa_seq=
3333 self .nt_seq = nt_seq
3434 self .pcoords = pcoords
3535 self .aa_seq = aa_seq
36- self .rel_pos = {'CDS' : [], 'gstart' : [], 'qstart' : [], 'rstart' : [], ' pstart' : []}
36+ self .rel_pos = {'CDS' : [], 'gstart' : [], 'qstart' : [], 'pstart' : []}
3737 self .codon_aln = ''
3838
3939 def get_coords (self , base ):
@@ -106,18 +106,20 @@ def set_pos_from_pstart(self, virus):
106106 else :
107107 self .rel_pos ['pstart' ] = None
108108
109- def set_pos_from_rstart (self , region ):
110- start_offset = self .ncoords [0 ] - region .ncoords [0 ]
111- end_offset = self .ncoords [1 ] - region .ncoords [1 ]
112- self .rel_pos ['rstart' ] = [end_offset , start_offset ]
113-
114109 def set_pos_from_qstart (self , query , base ):
115- if self .ncoords is None or self .pcoords is None :
116- self .set_coords (self .get_coords (base ), base )
117-
118- start_offset = self .ncoords [0 ] - query .ncoords [0 ]
119- end_offset = self .ncoords [1 ] - query .ncoords [1 ]
120- self .rel_pos ['qstart' ] = [end_offset , start_offset ]
110+ """
111+ Gives the position of the sequence relative to the start of the region of interest
112+ :param query: The GenomeRegion objects for the query
113+ :param base: The base of the sequence (nucleotide or protein)
114+ :return: The position relative to the start of the region of interest
115+ """
116+ r_coords = self .get_coords (base )
117+ r_seq = self .get_sequence (base )
118+ if r_coords is not None and r_seq is not None :
119+ q_coords = query .get_coords (base )
120+ start_offset = r_coords [0 ] - q_coords [0 ] + 1
121+ end_offset = start_offset + len (r_seq )
122+ self .rel_pos ['qstart' ] = [start_offset , end_offset ]
121123
122124 def make_codon_aln (self ):
123125 """
@@ -495,7 +497,6 @@ def find_matches(virus, base, ref_regions, match_coordinates):
495497 query_region .set_pos_from_cds (virus )
496498 query_region .set_pos_from_gstart ()
497499 query_region .set_pos_from_qstart (ref_region , base )
498- query_region .set_pos_from_rstart (ref_region )
499500 query_region .set_pos_from_pstart (virus )
500501
501502 if base == 'nucl' :
@@ -587,10 +588,6 @@ def output_retrieved_region(region, outfile=None):
587588 print ("\t \t Position relative to query start:\t {} --> {}"
588589 .format (region .rel_pos ['qstart' ][0 ], region .rel_pos ['qstart' ][1 ]))
589590
590- if region .rel_pos ['rstart' ]:
591- print ("\t \t Position relative to region start:\t {} --> {}\n "
592- .format (region .rel_pos ['rstart' ][0 ], region .rel_pos ['rstart' ][1 ]))
593-
594591 else :
595592 outfile .write ("\n Retrieved Region:\t {}" .format (region .region_name ))
596593 outfile .write ("\t Nucleotide Sequence:\n " )
@@ -624,10 +621,6 @@ def output_retrieved_region(region, outfile=None):
624621 outfile .write ("\t \t Position relative to query start:\t {} --> {}"
625622 .format (region .rel_pos ['qstart' ][0 ], region .rel_pos ['qstart' ][1 ]))
626623
627- if region .rel_pos ['rstart' ]:
628- outfile .write ("\t \t Position relative to region start:\t {} --> {}\n "
629- .format (region .rel_pos ['rstart' ][0 ], region .rel_pos ['rstart' ][1 ]))
630-
631624
632625def output_overlap (overlap_regions , outfile = None ):
633626 """
@@ -676,10 +669,6 @@ def output_overlap(overlap_regions, outfile=None):
676669 print ("\t \t Position relative to query start:\t {} --> {}"
677670 .format (region .rel_pos ['qstart' ][0 ], region .rel_pos ['qstart' ][1 ]))
678671
679- if region .rel_pos ['rstart' ]:
680- print ("\t \t Position relative to region start:\t {} --> {}\n "
681- .format (region .rel_pos ['rstart' ][0 ], region .rel_pos ['rstart' ][1 ]))
682-
683672 else :
684673 for key in overlap_regions :
685674 region = overlap_regions [key ]
@@ -718,10 +707,6 @@ def output_overlap(overlap_regions, outfile=None):
718707 outfile .write ("\t \t Position relative to query start:\t {} --> {}"
719708 .format (region .rel_pos ['qstart' ][0 ], region .rel_pos ['qstart' ][1 ]))
720709
721- if region .rel_pos ['rstart' ]:
722- outfile .write ("\t \t Position relative to region start:\t {} --> {}\n "
723- .format (region .rel_pos ['rstart' ][0 ], region .rel_pos ['rstart' ][1 ]))
724-
725710
726711def retrieve (virus , base , ref_regions , region , qstart = 1 , qend = 'end' ):
727712 """
0 commit comments