aai 0.4.0 → 0.5.0
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/CHANGELOG.md +1 -0
- data/aai.gemspec +1 -1
- data/lib/aai.rb +44 -46
- data/lib/aai/version.rb +1 -1
- metadata +21 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26efeea51af3369c265b1bda2c7ea1540884ebfb
|
4
|
+
data.tar.gz: fed2bdcddcfe2fb67540515494aae9ec260a1c59
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76389d1e54a82b008b1c4920460bb4d450375bb5f72a03d599d3950c926da7ff17defbea97695edac8f467401a203b8d17abda2a17c1e74e337ae06d814b4743
|
7
|
+
data.tar.gz: f39b404ae3a7a5c494a99a1fc505b9894375c63878fe9d40bcb09e7701b610d80c6501297ea7fc9d42e1fdc5bf5809d4fb28dfb8b888152415a7d30ab9a29003
|
data/CHANGELOG.md
CHANGED
data/aai.gemspec
CHANGED
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency "yard", "~> 0.9.9"
|
29
29
|
|
30
30
|
spec.add_runtime_dependency "abort_if", "~> 0.2.0"
|
31
|
-
|
31
|
+
spec.add_runtime_dependency "parallel", "~> 1.6", ">= 1.6.1"
|
32
32
|
spec.add_runtime_dependency "parse_fasta", "~> 2.2"
|
33
33
|
spec.add_runtime_dependency "systemu", "~> 2.6", ">= 2.6.5"
|
34
34
|
spec.add_runtime_dependency "trollop", "~> 2.1", ">= 2.1.2"
|
data/lib/aai.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "abort_if"
|
2
2
|
require "systemu"
|
3
|
+
require "parallel"
|
3
4
|
require "parse_fasta"
|
4
5
|
|
5
6
|
require "aai/core_extensions"
|
@@ -20,17 +21,12 @@ module Aai
|
|
20
21
|
EVALUE_CUTOFF = 1e-3
|
21
22
|
LENGTH_CUTOFF = 70 # actually is 70 percent
|
22
23
|
|
23
|
-
# If a blast job fails, it will retry once. If it fails again, it
|
24
|
-
# will be ignored by the rest of the pipeline.
|
25
24
|
def blast_permutations! fastas, blast_dbs, cpus=4
|
26
25
|
file_permutations = one_way_combinations fastas, blast_dbs, true
|
27
26
|
file_permutations = file_permutations.select do |f1, f2|
|
28
27
|
genome_from_fname(f1) != genome_from_fname(f2)
|
29
28
|
end
|
30
29
|
|
31
|
-
completed_outf_names = []
|
32
|
-
failed_jobs = []
|
33
|
-
|
34
30
|
first_files = file_permutations.map(&:first)
|
35
31
|
second_files = file_permutations.map(&:last)
|
36
32
|
|
@@ -58,56 +54,58 @@ module Aai
|
|
58
54
|
end
|
59
55
|
|
60
56
|
Time.time_it "Running blast jobs" do
|
61
|
-
args
|
57
|
+
Parallel.each(args, in_processes: cpus) do |infiles|
|
62
58
|
query = infiles[0]
|
63
59
|
db = infiles[1]
|
64
60
|
out = infiles[2]
|
65
61
|
|
66
|
-
cmd = "diamond blastp --threads
|
62
|
+
cmd = "diamond blastp --threads 1 --outfmt 6 " +
|
67
63
|
"--query #{query} --db #{db} --out #{out} " +
|
68
64
|
"--evalue #{EVALUE_CUTOFF}"
|
69
65
|
|
70
|
-
|
71
|
-
|
72
|
-
if exit_status.zero?
|
73
|
-
completed_outf_names << out
|
74
|
-
else
|
75
|
-
failed_jobs << idx
|
76
|
-
AbortIf.logger.warn { "Blast job failed. Non-zero exit status " +
|
77
|
-
"(#{exit_status}) " +
|
78
|
-
"when running '#{cmd}'. " +
|
79
|
-
"Will retry at end." }
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
if failed_jobs.count > 0
|
85
|
-
Time.time_it "Retrying failed blast jobs" do
|
86
|
-
# retry failed jobs once
|
87
|
-
failed_jobs.each do |idx|
|
88
|
-
query = args[idx][0]
|
89
|
-
db = args[idx][1]
|
90
|
-
out = args[idx][2]
|
91
|
-
|
92
|
-
cmd = "diamond blastp --threads #{cpus} --outfmt 6 " +
|
93
|
-
"--query #{query} --db #{db} --out #{out} " +
|
94
|
-
"--evalue #{EVALUE_CUTOFF}"
|
95
|
-
|
96
|
-
exit_status = Process.run_it cmd
|
66
|
+
Process.run_it! cmd
|
97
67
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
end
|
68
|
+
# if exit_status.zero?
|
69
|
+
# completed_outf_names << out
|
70
|
+
# else
|
71
|
+
# failed_jobs << idx
|
72
|
+
# AbortIf.logger.warn { "Blast job failed. Non-zero exit status " +
|
73
|
+
# "(#{exit_status}) " +
|
74
|
+
# "when running '#{cmd}'. " +
|
75
|
+
# "Will retry at end." }
|
76
|
+
# end
|
77
|
+
|
78
|
+
# [completed_outf_names, failed_jobs]
|
107
79
|
end
|
108
80
|
end
|
109
81
|
|
110
|
-
|
82
|
+
# if failed_jobs.count > 0
|
83
|
+
# Time.time_it "Retrying failed blast jobs" do
|
84
|
+
# # retry failed jobs once
|
85
|
+
# Parallel.each(failed_jobs, in_processes: cpus) do |idx|
|
86
|
+
# query = args[idx][0]
|
87
|
+
# db = args[idx][1]
|
88
|
+
# out = args[idx][2]
|
89
|
+
|
90
|
+
# cmd = "diamond blastp --threads #{cpus} --outfmt 6 " +
|
91
|
+
# "--query #{query} --db #{db} --out #{out} " +
|
92
|
+
# "--evalue #{EVALUE_CUTOFF}"
|
93
|
+
|
94
|
+
# exit_status = Process.run_it cmd
|
95
|
+
|
96
|
+
# if exit_status.zero?
|
97
|
+
# completed_outf_names << out
|
98
|
+
# else
|
99
|
+
# AbortIf.logger.error { "Retrying blast job failed. " +
|
100
|
+
# "Non-zero exit status " +
|
101
|
+
# "(#{exit_status}) " +
|
102
|
+
# "when running '#{cmd}'." }
|
103
|
+
# end
|
104
|
+
# end
|
105
|
+
# end
|
106
|
+
# end
|
107
|
+
|
108
|
+
outf_names
|
111
109
|
end
|
112
110
|
|
113
111
|
# Make blast dbs given an array of filenames.
|
@@ -121,8 +119,8 @@ module Aai
|
|
121
119
|
outfiles = fnames.map { |fname| fname + suffix }
|
122
120
|
|
123
121
|
Time.time_it "Making blast databases" do
|
124
|
-
|
125
|
-
cmd = "diamond makedb --threads
|
122
|
+
Parallel.each(fnames, in_processes: cpus) do |fname|
|
123
|
+
cmd = "diamond makedb --threads 1 --in #{fname} " +
|
126
124
|
"--db #{fname}#{BLAST_DB_SUFFIX}"
|
127
125
|
|
128
126
|
Process.run_it! cmd
|
data/lib/aai/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Moore
|
@@ -94,6 +94,26 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.2.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: parallel
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.6'
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 1.6.1
|
107
|
+
type: :runtime
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - "~>"
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '1.6'
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 1.6.1
|
97
117
|
- !ruby/object:Gem::Dependency
|
98
118
|
name: parse_fasta
|
99
119
|
requirement: !ruby/object:Gem::Requirement
|