class PluginLowComplexity

Public Class Methods

check_params(params) click to toggle source

Returns an array with the errors due to parameters are missing

# File lib/seqtrimnext/plugins/plugin_low_complexity.rb, line 88
def self.check_params(params)
  errors=[]

  #
  # comment='Minimum percent of T bases in poly_a to be accepted'
  # default_value = 80
  # params.check_param(errors,'poly_t_percent','Integer',default_value,comment)
  #

  return errors
end

Public Instance Methods

do_blasts(seqs) click to toggle source

do the dust masker instead of blast

# File lib/seqtrimnext/plugins/plugin_low_complexity.rb, line 17
def do_blasts(seqs)

   dust_masker=DustMasker.new()

   fastas=[]
   
   seqs.each do |seq|
    fastas.push ">"+seq.seq_name
    fastas.push seq.seq_fasta
   end
   
   # fastas=fastas.join("\n")
   
   found_dust = dust_masker.do_dust(fastas)
   # puts found_dust
   # puts blast_table_results.inspect
  
   return found_dust
end
exec_seq(seq,blast_query) click to toggle source
# File lib/seqtrimnext/plugins/plugin_low_complexity.rb, line 38
def exec_seq(seq,blast_query)
  dust_query=blast_query
  
  if dust_query.query_id != seq.seq_name
    raise "Blast and seq names does not match, blast:#{blast_query.query_id} sn:#{seq.seq_name}"
  end
  actions=[]

    # puts "Checking for dust: #{seq.seq_fasta}"
    # puts found_dust.to_json
    total_dust=0
    if !dust_query.nil?
      # low_quals=seq.get_actions(ActionLowQuality)
      
      dust_query.dust.each do |dust|
        start=dust[0]
        stop=dust[1]
        dust_size=dust[1]-dust[0]+1
        

        if (dust_size)>=MIN_DUST_SIZE
        
          # check if low complexity is inside a lowqual region
          if !seq.range_inside_action_type?(start,stop,ActionLowQuality)
            
            total_dust+=dust_size    
            a = seq.new_action(start,stop,'ActionLowComplexity')
            # a.left_action=true
            actions.push a
            
          end
          # break
        end
      end
    end
    
    if !actions.empty?
      add_stats('low_complexity',total_dust)
      seq.add_file_tag(0, 'low_complexity', :both, 100)
      seq.add_actions(actions)
    end

end