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 +4 -4
- data/.travis.yml +9 -4
- data/SECURITY.md +16 -0
- data/VERSION +1 -1
- data/bin/polymarker.rb +12 -6
- data/bin/polymarker_capillary.rb +9 -6
- data/bio-polyploid-tools.gemspec +27 -21
- data/lib/bio/BFRTools.rb +5 -5
- data/lib/bio/BIOExtensions.rb +1 -1
- data/lib/bio/PolyploidTools/ExonContainer.rb +6 -6
- data/lib/bio/PolyploidTools/NoSNPSequence.rb +1 -1
- data/lib/bio/PolyploidTools/SNP.rb +20 -16
- data/lib/bio/db/primer3.rb +6 -3
- data/test/data/7B_amplicon_test.fa +12 -0
- data/test/data/7B_amplicon_test.fa.fai +1 -0
- data/test/data/7B_amplicon_test_reference.fa +110 -0
- data/test/data/7B_amplicon_test_reference.fa.fai +3 -0
- data/test/data/7B_marker_test.txt +1 -0
- data/test/data/PST130_7067.fa.ndb +0 -0
- data/test/data/PST130_7067.fa.nhr +0 -0
- data/test/data/PST130_7067.fa.nin +0 -0
- data/test/data/PST130_7067.fa.not +0 -0
- data/test/data/PST130_7067.fa.nsq +0 -0
- data/test/data/PST130_7067.fa.ntf +0 -0
- data/test/data/PST130_7067.fa.nto +0 -0
- data/test/test_bfr.rb +11 -11
- data/test/test_integration.rb +76 -0
- data/test/test_snp_parsing.rb +3 -3
- metadata +20 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0d5a3af7b47246e8be286fd81aa93319375bcc3b09c3f7a8fe18435a187d301
|
4
|
+
data.tar.gz: 594953032a8c400e0f0868f44ee82f80d38d784b9f377f0c39b16ae42b930884
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
15
|
-
- 2.4
|
16
|
-
- 2.5
|
17
|
-
- 2.6
|
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.
|
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(
|
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
|
data/bin/polymarker_capillary.rb
CHANGED
@@ -53,7 +53,7 @@ OptionParser.new do |opts|
|
|
53
53
|
options[:markers] = o
|
54
54
|
end
|
55
55
|
|
56
|
-
opts.on("-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
|
-
|
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(
|
280
|
+
fasta_file = Bio::DB::Fasta::FastaFile.new(fasta: target)
|
278
281
|
fasta_file.load_fai_entries
|
279
|
-
min_identity =
|
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
|
|
data/bio-polyploid-tools.gemspec
CHANGED
@@ -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.
|
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.
|
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 = "
|
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 = "
|
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
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
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(
|
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(
|
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(
|
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(
|
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(
|
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
|
|
data/lib/bio/BIOExtensions.rb
CHANGED
@@ -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(
|
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(
|
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(
|
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(
|
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.
|
416
|
-
|
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}
|
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.
|
425
|
-
|
426
|
-
args = {:name =>"#{gene}:#{original}#{position}#{snp} #{original_name}
|
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}
|
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
|
|
data/lib/bio/db/primer3.rb
CHANGED
@@ -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 @@
|
|
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(
|
29
|
+
@fasta_db = Bio::DB::Fasta::FastaFile.new(fasta: @ref)
|
30
30
|
@fasta_db.load_fai_entries
|
31
|
-
@bam_a = Bio::DB::Sam.new(
|
32
|
-
@bam_b = Bio::DB::Sam.new(
|
33
|
-
@bam_f2_a = Bio::DB::Sam.new(
|
34
|
-
@bam_f2_b = Bio::DB::Sam.new(
|
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(
|
53
|
-
reg_b = @bam_b.fetch_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)
|
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
|
89
|
-
container.parental_2
|
90
|
-
container.bulk_1
|
91
|
-
container.bulk_2
|
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
|
data/test/test_snp_parsing.rb
CHANGED
@@ -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(
|
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(
|
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(
|
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.
|
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:
|
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
|
-
|
325
|
-
|
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: []
|