bio-polyploid-tools 1.0.0 → 1.2.1

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: a8d10f674380ca0d78e0efbbf5bd81e44327fd66dfcbc5f9443891ebad6f2ee5
4
- data.tar.gz: b787eef663d8c1b2932b38a877bb870521e71c72f6584d9b08d3ebf0c937b36e
3
+ metadata.gz: f0d5a3af7b47246e8be286fd81aa93319375bcc3b09c3f7a8fe18435a187d301
4
+ data.tar.gz: 594953032a8c400e0f0868f44ee82f80d38d784b9f377f0c39b16ae42b930884
5
5
  SHA512:
6
- metadata.gz: 4fdad615441a69e1af27e9ca23949e57b36c100773ed17ced255bec11c6d1d04778622199e832901861c0494fea018155bbf2d9b737f1672e342b88197123782
7
- data.tar.gz: 074c38a5d9b59a116509a45e43d406bcc113cecfa83029239d748128715e74815fbbbb8880035abfb6272d96048dd5fb029fd363f75f699abadf46135ad67bc0
6
+ metadata.gz: 811df7eeae83f8ab557254d0dd8845639105d3e2ac81896d8a2507456cbfd50fd739a3369deadc8deaf9ad9421f8ea620072610af4311fc27528cf4cc318dde4
7
+ data.tar.gz: ed90f0431a82e2492a703b607ccc92c4ea339a12c9098084112b885221fe8e3745e192ff92f971b751bad0ad5ddf851f3128266db98b5966d8686e6379a6a0de
data/.travis.yml CHANGED
@@ -7,13 +7,18 @@ addons:
7
7
  - libncurses5-dev
8
8
  - libtinfo-dev
9
9
  - exonerate
10
+ - blast2
11
+ - ncbi-blast+
12
+ - mafft
13
+ - primer3
10
14
  before_install:
11
15
  - gem update --system
12
16
  - export RUBYOPT="-W1"
13
17
  rvm:
14
- - 2.3.5
15
- - 2.4.2
16
- - 2.5.0
17
- - 2.6.0
18
+ - 2.3
19
+ - 2.4
20
+ - 2.5
21
+ - 2.6
22
+ - 2.7
18
23
 
19
24
 
data/SECURITY.md ADDED
@@ -0,0 +1,16 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ The following table shows the currently supported version.
6
+
7
+ | Version | Supported |
8
+ | ------- | ------------------ |
9
+ | 1.1.x | :white_check_mark: |
10
+ | 1.0.x | :x: |
11
+ | 0.x.x | :x: |
12
+
13
+
14
+ ## Reporting a Vulnerability
15
+
16
+ If you find a vulneravility, please submit a comment in the security tab
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.2.1
data/bin/polymarker.rb CHANGED
@@ -41,7 +41,7 @@ options[:database] = false
41
41
  options[:filter_best] = false
42
42
  options[:aligner] = :blast
43
43
  options[:max_hits] = 8
44
-
44
+ options[:max_specific_primers] = 20
45
45
  options[:primer_3_preferences] = {
46
46
  :primer_product_size_range => "50-150" ,
47
47
  :primer_max_size => 25 ,
@@ -136,6 +136,11 @@ OptionParser.new do |opts|
136
136
  opts.on("-H", "--max_hits INT", "Maximum number of hits to the reference. If there are more hits than this value, the marker is ignored") do |o|
137
137
  options[:max_hits] = o.to_i
138
138
  end
139
+
140
+ opts.on("-S", "--max_specific_primers INT", "Maximum number of candidate primers to attempt to design. Default: #{options[:max_specific_primers]} ") do |o|
141
+ options[:max_specific_primers] = o.to_i
142
+ end
143
+
139
144
  end.parse!
140
145
 
141
146
 
@@ -283,18 +288,19 @@ file.close
283
288
  #chr_group = chromosome[0]
284
289
  write_status "Searching markers in genome"
285
290
  exo_f = File.open(exonerate_file, "w")
291
+ contigs_f = nil
286
292
  contigs_f = File.open(temp_contigs, "w") if options[:extract_found_contigs]
287
293
  filename=path_to_contigs
288
294
  #puts filename
289
295
  target=filename
290
296
 
291
- fasta_file = Bio::DB::Fasta::FastaFile.new({:fasta=>target})
297
+ fasta_file = Bio::DB::Fasta::FastaFile.new(fasta: target)
292
298
  fasta_file.load_fai_entries
293
299
 
294
300
  found_contigs = Set.new
295
301
 
296
302
 
297
- def do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options)
303
+ def do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options, contigs_f: nil)
298
304
  if aln.identity > min_identity
299
305
  exo_f.puts aln.line
300
306
  unless found_contigs.include?(aln.target_id) #We only add once each contig. Should reduce the size of the output file.
@@ -312,11 +318,11 @@ def do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options)
312
318
  end
313
319
 
314
320
  Bio::DB::Blast.align({:query=>temp_fasta_query, :target=>options[:database], :model=>model, :max_hits=>options[:max_hits]}) do |aln|
315
- do_align(aln, exo_f, found_contigs,min_identity, fasta_file,options)
321
+ do_align(aln, exo_f, found_contigs,min_identity, fasta_file,options, contigs_f: contigs_f)
316
322
  end if options[:aligner] == :blast
317
323
 
318
324
  Bio::DB::Exonerate.align({:query=>temp_fasta_query, :target=>target, :model=>model}) do |aln|
319
- do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options)
325
+ do_align(aln, exo_f, found_contigs, min_identity,fasta_file,options, contigs_f: contigs_f)
320
326
  end if options[:aligner] == :exonerate
321
327
 
322
328
  exo_f.close()
@@ -362,7 +368,7 @@ write_status "Running primer3"
362
368
  file = File.open(primer_3_input, "w")
363
369
 
364
370
  Bio::DB::Primer3.prepare_input_file(file, options[:primer_3_preferences])
365
- added_exons = container.print_primer_3_exons(file, nil, snp_in)
371
+ added_exons = container.print_primer_3_exons(file, nil, snp_in, max_specific_primers: options[:max_specific_primers] )
366
372
  file.close
367
373
 
368
374
  Bio::DB::Primer3.run({:in=>primer_3_input, :out=>primer_3_output}) if added_exons > 0
@@ -53,7 +53,7 @@ OptionParser.new do |opts|
53
53
  options[:markers] = o
54
54
  end
55
55
 
56
- opts.on("-o", "--output_folder FOLDER", "Path to a folder where the outputs are going to be stored") do |o|
56
+ opts.on("-o", "--output FOLDER", "Path to a folder where the outputs are going to be stored") do |o|
57
57
  options[:output_folder] = o
58
58
  end
59
59
  opts.on("-g", "--genomes_count INT", "Number of genomes (default 3, for hexaploid)") do |o|
@@ -146,7 +146,7 @@ module Bio::PolyploidTools
146
146
  snp
147
147
  end
148
148
 
