lib/seqtrimnext/plugins/plugin_user_contaminants.rb in seqtrimnext-2.0.62 vs lib/seqtrimnext/plugins/plugin_user_contaminants.rb in seqtrimnext-2.0.66

- old
+ new

@@ -41,31 +41,45 @@ def do_blasts(seqs) # TODO - Culling limit = 2 porque el blast falla con este comando cuando se le pasa cl=1 y dust=no # y una secuencia de baja complejidad como entrada - blast = BatchBlast.new("-db #{@params.get_param('user_contaminant_db')}",'blastn'," -task blastn -evalue #{@params.get_param('blast_evalue_user_contaminant')} -perc_identity #{@params.get_param('blast_percent_user_contaminant')} -culling_limit 1") #get classify -max_target_seqs #{MAX_TARGETS_SEQS} + task_template=@params.get_param('blast_task_template_user_contaminants') + extra_params=@params.get_param('blast_extra_params_user_contaminants') - $LOG.debug('BLAST:'+blast.get_blast_cmd(:xml)) + extra_params=extra_params.gsub(/^\"|\"?$/, '') + blast = BatchBlast.new("-db #{@params.get_param('user_contaminant_db')}",'blastn'," -task #{task_template} #{extra_params} -evalue #{@params.get_param('blast_evalue_user_contaminant')} -perc_identity #{@params.get_param('blast_percent_user_contaminant')} -culling_limit 1") #get classify -max_target_seqs #{MAX_TARGETS_SEQS} + + $LOG.debug('BLAST:'+blast.get_blast_cmd(:table)) + fastas=[] seqs.each do |seq| fastas.push ">"+seq.seq_name fastas.push seq.seq_fasta end - blast_table_results = blast.do_blast(fastas,:xml) + #blast_table_results = blast.do_blast(fastas,:xml) + t1=Time.now + blast_table_results = blast.do_blast(fastas,:table,false) + add_plugin_stats('execution_time','blast',Time.now-t1) + t1=Time.now + #blast_table_results = BlastStreamxmlResult.new(blast_table_results) + blast_table_results = BlastTableResult.new(blast_table_results) + add_plugin_stats('execution_time','parse',Time.now-t1) + + return blast_table_results 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}" + raise "Blast and seq names does not match, blast:#{blast_query.query_id} sn:#{seq.seq_name}" end $LOG.debug "[#{self.class.to_s}, seq: #{seq.seq_name}]: looking for classify into the sequence" type = "ActionUserContaminant" @@ -141,9 +155,19 @@ params.check_param(errors,'min_user_contaminant_size','Integer',default_value,comment) comment='Path for user contaminant database' default_value = "" #File.join($FORMATTED_DB_PATH,'user_contaminant.fasta') params.check_param(errors,'user_contaminant_db','DB',default_value,comment) + + comment='Blast task template for user contaminations' + #default_value = 'blastn' + default_value = 'megablast' + params.check_param(errors,'blast_task_template_user_contaminants','String',default_value,comment) + + comment='Blast extra params for user contaminations' + #default_value = '' + default_value = '"-word_size=22"' + params.check_param(errors,'blast_extra_params_user_contaminants','String',default_value,comment) return errors end