lib/seqtrimnext/plugins/plugin_ab_adapters.rb in seqtrimnext-2.0.33 vs lib/seqtrimnext/plugins/plugin_ab_adapters.rb in seqtrimnext-2.0.35
- old
+ new
@@ -41,10 +41,22 @@
# puts blast_table_results.inspect
return blast_table_results
end
+ # filter hits that are far the extreme and do not have a valid length
+ def filter_hits(hits,end_pos)
+ hits.reverse_each do |hit|
+ if (hit.q_end < (end_pos-40)) && ((hit.q_end-hit.q_beg+1)<(@params.get_ab_adapter(hit.subject_id).length*0.80).to_i)
+ hits.delete(hit)
+ # puts "DELETE #{hit.inspect}"
+ # else
+ # puts "ACCEPTED #{hit.inspect}, >= #{(@params.get_ab_adapter(hit.subject_id).length*0.2).to_i}"
+ end
+ end
+
+ end
def exec_seq(seq,blast_query)
if blast_query.query_id != seq.seq_name
raise "Blast and seq names does not match, blast:#{blast_query.query_id} sn:#{seq.seq_name}"
end
@@ -60,12 +72,14 @@
#---------------------------------------------------------------------
# blast_table_results = blast.do_blast(seq.seq_fasta) #rise seq to adapterss executing over blast
#BlastTableResult.new(res)
- # puts blast.get_blast_cmd
+ # puts blast_query.inspect
# puts blast_table_results.inspect
+
+ filter_hits(blast_query.hits, seq.seq_fasta.length)
adapters=[]
# blast_table_results.querys.each do |query| # first round to save adapters without overlap
merge_hits(blast_query.hits,adapters)
# end
@@ -74,9 +88,13 @@
adapters2=adapters # second round to save adapters without overlap
adapters = []
merge_hits(adapters2,adapters)
end until (adapters2.count == adapters.count)
+ # puts "MERGED"
+ # puts "="*50
+ # adapters.each {|a| puts a.inspect}
+
max_to_end=@params.get_param('max_ab_to_end').to_i
# type = 'ActionAbAdapter'
actions=[]
adapter_size=0