149
- def primer_3_all_strings(target_chromosome, parental)
149
+ def primer_3_all_strings(target_chromosome, parental, max_specific_primers: 20, flanking_size:500)
150
150
  #puts target_chromosome
151
151
  #puts parental
152
152
  #puts aligned_sequences.to_fasta
@@ -155,8 +155,11 @@ module Bio::PolyploidTools
155
155
 
156
156
  seq_original = String.new(pr.sequence)
157
157
  #puts seq_original.size.to_s << "-" << primer_3_min_seq_length.to_s
158
+ #puts "___"
159
+ #puts pr.inspect
158
160
  return primer_3_propertes if seq_original.size < primer_3_min_seq_length
159
- return primer_3_propertes unless pr.snp_pos == 500
161
+ #puts "((("
162
+ return primer_3_propertes unless pr.snp_pos == flanking_size
160
163
  #puts "Sequence origina: #{ self.original}"
161
164
  #puts pr.to_fasta
162
165
  #puts "Postion: #{pr.snp_pos}"
@@ -274,9 +277,9 @@ file.close
274
277
  exo_f = File.open(exonerate_file, "w")
275
278
  target=reference
276
279
 
277
- fasta_file = Bio::DB::Fasta::FastaFile.new({:fasta=>target})
280
+ fasta_file = Bio::DB::Fasta::FastaFile.new(fasta: target)
278
281
  fasta_file.load_fai_entries
279
- min_identity = 95
282
+ min_identity = 90
280
283
  found_contigs = Set.new
281
284
 
282
285
 
@@ -361,7 +364,7 @@ class Bio::DB::Primer3::Primer3Record
361
364
  end
362
365
 
363
366
  printed_counts = Hash.new(0)
364
- Bio::DB::Primer3::Primer3Record.parse_file(primer_3_output) do | primer3record |
367
+ Bio::DB::Primer3::Primer3Record.parse_file(primer_3_output ) do | primer3record |
365
368
  #puts primer3record.inspect
366
369
  next if primer3record.primer_left_num_returned.to_i == 0
367
370
 
@@ -2,16 +2,16 @@
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 1.0.0 ruby lib
5
+ # stub: bio-polyploid-tools 1.2.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "bio-polyploid-tools".freeze
9
- s.version = "1.0.0"
9
+ s.version = "1.2.1"
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]
13
13
  s.authors = ["Ricardo H. Ramirez-Gonzalez".freeze]
14
- s.date = "2019-07-05"
14
+ s.date = "2021-05-10"
15
15
  s.description = "Repository of tools developed at Crop Genetics in JIC to work with polyploid wheat".freeze
16
16
  s.email = "ricardo.ramirez-gonzalez@jic.ac.uk".freeze
17
17
  s.executables = ["bfr.rb".freeze, "blast_triads.rb".freeze, "blast_triads_promoters.rb".freeze, "count_variations.rb".freeze, "filter_blat_by_target_coverage.rb".freeze, "filter_exonerate_by_identity.rb".freeze, "find_best_blat_hit.rb".freeze, "find_best_exonerate.rb".freeze, "get_longest_hsp_blastx_triads.rb".freeze, "hexaploid_primers.rb".freeze, "homokaryot_primers.rb".freeze, "mafft_triads.rb".freeze, "mafft_triads_promoters.rb".freeze, "map_markers_to_contigs.rb".freeze, "marker_to_vcf.rb".freeze, "markers_in_region.rb".freeze, "mask_triads.rb".freeze, "polymarker.rb".freeze, "polymarker_capillary.rb".freeze, "polymarker_deletions.rb".freeze, "snp_position_to_polymarker.rb".freeze, "snps_between_bams.rb".freeze, "tag_stats.rb".freeze, "vcfLineToTable.rb".freeze, "vcfToPolyMarker.rb".freeze]
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  "Gemfile",
24
24
  "README.md",
25
25
  "Rakefile",
26
+ "SECURITY.md",
26
27
  "VERSION",
27
28
  "bin/bfr.rb",
28
29
  "bin/blast_triads.rb",
@@ -100,6 +101,11 @@ Gem::Specification.new do |s|
100
101
  "lib/bio/db/exonerate.rb",
101
102
  "lib/bio/db/primer3.rb",
102
103
  "lib/bioruby-polyploid-tools.rb",
104
+ "test/data/7B_amplicon_test.fa",
105
+ "test/data/7B_amplicon_test.fa.fai",
106
+ "test/data/7B_amplicon_test_reference.fa",
107
+ "test/data/7B_amplicon_test_reference.fa.fai",
108
+ "test/data/7B_marker_test.txt",
103
109
  "test/data/BS00068396_51.fa",
104
110
  "test/data/BS00068396_51_blast.tab",
105
111
  "test/data/BS00068396_51_contigs.aln",
@@ -129,6 +135,13 @@ Gem::Specification.new do |s|
129
135
  "test/data/PST130_7067.csv",
130
136
  "test/data/PST130_7067.fa",
131
137
  "test/data/PST130_7067.fa.fai",
138
+ "test/data/PST130_7067.fa.ndb",
139
+ "test/data/PST130_7067.fa.nhr",
140
+ "test/data/PST130_7067.fa.nin",
141
+ "test/data/PST130_7067.fa.not",
142
+ "test/data/PST130_7067.fa.nsq",
143
+ "test/data/PST130_7067.fa.ntf",
144
+ "test/data/PST130_7067.fa.nto",
132
145
  "test/data/PST130_reverse_primer.csv",
133
146
  "test/data/S22380157.fa",
134
147
  "test/data/S22380157.fa.fai",
@@ -178,34 +191,27 @@ Gem::Specification.new do |s|
178
191
  "test/test_blast.rb",
179
192
  "test/test_exon_container.rb",
180
193
  "test/test_exonearate.rb",
194
+ "test/test_integration.rb",
181
195
  "test/test_snp_parsing.rb",
182
196
  "test/test_wrong_selection.sh"
183
197
  ]
184
198
  s.homepage = "http://github.com/tgac/bioruby-polyploid-tools".freeze
185
199
  s.licenses = ["MIT".freeze]
186
- s.rubygems_version = "2.7.7".freeze
200
+ s.rubygems_version = "3.1.4".freeze
187
201
  s.summary = "Tool to work with polyploids, NGS and molecular biology".freeze
188
202
 
189
203
  if s.respond_to? :specification_version then
190
204
  s.specification_version = 4
205
+ end
191
206
 
