Module: RecoverMid

Defined in:
lib/seqtrimnext/utils/recover_mid.rb

Instance Method Summary collapse

Instance Method Details

#recover_mid(hit, db_mid, seq) ⇒ Object

receives hit of mid from blast, complete db_mid from DB and SEQ_fasta



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/seqtrimnext/utils/recover_mid.rb', line 4

def recover_mid(hit, db_mid, seq)
 
   mid_in_seq = seq[hit.q_beg..hit.q_end]  
   mid_in_mid = db_mid[hit.s_beg..hit.s_end]

	if hit.s_beg==0 # look right parts

		mid_part=db_mid[hit.s_end+1..db_mid.length]
 	  seq_part=seq[hit.q_end+1,mid_part.length+1]
 	  
 	  common=mid_part.lcs(seq_part)
 	  
 	  
 	  in_seq_pos=seq_part.index(common)
		  
       # puts "seq right part: #{seq_part}, mid right part #{mid_part} => Match: #{common}"
	
 	  if in_seq_pos>1 #

         # puts "NO VALE, comienza en #{in_seq_pos}"
 	    in_seq_pos=0
	 	  	common=''
	 	end

		new_q_beg=hit.q_beg
		new_q_end=hit.q_end+in_seq_pos+common.length
		recovered_mid=seq[new_q_beg..new_q_end]

		recovered_size=hit.q_end-hit.q_beg+1+common.length

	
	else hit.s_end == db_mid.length-1#look left parts
		mid_part=db_mid[0..hit.s_beg-1]
 	  seq_part=seq[hit.q_beg-mid_part.length-1..hit.q_beg-1]
 	  
 	  common=mid_part.lcs(seq_part)
 	  
 	  in_seq_pos=hit.q_beg-mid_part.length-1+seq_part.index(common)
		  
       # puts "seq left part: #{seq_part}, mid right part #{mid_part} => Match: #{common} at #{in_seq_pos}"
	
 	  if in_seq_pos+common.length<hit.q_beg-1 
         # puts "NO VALE, comienza en #{in_seq_pos+common.length} < #{hit.q_beg}"
 	    in_seq_pos=hit.q_beg
	 	  	common=''
	 	end

		new_q_beg=in_seq_pos
		new_q_end=hit.q_end
		recovered_mid=seq[new_q_beg..new_q_end]

		recovered_size=hit.q_end-hit.q_beg+1+common.length

	end
	
	return [new_q_beg, new_q_end, recovered_size,recovered_mid]

end