scbi_blast 0.0.34 → 0.0.37
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.
- data/History.txt +12 -0
- data/lib/scbi_blast.rb +1 -1
- data/lib/scbi_blast/batch_blast.rb +28 -22
- data/lib/scbi_blast/blast_streamxml_result.rb +1 -0
- data/lib/scbi_blast/blast_table_result.rb +4 -1
- metadata +3 -3
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 0.0.37 2012-11-28
|
2
|
+
|
3
|
+
Fixed empty seqs
|
4
|
+
|
5
|
+
=== 0.0.36 2012-11-28
|
6
|
+
|
7
|
+
Protect against empty seqs and results
|
8
|
+
|
9
|
+
=== 0.0.35 2012-11-28
|
10
|
+
|
11
|
+
Protect against empty seqs
|
12
|
+
|
1
13
|
=== 0.0.34 2012-04-30
|
2
14
|
|
3
15
|
Added streamed XML parser to reduce memory usage with xml tree
|
data/lib/scbi_blast.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# Copyright (c) 2010 Dario Guerrero & Almudena Bocinos
|
2
|
-
#
|
2
|
+
#
|
3
3
|
# Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
# a copy of this software and associated documentation files (the
|
5
5
|
# 'Software'), to deal in the Software without restriction, including
|
@@ -7,10 +7,10 @@
|
|
7
7
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
8
8
|
# permit persons to whom the Software is furnished to do so, subject to
|
9
9
|
# the following conditions:
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# The above copyright notice and this permission notice shall be
|
12
12
|
# included in all copies or substantial portions of the Software.
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
15
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
16
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
@@ -19,6 +19,7 @@
|
|
19
19
|
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
20
|
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
21
|
|
22
|
+
# TODO - Hacer algo cuando llegan secuencias vacias
|
22
23
|
|
23
24
|
# class to execute Blast without temporary files (it uses pipes)
|
24
25
|
class BatchBlast
|
@@ -60,9 +61,13 @@ class BatchBlast
|
|
60
61
|
end
|
61
62
|
|
62
63
|
cmd = get_blast_cmd(fmt)
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
|
65
|
+
if !seqs.empty?
|
66
|
+
res = BatchBlast.do_blast_cmd(seq_fasta,cmd)
|
67
|
+
else
|
68
|
+
res=''
|
69
|
+
end
|
70
|
+
|
66
71
|
# check if all sequences where processed
|
67
72
|
if parse_output
|
68
73
|
if fmt == :table
|
@@ -88,27 +93,28 @@ class BatchBlast
|
|
88
93
|
end
|
89
94
|
|
90
95
|
end
|
91
|
-
|
96
|
+
|
92
97
|
return res
|
93
|
-
|
98
|
+
|
94
99
|
end
|
95
|
-
|
100
|
+
|
96
101
|
def self.do_blast_cmd(seq_fasta, cmd)
|
97
102
|
res=''
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
103
|
+
if !seq_fasta.empty?
|
104
|
+
# Ojo, que una vez nos ibamos a volver locos buscando porque esto no devolvia todos los hits que se encontraban al ejecutar el blast a mano, y era porque en el blast a mano le estabamos pasando la secuencia completa mientras que en el MID le estabamos pasando solo los 20 primeros nt.
|
105
|
+
IO.popen(cmd,'w+') {|blast|
|
106
|
+
blast.sync = true
|
107
|
+
blast.write(seq_fasta)
|
108
|
+
blast.close_write
|
109
|
+
res = blast.readlines
|
110
|
+
blast.close_read
|
111
|
+
}
|
112
|
+
|
113
|
+
if !$?.exitstatus.nil? && $?.exitstatus>0
|
114
|
+
raise "Error doing blast #{cmd} to fasta: #{seq_fasta}"
|
115
|
+
end
|
110
116
|
end
|
111
|
-
|
117
|
+
|
112
118
|
return res
|
113
119
|
|
114
120
|
end
|
@@ -32,7 +32,8 @@ class BlastTableResult < BlastResult
|
|
32
32
|
|
33
33
|
super(input)
|
34
34
|
|
35
|
-
|
35
|
+
return if input.empty?
|
36
|
+
|
36
37
|
if input.is_a?(Array)
|
37
38
|
lines=input
|
38
39
|
|
@@ -47,6 +48,8 @@ class BlastTableResult < BlastResult
|
|
47
48
|
end
|
48
49
|
|
49
50
|
def parse(lines)
|
51
|
+
|
52
|
+
|
50
53
|
query_name=''
|
51
54
|
|
52
55
|
lines.each do |line|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: scbi_blast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.37
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Dario Guerrero & Almudena Bocinos
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-11-28 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: xml-simple
|
@@ -95,7 +95,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
requirements: []
|
96
96
|
|
97
97
|
rubyforge_project: scbi_blast
|
98
|
-
rubygems_version: 1.
|
98
|
+
rubygems_version: 1.8.24
|
99
99
|
signing_key:
|
100
100
|
specification_version: 3
|
101
101
|
summary: scbi_blast is a ruby gem to handle blast+ executions without the need of temporary files, it has been developed at [SCBI](http://www.scbi.uma.es) by Almudena Bocinos & Dario Guerrero.
|