192
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
193
- s.add_runtime_dependency(%q<bio>.freeze, [">= 1.5.1"])
194
- s.add_runtime_dependency(%q<bio-samtools>.freeze, [">= 2.6.2"])
195
- s.add_runtime_dependency(%q<descriptive_statistics>.freeze, [">= 0"])
196
- s.add_runtime_dependency(%q<systemu>.freeze, [">= 2.5.2"])
197
- s.add_development_dependency(%q<shoulda>.freeze, [">= 2.10"])
198
- s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
199
- s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
200
- else
201
- s.add_dependency(%q<bio>.freeze, [">= 1.5.1"])
202
- s.add_dependency(%q<bio-samtools>.freeze, [">= 2.6.2"])
203
- s.add_dependency(%q<descriptive_statistics>.freeze, [">= 0"])
204
- s.add_dependency(%q<systemu>.freeze, [">= 2.5.2"])
205
- s.add_dependency(%q<shoulda>.freeze, [">= 2.10"])
206
- s.add_dependency(%q<test-unit>.freeze, [">= 0"])
207
- s.add_dependency(%q<juwelier>.freeze, [">= 0"])
208
- end
207
+ if s.respond_to? :add_runtime_dependency then
208
+ s.add_runtime_dependency(%q<bio>.freeze, [">= 1.5.1"])
209
+ s.add_runtime_dependency(%q<bio-samtools>.freeze, [">= 2.6.2"])
210
+ s.add_runtime_dependency(%q<descriptive_statistics>.freeze, [">= 0"])
211
+ s.add_runtime_dependency(%q<systemu>.freeze, [">= 2.5.2"])
212
+ s.add_development_dependency(%q<shoulda>.freeze, [">= 2.10"])
213
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
214
+ s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
209
215
  else
210
216
  s.add_dependency(%q<bio>.freeze, [">= 1.5.1"])
211
217
  s.add_dependency(%q<bio-samtools>.freeze, [">= 2.6.2"])
data/lib/bio/BFRTools.rb CHANGED
@@ -31,7 +31,7 @@ module Bio::BFRTools
31
31
  BASES = [:A, :C, :G, :T]
32
32
  #Sets the reference file
33
33
  def reference(path)
34
- @reference_db = Bio::DB::Fasta::FastaFile.new({:fasta=>path})
34
+ @reference_db = Bio::DB::Fasta::FastaFile.new(fasta: path)
35
35
  @reference_path = path
36
36
  end
37
37
 
@@ -49,7 +49,7 @@ module Bio::BFRTools
49
49
  raise BFRToolsException.new("Unable to open #{path}") unless path.readable? or path.directory?
50
50
 
51
51
  @parental_1_name = opts[:name] ? opts[:name] : path.basename(".bam").to_s
52
- @parental_1_sam = Bio::DB::Sam.new({:fasta=>@reference_path, :bam=>path.realpath.to_s})
52
+ @parental_1_sam = Bio::DB::Sam.new(fasta: @reference_path, :bam=>path.realpath.to_s)
53
53
  @parental_1_path = path
54
54
 
55
55
  end
@@ -61,7 +61,7 @@ module Bio::BFRTools
61
61
  raise BFRToolsException.new("Unable to open #{path}") unless path.readable? or path.directory?
62
62
 
63
63
  @parental_2_name = @name = opts[:name] ? opts[:name] : path.basename(".bam").to_s
64
- @parental_2_sam = Bio::DB::Sam.new({:fasta=>@reference_path, :bam=>path.realpath.to_s})
64
+ @parental_2_sam = Bio::DB::Sam.new(fasta: @reference_path, :bam=>path.realpath.to_s)
65
65
  @parental_2_path = path
66
66
  end
67
67
 
@@ -72,7 +72,7 @@ module Bio::BFRTools
72
72
  raise BFRToolsException.new("Unable to open #{path}") unless path.readable? or path.directory?
73
73
 
74
74
  @bulk_1_name = opts[:name] ? opts[:name] : path.basename(".bam").to_s
75
- @bulk_1_sam = Bio::DB::Sam.new({:fasta=>@reference_path, :bam=>path.realpath.to_s})
75
+ @bulk_1_sam = Bio::DB::Sam.new(fasta: @reference_path, :bam=>path.realpath.to_s)
76
76
  @bulk_1_path = path
77
77
  end
78
78
 
@@ -83,7 +83,7 @@ module Bio::BFRTools
83
83
  raise BFRToolsException.new("Unable to open #{path}") unless path.readable? or path.directory?
84
84
 
85
85
  @bulk_2_name = opts[:name] ? opts[:name] : path.basename(".bam").to_s
86
- @bulk_2_sam = Bio::DB::Sam.new({:fasta=>@reference_path, :bam=>path.realpath.to_s})
86
+ @bulk_2_sam = Bio::DB::Sam.new(fasta: @reference_path, :bam=>path.realpath.to_s)
87
87
  @bulk_2_path = path
88
88
  end
89
89
 
@@ -64,7 +64,7 @@ end
64
64
 
65
65
  class Bio::NucleicAcid
66
66
 
