scbi_blast 0.0.37 → 0.0.40

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: abd62dc048e15cc41de0e5540c28cdb76b255823
4
+ data.tar.gz: c7d96d24d714d3641fe144241a6e9c8d4c2d9add
5
+ SHA512:
6
+ metadata.gz: 2c9216022a183a69a5f6417ddc69a6bb70c95c646acf84e2a9c97150c5fca40cb3d02f3ad91551bf506f1deb338e44d5af603bcf64f8ca28a9476108bc0d70f2
7
+ data.tar.gz: c54e86e65fbbb372e1c2e9c4031a2e05a2ac7b89daa47698c8e74398f4a3c7d74c94496ce1a7da2b332c7d8bc2e095fc79e8af2ecc96f46727840f40643ed95a
data/History.txt CHANGED
@@ -1,3 +1,15 @@
1
+ === 0.0.40 2013-05-24
2
+
3
+ qlen en query
4
+
5
+ === 0.0.39 2013-05-14
6
+
7
+ Add intermediate file support
8
+
9
+ === 0.0.38 2013-04-24
10
+
11
+ adding slen qlen
12
+
1
13
  === 0.0.37 2012-11-28
2
14
 
3
15
  Fixed empty seqs
data/lib/scbi_blast.rb CHANGED
@@ -22,6 +22,21 @@
22
22
 
23
23
  $: << File.join(File.dirname(__FILE__),File.basename(__FILE__,File.extname(__FILE__)))
24
24
 
25
+ v='0.0.0'
26
+ begin
27
+ s=`blastn -version`
28
+ v=s.split("\n").first.split(' ').last.gsub('+','')
29
+
30
+ rescue Exception => e
31
+ raise "Blast not installed"
32
+ end
33
+
34
+ if Gem::Version.new(v) < Gem::Version.new('2.2.28')
35
+ puts "Blast #{v} is older than 2.2.28+, please use scbi_blast version 0.0.37 or upgrade your blast to 2.2.28 or greater"
36
+ exit
37
+ end
38
+
39
+
25
40
  require 'batch_blast'
26
41
  require 'dust_masker'
27
42
  require 'blast_query'
@@ -33,7 +48,7 @@ require 'blast_hit'
33
48
  require 'blast_table_result'
34
49
 
35
50
  module ScbiBlast
36
- VERSION = '0.0.37'
51
+ VERSION = '0.0.40'
37
52
  end
38
53
 
39
54
 
@@ -35,24 +35,30 @@ class BatchBlast
35
35
  end
36
36
 
37
37
  # returns the blast cmd that will be used to launch blast
38
- def get_blast_cmd(fmt = :table)
38
+ def get_blast_cmd(fmt = :table, file=nil)
39
39
 
40
40
  if fmt==:table
41
- format = ' -outfmt "7 qseqid sacc pident length mismatch gapopen qstart qend sstart send evalue bitscore score qframe sframe qseq sseq" '
41
+ format = ' -outfmt "7 qseqid sacc pident length mismatch gapopen qstart qend sstart send evalue bitscore score qframe sframe qseq sseq qlen slen stitle" '
42
42
  elsif fmt ==:xml
43
43
  format = ' -outfmt 5 '
44
44
  end
45
+
46
+ out=''
47
+
48
+ if !file.nil? and !file.empty?
49
+ out=" -out #{file}"
50
+ end
45
51
 
46
52
  dust=''
47
53
 
48
- cmd = @blast_type+' '+dust+@extra_params + format + @database
54
+ cmd = @blast_type+' '+dust+@extra_params + format + @database + out
49
55
 
50
56
  return cmd
51
57
 
52
58
  end
53
59
 
54
60
  # do a blast to seqs
55
- def do_blast(seqs, fmt = :table,parse_output=true)
61
+ def do_blast(seqs, fmt = :table,parse_output=true,file=nil)
56
62
 
57
63
  if seqs.is_a?(Array)
58
64
  seq_fasta=seqs.join("\n")
@@ -60,10 +66,13 @@ class BatchBlast
60
66
  seq_fasta=seqs
61
67
  end
62
68
 
63
- cmd = get_blast_cmd(fmt)
69
+ cmd = get_blast_cmd(fmt,file)
64
70
 
