aai 0.2.1 → 0.2.2

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
  SHA1:
3
- metadata.gz: c9a07b9c733b60359634489b11fbe34e26890afa
4
- data.tar.gz: 74c4793c46883e92fab311837cf8b9ffd74b116d
3
+ metadata.gz: 9bac62037fd410a0529a22d1c010d10ce7839633
4
+ data.tar.gz: 2ea10d1fb86cab89108ffdda9b09971cff7950bd
5
5
  SHA512:
6
- metadata.gz: bdb1b9a67c88b837052e423beb3ecf89454633f48192c8ae3660dbcaf3f16e6ca9cb51e909d422fd644fe2dc28fd684b9118506395d26c51bda4a87dbea25fbb
7
- data.tar.gz: 615dc08d06a337722696f7035d8d29126ef1fc95d38394131a5391029c83c57501bb19e22ce25b517bcb242da8c5dca35475817423d2226b4cd1cec14b531425
6
+ metadata.gz: cc31bb1eb4cec4a1071ec9d17e9f993fa833dd9fae6bc676bbeec4dedcd711b8e4d494ca5370597029fd1f29e16af61726e556661ba13c73251834789dc0147d
7
+ data.tar.gz: 93305b9087bbba596f0a37edc6df2086d4d96af0a5161ca520614c2dff8ad21eae79da0e60b533859309b3e60b050d6295f0ef38555f2d472f290b6f8d984478
data/.gitignore CHANGED
@@ -10,3 +10,5 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+ .ruby-version
14
+ .ruby-gemset
@@ -10,7 +10,6 @@ rvm:
10
10
  addons:
11
11
  apt:
12
12
  packages:
13
- - parallel
14
13
  - ncbi-blast+
15
14
 
16
15
  before_install:
@@ -28,6 +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
+ spec.add_runtime_dependency "parallel", "~> 1.6", ">= 1.6.1"
31
32
  spec.add_runtime_dependency "parse_fasta", "~> 2.2"
32
33
  spec.add_runtime_dependency "systemu", "~> 2.6", ">= 2.6.5"
33
34
  spec.add_runtime_dependency "trollop", "~> 2.1", ">= 2.1.2"
data/exe/aai CHANGED
@@ -13,7 +13,11 @@ include AbortIf::Assert
13
13
  Aai.extend Aai
14
14
  Aai.extend Aai::Utils
15
15
 
16
- version_banner =
16
+ def move_files fnames, dest
17
+ fnames.each do |fname|
18
+ FileUtils.mv fname, dest
19
+ end
20
+ end
17
21
 
18
22
  opts = Trollop.options do
19
23
  version Aai::VERSION_BANNER
@@ -60,9 +64,24 @@ two_way = Aai.two_way_aai best_hits
60
64
 
61
65
  aai_strings = Aai.aai_strings one_way, two_way
62
66
 
63
- outf = File.join opts[:outdir], "#{opts[:basename]}.aai.txt"
67
+ score_dir = File.join opts[:outdir], "aai_scores"
68
+ FileUtils.mkdir_p score_dir
69
+ outf = File.join score_dir, "#{opts[:basename]}.aai.txt"
64
70
  File.open(outf, "w") do |f|
65
71
  Aai.aai_strings(one_way, two_way).each do |str|
66
72
  f.puts str
67
73
  end
68
74
  end
75
+
76
+ blast_db_dir = File.join opts[:outdir], "blastdbs"
77
+ btab_dir = File.join opts[:outdir], "btabs"
78
+ clean_fasta_dir = File.join opts[:outdir], "clean_fastas"
79
+
80
+ FileUtils.mkdir_p [blast_db_dir, btab_dir, clean_fasta_dir]
81
+
82
+ move_files clean_fnames, clean_fasta_dir
83
+ move_files btabs, btab_dir
84
+
85
+ blast_db_basenames.each do |basename|
86
+ move_files Dir.glob("#{basename}*"), blast_db_dir
87
+ end
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"
@@ -8,6 +9,7 @@ require "aai/version"
8
9
 
9
10
  AbortIf.extend AbortIf
10
11
  Process.extend Aai::CoreExtensions::Process
12
+ Time.extend Aai::CoreExtensions::Time
11
13
 
12
14
  module Aai
13
15
  include Utils
@@ -47,10 +49,20 @@ module Aai
47
49
  "#{f1}____#{f2}.aai_blastp"
48
50
  end
49
51
 
50
- title = "Running blast jobs"
51
- cmd = %Q{parallel --xapply "blastp -outfmt 6 -query {1} -db {2} -out {3} -evalue 1e-3" ::: #{first_files.join " "} ::: #{second_files.join " "} ::: #{outf_names.join " "}}
52
+ parallel_args = first_files.length.times.map do |idx|
53
+ [first_files[idx], second_files[idx], outf_names[idx]]
54
+ end
55
+
56
+ Time.time_it "Running blast jobs" do
57
+ Parallel.each(parallel_args) do |infiles|
58
+ query = infiles[0]
59
+ db = infiles[1]
60
+ out = infiles[2]
52
61
 
53
- Process.run_and_time_it! title, cmd
62
+ cmd = "blastp -outfmt 6 -query #{query} -db #{db} -out #{out} -evalue #{EVALUE_CUTOFF}"
63
+ Process.run_it! cmd
64
+ end
65
+ end
54
66
 
55
67
  outf_names
56
68
  end
@@ -64,10 +76,13 @@ module Aai
64
76
  suffix = BLAST_DB_SUFFIX
65
77
  outfiles = fnames.map { |fname| fname + suffix }
66
78
 
67
- title = "Making blast databases"
68
- cmd = %Q{parallel "makeblastdb -in {} -out {}#{BLAST_DB_SUFFIX} -dbtype prot" ::: #{fnames.join " "}}
79
+ Time.time_it "Making blast databases" do
80
+ Parallel.each(fnames) do |fname|
81
+ cmd = "makeblastdb -in #{fname} -out #{fname}#{BLAST_DB_SUFFIX} -dbtype prot"
69
82
 
70
- Process.run_and_time_it! title, cmd
83
+ Process.run_it! cmd
84
+ end
85
+ end
71
86
 
72
87
  outfiles
73
88
  end
@@ -1,5 +1,5 @@
1
1
  module Aai
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  COPYRIGHT = "2017 Ryan Moore"
4
4
  CONTACT = "moorer@udel.edu"
5
5
  WEBSITE = "https://github.com/mooreryan/aai"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Moore
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-22 00:00:00.000000000 Z
11
+ date: 2017-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -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