67
- IUPAC_CODES = {
67
+ IUPAC_CODES ||= {
68
68
 
69
69
  'y' => 'ct',
70
70
  'r' => 'ag',
@@ -18,7 +18,7 @@ module Bio::PolyploidTools
18
18
  end
19
19
 
20
20
  def gene_models(path)
21
- @gene_models_db = Bio::DB::Fasta::FastaFile.new({:fasta=>path})
21
+ @gene_models_db = Bio::DB::Fasta::FastaFile.new(fasta: path)
22
22
  @gene_models_db.index
23
23
  @gene_models_path = path
24
24
  end
@@ -48,7 +48,7 @@ module Bio::PolyploidTools
48
48
 
49
49
  #Sets the reference file for the gene models
50
50
  def chromosomes(path)
51
- @chromosomes_db = Bio::DB::Fasta::FastaFile.new({:fasta=>path})
51
+ @chromosomes_db = Bio::DB::Fasta::FastaFile.new(fasta: path)
52
52
  @chromosomes_path = path
53
53
  end
54
54
 
@@ -72,7 +72,7 @@ module Bio::PolyploidTools
72
72
  name = opts[:name]
73
73
  path = opts[:reference_path]
74
74
  path = opts[:alig_path]
75
- chromosomes[name] = Bio::DB::Fasta::FastaFile.new({:fasta=>path})
75
+ chromosomes[name] = Bio::DB::Fasta::FastaFile.new(fasta: path)
76
76
  end
77
77
 
78
78
  def add_snp(snp)
@@ -109,7 +109,7 @@ module Bio::PolyploidTools
109
109
  ret_str = ""
110
110
  @parents.each do |name, bam|
111
111
  ret_str << ">#{gene_region.id}_SNP-#{snp.position}_#{name} Overlapping_exons:#{gene_region.to_s} localSNPpo:#{local_pos_in_gene+1}\n"
112
- to_print = bam.consensus_with_ambiguities({:region=>gene_region}).to_s
112
+ to_print = bam.consensus_with_ambiguities(region: gene_region).to_s
113
113
  to_print[local_pos_in_gene] = to_print[local_pos_in_gene].upcase
114
114
  ret_str << to_print << "\n"
115
115
  end
@@ -151,7 +151,7 @@ module Bio::PolyploidTools
151
151
  end
152
152
  end
153
153
 
154
- def print_primer_3_exons (file, target_chromosome , parental )
154
+ def print_primer_3_exons (file, target_chromosome , parental, max_specific_primers: 20 )
155
155
  added = 0
156
156
 
157
157
  @snp_map.each do | gene, snp_array|
@@ -159,7 +159,7 @@ module Bio::PolyploidTools
159
159
  string = ""
160
160
  begin
161
161
  primer_3_min_seq_length
162
- string = snp.primer_3_string( snp.chromosome, parental )
162
+ string = snp.primer_3_string( snp.chromosome, parental, max_specific_primers: max_specific_primers )
163
163
  #TODO: add tan error to the SNP this snp has more than max_hits.
164
164
  #Or maybe inside the SNP file.
165
165
  if string.size > 0
@@ -222,7 +222,7 @@ module Bio::PolyploidTools
222
222
  end
223
223
  end
224
224
 
225
- def primer_3_all_strings(target_chromosome, parental)
225
+ def primer_3_all_strings(target_chromosome, parental, max_specific_primers: nil)
226
226
  #puts "primer_3_all_strings: #{target_chromosome} #{parental}"
227
227
  pr = primer_region(target_chromosome, parental )
228
228
  #puts pr.inspect
@@ -371,7 +371,7 @@ module Bio::PolyploidTools
371
371
  end
372
372
 
373
373
 
374
- def primer_3_all_strings(target_chromosome, parental)
374
+ def primer_3_all_strings(target_chromosome, parental, max_specific_primers: 20 )
375
375
 
376
376
  pr = primer_region(target_chromosome, parental )
377
377
  primer_3_propertes = Array.new
@@ -402,9 +402,16 @@ module Bio::PolyploidTools
402
402
  else
403
403
  @snp_type = "non-homoeologous"
404
404
  end
405
+
406
+ total_candidates = pr.chromosome_specific.size
407
+ total_candidates += pr.crhomosome_specific_intron.size
408
+ total_candidates += pr.almost_chromosome_specific.size
409
+ total_candidates += pr.almost_crhomosome_specific_intron.size
405
410
 
411
+ skip_specific = total_candidates > max_specific_primers
412
+ #puts "skip_specific: #{skip_specific}: #{total_candidates} > #{max_specific_primers}"
406
413
  pr.chromosome_specific.each do |pos|
407
-
414
+ break if skip_specific
408
415
  args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_specific exon #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
409
416
  primer_3_propertes << return_primer_3_string(args)
410
417
  args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_specific exon #{@snp_type} #{chromosome}"
@@ -412,41 +419,38 @@ module Bio::PolyploidTools
412
419
  primer_3_propertes << return_primer_3_string(args)
413
420
  end
414
421
 
415
- pr.almost_chromosome_specific.each do |pos|
416
- args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_semispecific exon #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
422
+ pr.crhomosome_specific_intron.each do |pos|
423
+ break if skip_specific
424
+ args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_specific intron #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
417
425
  primer_3_propertes << return_primer_3_string(args)
418
- args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_semispecific exon #{@snp_type} #{chromosome}"
426
+ args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_specific exon #{@snp_type} #{chromosome}"
419
427
  args[:sequence] = seq_snp
420
428
  primer_3_propertes << return_primer_3_string(args)
421
-
422
429
  end
423
430
 
424
- pr.crhomosome_specific_intron.each do |pos|
425
-
426
- args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_specific intron #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
431
+ pr.almost_chromosome_specific.each do |pos|
432
+ break if skip_specific
433
+ args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_semispecific exon #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
427
434
  primer_3_propertes << return_primer_3_string(args)
428
- args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_specific exon #{@snp_type} #{chromosome}"
435
+ args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_semispecific exon #{@snp_type} #{chromosome}"
429
436
  args[:sequence] = seq_snp
430
437
  primer_3_propertes << return_primer_3_string(args)
431
438
  end
432
439
 
433
440
  pr.almost_crhomosome_specific_intron.each do |pos|
441
+ break if skip_specific
434
442
  args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_semispecific intron #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :right_pos => pos, :sequence=>seq_original}
435
443
  primer_3_propertes << return_primer_3_string(args)
436
444
  args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_semispecific exon #{@snp_type} #{chromosome}"
437
445
  args[:sequence] = seq_snp
438
446
  primer_3_propertes << return_primer_3_string(args)
439
-
440
447
  end
441
448
 
442
-
443
449
  args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name} chromosome_nonspecific all #{@snp_type} #{chromosome}", :left_pos => pr.snp_pos, :sequence=>seq_original}
444
450
  primer_3_propertes << return_primer_3_string(args)
445
451
  args[:name] = "#{gene}:#{original}#{position}#{snp} #{snp_in} chromosome_nonspecific all #{@snp_type} #{chromosome}"
446
452
  args[:sequence] = seq_snp
447
453
  primer_3_propertes << return_primer_3_string(args)
448
-
449
-
450
454
  primer_3_propertes
451
455
  end
452
456
 
@@ -458,8 +462,8 @@ module Bio::PolyploidTools
458
462
  "#{original}#{position}#{snp}".upcase
459
463
  end
460
464
 
461
- def primer_3_string(target_chromosome, parental)
462
- strings = primer_3_all_strings(target_chromosome, parental)
465
+ def primer_3_string(target_chromosome, parental, max_specific_primers: 20)
466
+ strings = primer_3_all_strings(target_chromosome, parental, max_specific_primers: max_specific_primers)
463
467
  strings.join
464
468
  end
465
469
 
@@ -30,18 +30,21 @@ module Bio::DB::Primer3
30
30
  opts.each do |key,value|
31
31
  file.puts "#{key.to_s.upcase}=#{value}\n"
32
32
  end
33
- # file.puts "="
34
33
  end
35
34
 
36
35
  def self.run(opts={})
37
36
  puts "Primer3.run running..."
38
-
37
+ timeout = 600
39
38
  f_in=opts[:in]
40
39
  f_out=opts[:out]
40
+ timeout = opts[:timeout] if opts[:timeout]
41
41
  opts.delete(:in)
42
42
  opts.delete(:out)
43
43
  primer_3_in = File.read(f_in)
44
- status = systemu "primer3_core", 0=>primer_3_in, 1=>stdout='', 2=>stderr=''
44
+ status = systemu "primer3_core", 0=>primer_3_in, 1=>stdout='', 2=>stderr='' do |cid|
45
+ sleep timeout
46
+ Process.kill 9, cid
47
+ end
45
48
  # $stderr.puts cmdline
46
49
  if status.exitstatus == 0
47
50
  File.open(f_out, 'w') { |f| f.write(stdout) }
@@ -0,0 +1,12 @@
1
+ >chr7B:1000-1600
2
+ TTTCAAATGCTTGTAAGATATCTGACATCAAGGGGCGATCCCGAAAGTCATACTCGAAGC
3
+ AGCTAGGAAGGACATTCTCAACCTCTGCAGGTAAGTTGTACGGGAATATCGGTTTCTCTT
4
+ TCTTCAGGACAACCAACTGATAAATCTCGTCTGGTGATTTGCCACGCCAAGGCTGAACGC
5
+ CAGTGAACATCTCAAGAATGCTGCAGGCAAAGCCCCATGAATCTGTCTCGTAACTAATTG
6
+ GACCTCTGATGTTTGGTTGCCACTGCTCTGGGGCCATGTAATTTGGAGTTCCAAGTCTTT
7
+ GGATAAGCTCTGGGTTTGGCAGCGACAGTCCAAACAGCAAGGATGGAATCCCAAAATCCC
8
+ CCAGCACAGCATGGTCATGGTCATCAAGGAGAAAATTGCAAGGTTTGAGATTAAGAACAA
9
+ ATATTCCCCTGGAGTGTAGGTCTAGCACACCACGCGCCAAATCGGCGCCGTATCTGCAAA
10
+ TTACAGGAAATAATAAAAATATGTACCACTCAAGAAAACATCCTCTAAACAGAGCATCAT
11
+ AAGCATTCTCAAAAGTCAACCAGGATAATGTGCCTGCACTAAGGTGATGAAGGATATCTG
12
+ C
@@ -0,0 +1 @@
1
+ chr7B:1000-1600 601 17 60 61
@@ -0,0 +1,110 @@
1
+ >chr7A
2
+ CTTCCTGCTGCTGAACTTTCTGAGGATCACCGCCCTGATCGGAGACGCTGGCGACCTTTC
3
+ GACTCCTTGGCCTTGTGATGCTCTTGCCGACAAAGATACCTAGCTTCATAGCAGTAAAGA
4
+ AACCTATGGCGATGAACAGAGGCCTCACCACCCAATGGAAGTCCTCGAGGTGCTCATACT
5
+ TCTTCACAACCCCATCGCACTTGTCGAAGCTCACCACCTCCACCTCTGAAGGGTCGGCCA
6
+ AGCAGCTGCACACTTCGCCAAGGCTGAATTTGCCAGGGAAGGTCACAACAAGGCATCCAT
7
+ TCGAGAGTATCTGTGAAATACGGCCTGTGGCAAACACTCCGCCTCTCTTTCGCGGCCATT
8
+ CAAACCGGGGGCTTGATGTGTTAGTTCTCAGCCTCACAAATTGTCCCACGCAGTAGGCTT
9
+ CGGCCATTTGCAGATCTGAATATTCCCCCTTCCAGAGGGTGTCCATTCCTATTAAACCAA
10
+ CATACACGGTGCCATTACGGTCAATGCTATGAAGAATTCCGACCTGAGACCGCTTCTTGT
11
+ CTTCCTCCCTAAGCCTTACCCAGTCTCCGGCAGCGAAACCATAGGTCACCCTCTCCACTG
12
+ TCGAGGAATGGACCTTCAAAGGGTCATGTATTCCATGGACTCGTACAAGAATGTAGCTAT
13
+ CACGTTCTCCATCCTCCTCCATGCCAACTATGGTTCCATCAGGAATTTCCATTGTTTCAG
14
+ GAGTACAAGAGTTTTTAACCTTTCTCGAGCGGACCTTGTCACCAACTTGCAGCTTATCCT
15
+ TAAAGTGTGACCAATTAGTGTGACTTGGCACTACTGCCCTTGGGTTTTCAGAACTATCCC
16
+ AGCCATTGTTGTCATAATCCACATCTTTAGCACTGAAGAAATGAAAAAAGAAAACAAATT
17
+ TAGGAAAGAACTATGGTAAAATCACCCATCTGATGGCAGTTTAACCAAATACTGCAAGTT
18
+ GATAAGGCAGAAGTAGAAAGAGAGTTTTAGCATGTTACCTTTCAAATGCTTGCAAGATAT
19
+ CTGACATCAAGGGGCGATCCCGAAAGTCGTACTCAAAGCAGCTAGAAAGGACATTCTCAA
20
+ CCTCTGCAGGTAAGTTGTATGGGAATATCGGTTTCTCTTTCTTCAGGACAACCAACTGAT
21
+ AAATTTCATCTGGTGATTTGCCACGCCAAGGCTGAACGCCACTGAACATCTCAAGAATGC
22
+ TGCAGGCAAAGCCCCATGAATCTGTCTCGTAACTAATTGGACCTCTGATGTTTGGTTGCC
23
+ ATTGCTCTGGGGCCATGTAATTTGGAGTCCCAAGTCTTTGGATAAGCTCTGGGTTTGGCA
24
+ GAGAAAGTCCAAACAGCAAGGATGGAATCCCAAAATCCCCCAGCACAGCATGGTCATGGT
25
+ CATCAAGGAGAAAATTGCAAGGCTTGAGATTAAGAACAAATATTCCCCTGGAGTGTAGGT
26
+ CTAGCACACCACGCGCCAAATCGGCACCATATCTGCAAGTTATAAGAATTCATAAAAATA
27
+ TGTATTACTACTCAAGAAAATATCTTCTAAACAGAGCATCATAAGCATTCTCAAAAGTCA
28
+ ACAGGATAATGTGCCTGTACTAAGGTCATAAACTATATCTGCCAGTTAATCAATCAACAC
29
+ GTTCACTGGTAGAAAGTTGGAAACTGCATGCTTAGGTGACACTTCATCTAAAAAAAATGT
30
+ ATATTTGTCTCTGATAAATTGTATTCTTAAGATAAGCCGACGAACACTCAGAGTATTCAG
31
+ AACATCAAATATGTTCAAAACTGTGGAGACTTCCACAATACCTTAAAACATCCGACAAAG
32
+ GGAGCCTTCCACCTTTAAGCCGAGCCATCTTGTCCCCGATGGATCCTTCATAAAACTTCA
33
+ TCGCTATGCAAAGCTGAAAATCCATGAAACAAAAATTAAGCCACAACGCCATCTTTCATT
34
+ CACAGGTGACCCAACAGCAAGGCTTTGCCAGACAAAAACATACCCTCCCATTCTGCGTTG
35
+ AGATGCCATGTAGGAAGCAGACATTGCCCAGGCCCTGGCATTTGCCGAACACCTCGTCGA
36
+ ACCTCGCCGAGAACACCTGCAGCTGGTCGTCCCTGACCGGGTGCATCATCTTCACGGCG
37
+ >chr7B
38
+ GTGCACTTCTTGCTGCTGAACTTTCTGAGGATCGGCACCCTGATCGGAGACGCTGGCGAC
39
+ CTTTCGACTCCTTGGCCTTGTGATGCTCTTCCCGACGAACACACCTAGCTTCATAGCAGT
40
+ AAAGAAACCTATGGCGATGAACAGAGGTCTTACCGCCCAATGGAAGTCCTCGAGGTGCTC
41
+ ATACTTCTTCACAACCCCCTCGCACTTGTCGAAGCTCACCACCTCCACCTCAGAAGGGTC
42
+ GGCCAAGCAGCTGCACACTTCGCCAAGGCTCAACTTGCCAGGGAAGGTCACAACAAGGCA
43
+ TCCATTCGAGAGTATCTGTGAAATACGGCCTGTGGCAAACACCCCGCCTCTCTTTCGCTG
44
+ CCATTCGAACCGCGGGCTTGAAGTGTTGGTTCTCAGCCTCACAAATTGTCCCACACAGTA
45
+ GGCTTCGGCCATTTGCAGATCTGAATATTCCCCCTTCCAGAGGGTGTCCATTCCTATCAA
46
+ ACCAACATACACGGTGCCATTGCGGTCGATGCTATGAAGAATTCCGACCTCAGACCGCTT
47
+ CTTGTCTTCCTCCCTGAGCCTTACCCAGTATCCGGCAGCGAAACCATAGGTCACCCTCTC
48
+ CACTGTCGAGGAACGGACCTTCAAAGGGTCATGTATTGCATGGACTCGTACAAGAATGTT
49
+ GCTATCACGTTCTCCATCCTCCATGCCAACTATGGTCCCATCAGGGATTTCCATTGTTTC
50
+ AGGAGTACAAGAGTTTTTAACCTTTCTCGAGCGGACCTTGTCCCCAACTTGCAGCTTATC
51
+ CTTGAAGTGTGACCAGTTAGTGTGACTTGGTGCTACTGCCCTTGGGTTTTCAGAACTGTC
52
+ CCAGCCATTGTTGTCATAATCCACATCTTTAGCACTGAAGAAAGGAAAAAAAAACAAATT
53
+ TAGGGAAGTAACATGGTAAAATCACCCATCCAATGGCAGTTTAACCAAATAGTGCAAGTT
54
+ GATAAGGCAGAAGTAGAAAGAGAGTTTTAGCATGTTACCTTTCAAATGCTTGTAAGATAT
55
+ CTGACATCAAGGGGCGATCCCGAAAGTCATACTCGAAGCAGCTAGGAAGGACATTCTCAA
56
+ CCTCTGCAGGTAAGTTGTACGGGAATATCGGTTTCTCTTTCTTCAGGACAACCAACTGAT
57
+ AAATCTCGTCTGGTGATTTGCCACGCCAAGGCTGAACGCCAGTGAACATCTCAAGAATGC
58
+ TGCAGGCAAAGCCCCATGAATCTGTCTCGTAACTAATTGGACCTCTGATGTTTGGTTGCC
59
+ ACTGCTCTGGGGCCATGTAATTTGGAGTTCCAAGTCTTTGGATAAGCTCTGGGTTTGGCA
60
+ GCGACAGTCCAAACAGCAAGGATGGAATCCCAAAATCCCCCAGCACAGCATGGTCATGGT
61
+ CATCAAGGAGAAAATTGCAAGGTTTGAGATTAAGAACAAATATTCCCCTGGAGTGTAGGT
62
+ CTAGCACACCACGCGCCAAATCGGCGCCGTATCTGCAAATTACAGGAAATAATAAAAATA
63
+ TGTACCACTCAAGAAAACATCCTCTAAACAGAGCATCATAAGCATTCTCAAAAGTCAACC
64
+ AGGATAATGTGCCTGCACTAAGGTGATGAAGGATATCTGCCAGTTAATCAACCAACACGT
65
+ TCACTGGTAGAAAGTTGGAAACTGCATGCTTAGGTGACAATTCATCTAAAAAAACTGTAT
66
+ ATTTGCCTCTGGTAAACTGTATTCTTAAGATAAGCCGACAAACATTCAGTATTCAGAACA
67
+ TCAATATGTACAGAACTGTGGAGACTTCCACCATACCTTAAAACATCTGACAAAGGGAGC
68
+ CTTCCACCTTTAAGCCGAGCCATCTTGTCCCCGACGGATCCTTCGTAAAACTTCATCGCT
69
+ ATGCAAAGCTGAAAATCCATGAAACAAAAATTAAGCCACAGCACCATCTTTCATTCACAG
70
+ GTGACCCAACAGCAAGGCTATGCCAGACAGAGAACATACCCTCCCATTCTGCGTCGAGAT
71
+ GCCATGTAGGAAGCAGACATTGCCCAGGCCCTGGCACTTGCCGAACACCTCGTCGAACCT
72
+ CGCCGAGAACACCTGCAGCTGGTCGTCCCTGACCGGGTGCAGCATCTTCACAGCGACCTC
73
+ G
74
+ >chr7D
75
+ GTTGTGCACTTCTTGCTGCTGAACTTTCTGAGGATCGGCACCCTGATCAGAGACGCTGGC
76
+ GACCTTTCGACTCCTTGGCCTTGTGATGCTCTTCCCAACAAAGACACCTAGCTTCATAGC
77
+ AGTAAAGAAACCTATGGCAATGAACAGAGGCCTCACCGCCCAATGGAAGTCCTCGAGGTG
78
+ CTCATACTTCTTCACAACGCCCTCGCACTTGTCGAAGCTCACCACCTCCACCTCTGAAGG
79
+ GTCGGCCAAGCAGCTGCACACTTCGCCAAGGCTGAATTTGCCAGGGAAGGTCACAGCAAG
80
+ GCATCCATTCGAGAGTATCTGTGAAATACGGCCTATGGCGAACACTCCGCCTCTCTTTCG
81
+ CGGCCATTCAAACCGGGGGCTTGAAGTGTTAGTTCTGAGCCTCACAAATTGTCCCATGCA
82
+ GTAGGCTTCGGCCATTTGCAGATCTGAATATTCCCCCTTCCACAGGGTGTCCATTCCTAT
83
+ CAAACCAACATACACGGTGCCATTACGGTCAATGCTATGAAGAATTCCGACCTGAGACCG
84
+ CTTCTTGTCTTCCTCCCTAAGCCTTACCCAGTCTCCGGCAGCGAAACCATAGGTCACCCT
85
+ CTCCACTGCTGAGGAACGGACCTTCAGAGGGTCATGTATTCCATGGACTCGTACAAGAAT
86
+ GTAGCTATCGCGTTCTCCATCCTCCATGCCAACTATGGTTCCATCAGGGATTTCCATTGT
87
+ TTCAGGAGTACAAGAGTTTTTAACCTTTCTCGAGCGGACCTTGTCACCAACTTGCAGCTT
88
+ ATCCTTGAAGTGTGACCAATTAGTGTGACTTGGCACTACTGCCCTTGGGTTTTCAGAACT
89
+ ATCCCAGCCATTGTTGTCATAATCCACATCTTTAGCACTGAAGAAATGAAAAAAGAAAAC
90
+ AAATTTAGGGAAGAACCATAGTAAATCACCCATCCAATGGCAGTTTAACCAAATACTGCA
91
+ AGTTGATAAGGTAGAAGAAGAGAGTTTTAGCATGTTACCTTTCAAATGCTTGTAAGATAT
92
+ CTGACATCAAGGGGCGATCCCGAAAGTCGTACTCAAAGCAGCTAGAAAGGACATTCTCAA
93
+ CCTCTGCAGGTAAATTGTACGGGAATATCGGTTTCTCTTTCTTCAGGACAACCAACTGAT
94
+ AAATCTCGTCTGGTGATTTGCCACGCCAAGGCTGAACGCCACTGAACATCTCAAGAATGC
95
+ TGCAGGCAAAGCCCCATGAATCTGTCTCGTAACTAATTGGACCTCTGATGTTTGGTTGCC
96
+ ATTGCTCTGGGGCCATGTAATTTGGAGTCCCAAGTCTTTGGATAAGCTCTGGGTTTGGCA
97
+ GCGACAGCCCAAACAGCAAGGATGGAATCCCAAAATCCCCCAACACAGCATGGTCATGAT
98
+ CATCAAGGAGAAAATTACAAGGCTTGAGATTAAGAACAAATATTCCCCTGGAGTGTAGGT
99
+ CCAGCACACCACGTGCCAAATCAGCGCCATATCTGCAAGTTATAAGAATTCATAAAAATA
100
+ TGTACTACTCCAAACAGAGCATCATAAGCATTCTCAAAAGTCAACAGGATCATTTGCCTG
101
+ CACTAAGGTGATAAACTAGATCTGCCAGTTAATCAATCAACACGTTCACTGGTAGAAAGT
102
+ TGGAAACTGCATGCTTAGGTGACACTTCATCTAAAAAACTGTATATTTGCCTCTGTGGTA
103
+ AACTGTATTCTTAAGATAAGCCGACGAACATTCAGTATTCAGGACATCAAATATGTTCAA
104
+ AACTGTGGAGACTTCCACCATACCTTAAAACATCTGACAAAGGGAGCCTTCCACCTTTAA
105
+ GCCGAGCCATCTTGTCCCCGACGGATCCTTCATAGAACTTCATCACTATGCAAAGCTGAA
106
+ AATCCATGAAACAAAAATTAAGCCACAACGCCATCTTTCATTCACAGGCGACCCAACAGC
107
+ AAGGCTATGCCAGACAAAAACATACCCTCCCATTCTGCGTCGAGATGCCATGTAGGAAGC
108
+ AGACATTGCCCAGGCCCTGGCATTTGCCAAACACCTCGTCGAACCTCGCCGAGAACACCT
109
+ GCAGCTGGTCGTCCCTGACCGGGTGCAGCATCTTCACGGCGACCTCGTGGTACCGGTCAT
110
+ A
@@ -0,0 +1,3 @@
1
+ chr7A 2099 7 60 61
2
+ chr7B 2101 2148 60 61
3
+ chr7D 2101 4292 60 61
@@ -0,0 +1 @@
1
+ RAC875_c8221_649,7B,CGTACAATTTACCTGCAGAGGTTGAGAATGTCCTTTCTAGCTGCTTTGAG[T/C]ACGACTTTCGGGATCGCCCCTTGATGTCAGATATCTTACAAGCATTTGAA
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/test/test_bfr.rb CHANGED
@@ -26,12 +26,12 @@ class TestPolyploidTools < Test::Unit::TestCase
26
26
  @f2_b=data_path + "/LIB1719.bam"
27
27
 
28
28
  @bfr_path=data_path + "/bfr_out_test.csv"
29
- @fasta_db = Bio::DB::Fasta::FastaFile.new({:fasta=>@ref})
29
+ @fasta_db = Bio::DB::Fasta::FastaFile.new(fasta: @ref)
30
30
  @fasta_db.load_fai_entries
31
- @bam_a = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@a})
32
- @bam_b = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@b})
33
- @bam_f2_a = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@f2_a})
34
- @bam_f2_b = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@f2_b})
31
+ @bam_a = Bio::DB::Sam.new(fasta: @ref, bam: @a)
32
+ @bam_b = Bio::DB::Sam.new(fasta: @ref, bam: @b)
33
+ @bam_f2_a = Bio::DB::Sam.new(fasta: @ref, bam: @f2_a)
34
+ @bam_f2_b = Bio::DB::Sam.new(fasta: @ref, bam: @f2_b)
35
35
  # puts "SETUP"