65
71
  if !seqs.empty?
66
- res = BatchBlast.do_blast_cmd(seq_fasta,cmd)
72
+ res = BatchBlast.do_blast_cmd(seq_fasta,cmd)
73
+ if !file.nil? and !file.empty?
74
+ res=file
75
+ end
67
76
  else
68
77
  res=''
69
78
  end
@@ -120,7 +129,7 @@ class BatchBlast
120
129
  end
121
130
 
122
131
  # do blast to an array of Sequence objects
123
- def do_blast_seqs(seqs, fmt = :table,parse_output=true)
132
+ def do_blast_seqs(seqs, fmt = :table,parse_output=true, file=nil)
124
133
 
125
134
 
126
135
  cmd = get_blast_cmd(fmt)
@@ -132,7 +141,7 @@ class BatchBlast
132
141
  fastas.push seq.seq_fasta
133
142
  end
134
143
 
135
- return do_blast(fastas,fmt,parse_output)
144
+ return do_blast(fastas,fmt,parse_output,file)
136
145
 
137
146
  end
138
147
 
@@ -35,6 +35,9 @@ class BlastHit
35
35
  @s_beg = s_beg.to_i-1
36
36
  @s_end = s_end.to_i-1
37
37
  # puts "Set limits2 #{[@q_beg,@q_end,@s_beg,@s_end].join(',')}"
38
+
39
+ @s_len=0
40
+ @q_len=0
38
41
 
39
42
  @reversed = false
40
43
 
@@ -109,14 +112,22 @@ class BlastHit
109
112
  @q_seq = v
110
113
  end
111
114
 
115
+ def s_len=(v)
116
+ @s_len = v.to_i
117
+ end
118
+
119
+ def q_len=(v)
120
+ @q_len = v.to_i
121
+ end
122
+
112
123
  def full_subject_length=(v)
113
- @full_subject_length = v
124
+ @full_subject_length = v.to_i
114
125
  end
115
126
 
116
127
  # puts all hit info on a string
117
128
  def inspect
118
129
  res = "Hit: #{@subject_id.ljust(10)} #{@ident.to_s.rjust(4)} #{@align_len.to_s.rjust(2)} #{@mismatches.to_s.rjust(2)} #{@gaps.to_s.rjust(2)} #{@q_beg.to_s.rjust(5)} #{@q_end.to_s.rjust(5)} #{@s_beg.to_s.rjust(5)} #{@s_end.to_s.rjust(5)} #{@e_val.to_s.rjust(5)} #{@bit_score.to_s.rjust(5)} #{@reversed.to_s.rjust(5)}"
119
- res += " #{@score.to_s.rjust(5)} #{@acc.ljust(10)} #{@definition.ljust(10)} #{@q_frame.to_s.rjust(2)} #{@s_frame.to_s.rjust(2)} #{@full_subject_length.to_s.rjust(5)} #{@q_seq}.#{@s_seq}."
130
+ res += " #{@score.to_s.rjust(5)} #{@acc.ljust(10)} #{@definition.ljust(10)} #{@q_frame.to_s.rjust(2)} #{@s_frame.to_s.rjust(2)} #{@full_subject_length.to_s.rjust(5)} #{@q_seq}.#{@s_seq}.#{@q_len}.#{@s_len}"
120
131
 
121
132
  return res
122
133
  end
@@ -179,6 +190,6 @@ class BlastHit
179
190
  attr_reader :subject_id, :align_len, :gaps, :mismatches
180
191
  attr_accessor :reversed
181
192
  attr_reader :score, :acc, :definition, :q_frame, :s_frame, :full_subject_length, :ident, :e_val, :bit_score
182
- attr_reader :q_seq, :s_seq
193
+ attr_reader :q_seq, :s_seq, :s_len, :q_len
183
194
 
184
195
  end
@@ -108,7 +108,7 @@ class BlastTableResult < BlastResult
108
108
  # if the query doesn't exist, then create a new one,
109
109
  # else the hit will be added to the last query
110
110
 
