bio-polyploid-tools 0.9.7 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a4e8eb2252fdfc72699a1d1142900342a92a6bbc24d9db2703303d0a14a6ef3
4
- data.tar.gz: b2d8e8af3e257efbc03d554844207f1cee04f984b0b06aefdb71f452136fcb79
3
+ metadata.gz: 33b494dbc4bf2eca85c52524144ee8577b8a157952dc1de6d588c2a9afa1fbff
4
+ data.tar.gz: 9884092fea3663022caf6d56cd66bb1e024aba12e0d896fe8ee8691ce0354d03
5
5
  SHA512:
6
- metadata.gz: 93511b8ebee81dbe6bac57031ed40f39f906909ab61376eff1dd57e77f72c7c6babd7d75b954e6ed7b5c80caa5ef5b96372d903867e0ffdd5a99bbe92c6ccfa9
7
- data.tar.gz: 7be9b3fb55fa9aeeb119e762b3aad509a69a53a44c1a011f6998bf9596c89c6e8161a81d097ad61352f2ff7e60a5a0164900fdc47a08c6530444943475c1c888
6
+ metadata.gz: e852c5da462b2978612b87ce6b71ba70ff030d42b547bb5283818ea525058c389935471d8003dae7cd817c426acfdea5ec3ce8ec58f58682e5c3e9636168d6ef
7
+ data.tar.gz: c8e7b741c92989c070b0aa0c8d452de5bc8611c53266305942ab5e383ffd70233445b1cb6e3853e842e17490d455ccab12e785b818e442a1e6021a28dd7bbc57
data/README.md CHANGED
@@ -128,6 +128,11 @@ To use blast instead of exonerate, use the following command:
128
128
 
129
129
  ## Release Notes
130
130
 
131
+ ### 0.9.7
132
+ There was some strange issue with the numbering, so bumped to 0.9.7
133
+
134
+ * Moved the arm selection function for fields in the chromosome name to the ```ChromosomeArm``` class.
135
+
131
136
  ### 0.8.7
132
137
  * FEATURE: ```polymarker.rb``` now also prints the total number of hits found.
133
138
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.7
1
+ 0.9.8
@@ -39,8 +39,7 @@ options[:min_identity] = 90
39
39
  options[:scoring] = :genome_specific
40
40
  options[:database] = false
41
41
  options[:filter_best] = false
42
- options[:max_hits] = 8
43
- options[:aligner] = :exonerate
42
+ options[:aligner] = :blast
44
43
 
45
44
 
