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 +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: []
|