36
36
  end
37
37
 
@@ -49,8 +49,8 @@ class TestPolyploidTools < Test::Unit::TestCase
49
49
 
50
50
  #puts @bam_a.methods
51
51
  ref_seq=@fasta_db.fetch_sequence(region)
52
- reg_a = @bam_a.fetch_region({:region=>region, :min_cov=>min_cov, :A=>1})
53
- reg_b = @bam_b.fetch_region({:region=>region, :min_cov=>min_cov, :A=>1})
52
+ reg_a = @bam_a.fetch_region(region: region, min_cov: min_cov, A: 1)
53
+ reg_b = @bam_b.fetch_region(region: region, min_cov: min_cov, A: 1)
54
54
  cons_1 = reg_a.consensus
55
55
  cons_2 = reg_b.consensus
56
56
 
@@ -85,10 +85,10 @@ class TestPolyploidTools < Test::Unit::TestCase
85
85
  container = Bio::BFRTools::BFRContainer.new
86
86
 
87
87
  container.reference @ref
88
- container.parental_1 ( {:path => @a } )
89
- container.parental_2 ( {:path => @b } )
90
- container.bulk_1 ( {:path => @f2_a })
91
- container.bulk_2 ( {:path => @f2_b })
88
+ container.parental_1( path: @a )
89
+ container.parental_2( path: @b )
90
+ container.bulk_1( path: @f2_a )
91
+ container.bulk_2( path: @f2_b )
92
92
 
