Module: RecoverMid
- Defined in:
- lib/seqtrimnext/utils/recover_mid.rb
Instance Method Summary collapse
-
#recover_mid(hit, db_mid, seq) ⇒ Object
receives hit of mid from blast, complete db_mid from DB and SEQ_fasta.
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 |