111
- qseqid,sacc,pident,length,mismatch,gapopen,qstart,qend,sstart,send,evalue,bitscore,score,qframe,sframe,qseq,sseq = params
111
+ qseqid,sacc,pident,length,mismatch,gapopen,qstart,qend,sstart,send,evalue,bitscore,score,qframe,sframe,qseq,sseq,qlen,slen,stitle = params
112
112
 
113
113
  # creates the hit
114
114
  hit = BlastHit.new(qstart,qend,sstart,send)
@@ -126,11 +126,14 @@ class BlastTableResult < BlastResult
126
126
  hit.s_frame = sframe
127
127
 
128
128
  hit.subject_id = sacc
129
- hit.full_subject_length=0
130
- hit.definition=sacc
129
+ hit.full_subject_length=slen # era 0
130
+ hit.definition=stitle # era sacc
131
131
  hit.acc=sacc
132
132
  hit.q_seq=qseq
133
133
  hit.s_seq=sseq
134
+ hit.q_len=qlen
135
+ hit.s_len=slen
136
+
134
137
 
135
138
  query=find_query(@querys,qseqid)
136
139
 
@@ -143,6 +146,7 @@ class BlastTableResult < BlastResult
143
146
  @querys.push query
144
147
  end
145
148
 
149
+ query.full_query_length=qlen
146
150
 
147
151
  #Description
148
152
 
@@ -8,15 +8,26 @@ class TestScbiBlast < Test::Unit::TestCase
8
8
  end
9
9
 
10
10
  def test_blast
11
- blast=BatchBlast.new('-db ~/progs/ruby/DB/formatted/mids.fasta')
11
+ blast=BatchBlast.new('-db ~/progs/ruby/DB/formatted/mids.fasta -task blastn-short')
12
12
 
13
- seqs=[">GFIJCBT03F4XVR","GACTACACGACGACCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTNTTTTTNTTTTATTTTATTTTATTTATTATATATATATATATATATATATATATANNNNCNCACACANACACNNGAGNGNGNGNGAGNGAGNGAGTAGTAGTAGTAGTGTATATATACTACTACTACTACTACACACGACGACGTACGTACGTACGTACGTACGTACGTACGTACGTAACGTAAGTAAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTATATATATATATAGTAGTAGTAGTAGTAGTAGTAGTACGTACGTACGTACGTACGTACGTACGTACGACGACGACGACGACGACGACGACGAGATATATACTACTAACTAACTAACAACGTACGACGACGACGACGACGACGTACGTACGTACGTACGTACGTACTACTACTACTACGTACGTACGTACGTACGTACGTACGTACGTAGTAGTAGTAGTACGTACGTACGTCGTCGTCGTCGTCGTCGTCGTCGTACGTACGACGACGACGAGAGNGNGNNNNNNNNNNNN",">GFIJCBT03G3M1I","GACTACACGACGACTTTATTTATTATTTATTTATTTATTTATTTATTTATTTATTTATTTATTTTATTTTATTTTATTTTTATTTTTATTTTTATTTTTATTTTTTATTTTTTATTTTTTATTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTTATTTTTTTTTATTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTTTTTTTNNNNNNNN"]
13
+ seqs=[">GFIJCBT03F4XVR","ACGCGTCTAGTGACTACACGACGACCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTNTTTTTNTTTTATTTTATTTTATTTATTATATATATATATATATATATATATATANNNNCNCACACANACACNNGAGNGNGNGNGAGNGAGNGAGTAGTAGTAGTAGTGTATATATACTACTACTACTACTACACACGACGACGTACGTACGTACGTACGTACGTACGTACGTACGTAACGTAAGTAAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTATATATATATATAGTAGTAGTAGTAGTAGTAGTAGTACGTACGTACGTACGTACGTACGTACGTACGACGACGACGACGACGACGACGACGAGATATATACTACTAACTAACTAACAACGTACGACGACGACGACGACGACGTACGTACGTACGTACGTACGTACTACTACTACTACGTACGTACGTACGTACGTACGTACGTACGTAGTAGTAGTAGTACGTACGTACGTCGTCGTCGTCGTCGTCGTCGTCGTACGTACGACGACGACGAGAGNGNGNNNNNNNNNNNN",">GFIJCBT03G3M1I","GACTACACGACGACTTTATTTATTATTTATTTATTTATTTATTTATTTATTTATTTATTTATTTTATTTTATTTTATTTTTATTTTTATTTTTATTTTTATTTTTTATTTTTTATTTTTTATTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTTATTTTTTTTTATTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTTTTTTTNNNNNNNN"]
14
14
 
