bio 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/bio.rb +2 -2
- data/lib/bio/alignment.rb +12 -10
- data/lib/bio/appl/blast/format0.rb +30 -5
- data/lib/bio/appl/blast/wublast.rb +3 -2
- data/lib/bio/db/medline.rb +11 -5
- data/lib/bio/db/pdb/chain.rb +7 -1
- data/lib/bio/db/pdb/model.rb +7 -1
- data/lib/bio/db/pdb/pdb.rb +29 -9
- data/lib/bio/db/pdb/residue.rb +7 -1
- data/lib/bio/sequence/common.rb +4 -3
- data/test/unit/bio/test_alignment.rb +2 -2
- metadata +2 -2
data/lib/bio.rb
CHANGED
@@ -5,12 +5,12 @@
|
|
5
5
|
# Toshiaki Katayama <k@bioruby.org>
|
6
6
|
# License:: The Ruby License
|
7
7
|
#
|
8
|
-
# $Id: bio.rb,v 1.
|
8
|
+
# $Id: bio.rb,v 1.88 2007/12/29 19:19:07 k Exp $
|
9
9
|
#
|
10
10
|
|
11
11
|
module Bio
|
12
12
|
|
13
|
-
BIORUBY_VERSION = [1, 2,
|
13
|
+
BIORUBY_VERSION = [1, 2, 1].extend(Comparable)
|
14
14
|
|
15
15
|
### Basic data types
|
16
16
|
|
data/lib/bio/alignment.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
#
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: alignment.rb,v 1.
|
9
|
+
# $Id: alignment.rb,v 1.24 2007/12/26 14:08:02 ngoto Exp $
|
10
10
|
#
|
11
11
|
# = About Bio::Alignment
|
12
12
|
#
|
@@ -93,21 +93,21 @@ module Bio
|
|
93
93
|
|
94
94
|
# Returns regular expression for checking gap.
|
95
95
|
def gap_regexp
|
96
|
-
@gap_regexp or GAP_REGEXP
|
96
|
+
((defined? @gap_regexp) ? @gap_regexp : nil) or GAP_REGEXP
|
97
97
|
end
|
98
98
|
# regular expression for checking gap
|
99
99
|
attr_writer :gap_regexp
|
100
100
|
|
101
101
|
# Gap character.
|
102
102
|
def gap_char
|
103
|
-
@gap_char or GAP_CHAR
|
103
|
+
((defined? @gap_char) ? @gap_char : nil) or GAP_CHAR
|
104
104
|
end
|
105
105
|
# gap character
|
106
106
|
attr_writer :gap_char
|
107
107
|
|
108
108
|
# Character if the site is missing or unknown.
|
109
109
|
def missing_char
|
110
|
-
@missing_char or MISSING_CHAR
|
110
|
+
((defined? @missing_char) ? @missing_char : nil) or MISSING_CHAR
|
111
111
|
end
|
112
112
|
# Character if the site is missing or unknown.
|
113
113
|
attr_writer :missing_char
|
@@ -118,7 +118,7 @@ module Bio
|
|
118
118
|
# Otherwise, returns the first sequence's class.
|
119
119
|
# If no sequences are found, returns nil.
|
120
120
|
def seqclass
|
121
|
-
@seqclass or String
|
121
|
+
((defined? @seqclass) ? @seqclass : nil) or String
|
122
122
|
end
|
123
123
|
|
124
124
|
# The class of the sequence.
|
@@ -347,7 +347,7 @@ module Bio
|
|
347
347
|
# Otherwise, returns the first sequence's class.
|
348
348
|
# If no sequences are found, returns nil.
|
349
349
|
def seqclass
|
350
|
-
if @seqclass then
|
350
|
+
if (defined? @seqclass) and @seqclass then
|
351
351
|
@seqclass
|
352
352
|
else
|
353
353
|
klass = nil
|
@@ -481,11 +481,12 @@ module Bio
|
|
481
481
|
def each_window(window_size, step_size = 1)
|
482
482
|
return nil if window_size < 0
|
483
483
|
if step_size >= 0 then
|
484
|
-
|
484
|
+
last_step = nil
|
485
485
|
0.step(alignment_length - window_size, step_size) do |i|
|
486
486
|
yield alignment_window(i, window_size)
|
487
|
+
last_step = i
|
487
488
|
end
|
488
|
-
alignment_window((
|
489
|
+
alignment_window((last_step + window_size)..-1)
|
489
490
|
else
|
490
491
|
i = alignment_length - window_size
|
491
492
|
while i >= 0
|
@@ -1820,8 +1821,9 @@ module Bio
|
|
1820
1821
|
# Returns the key for a given sequence. If not found, returns nil.
|
1821
1822
|
def index(seq)
|
1822
1823
|
#(Hash-like)
|
1823
|
-
|
1824
|
+
last_key = nil
|
1824
1825
|
self.each_pair do |k, s|
|
1826
|
+
last_key = k
|
1825
1827
|
if s.class == seq.class then
|
1826
1828
|
r = (s == seq)
|
1827
1829
|
else
|
@@ -1829,7 +1831,7 @@ module Bio
|
|
1829
1831
|
end
|
1830
1832
|
break if r
|
1831
1833
|
end
|
1832
|
-
|
1834
|
+
last_key
|
1833
1835
|
end
|
1834
1836
|
|
1835
1837
|
# Sequences in the alignment are duplicated.
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# Copyright:: Copyright (C) 2003-2006 GOTO Naohisa <ng@bioruby.org>
|
5
5
|
# License:: The Ruby License
|
6
6
|
#
|
7
|
-
# $Id: format0.rb,v 1.
|
7
|
+
# $Id: format0.rb,v 1.25 2007/12/27 17:28:57 ngoto Exp $
|
8
8
|
#
|
9
9
|
# == Description
|
10
10
|
#
|
@@ -223,11 +223,22 @@ module Bio
|
|
223
223
|
end
|
224
224
|
|
225
225
|
# Returns the bibliography reference of the BLAST software.
|
226
|
+
# Note that this method shows only the first reference.
|
227
|
+
# When you want to get additional references,
|
228
|
+
# you can use <tt>references</tt> method.
|
226
229
|
def reference
|
227
|
-
|
228
|
-
|
230
|
+
references[0]
|
231
|
+
end
|
232
|
+
|
233
|
+
# Returns the bibliography references of the BLAST software.
|
234
|
+
# Returns an array of strings.
|
235
|
+
def references
|
236
|
+
unless defined?(@references)
|
237
|
+
@references = @f0references.collect do |x|
|
238
|
+
x.to_s.gsub(/\s+/, ' ').strip
|
239
|
+
end
|
229
240
|
end #unless
|
230
|
-
@
|
241
|
+
@references
|
231
242
|
end
|
232
243
|
|
233
244
|
# Returns the name (filename or title) of the database.
|
@@ -276,7 +287,10 @@ module Bio
|
|
276
287
|
# database line.
|
277
288
|
def format0_split_headers(data)
|
278
289
|
@f0header = data.shift
|
279
|
-
@
|
290
|
+
@f0references = []
|
291
|
+
while data[0] and /\AQuery\=/ !~ data[0]
|
292
|
+
@f0references.push data.shift
|
293
|
+
end
|
280
294
|
@f0query = data.shift
|
281
295
|
@f0database = data.shift
|
282
296
|
end
|
@@ -1020,6 +1034,10 @@ module Bio
|
|
1020
1034
|
pv = sc[2]
|
1021
1035
|
pv = '1' + pv if pv[0] == ?e
|
1022
1036
|
@pvalue = pv.to_f
|
1037
|
+
elsif sc.skip(/Method\:\s*(.+)/) then
|
1038
|
+
# signature of composition-based statistics method
|
1039
|
+
# for example, "Method: Composition-based stats."
|
1040
|
+
@stat_method = sc[1]
|
1023
1041
|
else
|
1024
1042
|
raise ScanError
|
1025
1043
|
end
|
@@ -1089,6 +1107,13 @@ module Bio
|
|
1089
1107
|
attr_reader :hit_strand if false #dummy
|
1090
1108
|
method_after_parse_score :hit_strand
|
1091
1109
|
|
1110
|
+
# statistical method for calculating evalue and/or score
|
1111
|
+
# (nil or a string)
|
1112
|
+
# (note that composition-based statistics for blastp or tblastn
|
1113
|
+
# were enabled by default after NCBI BLAST 2.2.17)
|
1114
|
+
attr_reader :stat_method if false #dummy
|
1115
|
+
method_after_parse_score :stat_method
|
1116
|
+
|
1092
1117
|
# Parses alignments.
|
1093
1118
|
def parse_alignment
|
1094
1119
|
unless defined?(@parse_alignment)
|
@@ -4,7 +4,7 @@
|
|
4
4
|
# Copyright:: Copyright (C) 2003 GOTO Naohisa <ng@bioruby.org>
|
5
5
|
# License:: The Ruby License
|
6
6
|
#
|
7
|
-
# $Id: wublast.rb,v 1.
|
7
|
+
# $Id: wublast.rb,v 1.12 2007/12/27 17:28:57 ngoto Exp $
|
8
8
|
#
|
9
9
|
# == Description
|
10
10
|
#
|
@@ -70,10 +70,11 @@ module Bio
|
|
70
70
|
# Splits headers.
|
71
71
|
def format0_split_headers(data)
|
72
72
|
@f0header = data.shift
|
73
|
+
@f0references = []
|
73
74
|
while r = data.first
|
74
75
|
case r
|
75
76
|
when /^Reference\: /
|
76
|
-
@
|
77
|
+
@f0references.push data.shift
|
77
78
|
when /^Copyright /
|
78
79
|
@f0copyright = data.shift
|
79
80
|
when /^Notice\: /
|
data/lib/bio/db/medline.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# Toshiaki Katayama <k@bioruby.org>
|
6
6
|
# License:: The Ruby License
|
7
7
|
#
|
8
|
-
# $Id: medline.rb,v 1.
|
8
|
+
# $Id: medline.rb,v 1.17 2007/12/21 05:12:41 k Exp $
|
9
9
|
#
|
10
10
|
|
11
11
|
require 'bio/db'
|
@@ -25,7 +25,6 @@ module Bio
|
|
25
25
|
#
|
26
26
|
class MEDLINE < NCBIDB
|
27
27
|
|
28
|
-
#
|
29
28
|
def initialize(entry)
|
30
29
|
@pubmed = Hash.new('')
|
31
30
|
|
@@ -37,6 +36,7 @@ class MEDLINE < NCBIDB
|
|
37
36
|
@pubmed[tag] += line[6..-1] if line.length > 6
|
38
37
|
end
|
39
38
|
end
|
39
|
+
attr_reader :pubmed
|
40
40
|
|
41
41
|
|
42
42
|
# returns a Reference object.
|
@@ -187,12 +187,18 @@ class MEDLINE < NCBIDB
|
|
187
187
|
end
|
188
188
|
alias affiliations ad
|
189
189
|
|
190
|
-
|
191
|
-
### Other MEDLINE tags
|
192
|
-
|
193
190
|
# AID - Article Identifier
|
194
191
|
# Article ID values may include the pii (controlled publisher identifier)
|
195
192
|
# or doi (Digital Object Identifier).
|
193
|
+
def doi
|
194
|
+
@pubmed['AID'][/(\S+) \[doi\]/, 1]
|
195
|
+
end
|
196
|
+
|
197
|
+
def pii
|
198
|
+
@pubmed['AID'][/(\S+) \[pii\]/, 1]
|
199
|
+
end
|
200
|
+
|
201
|
+
### Other MEDLINE tags
|
196
202
|
|
197
203
|
# CI - Copyright Information
|
198
204
|
# Copyright statement.
|
data/lib/bio/db/pdb/chain.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Naohisa Goto <ng@bioruby.org>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: chain.rb,v 1.
|
9
|
+
# $Id: chain.rb,v 1.9 2007/12/18 13:48:42 ngoto Exp $
|
10
10
|
#
|
11
11
|
# = Bio::PDB::Chain
|
12
12
|
#
|
@@ -172,6 +172,12 @@ module Bio
|
|
172
172
|
@residues.join('') + "TER\n" + @heterogens.join('')
|
173
173
|
end
|
174
174
|
|
175
|
+
# returns a string containing human-readable representation
|
176
|
+
# of this object.
|
177
|
+
def inspect
|
178
|
+
"#<#{self.class.to_s} id=#{chain_id.inspect} model.serial=#{(model ? model.serial : nil).inspect} residues.size=#{residues.size} heterogens.size=#{heterogens.size} aaseq=#{aaseq.inspect}>"
|
179
|
+
end
|
180
|
+
|
175
181
|
# gets an amino acid sequence of this chain from ATOM records
|
176
182
|
def aaseq
|
177
183
|
unless defined? @aaseq
|
data/lib/bio/db/pdb/model.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Naohisa Goto <ng@bioruby.org>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: model.rb,v 1.
|
9
|
+
# $Id: model.rb,v 1.10 2007/12/18 13:48:42 ngoto Exp $
|
10
10
|
#
|
11
11
|
# = Bio::PDB::Model
|
12
12
|
#
|
@@ -134,6 +134,12 @@ module Bio
|
|
134
134
|
end
|
135
135
|
return string
|
136
136
|
end
|
137
|
+
|
138
|
+
# returns a string containing human-readable representation
|
139
|
+
# of this object.
|
140
|
+
def inspect
|
141
|
+
"#<#{self.class.to_s} serial=#{serial.inspect} chains.size=#{chains.size}>"
|
142
|
+
end
|
137
143
|
|
138
144
|
end #class Model
|
139
145
|
|
data/lib/bio/db/pdb/pdb.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Alex Gutteridge <alexg@ebi.ac.uk>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: pdb.rb,v 1.
|
9
|
+
# $Id: pdb.rb,v 1.27 2007/12/28 14:43:44 ngoto Exp $
|
10
10
|
#
|
11
11
|
# = About Bio::PDB
|
12
12
|
#
|
@@ -233,7 +233,7 @@ module Bio
|
|
233
233
|
}
|
234
234
|
klass.module_eval {
|
235
235
|
symbolary.each do |x|
|
236
|
-
define_method(x) { do_parse; super }
|
236
|
+
define_method(x) { do_parse; super() }
|
237
237
|
end
|
238
238
|
}
|
239
239
|
klass
|
@@ -267,7 +267,7 @@ module Bio
|
|
267
267
|
}
|
268
268
|
klass.module_eval {
|
269
269
|
define_method(:initialize_from_string) { |str|
|
270
|
-
r = super
|
270
|
+
r = super(str)
|
271
271
|
do_parse
|
272
272
|
r
|
273
273
|
}
|
@@ -437,7 +437,8 @@ module Bio
|
|
437
437
|
def self.create_definition_hash
|
438
438
|
hash = {}
|
439
439
|
constants.each do |x|
|
440
|
-
|
440
|
+
x = x.intern # keep compatibility both Ruby 1.8 and 1.9
|
441
|
+
hash[x] = const_get(x) if /\A[A-Z][A-Z0-9]+\z/ =~ x.to_s
|
441
442
|
end
|
442
443
|
if x = const_get(:Default) then
|
443
444
|
hash.default = x
|
@@ -1380,22 +1381,27 @@ module Bio
|
|
1380
1381
|
End =
|
1381
1382
|
def_rec([ 2, 1, Pdb_Integer, :serial ]) # dummy field (always 0)
|
1382
1383
|
|
1383
|
-
Definition['END'] = End
|
1384
|
+
Definition['END'.intern] = End
|
1384
1385
|
|
1385
1386
|
# Basically just look up the class in Definition hash
|
1386
1387
|
# do some munging for JRNL and REMARK
|
1387
1388
|
def self.get_record_class(str)
|
1388
1389
|
t = fetch_record_name(str)
|
1390
|
+
t = t.intern unless t.empty?
|
1389
1391
|
if d = Definition[t] then
|
1390
1392
|
return d
|
1391
1393
|
end
|
1392
1394
|
case t
|
1393
|
-
when
|
1394
|
-
|
1395
|
-
|
1395
|
+
when :JRNL
|
1396
|
+
ts = str[12..15].to_s.strip
|
1397
|
+
ts = ts.intern unless ts.empty?
|
1398
|
+
d = Jrnl::Definition[ts]
|
1399
|
+
when :REMARK
|
1396
1400
|
case str[7..9].to_i
|
1397
1401
|
when 1
|
1398
|
-
|
1402
|
+
ts = str[12..15].to_s.strip
|
1403
|
+
ts = ts.intern unless ts.empty?
|
1404
|
+
d = Remark1::Definition[ts]
|
1399
1405
|
when 2
|
1400
1406
|
if str[28..37] == 'ANGSTROMS.' then
|
1401
1407
|
d = Remark2::ANGSTROMS
|
@@ -1417,13 +1423,21 @@ module Bio
|
|
1417
1423
|
|
1418
1424
|
Coordinate_fileds = {
|
1419
1425
|
'MODEL' => true,
|
1426
|
+
:MODEL => true,
|
1420
1427
|
'ENDMDL' => true,
|
1428
|
+
:ENDMDL => true,
|
1421
1429
|
'ATOM' => true,
|
1430
|
+
:ATOM => true,
|
1422
1431
|
'HETATM' => true,
|
1432
|
+
:HETATM => true,
|
1423
1433
|
'SIGATM' => true,
|
1434
|
+
:SIGATM => true,
|
1424
1435
|
'SIGUIJ' => true,
|
1436
|
+
:SIGUIJ => true,
|
1425
1437
|
'ANISOU' => true,
|
1438
|
+
:ANISOU => true,
|
1426
1439
|
'TER' => true,
|
1440
|
+
:TER => true,
|
1427
1441
|
}
|
1428
1442
|
|
1429
1443
|
# Creates a new Bio::PDB object from given <em>str</em>.
|
@@ -1876,6 +1890,12 @@ module Bio
|
|
1876
1890
|
f ? f.modNum : nil
|
1877
1891
|
end
|
1878
1892
|
|
1893
|
+
# returns a string containing human-readable representation
|
1894
|
+
# of this object.
|
1895
|
+
def inspect
|
1896
|
+
"#<#{self.class.to_s} entry_id=#{entry_id.inspect}>"
|
1897
|
+
end
|
1898
|
+
|
1879
1899
|
end #class PDB
|
1880
1900
|
|
1881
1901
|
end #module Bio
|
data/lib/bio/db/pdb/residue.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Naohisa Goto <ng@bioruby.org>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: residue.rb,v 1.
|
9
|
+
# $Id: residue.rb,v 1.14 2007/12/18 13:48:42 ngoto Exp $
|
10
10
|
#
|
11
11
|
# = Bio::PDB::Residue
|
12
12
|
#
|
@@ -129,6 +129,12 @@ module Bio
|
|
129
129
|
@atoms.join('')
|
130
130
|
end
|
131
131
|
|
132
|
+
# returns a string containing human-readable representation
|
133
|
+
# of this object.
|
134
|
+
def inspect
|
135
|
+
"#<#{self.class.to_s} resName=#{resName.inspect} id=#{residue_id.inspect} chain.id=#{(chain ? chain.id : nil).inspect} resSeq=#{resSeq.inspect} iCode=#{iCode.inspect} atoms.size=#{atoms.size}>"
|
136
|
+
end
|
137
|
+
|
132
138
|
# Always returns false.
|
133
139
|
#
|
134
140
|
# If the residue is HETATM, returns true.
|
data/lib/bio/sequence/common.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
# Ryan Raaum <ryan@raaum.org>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: common.rb,v 1.
|
9
|
+
# $Id: common.rb,v 1.6 2007/12/27 17:36:02 ngoto Exp $
|
10
10
|
#
|
11
11
|
|
12
12
|
module Bio
|
@@ -177,11 +177,12 @@ module Common
|
|
177
177
|
# * (optional) _step_size_: Fixnum (default 1)
|
178
178
|
# *Returns*:: new Bio::Sequence::NA/AA object
|
179
179
|
def window_search(window_size, step_size = 1)
|
180
|
-
|
180
|
+
last_step = 0
|
181
181
|
0.step(self.length - window_size, step_size) do |i|
|
182
182
|
yield self[i, window_size]
|
183
|
+
last_step = i
|
183
184
|
end
|
184
|
-
return self[
|
185
|
+
return self[last_step + window_size .. -1]
|
185
186
|
end
|
186
187
|
|
187
188
|
# Returns a float total value for the sequence given a hash of
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# 2005 Naohisa Goto <ng@bioruby.org>
|
7
7
|
# License:: The Ruby License
|
8
8
|
#
|
9
|
-
# $Id: test_alignment.rb,v 1.
|
9
|
+
# $Id: test_alignment.rb,v 1.12 2007/12/26 13:55:40 ngoto Exp $
|
10
10
|
#
|
11
11
|
|
12
12
|
require 'pathname'
|
@@ -426,7 +426,7 @@ module Bio
|
|
426
426
|
Sequence::AA.new('MNSA'),
|
427
427
|
Sequence::AA.new('MHTL'),
|
428
428
|
Sequence::AA.new('MQNV'),
|
429
|
-
Sequence::AA.new('MKKW')
|
429
|
+
Sequence::AA.new('MKKW')
|
430
430
|
]
|
431
431
|
assert_equal('*:. ', a.match_line)
|
432
432
|
assert_equal('*:. ', a.match_line(:type => :aa))
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
|
|
3
3
|
specification_version: 1
|
4
4
|
name: bio
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.2.
|
7
|
-
date: 2007-12-
|
6
|
+
version: 1.2.1
|
7
|
+
date: 2007-12-30 00:00:00 +09:00
|
8
8
|
summary: Bioinformatics library
|
9
9
|
require_paths:
|
10
10
|
- lib
|