46
45
  options[:primer_3_preferences] = {
@@ -58,70 +57,56 @@ options[:primer_3_preferences] = {
58
57
  OptionParser.new do |opts|
59
58
  opts.banner = "Usage: polymarker.rb [options]"
60
59
 
61
- opts.on("-a", "--arm_selection #{Bio::PolyploidTools::ChromosomeArm.getValidFunctions.join('|')}", "Function to decide the chromome arm") do |o|
62
- tmp_str = o
63
- arr = o.split(",")
64
- if arr.size == 2
65
- options[:arm_selection] = lambda do |contig_name|
66
- separator, field = arr
67
- field = field.to_i
68
- ret = contig_name.split(separator)[field]
69
- return ret
70
- end
71
- else
72
- options[:arm_selection] = Bio::PolyploidTools::ChromosomeArm.getArmSelection(o)
73
- end
74
- end
75
-
76
- opts.on("-b", "--filter_best", "If set, only keep the best alignment for each chromosome") do
77
- options[:filter_best] = true
78
- end
79
-
80
60
  opts.on("-c", "--contigs FILE", "File with contigs to use as database") do |o|
81
61
  options[:path_to_contigs] = o
82
62
  end
83
63
 
84
- opts.on("-d", "--database PREFIX", "Path to the blast database. Only used if the aligner is blast. The default is the name of the contigs file without extension.") do |o|
85
- options[:database] = o
86
- end
87
-
88
- opts.on("-e", "--exonerate_model MODEL", "Model to be used in exonerate to search for the contigs") do |o|
89
- options[:model] = o
64
+ opts.on("-m", "--marker_list FILE", "File with the list of markers to search from") do |o|
65
+ options[:marker_list] = o
90
66
  end
91
67
 
92
68
  opts.on("-g", "--genomes_count INT", "Number of genomes (default 3, for hexaploid)") do |o|
93
69
  options[:genomes_count] = o.to_i
94
70
  end
95
-
96
- opts.on("-i", "--min_identity INT", "Minimum identity to consider a hit (default 90)") do |o|
97
- options[:min_identity] = o.to_i
71
+
72
+ opts.on("-b", "--filter_best", "If set, only keep the best alignment for each chromosome") do
73
+ options[:filter_best] = true
98
74
  end
99
75
 
100
- opts.on("-m", "--marker_list FILE", "File with the list of markers to search from") do |o|
101
- options[:marker_list] = o
102
- end
103
76
 
104
- opts.on("-o", "--output FOLDER", "Output folder") do |o|
105
- options[:output_folder] = o
77
+ opts.on("-s", "--snp_list FILE", "File with the list of snps to search from, requires --reference to get the sequence using a position") do |o|
78
+ options[:snp_list] = o
106
79
  end
107
80
 
108
- opts.on("-p", "--primer_3_preferences FILE", "file with preferences to be sent to primer3") do |o|
109
- options[:primer_3_preferences] = Bio::DB::Primer3.read_primer_preferences(o, options[:primer_3_preferences] )
81
+ opts.on("-t", "--mutant_list FILE", "File with the list of positions with mutation and the mutation line.\n\
82
+ requires --reference to get the sequence using a position") do |o|
83
+ options[:mutant_list] = o
110
84
  end
111
-
85
+
112
86
  opts.on("-r", "--reference FILE", "Fasta file with the sequence for the markers (to complement --snp_list)") do |o|
113
87
  options[:reference] = o
114
88
  end
89
+
90
+ opts.on("-i", "--min_identity INT", "Minimum identity to consider a hit (default 90)") do |o|
91
+ options[:min_identity] = o.to_i
92
+ end
115
93
 
116
- opts.on("-s", "--snp_list FILE", "File with the list of snps to search from, requires --reference to get the sequence using a position") do |o|
117
- options[:snp_list] = o
94
+ opts.on("-o", "--output FOLDER", "Output folder") do |o|
95
+ options[:output_folder] = o
118
96
  end
119
-
120
- opts.on("-t", "--mutant_list FILE", "File with the list of positions with mutation and the mutation line.\n\
121
- requires --reference to get the sequence using a position") do |o|
122
- options[:mutant_list] = o
97
+
98
+ opts.on("-e", "--exonerate_model MODEL", "Model to be used in exonerate to search for the contigs") do |o|
99
+ options[:model] = o
123
100
  end
101
+
102
+ opts.on("-a", "--arm_selection #{Bio::PolyploidTools::ChromosomeArm.getValidFunctions.join('|')}", "Function to decide the chromome arm") do |o|
103
+ options[:arm_selection] = Bio::PolyploidTools::ChromosomeArm.getArmSelection(o)
104
+ end
124
105
 
106
+ opts.on("-p", "--primer_3_preferences FILE", "file with preferences to be sent to primer3") do |o|
107
+ options[:primer_3_preferences] = Bio::DB::Primer3.read_primer_preferences(o, options[:primer_3_preferences] )
108
+ end
109
+
125
110
  opts.on("-v", "--variation_free_region INT", "If present, avoid generating the common primer if there are homoeologous SNPs within the specified distance") do |o|
126
111
  options[:variation_free_region] = o.to_i
127
112
  end
@@ -130,24 +115,23 @@ OptionParser.new do |opts|
130
115
  options[:extract_found_contigs] = true
131
116
  end
132
117
 
133
- opts.on("-A", "--aligner exonerate|blast", "Select the aligner to use. Default: exonerate") do |o|
134
- raise "Invalid aligner" unless o == "exonerate" or o == "blast"
135
- options[:aligner] = o.to_sym
118
+ opts.on("-P", "--primers_to_order", "If present, save a separate file with the primers with the KASP tails")do
119
+ #TODO: have a string with the tails, optional.
120
+ options[:primers_to_order] = true
136
121
  end
137
122
 
138
123
  opts.on("-H", "--het_dels", "If present, change the scoring to give priority to: semi-specific, specific, non-specific") do
139
124
  options[:scoring] = :het_dels
140
125
  end
141
126
 
142
- opts.on("-M", "--max_hits INT", "Maximum number of hits to consider a region as non repetitive. Markers with more than this number of hits will be ignored. (default #{options[:max_hits]})") do |o|
143
- options[:max_hits] = o.to_i
127
+ opts.on("-A", "--aligner exonerate|blast", "Select the aligner to use. Default: exonerate") do |o|
128
+ raise "Invalid aligner" unless o == "exonerate" or o == "blast"
129
+ options[:aligner] = o.to_sym
144
130
  end
145
131
 
146
- opts.on("-P", "--primers_to_order", "If present, save a separate file with the primers with the KASP tails")do
147
- #TODO: have a string with the tails, optional.
148
- options[:primers_to_order] = true
132
+ opts.on("-d", "--database PREFIX", "Path to the blast database. Only used if the aligner is blast. The default is the name of the contigs file without extension.") do |o|
133
+ options[:database] = o
149
134
  end
150
-
151
135
  end.parse!
152
136
 
153
137
 
@@ -312,7 +296,7 @@ def do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options)
312
296
 
313
297
  end
314
298
 
315
- Bio::DB::Blast.align({:max_hits=>options[:max_hits], :query=>temp_fasta_query, :target=>options[:database], :model=>model}) do |aln|
299
+ Bio::DB::Blast.align({:query=>temp_fasta_query, :target=>options[:database], :model=>model}) do |aln|
316
300
  do_align(aln, exo_f, found_contigs,min_identity, fasta_file,options)
317
301
  end if options[:aligner] == :blast
318
302
 
@@ -333,9 +317,8 @@ contigs_f.close() if options[:extract_found_contigs]
333
317
  write_status "Reading best alignment on each chromosome"
334
318
 
335
319
 
336
- container = Bio::PolyploidTools::ExonContainer.new
337
- container.flanking_size = options[:flanking_size]
338
- container.max_hits = options[:max_hits]
320
+ container= Bio::PolyploidTools::ExonContainer.new
321
+ container.flanking_size=options[:flanking_size]
339
322
  container.gene_models(temp_fasta_query)
340
323
  container.chromosomes(target)
341
324
  container.add_parental({:name=>snp_in})
@@ -392,7 +375,7 @@ snps.each do |snp|
392
375
  end
393
376
 
394
377
  kasp_container.add_primers_file(primer_3_output) if added_exons > 0
395
- 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"
378
+ 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"
396
379
  File.open(output_primers, 'w') { |f| f.write("#{header}\n#{kasp_container.print_primers}") }
397
380
 
398
381
  File.open(output_to_order, "w") { |io| io.write(kasp_container.print_primers_with_tails()) }
@@ -2,11 +2,11 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: bio-polyploid-tools 0.9.7 ruby lib
5
+ # stub: bio-polyploid-tools 0.9.8 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "bio-polyploid-tools".freeze
9
- s.version = "0.9.7"
9
+ s.version = "0.9.8"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
@@ -1,8 +1,6 @@
1
1
  module Bio::PolyploidTools
2
2
  class ChromosomeArm
3
3
 
4
-
5
-
6
4
  @@arm_selection_functions = Hash.new;
7
5
 
8
6
  #example format: chr2A
@@ -42,11 +40,24 @@ class ChromosomeArm
42
40
  end
43
41
 
44
42
  def self.getArmSelection(name)
43
+ arr = name.split(",")
44
+ if arr.size == 2
45
+ @@arm_selection_functions[name.to_sym] = lambda do |contig_name|
46
+ separator, field = arr
47
+ field = field.to_i
48
+ ret = contig_name.split(separator)[field]
49
+ return ret
50
+ end
51
+ end
45
52
  @@arm_selection_functions[name.to_sym]
46
53
  end
47
54
 
48
55
  def self.getValidFunctions
49
- @@arm_selection_functions.keys.map { |e| e.to_s }
56
+ tmp = @@arm_selection_functions.keys.map { |e| e.to_s }
57
+ tmp.unshift "<sep>,<index>"
58
+ tmp
50
59
  end
60
+
61
+
51
62
  end
52
63
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-polyploid-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo H. Ramirez-Gonzalez