93
93
  i = -1
94
94
 
@@ -0,0 +1,76 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + '/../lib')
2
+ $: << File.expand_path('.')
3
+ path= File.expand_path(File.dirname(__FILE__) + '/../lib/bioruby-polyploid-tools.rb')
4
+
5
+ tmp_verb = $VERBOSE
6
+ $VERBOSE=nil
7
+ #puts path
8
+ require path
9
+ require 'bio-samtools'
10
+ require "test/unit"
11
+ $VERBOSE=tmp_verb
12
+
13
+
14
+ class TestInregration < Test::Unit::TestCase
15
+
16
+
17
+ #Set up the paths
18
+ def setup
19
+ @data_path= File.expand_path(File.dirname(__FILE__) + '/data/' )
20
+
21
+ @ref="#{@data_path}/7B_amplicon_test_reference.fa"
22
+ @amplicon = "#{@data_path}/7B_amplicon_test.fa"
23
+ @genomes_count = 3
24
+ @output_folder="#{@data_path}/test_out"
25
+ @bin=File.expand_path(File.dirname(__FILE__) + '/../bin')
26
+ @marker = "#{@data_path}/7B_marker_test.txt"
27
+ FileUtils.rm_r(@output_folder, force: true) if Dir.exist? @output_folder
28
+
29
+ cmd = "makeblastdb -in #{@ref} -dbtype nucl "
30
+ #status, stdout, stderr =
31
+ systemu cmd
32
+ # @ref=data_path + '/S22380157.fa'
33
+ # @a=data_path + "/LIB1721.bam"
34
+ # @b=data_path + "/LIB1722.bam"
35
+ # @f2_a=data_path + "/LIB1716.bam"
36
+ # @f2_b=data_path + "/LIB1719.bam"
37
+
38
+ # @bfr_path=data_path + "/bfr_out_test.csv"
39
+ # @fasta_db = Bio::DB::Fasta::FastaFile.new({:fasta=>@ref})
40
+ # @fasta_db.load_fai_entries
41
+ # @bam_a = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@a})
42
+ # @bam_b = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@b})
43
+ # @bam_f2_a = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@f2_a})
44
+ # @bam_f2_b = Bio::DB::Sam.new({:fasta=>@ref, :bam=>@f2_b})
45
+ # puts "SETUP"
46
+
47
+ end
48
+
49
+ def teardown
50
+ FileUtils.rm_r(@output_folder, force: true) if Dir.exist? @output_folder
51
+ Dir.glob("#{@ref}.n*").each do |file|
52
+ #puts file
53
+ File.delete(file)
54
+ end
55
+ end
56
+
57
+ def test_amplicon_primers
58
+ cmd = "ruby #{@bin}/polymarker_capillary.rb --reference #{@ref} --sequences #{@amplicon} --genomes_count #{@genomes_count} --output #{@output_folder} --database #{@ref}"
59
+ status, stdout, stderr = systemu cmd
60
+ assert_equal(status.exitstatus, 0, "Failed running '#{cmd}'\nSTDOUT:\n#{stdout}\nSTDERR\n#{stderr}")
61
+
62
+ end
63
+
64
+ def test_deletion_primers
65
+ cmd = "ruby #{@bin}/polymarker_deletions.rb --reference #{@ref} --sequences #{@amplicon} --genomes_count #{@genomes_count} --output #{@output_folder} --database #{@ref}"
66
+ status, stdout, stderr = systemu cmd
67
+ assert_equal(status.exitstatus, 0, "Failed running '#{cmd}'\nSTDOUT:\n#{stdout}\nSTDERR\n#{stderr}")
68
+ end
69
+
70
+ def test_polymerker
71
+ cmd = "ruby ./bin/polymarker.rb -m #{@marker} -c #{@ref} --extract_found_contigs -A blast -a nrgene --output #{@output_folder}"
72
+ status, stdout, stderr = systemu cmd
73
+ assert_equal(status.exitstatus, 0, "Failed running '#{cmd}'\nSTDOUT:\n#{stdout}\nSTDERR\n#{stderr}")
74
+ end
75
+
76
+ end
@@ -27,7 +27,7 @@ class TestSNPparsing < Test::Unit::TestCase
27
27
  def test_mutant_snp
