bio-polyploid-tools 1.0.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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: []