15
15
  res=blast.do_blast(seqs)
16
16
 
17
17
  puts res.inspect
18
18
  end
19
19
 
20
+ def test_blast_outfile
21
+ blast=BatchBlast.new('-db ~/progs/ruby/DB/formatted/mids.fasta -task blastn-short')
22
+
23
+ seqs=[">GFIJCBT03F4XVR","ACGCGTCTAGTGACTACACGACGACCTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTNTTTTTNTTTTATTTTATTTTATTTATTATATATATATATATATATATATATATANNNNCNCACACANACACNNGAGNGNGNGNGAGNGAGNGAGTAGTAGTAGTAGTGTATATATACTACTACTACTACTACACACGACGACGTACGTACGTACGTACGTACGTACGTACGTACGTAACGTAAGTAAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTAGTATATATATATATAGTAGTAGTAGTAGTAGTAGTAGTACGTACGTACGTACGTACGTACGTACGTACGACGACGACGACGACGACGACGACGAGATATATACTACTAACTAACTAACAACGTACGACGACGACGACGACGACGTACGTACGTACGTACGTACGTACTACTACTACTACGTACGTACGTACGTACGTACGTACGTACGTAGTAGTAGTAGTACGTACGTACGTCGTCGTCGTCGTCGTCGTCGTCGTACGTACGACGACGACGAGAGNGNGNNNNNNNNNNNN",">GFIJCBT03G3M1I","GACTACACGACGACTTTATTTATTATTTATTTATTTATTTATTTATTTATTTATTTATTTATTTTATTTTATTTTATTTTTATTTTTATTTTTATTTTTATTTTTTATTTTTTATTTTTTATTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTATTTTTTTTTATTTTTTTTTATTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTTAGTTTTTTTTTTTTTACGTTTTTTTTTTTTACGTTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTACGTTTTTTTTTTTTAGTTTTTTTTTTTTAGTTTTTTTTTTTTTTTTTTTNNNNNNNN"]
24
+
25
+ res=blast.do_blast(seqs,:table,true,'/tmp/blast.txt')
26
+ puts "="*30
27
+ puts res.inspect
28
+ end
29
+
30
+
20
31
  def test_querys
21
32
  res = BlastSimplexmlResult.new(File.join(File.dirname(__FILE__),'blast.xml'))
22
33
  # puts "BLAST.XML"
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scbi_blast
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.0.37
4
+ version: 0.0.40
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dario Guerrero & Almudena Bocinos
@@ -10,13 +9,12 @@ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
11
 
13
- date: 2012-11-28 00:00:00 Z
12
+ date: 2013-06-05 00:00:00 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: xml-simple
17
16
  prerelease: false
18
17
  requirement: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
19
  - - ">="
22
20
  - !ruby/object:Gem::Version
@@ -27,7 +25,6 @@ dependencies:
27
25
  name: hoe
28
26
  prerelease: false
29
27
  requirement: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
28
  requirements:
32
29
  - - ">="
33
30
  - !ruby/object:Gem::Version
@@ -74,6 +71,8 @@ files:
74
71
  homepage: http://www.scbi.uma.es/downloads
75
72
  licenses: []
76
73
 
74
+ metadata: {}
75
+
77
76
  post_install_message:
78
77
  rdoc_options:
79
78
  - --main
@@ -81,23 +80,20 @@ rdoc_options:
81
80
  require_paths:
82
81
  - lib
83
82
  required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
83
  requirements:
86
- - - ">="
84
+ - &id003
85
+ - ">="
87
86
  - !ruby/object:Gem::Version
88
87
  version: "0"
89
88
  required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
89
  requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- version: "0"
90
+ - *id003
95
91
  requirements: []
96
92
 
97
93
  rubyforge_project: scbi_blast
98
- rubygems_version: 1.8.24
94
+ rubygems_version: 2.0.3
99
95
  signing_key:
100
- specification_version: 3
96
+ specification_version: 4
101
97
  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.
102
98
  test_files:
103
99
  - test/test_helper.rb