28
28
 
29
29
  ref=@data + "/IWGSC_CSS_1AL_scaff_1455974_aln_contigs.fa"
30
- fasta_reference_db = Bio::DB::Fasta::FastaFile.new({:fasta=>ref})
30
+ fasta_reference_db = Bio::DB::Fasta::FastaFile.new(fasta: ref)
31
31
  fasta_reference_db.index
32
32
  fasta_reference_db.load_fai_entries
33
33
 
@@ -49,7 +49,7 @@ class TestSNPparsing < Test::Unit::TestCase
49
49
 
50
50
  def test_vcf_line
51
51
  ref=@data + "/IWGSC_CSS_1AL_scaff_1455974_aln_contigs.fa"
52
- fasta_reference_db = Bio::DB::Fasta::FastaFile.new({:fasta=>ref})
52
+ fasta_reference_db = Bio::DB::Fasta::FastaFile.new(fasta: ref)
53
53
 
54
54
  fasta_reference_db.load_fai_entries
55
55
  vcf="IWGSC_CSS_1AL_scaff_1455974 127 test_snp C T 135.03 . "
@@ -85,7 +85,7 @@ class TestSNPparsing < Test::Unit::TestCase
85
85
  def test_reference_snp
86
86
 
87
87
  ref=@data + "/IWGSC_CSS_1AL_scaff_1455974_aln_contigs.fa"
