diff --git a/bin/polymarker.rb b/bin/polymarker.rb index ea6071e..9088b18 100755 --- a/bin/polymarker.rb +++ b/bin/polymarker.rb @@ -392,7 +392,7 @@ def do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options) end kasp_container.add_primers_file(primer_3_output) if added_exons > 0 -header = "Marker,SNP,RegionSize,chromosome,total_contigs,contig_regions,SNP_type,#{original_name},#{snp_in},common,primer_type,orientation,#{original_name}_TM,#{snp_in}_TM,common_TM,selected_from,product_size,errors,is_repetitive" +header = "Marker,SNP,RegionSize,chromosome,total_contigs,contig_regions,SNP_type,#{original_name},#{snp_in},common,primer_type,orientation,#{original_name}_TM,#{snp_in}_TM,common_TM,selected_from,product_size,errors,is_repetitive,hit_count" File.open(output_primers, 'w') { |f| f.write("#{header}\n#{kasp_container.print_primers}") } File.open(output_to_order, "w") { |io| io.write(kasp_container.print_primers_with_tails()) } diff --git a/lib/bio/PolyploidTools/ExonContainer.rb b/lib/bio/PolyploidTools/ExonContainer.rb index 585ab98..da07088 100644 --- a/lib/bio/PolyploidTools/ExonContainer.rb +++ b/lib/bio/PolyploidTools/ExonContainer.rb @@ -221,6 +221,7 @@ def remove_alignments_over_max_hits snp_array.each do |snp| if snp.exon_list.size > max_hits total_hits = snp.exon_list.size + snp.hit_count = total_hits snp.exon_list = {} snp.repetitive = true snp.errors << "The marker is in a repetitive region (#{total_hits} hits to reference)" diff --git a/lib/bio/PolyploidTools/SNP.rb b/lib/bio/PolyploidTools/SNP.rb index cd18ad1..298417b 100644 --- a/lib/bio/PolyploidTools/SNP.rb +++ b/lib/bio/PolyploidTools/SNP.rb @@ -18,6 +18,7 @@ class SNP attr_accessor :max_hits attr_accessor :errors attr_accessor :repetitive + attr_accessor :hit_count @@ -69,6 +70,7 @@ def initialize @exon_list = Hash.new {|hsh, key| hsh[key] = [] } @errors = Array.new @repetitive = false + @hit_count = 0 end def to_polymarker_coordinates(flanking_size, total:nil) @@ -340,8 +342,9 @@ def primer_3_all_strings(target_chromosome, parental) errors << "The sequence (#{seq_original.size}) is shorter than #{primer_3_min_seq_length}" return primer_3_propertes end - - if exon_list.size > max_hits + hit_count = exon_list.size + puts exon_list.inspect + if hit_count > max_hits errors << "The marker maps to #{exon_list.size} positions (max_hits: #{max_hits}). " repetitive = true return primer_3_propertes diff --git a/lib/bio/db/primer3.rb b/lib/bio/db/primer3.rb index 85605f5..6a96e12 100644 --- a/lib/bio/db/primer3.rb +++ b/lib/bio/db/primer3.rb @@ -60,6 +60,7 @@ class SNP attr_accessor :regions attr_accessor :primer3_errors attr_accessor :repetitive + attr_accessor :hit_count def line_1_name "#{gene}:#{position}#{original}>#{snp} #{line_1}}" @@ -249,6 +250,7 @@ def values def print_primers to_print = values.dup to_print << @repetitive + to_print << hit_count to_print.join(",") end @@ -765,7 +767,8 @@ def add_snp(snp_in) snp.position = snp_in.position snp.snp = snp_in.snp snp.repetitive = snp_in.repetitive - + #puts snp_in.inspect + snp.hit_count = snp_in.hit_count snp.line_1 = @line_1 snp.line_2 = @line_2 snp.snp_from = snp_in