88
- fasta_reference_db = Bio::DB::Fasta::FastaFile.new({:fasta=>ref})
88
+ fasta_reference_db = Bio::DB::Fasta::FastaFile.new(fasta: ref)
89
89
 
90
90
  fasta_reference_db.load_fai_entries
91
91
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bio-polyploid-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo H. Ramirez-Gonzalez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-05 00:00:00.000000000 Z
11
+ date: 2021-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bio
@@ -145,6 +145,7 @@ files:
145
145
  - Gemfile
146
146
  - README.md
147
147
  - Rakefile
148
+ - SECURITY.md
148
149
  - VERSION
149
150
  - bin/bfr.rb
150
151
  - bin/blast_triads.rb
@@ -222,6 +223,11 @@ files:
222
223
  - lib/bio/db/exonerate.rb
223
224
  - lib/bio/db/primer3.rb
224
225
  - lib/bioruby-polyploid-tools.rb
226
+ - test/data/7B_amplicon_test.fa
227
+ - test/data/7B_amplicon_test.fa.fai
228
+ - test/data/7B_amplicon_test_reference.fa
229
+ - test/data/7B_amplicon_test_reference.fa.fai
230
+ - test/data/7B_marker_test.txt
225
231
  - test/data/BS00068396_51.fa
226
232
  - test/data/BS00068396_51_blast.tab
227
233
  - test/data/BS00068396_51_contigs.aln
@@ -251,6 +257,13 @@ files:
251
257
  - test/data/PST130_7067.csv
252
258
  - test/data/PST130_7067.fa
253
259
  - test/data/PST130_7067.fa.fai
260
+ - test/data/PST130_7067.fa.ndb
261
+ - test/data/PST130_7067.fa.nhr
262
+ - test/data/PST130_7067.fa.nin
263
+ - test/data/PST130_7067.fa.not
264
+ - test/data/PST130_7067.fa.nsq
265
+ - test/data/PST130_7067.fa.ntf
266
+ - test/data/PST130_7067.fa.nto
254
267
  - test/data/PST130_reverse_primer.csv
255
268
  - test/data/S22380157.fa
256
269
  - test/data/S22380157.fa.fai
@@ -300,13 +313,14 @@ files:
300
313
  - test/test_blast.rb
301
314
  - test/test_exon_container.rb
302
315
  - test/test_exonearate.rb
316
+ - test/test_integration.rb
303
317
  - test/test_snp_parsing.rb
304
318
  - test/test_wrong_selection.sh
305
319
  homepage: http://github.com/tgac/bioruby-polyploid-tools
306
320
  licenses:
307
321
  - MIT
308
322
  metadata: {}
309
- post_install_message:
323
+ post_install_message:
310
324
  rdoc_options: []
311
325
  require_paths:
312
326
  - lib
@@ -321,9 +335,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
335
  - !ruby/object:Gem::Version
322
336
  version: '0'
323
337
  requirements: []
324
- rubyforge_project:
325
- rubygems_version: 2.7.7
326
- signing_key:
338
+ rubygems_version: 3.1.4
339
+ signing_key:
327
340
  specification_version: 4
328
341
  summary: Tool to work with polyploids, NGS and molecular biology
329
342
  test_files: []