bio 0.7.0 → 0.7.1
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/doc/Changes-0.7.rd +34 -13
- data/doc/Tutorial.rd.ja +16 -4
- data/lib/bio.rb +4 -17
- data/lib/bio/db.rb +8 -16
- data/lib/bio/db/pdb/atom.rb +40 -7
- data/lib/bio/db/pdb/chain.rb +152 -53
- data/lib/bio/db/pdb/model.rb +91 -39
- data/lib/bio/db/pdb/pdb.rb +431 -275
- data/lib/bio/db/pdb/residue.rb +114 -50
- data/lib/bio/db/pdb/utils.rb +245 -64
- data/lib/bio/sequence.rb +3 -3
- data/lib/bio/util/sirna.rb +3 -3
- data/test/functional/bio/io/test_soapwsdl.rb +64 -0
- data/test/runner.rb +5 -1
- data/test/unit/bio/db/test_rebase.rb +115 -0
- data/test/unit/bio/util/test_sirna.rb +10 -10
- metadata +274 -266
data/lib/bio/db/pdb/model.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
#
|
2
|
-
# bio/db/pdb/model.rb - model class for PDB
|
2
|
+
# = bio/db/pdb/model.rb - model class for PDB
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# Copyright:: Copyright (C) 2004, 2006
|
5
|
+
# Alex Gutteridge <alexg@ebi.ac.uk>
|
6
|
+
# Naohisa Goto <ng@bioruby.org>
|
7
|
+
# License:: LGPL
|
5
8
|
#
|
9
|
+
# $Id: model.rb,v 1.7 2006/01/20 13:54:08 ngoto Exp $
|
10
|
+
#
|
11
|
+
#--
|
6
12
|
# This library is free software; you can redistribute it and/or
|
7
13
|
# modify it under the terms of the GNU Lesser General Public
|
8
14
|
# License as published by the Free Software Foundation; either
|
@@ -16,8 +22,12 @@
|
|
16
22
|
# You should have received a copy of the GNU Lesser General Public
|
17
23
|
# License along with this library; if not, write to the Free Software
|
18
24
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
25
|
+
#++
|
26
|
+
#
|
27
|
+
# = Bio::PDB::Model
|
28
|
+
#
|
29
|
+
# Please refer Bio::PDB::Model.
|
19
30
|
#
|
20
|
-
# $Id: model.rb,v 1.2 2005/09/26 13:00:08 k Exp $
|
21
31
|
|
22
32
|
require 'bio/db/pdb'
|
23
33
|
|
@@ -25,82 +35,124 @@ module Bio
|
|
25
35
|
|
26
36
|
class PDB
|
27
37
|
|
28
|
-
#Model class
|
38
|
+
# Bio::PDB::Model is a class to store a model.
|
39
|
+
#
|
40
|
+
# The object would contain some chains (Bio::PDB::Chain objects).
|
29
41
|
class Model
|
30
42
|
|
31
43
|
include Utils
|
32
44
|
include AtomFinder
|
33
45
|
include ResidueFinder
|
34
46
|
include ChainFinder
|
47
|
+
|
48
|
+
include HetatmFinder
|
49
|
+
include HeterogenFinder
|
50
|
+
|
35
51
|
include Enumerable
|
36
52
|
include Comparable
|
37
53
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
def initialize(model_serial = nil, structure = nil)
|
42
|
-
|
43
|
-
@model_serial = model_serial
|
44
|
-
|
45
|
-
@structure = structure
|
46
|
-
|
47
|
-
@chains = Array.new
|
48
|
-
@solvent = Chain.new('',self)
|
54
|
+
# Creates a new Model object
|
55
|
+
def initialize(serial = nil, structure = nil)
|
49
56
|
|
57
|
+
@serial = serial
|
58
|
+
@structure = structure
|
59
|
+
@chains = []
|
60
|
+
@chains_hash = {}
|
61
|
+
@solvents = Chain.new('', self)
|
50
62
|
end
|
51
|
-
|
52
|
-
#
|
63
|
+
|
64
|
+
# chains in this model
|
65
|
+
attr_reader :chains
|
66
|
+
|
67
|
+
# (OBSOLETE) solvents (water, HOH) in this model
|
68
|
+
attr_reader :solvents
|
69
|
+
|
70
|
+
# serial number of this model. (Integer or nil)
|
71
|
+
attr_accessor :serial
|
72
|
+
|
73
|
+
# for backward compatibility
|
74
|
+
alias model_serial serial
|
75
|
+
|
76
|
+
# (reserved for future extension)
|
77
|
+
attr_reader :structure
|
78
|
+
|
79
|
+
# Adds a chain to this model
|
53
80
|
def addChain(chain)
|
54
|
-
raise "Expecting a Bio::PDB::Chain"
|
81
|
+
raise "Expecting a Bio::PDB::Chain" unless chain.is_a? Bio::PDB::Chain
|
55
82
|
@chains.push(chain)
|
56
|
-
|
83
|
+
if @chains_hash[chain.chain_id] then
|
84
|
+
$stderr.puts "Warning: chain_id #{chain.chain_id.inspect} is already used" if $VERBOSE
|
85
|
+
else
|
86
|
+
@chains_hash[chain.chain_id] = chain
|
87
|
+
end
|
88
|
+
self
|
89
|
+
end
|
90
|
+
|
91
|
+
# rehash chains hash
|
92
|
+
def rehash
|
93
|
+
begin
|
94
|
+
chains_bak = @chains
|
95
|
+
chains_hash_bak = @chains_hash
|
96
|
+
@chains = []
|
97
|
+
@chains_hash = {}
|
98
|
+
chains_bak.each do |chain|
|
99
|
+
self.addChain(chain)
|
100
|
+
end
|
101
|
+
rescue RuntimeError
|
102
|
+
@chains = chains_bak
|
103
|
+
@chains_hash = chains_hash_bak
|
104
|
+
raise
|
105
|
+
end
|
106
|
+
self
|
57
107
|
end
|
58
108
|
|
59
|
-
#
|
109
|
+
# (OBSOLETE) Adds a solvent molecule to this model
|
60
110
|
def addSolvent(solvent)
|
61
|
-
raise "Expecting a Bio::PDB::Residue"
|
62
|
-
@
|
111
|
+
raise "Expecting a Bio::PDB::Residue" unless solvent.is_a? Bio::PDB::Residue
|
112
|
+
@solvents.addResidue(solvent)
|
63
113
|
end
|
64
114
|
|
115
|
+
# (OBSOLETE) not recommended to use this method
|
65
116
|
def removeSolvent
|
66
|
-
@
|
117
|
+
@solvents = nil
|
67
118
|
end
|
68
119
|
|
69
|
-
#
|
70
|
-
def each
|
71
|
-
@chains.each
|
120
|
+
# Iterates over each chain
|
121
|
+
def each(&x) #:yields: chain
|
122
|
+
@chains.each(&x)
|
72
123
|
end
|
73
|
-
#Alias to override ChainFinder#each_chain
|
124
|
+
# Alias to override ChainFinder#each_chain
|
74
125
|
alias each_chain each
|
75
126
|
|
76
|
-
#
|
127
|
+
# Operator aimed to sort models based on serial number
|
77
128
|
def <=>(other)
|
78
|
-
return @
|
129
|
+
return @serial <=> other.model_serial
|
79
130
|
end
|
80
131
|
|
81
|
-
#Keyed access to chains
|
132
|
+
# Keyed access to chains
|
82
133
|
def [](key)
|
83
|
-
chain = @chains.find{ |chain| key == chain.id }
|
134
|
+
#chain = @chains.find{ |chain| key == chain.id }
|
135
|
+
@chains_hash[key]
|
84
136
|
end
|
85
137
|
|
86
|
-
#stringifies to chains
|
138
|
+
# stringifies to chains
|
87
139
|
def to_s
|
88
140
|
string = ""
|
89
141
|
if model_serial
|
90
|
-
string = "MODEL #{model_serial}" #Should use proper formatting
|
142
|
+
string = "MODEL #{model_serial}\n" #Should use proper formatting
|
91
143
|
end
|
92
144
|
@chains.each{ |chain| string << chain.to_s }
|
93
|
-
if solvent
|
94
|
-
|
95
|
-
end
|
145
|
+
#if solvent
|
146
|
+
# string << @solvent.to_s
|
147
|
+
#end
|
96
148
|
if model_serial
|
97
|
-
string << "ENDMDL"
|
149
|
+
string << "ENDMDL\n"
|
98
150
|
end
|
99
151
|
return string
|
100
152
|
end
|
101
153
|
|
102
154
|
end #class Model
|
103
155
|
|
104
|
-
end
|
156
|
+
end #class PDB
|
105
157
|
|
106
|
-
end
|
158
|
+
end #module Bio
|
data/lib/bio/db/pdb/pdb.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
#
|
2
|
-
# bio/db/pdb/pdb.rb - PDB database class for PDB file format
|
2
|
+
# = bio/db/pdb/pdb.rb - PDB database class for PDB file format
|
3
3
|
#
|
4
|
-
#
|
5
|
-
#
|
4
|
+
# Copyright:: Copyright (C) 2003-2006
|
5
|
+
# GOTO Naohisa <ngoto@gen-info.osaka-u.ac.jp>
|
6
|
+
# Alex Gutteridge <alexg@ebi.ac.uk>
|
7
|
+
# License:: LGPL
|
6
8
|
#
|
9
|
+
# $Id: pdb.rb,v 1.13 2006/01/20 13:54:08 ngoto Exp $
|
10
|
+
#
|
11
|
+
#--
|
7
12
|
# This library is free software; you can redistribute it and/or
|
8
13
|
# modify it under the terms of the GNU Lesser General Public
|
9
14
|
# License as published by the Free Software Foundation; either
|
@@ -17,12 +22,20 @@
|
|
17
22
|
# You should have received a copy of the GNU Lesser General Public
|
18
23
|
# License along with this library; if not, write to the Free Software
|
19
24
|
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
25
|
+
#++
|
20
26
|
#
|
21
|
-
#
|
27
|
+
# = About Bio::PDB
|
22
28
|
#
|
23
|
-
|
24
|
-
#
|
25
|
-
#
|
29
|
+
# Please refer document of Bio::PDB class.
|
30
|
+
#
|
31
|
+
# = References
|
32
|
+
#
|
33
|
+
# * ((<URL:http://www.rcsb.org/pdb/>))
|
34
|
+
# * PDB File Format Contents Guide Version 2.2 (20 December 1996)
|
35
|
+
# ((<URL:http://www.rcsb.org/pdb/file_formats/pdb/pdbguide2.2/guide2.2_frame.html>))
|
36
|
+
#
|
37
|
+
# = *** CAUTION ***
|
38
|
+
# This is beta version. Specs shall be changed frequently.
|
26
39
|
#
|
27
40
|
|
28
41
|
require 'bio/db/pdb'
|
@@ -30,20 +43,37 @@ require 'bio/data/aa'
|
|
30
43
|
|
31
44
|
module Bio
|
32
45
|
|
33
|
-
#This is the main PDB class which takes care of parsing, annotations
|
34
|
-
#and is the entry way to the co-ordinate data held in models
|
35
|
-
|
46
|
+
# This is the main PDB class which takes care of parsing, annotations
|
47
|
+
# and is the entry way to the co-ordinate data held in models.
|
48
|
+
#
|
49
|
+
# There are many related classes.
|
50
|
+
#
|
51
|
+
# Bio::PDB::Model
|
52
|
+
# Bio::PDB::Chain
|
53
|
+
# Bio::PDB::Residue
|
54
|
+
# Bio::PDB::Heterogen
|
55
|
+
# Bio::PDB::Record::ATOM
|
56
|
+
# Bio::PDB::Record::HETATM
|
57
|
+
# Bio::PDB::Record::*
|
58
|
+
# Bio::PDB::Coordinate
|
59
|
+
#
|
60
|
+
class PDB
|
36
61
|
|
37
62
|
include Utils
|
38
63
|
include AtomFinder
|
39
64
|
include ResidueFinder
|
40
65
|
include ChainFinder
|
41
66
|
include ModelFinder
|
67
|
+
|
68
|
+
include HetatmFinder
|
69
|
+
include HeterogenFinder
|
70
|
+
|
42
71
|
include Enumerable
|
43
72
|
|
73
|
+
# delimiter for reading via Bio::FlatFile
|
44
74
|
DELIMITER = RS = nil # 1 file 1 entry
|
45
75
|
|
46
|
-
#Modules required by the field definitions
|
76
|
+
# Modules required by the field definitions
|
47
77
|
module DataType
|
48
78
|
|
49
79
|
Pdb_Continuation = nil
|
@@ -154,10 +184,20 @@ module Bio
|
|
154
184
|
end #module ConstLikeMethod
|
155
185
|
end #module DataType
|
156
186
|
|
187
|
+
# The ancestor of every single PDB record class.
|
188
|
+
# It inherits <code>Struct</code> class.
|
189
|
+
# Basically, each line of a PDB file corresponds to
|
190
|
+
# an instance of each corresponding child class.
|
191
|
+
# If continuation exists, multiple lines may correspond to
|
192
|
+
# single instance.
|
193
|
+
#
|
157
194
|
class Record < Struct
|
158
195
|
include DataType
|
159
196
|
extend DataType::ConstLikeMethod
|
160
197
|
|
198
|
+
# Internal use only.
|
199
|
+
#
|
200
|
+
# parse filed definitions.
|
161
201
|
def self.parse_field_definitions(ary)
|
162
202
|
symbolhash = {}
|
163
203
|
symbolary = []
|
@@ -192,7 +232,12 @@ module Bio
|
|
192
232
|
[ symbolhash, symbolary, cont ]
|
193
233
|
end
|
194
234
|
private_class_method :parse_field_definitions
|
195
|
-
|
235
|
+
|
236
|
+
# Creates new class by given field definition
|
237
|
+
# The difference from new_direct() is the class
|
238
|
+
# created by the method does lazy evaluation.
|
239
|
+
#
|
240
|
+
# Internal use only.
|
196
241
|
def self.def_rec(*ary)
|
197
242
|
symbolhash, symbolary, cont = parse_field_definitions(ary)
|
198
243
|
|
@@ -210,6 +255,7 @@ module Bio
|
|
210
255
|
klass
|
211
256
|
end #def self.def_rec
|
212
257
|
|
258
|
+
# creates new class which inherits given class.
|
213
259
|
def self.new_inherit(klass)
|
214
260
|
newklass = Class.new(klass)
|
215
261
|
newklass.module_eval {
|
@@ -220,6 +266,9 @@ module Bio
|
|
220
266
|
newklass
|
221
267
|
end
|
222
268
|
|
269
|
+
# Creates new class by given field definition.
|
270
|
+
#
|
271
|
+
# Internal use only.
|
223
272
|
def self.new_direct(*ary)
|
224
273
|
symbolhash, symbolary, cont = parse_field_definitions(ary)
|
225
274
|
if cont
|
@@ -242,11 +291,14 @@ module Bio
|
|
242
291
|
klass
|
243
292
|
end #def self.new_direct
|
244
293
|
|
294
|
+
# symbols
|
245
295
|
def self.symbols
|
246
296
|
#p self
|
247
297
|
@symbols
|
248
298
|
end
|
249
299
|
|
300
|
+
# Returns true if this record has a field type which allows
|
301
|
+
# continuations.
|
250
302
|
def self.continue?
|
251
303
|
@cont
|
252
304
|
end
|
@@ -265,8 +317,11 @@ module Bio
|
|
265
317
|
end
|
266
318
|
end
|
267
319
|
|
268
|
-
#Return original string
|
269
|
-
#
|
320
|
+
# Return original string (except that "\n" are truncated)
|
321
|
+
# for this record (usually just @str, but
|
322
|
+
# sometimes add on the continuation data from other lines.
|
323
|
+
# Returns an array of string.
|
324
|
+
#
|
270
325
|
def original_data
|
271
326
|
if defined?(@cont_data) then
|
272
327
|
[ @str, *@cont_data ]
|
@@ -275,7 +330,11 @@ module Bio
|
|
275
330
|
end
|
276
331
|
end
|
277
332
|
|
278
|
-
# initialize from the string
|
333
|
+
# initialize this record from the given string.
|
334
|
+
# <em>str</em> must be a line (in PDB format).
|
335
|
+
#
|
336
|
+
# You can add continuation lines later using
|
337
|
+
# <code>add_continuation</code> method.
|
279
338
|
def initialize_from_string(str)
|
280
339
|
@str = str
|
281
340
|
@record_name = fetch_record_name(str)
|
@@ -283,8 +342,17 @@ module Bio
|
|
283
342
|
self
|
284
343
|
end
|
285
344
|
|
286
|
-
|
287
|
-
#
|
345
|
+
#--
|
346
|
+
# Called when we need to access the data, takes the string
|
347
|
+
# and the array of FieldDefs and parses it out.
|
348
|
+
#++
|
349
|
+
|
350
|
+
# In order to speeding up processing of PDB file format,
|
351
|
+
# fields have not been parsed before calling this method.
|
352
|
+
#
|
353
|
+
# Normally, it is automatically called and you don't explicitly
|
354
|
+
# need to call it .
|
355
|
+
#
|
288
356
|
def do_parse
|
289
357
|
return self if @parsed
|
290
358
|
str = @str
|
@@ -330,17 +398,19 @@ module Bio
|
|
330
398
|
self
|
331
399
|
end
|
332
400
|
|
401
|
+
# fetches record name
|
333
402
|
def fetch_record_name(str)
|
334
403
|
str[0..5].strip
|
335
404
|
end
|
336
405
|
private :fetch_record_name
|
337
406
|
|
407
|
+
# fetches record name
|
338
408
|
def self.fetch_record_name(str)
|
339
409
|
str[0..5].strip
|
340
410
|
end
|
341
411
|
private_class_method :fetch_record_name
|
342
412
|
|
343
|
-
# If given str can be the continuation of the current record,
|
413
|
+
# If given <em>str</em> can be the continuation of the current record,
|
344
414
|
# then return the order number of the continuation associated with
|
345
415
|
# the Pdb_Continuation field definition.
|
346
416
|
# Otherwise, returns -1.
|
@@ -349,16 +419,20 @@ module Bio
|
|
349
419
|
end
|
350
420
|
private :fetch_cont
|
351
421
|
|
422
|
+
# Record name of this record, e.g. "HEADER", "ATOM".
|
352
423
|
def record_name
|
353
|
-
@record_name or self.class.to_s.split(/\:\:/)[-1]
|
424
|
+
@record_name or self.class.to_s.split(/\:\:/)[-1].to_s.upcase
|
354
425
|
end
|
355
426
|
# keeping compatibility with old version
|
356
427
|
alias record_type record_name
|
357
428
|
|
429
|
+
# Internal use only.
|
430
|
+
#
|
358
431
|
# Adds continuation data to the record from str if str is
|
359
432
|
# really the continuation of current record.
|
360
433
|
# Returns self (= not nil) if str is the continuation.
|
361
434
|
# Otherwaise, returns false.
|
435
|
+
#
|
362
436
|
def add_continuation(str)
|
363
437
|
#Check that this record can continue
|
364
438
|
#and that str has the same type and definition
|
@@ -387,11 +461,19 @@ module Bio
|
|
387
461
|
hash
|
388
462
|
end
|
389
463
|
|
464
|
+
# same as Struct#inspect.
|
465
|
+
#
|
466
|
+
# Note that <code>do_parse</code> is automatically called
|
467
|
+
# before <code>inspect</code>.
|
468
|
+
#
|
469
|
+
# (Warning: The do_parse might sweep hidden bugs in PDB classes.)
|
390
470
|
def inspect
|
391
|
-
|
471
|
+
do_parse
|
392
472
|
super
|
393
473
|
end
|
394
474
|
|
475
|
+
#--
|
476
|
+
#
|
395
477
|
# definitions
|
396
478
|
# contains all the rules for parsing each field
|
397
479
|
# based on format V 2.2, 16-DEC-1996
|
@@ -405,13 +487,17 @@ module Bio
|
|
405
487
|
|
406
488
|
# XXXXXX =
|
407
489
|
# new([ start, end, type of data, symbol to access ], ...)
|
490
|
+
#
|
491
|
+
#++
|
408
492
|
|
493
|
+
# HEADER record class
|
409
494
|
HEADER =
|
410
495
|
def_rec([ 11, 50, Pdb_String, :classification ], #Pdb_String(40)
|
411
496
|
[ 51, 59, Pdb_Date, :depDate ],
|
412
497
|
[ 63, 66, Pdb_IDcode, :idCode ]
|
413
498
|
)
|
414
499
|
|
500
|
+
# OBSLTE record class
|
415
501
|
OBSLTE =
|
416
502
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
417
503
|
[ 12, 20, Pdb_Date, :repDate ],
|
@@ -426,42 +512,50 @@ module Bio
|
|
426
512
|
[ 67, 70, Pdb_IDcode, :rIdCode ]
|
427
513
|
)
|
428
514
|
|
515
|
+
# TITLE record class
|
429
516
|
TITLE =
|
430
517
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
431
518
|
[ 11, 70, Pdb_String, :title ]
|
432
519
|
)
|
433
520
|
|
521
|
+
# CAVEAT record class
|
434
522
|
CAVEAT =
|
435
523
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
436
524
|
[ 12, 15, Pdb_IDcode, :idcode ],
|
437
525
|
[ 20, 70, Pdb_String, :comment ]
|
438
526
|
)
|
439
527
|
|
528
|
+
# COMPND record class
|
440
529
|
COMPND =
|
441
530
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
442
531
|
[ 11, 70, Pdb_Specification_list, :compound ]
|
443
532
|
)
|
444
533
|
|
534
|
+
# SOURCE record class
|
445
535
|
SOURCE =
|
446
536
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
447
537
|
[ 11, 70, Pdb_Specification_list, :srcName ]
|
448
538
|
)
|
449
539
|
|
540
|
+
# KEYWDS record class
|
450
541
|
KEYWDS =
|
451
542
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
452
543
|
[ 11, 70, Pdb_List, :keywds ]
|
453
544
|
)
|
454
545
|
|
546
|
+
# EXPDTA record class
|
455
547
|
EXPDTA =
|
456
548
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
457
549
|
[ 11, 70, Pdb_SList, :technique ]
|
458
550
|
)
|
459
551
|
|
552
|
+
# AUTHOR record class
|
460
553
|
AUTHOR =
|
461
554
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
462
555
|
[ 11, 70, Pdb_List, :authorList ]
|
463
556
|
)
|
464
557
|
|
558
|
+
# REVDAT record class
|
465
559
|
REVDAT =
|
466
560
|
def_rec([ 8, 10, Pdb_Integer, :modNum ],
|
467
561
|
[ 11, 12, Pdb_Continuation, nil ],
|
@@ -474,6 +568,7 @@ module Bio
|
|
474
568
|
[ 61, 66, Pdb_LString(6), :record ]
|
475
569
|
)
|
476
570
|
|
571
|
+
# SPRSDE record class
|
477
572
|
SPRSDE =
|
478
573
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
479
574
|
[ 12, 20, Pdb_Date, :sprsdeDate ],
|
@@ -494,6 +589,7 @@ module Bio
|
|
494
589
|
# 'REMARK' is defined below
|
495
590
|
REMARK = nil
|
496
591
|
|
592
|
+
# DBREF record class
|
497
593
|
DBREF =
|
498
594
|
def_rec([ 8, 11, Pdb_IDcode, :idCode ],
|
499
595
|
[ 13, 13, Pdb_Character, :chainID ],
|
@@ -510,6 +606,7 @@ module Bio
|
|
510
606
|
[ 68, 68, Pdb_AChar, :dbinsEnd ]
|
511
607
|
)
|
512
608
|
|
609
|
+
# SEQADV record class
|
513
610
|
SEQADV =
|
514
611
|
def_rec([ 8, 11, Pdb_IDcode, :idCode ],
|
515
612
|
[ 13, 15, Pdb_Residue_name, :resName ],
|
@@ -523,6 +620,7 @@ module Bio
|
|
523
620
|
[ 50, 70, Pdb_LString, :conflict ]
|
524
621
|
)
|
525
622
|
|
623
|
+
# SEQRES record class
|
526
624
|
SEQRES =
|
527
625
|
def_rec(#[ 9, 10, Pdb_Integer, :serNum ],
|
528
626
|
[ 9, 10, Pdb_Continuation, nil ],
|
@@ -543,6 +641,7 @@ module Bio
|
|
543
641
|
[ 68, 70, Pdb_Residue_name, :resName ]
|
544
642
|
)
|
545
643
|
|
644
|
+
# MODRS record class
|
546
645
|
MODRES =
|
547
646
|
def_rec([ 8, 11, Pdb_IDcode, :idCode ],
|
548
647
|
[ 13, 15, Pdb_Residue_name, :resName ],
|
@@ -553,6 +652,7 @@ module Bio
|
|
553
652
|
[ 30, 70, Pdb_String, :comment ]
|
554
653
|
)
|
555
654
|
|
655
|
+
# HET record class
|
556
656
|
HET =
|
557
657
|
def_rec([ 8, 10, Pdb_LString(3), :hetID ],
|
558
658
|
[ 13, 13, Pdb_Character, :ChainID ],
|
@@ -562,18 +662,21 @@ module Bio
|
|
562
662
|
[ 31, 70, Pdb_String, :text ]
|
563
663
|
)
|
564
664
|
|
665
|
+
# HETNAM record class
|
565
666
|
HETNAM =
|
566
667
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
567
668
|
[ 12, 14, Pdb_LString(3), :hetID ],
|
568
669
|
[ 16, 70, Pdb_String, :text ]
|
569
670
|
)
|
570
671
|
|
672
|
+
# HETSYN record class
|
571
673
|
HETSYN =
|
572
674
|
def_rec([ 9, 10, Pdb_Continuation, nil ],
|
573
675
|
[ 12, 14, Pdb_LString(3), :hetID ],
|
574
676
|
[ 16, 70, Pdb_SList, :hetSynonyms ]
|
575
677
|
)
|
576
678
|
|
679
|
+
# FORMUL record class
|
577
680
|
FORMUL =
|
578
681
|
def_rec([ 9, 10, Pdb_Integer, :compNum ],
|
579
682
|
[ 13, 15, Pdb_LString(3), :hetID ],
|
@@ -582,6 +685,7 @@ module Bio
|
|
582
685
|
[ 20, 70, Pdb_String, :text ]
|
583
686
|
)
|
584
687
|
|
688
|
+
# HELIX record class
|
585
689
|
HELIX =
|
586
690
|
def_rec([ 8, 10, Pdb_Integer, :serNum ],
|
587
691
|
#[ 12, 14, Pdb_LString(3), :helixID ],
|
@@ -599,6 +703,7 @@ module Bio
|
|
599
703
|
[ 72, 76, Pdb_Integer, :length ]
|
600
704
|
)
|
601
705
|
|
706
|
+
# SHEET record class
|
602
707
|
SHEET =
|
603
708
|
def_rec([ 8, 10, Pdb_Integer, :strand ],
|
604
709
|
#[ 12, 14, Pdb_LString(3), :sheetID ],
|
@@ -625,6 +730,7 @@ module Bio
|
|
625
730
|
[ 70, 70, Pdb_AChar, :prevICode ]
|
626
731
|
)
|
627
732
|
|
733
|
+
# TURN record class
|
628
734
|
TURN =
|
629
735
|
def_rec([ 8, 10, Pdb_Integer, :seq ],
|
630
736
|
#[ 12, 14, Pdb_LString(3), :turnId ],
|
@@ -640,6 +746,7 @@ module Bio
|
|
640
746
|
[ 41, 70, Pdb_String, :comment ]
|
641
747
|
)
|
642
748
|
|
749
|
+
# SSBOND record class
|
643
750
|
SSBOND =
|
644
751
|
def_rec([ 8, 10, Pdb_Integer, :serNum ],
|
645
752
|
[ 12, 14, Pdb_LString(3), :pep1 ], # "CYS"
|
@@ -654,6 +761,7 @@ module Bio
|
|
654
761
|
[ 67, 72, Pdb_SymOP, :sym2 ]
|
655
762
|
)
|
656
763
|
|
764
|
+
# LINK record class
|
657
765
|
LINK =
|
658
766
|
def_rec([ 13, 16, Pdb_Atom, :name1 ],
|
659
767
|
[ 17, 17, Pdb_Character, :altLoc1 ],
|
@@ -671,6 +779,7 @@ module Bio
|
|
671
779
|
[ 67, 72, Pdb_SymOP, :sym2 ]
|
672
780
|
)
|
673
781
|
|
782
|
+
# HYDBND record class
|
674
783
|
HYDBND =
|
675
784
|
def_rec([ 13, 16, Pdb_Atom, :name1 ],
|
676
785
|
[ 17, 17, Pdb_Character, :altLoc1 ],
|
@@ -693,6 +802,7 @@ module Bio
|
|
693
802
|
[ 67, 72, Pdb_SymOP, :sym2 ]
|
694
803
|
)
|
695
804
|
|
805
|
+
# SLTBRG record class
|
696
806
|
SLTBRG =
|
697
807
|
def_rec([ 13, 16, Pdb_Atom, :atom1 ],
|
698
808
|
[ 17, 17, Pdb_Character, :altLoc1 ],
|
@@ -710,6 +820,7 @@ module Bio
|
|
710
820
|
[ 67, 72, Pdb_SymOP, :sym2 ]
|
711
821
|
)
|
712
822
|
|
823
|
+
# CISPEP record class
|
713
824
|
CISPEP =
|
714
825
|
def_rec([ 8, 10, Pdb_Integer, :serNum ],
|
715
826
|
[ 12, 14, Pdb_LString(3), :pep1 ],
|
@@ -724,6 +835,7 @@ module Bio
|
|
724
835
|
[ 54, 59, Pdb_Real('6.2'), :measure ]
|
725
836
|
)
|
726
837
|
|
838
|
+
# SITE record class
|
727
839
|
SITE =
|
728
840
|
def_rec([ 8, 10, Pdb_Integer, :seqNum ],
|
729
841
|
[ 12, 14, Pdb_LString(3), :siteID ],
|
@@ -746,6 +858,7 @@ module Bio
|
|
746
858
|
[ 61, 61, Pdb_AChar, :iCode4 ]
|
747
859
|
)
|
748
860
|
|
861
|
+
# CRYST1 record class
|
749
862
|
CRYST1 =
|
750
863
|
def_rec([ 7, 15, Pdb_Real('9.3'), :a ],
|
751
864
|
[ 16, 24, Pdb_Real('9.3'), :b ],
|
@@ -757,6 +870,8 @@ module Bio
|
|
757
870
|
[ 67, 70, Pdb_Integer, :z ]
|
758
871
|
)
|
759
872
|
|
873
|
+
# ORIGX1 record class
|
874
|
+
#
|
760
875
|
# ORIGXn n=1, 2, or 3
|
761
876
|
ORIGX1 =
|
762
877
|
def_rec([ 11, 20, Pdb_Real('10.6'), :On1 ],
|
@@ -765,9 +880,13 @@ module Bio
|
|
765
880
|
[ 46, 55, Pdb_Real('10.5'), :Tn ]
|
766
881
|
)
|
767
882
|
|
883
|
+
# ORIGX2 record class
|
768
884
|
ORIGX2 = new_inherit(ORIGX1)
|
885
|
+
# ORIGX3 record class
|
769
886
|
ORIGX3 = new_inherit(ORIGX1)
|
770
887
|
|
888
|
+
# SCALE1 record class
|
889
|
+
#
|
771
890
|
# SCALEn n=1, 2, or 3
|
772
891
|
SCALE1 =
|
773
892
|
def_rec([ 11, 20, Pdb_Real('10.6'), :Sn1 ],
|
@@ -776,9 +895,13 @@ module Bio
|
|
776
895
|
[ 46, 55, Pdb_Real('10.5'), :Un ]
|
777
896
|
)
|
778
897
|
|
898
|
+
# SCALE2 record class
|
779
899
|
SCALE2 = new_inherit(SCALE1)
|
900
|
+
# SCALE3 record class
|
780
901
|
SCALE3 = new_inherit(SCALE1)
|
781
902
|
|
903
|
+
# MTRIX1 record class
|
904
|
+
#
|
782
905
|
# MTRIXn n=1,2, or 3
|
783
906
|
MTRIX1 =
|
784
907
|
def_rec([ 8, 10, Pdb_Integer, :serial ],
|
@@ -789,9 +912,12 @@ module Bio
|
|
789
912
|
[ 60, 60, Pdb_Integer, :iGiven ]
|
790
913
|
)
|
791
914
|
|
915
|
+
# MTRIX2 record class
|
792
916
|
MTRIX2 = new_inherit(MTRIX1)
|
917
|
+
# MTRIX3 record class
|
793
918
|
MTRIX3 = new_inherit(MTRIX1)
|
794
919
|
|
920
|
+
# TVECT record class
|
795
921
|
TVECT =
|
796
922
|
def_rec([ 8, 10, Pdb_Integer, :serial ],
|
797
923
|
[ 11, 20, Pdb_Real('10.5'), :t1 ],
|
@@ -800,11 +926,13 @@ module Bio
|
|
800
926
|
[ 41, 70, Pdb_String, :text ]
|
801
927
|
)
|
802
928
|
|
929
|
+
# MODEL record class
|
803
930
|
MODEL =
|
804
931
|
def_rec([ 11, 14, Pdb_Integer, :serial ]
|
805
932
|
)
|
806
933
|
# ChangeLog: model_serial are changed to serial
|
807
934
|
|
935
|
+
# ATOM record class
|
808
936
|
ATOM =
|
809
937
|
new_direct([ 7, 11, Pdb_Integer, :serial ],
|
810
938
|
[ 13, 16, Pdb_Atom, :name ],
|
@@ -823,6 +951,7 @@ module Bio
|
|
823
951
|
[ 79, 80, Pdb_LString(2), :charge ]
|
824
952
|
)
|
825
953
|
|
954
|
+
# ATOM record class
|
826
955
|
class ATOM
|
827
956
|
|
828
957
|
include Utils
|
@@ -830,11 +959,21 @@ module Bio
|
|
830
959
|
|
831
960
|
# for backward compatibility
|
832
961
|
alias occ occupancy
|
962
|
+
# for backward compatibility
|
833
963
|
alias bfac tempFactor
|
834
964
|
|
835
965
|
# residue the atom belongs to.
|
836
966
|
attr_accessor :residue
|
837
967
|
|
968
|
+
# SIGATM record
|
969
|
+
attr_accessor :sigatm
|
970
|
+
|
971
|
+
# ANISOU record
|
972
|
+
attr_accessor :anisou
|
973
|
+
|
974
|
+
# TER record
|
975
|
+
attr_accessor :ter
|
976
|
+
|
838
977
|
#Returns a Coordinate class instance of the xyz positions
|
839
978
|
def xyz
|
840
979
|
Coordinate[ x, y, z ]
|
@@ -870,8 +1009,27 @@ module Bio
|
|
870
1009
|
@parsed = true
|
871
1010
|
self
|
872
1011
|
end
|
1012
|
+
|
1013
|
+
def to_s
|
1014
|
+
sprintf("%-6s%5d %-4s%-1s%3s %-1s%4d%-1s %8.3f%8.3f%8.3f%6.2f%6.2f %-4s%2s%-2s\n",
|
1015
|
+
self.record_name,
|
1016
|
+
self.serial,
|
1017
|
+
self.name,
|
1018
|
+
self.altLoc,
|
1019
|
+
self.resName,
|
1020
|
+
self.chainID,
|
1021
|
+
self.resSeq,
|
1022
|
+
self.iCode,
|
1023
|
+
self.x, self.y, self.z,
|
1024
|
+
self.occupancy,
|
1025
|
+
self.tempFactor,
|
1026
|
+
self.segID,
|
1027
|
+
self.element,
|
1028
|
+
self.charge)
|
1029
|
+
end
|
873
1030
|
end #class ATOM
|
874
1031
|
|
1032
|
+
# SIGATM record class
|
875
1033
|
SIGATM =
|
876
1034
|
def_rec([ 7, 11, Pdb_Integer, :serial ],
|
877
1035
|
[ 13, 16, Pdb_Atom, :name ],
|
@@ -890,6 +1048,7 @@ module Bio
|
|
890
1048
|
[ 79, 80, Pdb_LString(2), :charge ]
|
891
1049
|
)
|
892
1050
|
|
1051
|
+
# ANISOU record class
|
893
1052
|
ANISOU =
|
894
1053
|
def_rec([ 7, 11, Pdb_Integer, :serial ],
|
895
1054
|
[ 13, 16, Pdb_Atom, :name ],
|
@@ -909,6 +1068,13 @@ module Bio
|
|
909
1068
|
[ 79, 80, Pdb_LString(2), :charge ]
|
910
1069
|
)
|
911
1070
|
|
1071
|
+
# ANISOU record class
|
1072
|
+
class ANISOU
|
1073
|
+
# SIGUIJ record
|
1074
|
+
attr_accessor :siguij
|
1075
|
+
end #class ANISOU
|
1076
|
+
|
1077
|
+
# SIGUIJ record class
|
912
1078
|
SIGUIJ =
|
913
1079
|
def_rec([ 7, 11, Pdb_Integer, :serial ],
|
914
1080
|
[ 13, 16, Pdb_Atom, :name ],
|
@@ -928,6 +1094,7 @@ module Bio
|
|
928
1094
|
[ 79, 80, Pdb_LString(2), :charge ]
|
929
1095
|
)
|
930
1096
|
|
1097
|
+
# TER record class
|
931
1098
|
TER =
|
932
1099
|
def_rec([ 7, 11, Pdb_Integer, :serial ],
|
933
1100
|
[ 18, 20, Pdb_Residue_name, :resName ],
|
@@ -954,12 +1121,19 @@ module Bio
|
|
954
1121
|
# [ 79, 80, Pdb_LString(2), :charge ]
|
955
1122
|
# )
|
956
1123
|
|
1124
|
+
# HETATM record class
|
957
1125
|
HETATM = new_inherit(ATOM)
|
958
1126
|
|
1127
|
+
# HETATM record class.
|
1128
|
+
# It inherits ATOM class.
|
1129
|
+
class HETATM; end
|
1130
|
+
|
1131
|
+
# ENDMDL record class
|
959
1132
|
ENDMDL =
|
960
1133
|
def_rec([ 2, 1, Pdb_Integer, :serial ] # dummy field (always 0)
|
961
1134
|
)
|
962
1135
|
|
1136
|
+
# CONECT record class
|
963
1137
|
CONECT =
|
964
1138
|
def_rec([ 7, 11, Pdb_Integer, :serial ],
|
965
1139
|
[ 12, 16, Pdb_Integer, :serial ],
|
@@ -974,6 +1148,7 @@ module Bio
|
|
974
1148
|
[ 57, 61, Pdb_Integer, :serial ]
|
975
1149
|
)
|
976
1150
|
|
1151
|
+
# MASTER record class
|
977
1152
|
MASTER =
|
978
1153
|
def_rec([ 11, 15, Pdb_Integer, :numRemark ],
|
979
1154
|
[ 16, 20, Pdb_Integer, "0" ],
|
@@ -989,27 +1164,32 @@ module Bio
|
|
989
1164
|
[ 66, 70, Pdb_Integer, :numSeq ]
|
990
1165
|
)
|
991
1166
|
|
1167
|
+
# JRNL record classes
|
992
1168
|
class Jrnl < self
|
993
1169
|
# subrecord of JRNL
|
994
1170
|
# 13, 16
|
1171
|
+
# JRNL AUTH record class
|
995
1172
|
AUTH =
|
996
1173
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "AUTH"
|
997
1174
|
[ 17, 18, Pdb_Continuation, nil ],
|
998
1175
|
[ 20, 70, Pdb_List, :authorList ]
|
999
1176
|
)
|
1000
1177
|
|
1178
|
+
# JRNL TITL record class
|
1001
1179
|
TITL =
|
1002
1180
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "TITL"
|
1003
1181
|
[ 17, 18, Pdb_Continuation, nil ],
|
1004
1182
|
[ 20, 70, Pdb_LString, :title ]
|
1005
1183
|
)
|
1006
1184
|
|
1185
|
+
# JRNL EDIT record class
|
1007
1186
|
EDIT =
|
1008
1187
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "EDIT"
|
1009
1188
|
[ 17, 18, Pdb_Continuation, nil ],
|
1010
1189
|
[ 20, 70, Pdb_List, :editorList ]
|
1011
1190
|
)
|
1012
1191
|
|
1192
|
+
# JRNL REF record class
|
1013
1193
|
REF =
|
1014
1194
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "REF"
|
1015
1195
|
[ 17, 18, Pdb_Continuation, nil ],
|
@@ -1020,12 +1200,14 @@ module Bio
|
|
1020
1200
|
[ 63, 66, Pdb_Integer, :year ]
|
1021
1201
|
)
|
1022
1202
|
|
1203
|
+
# JRNL PUBL record class
|
1023
1204
|
PUBL =
|
1024
1205
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "PUBL"
|
1025
1206
|
[ 17, 18, Pdb_Continuation, nil ],
|
1026
1207
|
[ 20, 70, Pdb_LString, :pub ]
|
1027
1208
|
)
|
1028
1209
|
|
1210
|
+
# JRNL REFN record class
|
1029
1211
|
REFN =
|
1030
1212
|
def_rec([ 13, 16, Pdb_String, :sub_record ], # "REFN"
|
1031
1213
|
[ 20, 23, Pdb_LString(4), "ASTM" ],
|
@@ -1037,21 +1219,25 @@ module Bio
|
|
1037
1219
|
)
|
1038
1220
|
|
1039
1221
|
# default or unknown record
|
1040
|
-
#
|
1222
|
+
#
|
1041
1223
|
Default =
|
1042
1224
|
def_rec([ 13, 16, Pdb_String, :sub_record ]) # ""
|
1043
1225
|
|
1226
|
+
# definitions (hash)
|
1044
1227
|
Definition = create_definition_hash
|
1045
1228
|
end #class JRNL
|
1046
1229
|
|
1230
|
+
# REMARK record classes for REMARK 1
|
1047
1231
|
class Remark1 < self
|
1048
1232
|
# 13, 16
|
1233
|
+
# REMARK 1 REFERENCE record class
|
1049
1234
|
EFER =
|
1050
1235
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1051
1236
|
[ 12, 20, Pdb_String, :sub_record ], # "REFERENCE"
|
1052
1237
|
[ 22, 70, Pdb_Integer, :refNum ]
|
1053
1238
|
)
|
1054
1239
|
|
1240
|
+
# REMARK 1 AUTH record class
|
1055
1241
|
AUTH =
|
1056
1242
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1057
1243
|
[ 13, 16, Pdb_String, :sub_record ], # "AUTH"
|
@@ -1059,6 +1245,7 @@ module Bio
|
|
1059
1245
|
[ 20, 70, Pdb_List, :authorList ]
|
1060
1246
|
)
|
1061
1247
|
|
1248
|
+
# REMARK 1 TITL record class
|
1062
1249
|
TITL =
|
1063
1250
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1064
1251
|
[ 13, 16, Pdb_String, :sub_record ], # "TITL"
|
@@ -1066,6 +1253,7 @@ module Bio
|
|
1066
1253
|
[ 20, 70, Pdb_LString, :title ]
|
1067
1254
|
)
|
1068
1255
|
|
1256
|
+
# REMARK 1 EDIT record class
|
1069
1257
|
EDIT =
|
1070
1258
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1071
1259
|
[ 13, 16, Pdb_String, :sub_record ], # "EDIT"
|
@@ -1073,6 +1261,7 @@ module Bio
|
|
1073
1261
|
[ 20, 70, Pdb_LString, :editorList ]
|
1074
1262
|
)
|
1075
1263
|
|
1264
|
+
# REMARK 1 REF record class
|
1076
1265
|
REF =
|
1077
1266
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1078
1267
|
[ 13, 16, Pdb_LString(3), :sub_record ], # "REF"
|
@@ -1084,6 +1273,7 @@ module Bio
|
|
1084
1273
|
[ 63, 66, Pdb_Integer, :year ]
|
1085
1274
|
)
|
1086
1275
|
|
1276
|
+
# REMARK 1 PUBL record class
|
1087
1277
|
PUBL =
|
1088
1278
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1089
1279
|
[ 13, 16, Pdb_String, :sub_record ], # "PUBL"
|
@@ -1091,6 +1281,7 @@ module Bio
|
|
1091
1281
|
[ 20, 70, Pdb_LString, :pub ]
|
1092
1282
|
)
|
1093
1283
|
|
1284
|
+
# REMARK 1 REFN record class
|
1094
1285
|
REFN =
|
1095
1286
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1096
1287
|
[ 13, 16, Pdb_String, :sub_record ], # "REFN"
|
@@ -1102,14 +1293,17 @@ module Bio
|
|
1102
1293
|
[ 68, 70, Pdb_LString(4), :coden ]
|
1103
1294
|
)
|
1104
1295
|
|
1296
|
+
# default (or unknown) record class for REMARK 1
|
1105
1297
|
Default =
|
1106
1298
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ], # "1"
|
1107
1299
|
[ 13, 16, Pdb_String, :sub_record ] # ""
|
1108
1300
|
)
|
1109
1301
|
|
1302
|
+
# definitions (hash)
|
1110
1303
|
Definition = create_definition_hash
|
1111
1304
|
end #class Remark1
|
1112
1305
|
|
1306
|
+
# REMARK record classes for REMARK 2
|
1113
1307
|
class Remark2 < self
|
1114
1308
|
# 29, 38 == 'ANGSTROMS.'
|
1115
1309
|
ANGSTROMS =
|
@@ -1135,16 +1329,21 @@ module Bio
|
|
1135
1329
|
)
|
1136
1330
|
end #class Remark2
|
1137
1331
|
|
1332
|
+
# REMARK record class for REMARK n (n>=3)
|
1138
1333
|
RemarkN =
|
1139
1334
|
def_rec([ 8, 10, Pdb_Integer, :remarkNum ],
|
1140
1335
|
[ 12, 70, Pdb_LString, :text ]
|
1141
1336
|
)
|
1142
1337
|
|
1338
|
+
# default (or unknown) record class
|
1143
1339
|
Default = def_rec([ 8, 70, Pdb_LString, :text ])
|
1144
1340
|
|
1341
|
+
# definitions (hash)
|
1145
1342
|
Definition = create_definition_hash
|
1146
1343
|
|
1147
|
-
#
|
1344
|
+
# END record class.
|
1345
|
+
#
|
1346
|
+
# Because END is a reserved word of Ruby, it is separately
|
1148
1347
|
# added to the hash
|
1149
1348
|
End =
|
1150
1349
|
def_rec([ 2, 1, Pdb_Integer, :serial ]) # dummy field (always 0)
|
@@ -1195,6 +1394,7 @@ module Bio
|
|
1195
1394
|
'TER' => true,
|
1196
1395
|
}
|
1197
1396
|
|
1397
|
+
# Creates a new Bio::PDB object from given <em>str</em>.
|
1198
1398
|
def initialize(str)
|
1199
1399
|
#Aha! Our entry into the world of PDB parsing, we initialise a PDB
|
1200
1400
|
#object with the whole PDB file as a string
|
@@ -1211,9 +1411,11 @@ module Bio
|
|
1211
1411
|
cont = false
|
1212
1412
|
|
1213
1413
|
#Empty current model
|
1214
|
-
cModel
|
1215
|
-
cChain
|
1216
|
-
cResidue
|
1414
|
+
cModel = Model.new
|
1415
|
+
cChain = nil #Chain.new
|
1416
|
+
cResidue = nil #Residue.new
|
1417
|
+
cLigand = nil #Heterogen.new
|
1418
|
+
c_atom = nil
|
1217
1419
|
|
1218
1420
|
#Goes through each line and replace that line with a PDB::Record
|
1219
1421
|
@data.collect! do |line|
|
@@ -1236,87 +1438,107 @@ module Bio
|
|
1236
1438
|
end
|
1237
1439
|
|
1238
1440
|
# Do something for ATOM and HETATM
|
1239
|
-
|
1240
|
-
|
1241
|
-
residueID = "#{f.resSeq}#{f.iCode.strip}".strip
|
1242
|
-
#p f
|
1243
|
-
|
1244
|
-
if f.chainID == cChain.id
|
1441
|
+
if key == 'ATOM' or key == 'HETATM' then
|
1442
|
+
if cChain and f.chainID == cChain.id
|
1245
1443
|
chain = cChain
|
1246
|
-
elsif !(chain = cModel[f.chainID])
|
1247
|
-
#If we don't have chain, add a new chain
|
1248
|
-
newChain = Chain.new(f.chainID, cModel)
|
1249
|
-
cModel.addChain(newChain)
|
1250
|
-
cChain = newChain
|
1251
|
-
chain = newChain
|
1252
|
-
end
|
1253
|
-
|
1254
|
-
if !newChain and residueID == cResidue.id
|
1255
|
-
residue = cResidue
|
1256
|
-
elsif newChain or !(residue = chain[residueID])
|
1257
|
-
newResidue = Residue.new(f.resName, f.resSeq, f.iCode, chain)
|
1258
|
-
chain.addResidue(newResidue)
|
1259
|
-
cResidue = newResidue
|
1260
|
-
residue = newResidue
|
1261
|
-
end
|
1262
|
-
|
1263
|
-
f.residue = residue
|
1264
|
-
residue.addAtom(f)
|
1265
|
-
|
1266
|
-
when 'HETATM'
|
1267
|
-
|
1268
|
-
#Each model has a special solvent chain
|
1269
|
-
#any chain id with the solvent is lost
|
1270
|
-
#I can fix this if really needed
|
1271
|
-
if f.resName == 'HOH'
|
1272
|
-
solvent = Residue.new(f.resName, f.resSeq, f.iCode,
|
1273
|
-
cModel.solvent, true)
|
1274
|
-
#p solvent
|
1275
|
-
f.residue = solvent
|
1276
|
-
solvent.addAtom(f)
|
1277
|
-
cModel.addSolvent(solvent)
|
1278
|
-
|
1279
1444
|
else
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
residueID = "#{f.resSeq}#{f.iCode.strip}".strip
|
1285
|
-
residueID = "LIGAND" + residueID
|
1286
|
-
#p f
|
1287
|
-
#p residueID
|
1288
|
-
|
1289
|
-
if f.chainID == cChain.id
|
1290
|
-
chain = cChain
|
1291
|
-
elsif !(chain = cModel[f.chainID])
|
1292
|
-
#If we don't have chain, add a new chain
|
1445
|
+
if chain = cModel[f.chainID]
|
1446
|
+
cChain = chain unless cChain
|
1447
|
+
else
|
1448
|
+
# If we don't have chain, add a new chain
|
1293
1449
|
newChain = Chain.new(f.chainID, cModel)
|
1294
1450
|
cModel.addChain(newChain)
|
1295
1451
|
cChain = newChain
|
1296
1452
|
chain = newChain
|
1297
1453
|
end
|
1454
|
+
end
|
1455
|
+
end
|
1456
|
+
|
1457
|
+
case key
|
1458
|
+
when 'ATOM'
|
1459
|
+
c_atom = f
|
1460
|
+
residueID = Residue.get_residue_id_from_atom(f)
|
1298
1461
|
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1302
|
-
|
1303
|
-
|
1304
|
-
|
1462
|
+
if cResidue and residueID == cResidue.id
|
1463
|
+
residue = cResidue
|
1464
|
+
else
|
1465
|
+
if residue = chain.get_residue_by_id(residueID)
|
1466
|
+
cResidue = residue unless cResidue
|
1467
|
+
else
|
1468
|
+
# add a new residue
|
1469
|
+
newResidue = Residue.new(f.resName, f.resSeq, f.iCode, chain)
|
1470
|
+
chain.addResidue(newResidue)
|
1305
1471
|
cResidue = newResidue
|
1306
1472
|
residue = newResidue
|
1307
1473
|
end
|
1474
|
+
end
|
1475
|
+
|
1476
|
+
f.residue = residue
|
1477
|
+
residue.addAtom(f)
|
1478
|
+
|
1479
|
+
when 'HETATM'
|
1480
|
+
c_atom = f
|
1481
|
+
residueID = Heterogen.get_residue_id_from_atom(f)
|
1308
1482
|
|
1309
|
-
|
1310
|
-
|
1311
|
-
|
1483
|
+
if cLigand and residueID == cLigand.id
|
1484
|
+
ligand = cLigand
|
1485
|
+
else
|
1486
|
+
if ligand = chain.get_heterogen_by_id(residueID)
|
1487
|
+
cLigand = ligand unless cLigand
|
1488
|
+
else
|
1489
|
+
# add a new heterogen
|
1490
|
+
newLigand = Heterogen.new(f.resName, f.resSeq, f.iCode, chain)
|
1491
|
+
chain.addLigand(newLigand)
|
1492
|
+
cLigand = newLigand
|
1493
|
+
ligand = newLigand
|
1494
|
+
#Each model has a special solvent chain. (for compatibility)
|
1495
|
+
if f.resName == 'HOH'
|
1496
|
+
cModel.addSolvent(newLigand)
|
1497
|
+
end
|
1498
|
+
end
|
1312
1499
|
end
|
1313
1500
|
|
1501
|
+
f.residue = ligand
|
1502
|
+
ligand.addAtom(f)
|
1503
|
+
|
1314
1504
|
when 'MODEL'
|
1315
|
-
|
1505
|
+
c_atom = nil
|
1506
|
+
if cModel.model_serial or cModel.chains.size > 0 then
|
1316
1507
|
self.addModel(cModel)
|
1317
1508
|
end
|
1318
|
-
|
1319
|
-
|
1509
|
+
cModel = Model.new(f.serial)
|
1510
|
+
|
1511
|
+
when 'TER'
|
1512
|
+
if c_atom
|
1513
|
+
c_atom.ter = f
|
1514
|
+
else
|
1515
|
+
#$stderr.puts "Warning: stray TER?"
|
1516
|
+
end
|
1517
|
+
when 'SIGATM'
|
1518
|
+
if c_atom
|
1519
|
+
#$stderr.puts "Warning: duplicated SIGATM?" if c_atom.sigatm
|
1520
|
+
c_atom.sigatm = f
|
1521
|
+
else
|
1522
|
+
#$stderr.puts "Warning: stray SIGATM?"
|
1523
|
+
end
|
1524
|
+
when 'ANISOU'
|
1525
|
+
if c_atom
|
1526
|
+
#$stderr.puts "Warning: duplicated ANISOU?" if c_atom.anisou
|
1527
|
+
c_atom.anisou = f
|
1528
|
+
else
|
1529
|
+
#$stderr.puts "Warning: stray ANISOU?"
|
1530
|
+
end
|
1531
|
+
when 'SIGUIJ'
|
1532
|
+
if c_atom and c_atom.anisou
|
1533
|
+
#$stderr.puts "Warning: duplicated SIGUIJ?" if c_atom.anisou.siguij
|
1534
|
+
c_atom.anisou.siguij = f
|
1535
|
+
else
|
1536
|
+
#$stderr.puts "Warning: stray SIGUIJ?"
|
1537
|
+
end
|
1538
|
+
|
1539
|
+
else
|
1540
|
+
c_atom = nil
|
1541
|
+
|
1320
1542
|
end
|
1321
1543
|
f
|
1322
1544
|
end #each
|
@@ -1325,34 +1547,54 @@ module Bio
|
|
1325
1547
|
@data.compact!
|
1326
1548
|
end #def initialize
|
1327
1549
|
|
1328
|
-
|
1550
|
+
# all records in this entry as an array.
|
1551
|
+
attr_reader :data
|
1552
|
+
|
1553
|
+
# all records in this entry as an hash accessed by record names.
|
1554
|
+
attr_reader :hash
|
1329
1555
|
|
1330
|
-
#
|
1556
|
+
# models in this entry (array).
|
1557
|
+
attr_reader :models
|
1558
|
+
|
1559
|
+
# Adds a <code>Bio::Model</code> object to the current strucutre.
|
1560
|
+
# Adds a model to the current structure.
|
1561
|
+
# Returns self.
|
1331
1562
|
def addModel(model)
|
1332
1563
|
raise "Expecting a Bio::PDB::Model" if not model.is_a? Bio::PDB::Model
|
1333
1564
|
@models.push(model)
|
1334
1565
|
self
|
1335
1566
|
end
|
1336
1567
|
|
1337
|
-
#Iterates over
|
1568
|
+
# Iterates over each model.
|
1569
|
+
# Iterates over each of the models in the structure.
|
1570
|
+
# Returns <code>self</code>.
|
1338
1571
|
def each
|
1339
1572
|
@models.each{ |model| yield model }
|
1573
|
+
self
|
1340
1574
|
end
|
1341
|
-
#Alias needed for Bio::PDB::ModelFinder
|
1575
|
+
# Alias needed for Bio::PDB::ModelFinder
|
1342
1576
|
alias each_model each
|
1343
1577
|
|
1344
|
-
#Provides keyed access to the models based on serial number
|
1345
|
-
#returns nil if it's not there
|
1578
|
+
# Provides keyed access to the models based on serial number
|
1579
|
+
# returns nil if it's not there
|
1346
1580
|
def [](key)
|
1347
1581
|
@models.find{ |model| key == model.model_serial }
|
1348
1582
|
end
|
1349
|
-
|
1583
|
+
#--
|
1584
|
+
# (should it raise an exception?)
|
1585
|
+
#++
|
1586
|
+
|
1587
|
+
#--
|
1350
1588
|
#Stringifies to a list of atom records - we could add the annotation
|
1351
1589
|
#as well if needed
|
1590
|
+
#++
|
1591
|
+
|
1592
|
+
# Returns a string of Bio::PDB::Models. This propogates down the heirarchy
|
1593
|
+
# till you get to Bio::PDB::Record::ATOM which are outputed in PDB format
|
1352
1594
|
def to_s
|
1353
1595
|
string = ""
|
1354
1596
|
@models.each{ |model| string << model.to_s }
|
1355
|
-
string << "END"
|
1597
|
+
string << "END\n"
|
1356
1598
|
return string
|
1357
1599
|
end
|
1358
1600
|
|
@@ -1389,12 +1631,30 @@ module Bio
|
|
1389
1631
|
end
|
1390
1632
|
private :make_grouping
|
1391
1633
|
|
1392
|
-
|
1393
|
-
|
1634
|
+
# Gets all records whose record type is _name_.
|
1635
|
+
# Returns an array of <code>Bio::PDB::Record::*</code> objects.
|
1636
|
+
#
|
1637
|
+
# if _name_ is nil, returns hash storing all record data.
|
1638
|
+
#
|
1639
|
+
# Example:
|
1640
|
+
# p pdb.record('HETATM')
|
1641
|
+
# p pdb.record['HETATM']
|
1642
|
+
#
|
1643
|
+
def record(name = nil)
|
1644
|
+
name ? @hash[name] : @hash
|
1394
1645
|
end
|
1395
1646
|
|
1647
|
+
#--
|
1396
1648
|
# PDB original methods
|
1397
1649
|
#Returns a hash of the REMARK records based on the remarkNum
|
1650
|
+
#++
|
1651
|
+
|
1652
|
+
# Gets REMARK records.
|
1653
|
+
# If no arguments, it returns all REMARK records as a hash.
|
1654
|
+
# If remark number is specified, returns only corresponding REMARK records.
|
1655
|
+
# If number == 1 or 2 ("REMARK 1" or "REMARK 2"), returns an array
|
1656
|
+
# of Bio::PDB::Record instances. Otherwise, returns an array of strings.
|
1657
|
+
#
|
1398
1658
|
def remark(nn = nil)
|
1399
1659
|
unless defined?(@remark)
|
1400
1660
|
h = make_hash(self.record('REMARK'), :remarkNum)
|
@@ -1409,7 +1669,11 @@ module Bio
|
|
1409
1669
|
nn ? @remark[nn] : @remark
|
1410
1670
|
end
|
1411
1671
|
|
1412
|
-
#
|
1672
|
+
# Gets JRNL records.
|
1673
|
+
# If no arguments, it returns all JRNL records as a hash.
|
1674
|
+
# If sub record name is specified, it returns only corresponding records
|
1675
|
+
# as an array of Bio::PDB::Record instances.
|
1676
|
+
#
|
1413
1677
|
def jrnl(sub_record = nil)
|
1414
1678
|
unless defined?(@jrnl)
|
1415
1679
|
@jrnl = make_hash(self.record('JRNL'), :sub_record)
|
@@ -1417,8 +1681,18 @@ module Bio
|
|
1417
1681
|
sub_record ? @jrnl[sub_record] : @jrnl
|
1418
1682
|
end
|
1419
1683
|
|
1684
|
+
#--
|
1420
1685
|
#Finding methods - just grabs the record with the appropriate id
|
1421
1686
|
#or returns and array of all of them
|
1687
|
+
#++
|
1688
|
+
|
1689
|
+
# Gets HELIX records.
|
1690
|
+
# If no arguments are given, it returns all HELIX records.
|
1691
|
+
# (Returns an array of <code>Bio::PDB::Record::HELIX</code> instances.)
|
1692
|
+
# If <em>helixID</em> is given, it only returns records
|
1693
|
+
# corresponding to given <em>helixID</em>.
|
1694
|
+
# (Returns an <code>Bio::PDB::Record::HELIX</code> instance.)
|
1695
|
+
#
|
1422
1696
|
def helix(helixID = nil)
|
1423
1697
|
if helixID then
|
1424
1698
|
self.record('HELIX').find { |f| f.helixID == helixID }
|
@@ -1427,6 +1701,13 @@ module Bio
|
|
1427
1701
|
end
|
1428
1702
|
end
|
1429
1703
|
|
1704
|
+
# Gets TURN records.
|
1705
|
+
# If no arguments are given, it returns all TURN records.
|
1706
|
+
# (Returns an array of <code>Bio::PDB::Record::TURN</code> instances.)
|
1707
|
+
# If <em>turnId</em> is given, it only returns a record
|
1708
|
+
# corresponding to given <em>turnId</em>.
|
1709
|
+
# (Returns an <code>Bio::PDB::Record::TURN</code> instance.)
|
1710
|
+
#
|
1430
1711
|
def turn(turnId = nil)
|
1431
1712
|
if turnId then
|
1432
1713
|
self.record('TURN').find { |f| f.turnId == turnId }
|
@@ -1435,6 +1716,11 @@ module Bio
|
|
1435
1716
|
end
|
1436
1717
|
end
|
1437
1718
|
|
1719
|
+
# Gets SHEET records.
|
1720
|
+
# If no arguments are given, it returns all SHEET records
|
1721
|
+
# as an array of arrays of <code>Bio::PDB::Record::SHEET</code> instances.
|
1722
|
+
# If <em>sheetID</em> is given, it returns an array of
|
1723
|
+
# <code>Bio::PDB::Record::SHEET</code> instances.
|
1438
1724
|
def sheet(sheetID = nil)
|
1439
1725
|
unless defined?(@sheet)
|
1440
1726
|
@sheet = make_grouping(self.record('SHEET'), :sheetID)
|
@@ -1446,11 +1732,20 @@ module Bio
|
|
1446
1732
|
end
|
1447
1733
|
end
|
1448
1734
|
|
1735
|
+
# Gets SSBOND records.
|
1449
1736
|
def ssbond
|
1450
1737
|
self.record('SSBOND')
|
1451
1738
|
end
|
1452
1739
|
|
1453
|
-
|
1740
|
+
#--
|
1741
|
+
# Get seqres - we get this to return a nice Bio::Seq object
|
1742
|
+
#++
|
1743
|
+
|
1744
|
+
# Amino acid or nucleic acid sequence of backbone residues in "SEQRES".
|
1745
|
+
# If <em>chainID</em> is given, it returns corresponding sequence
|
1746
|
+
# as an array of string.
|
1747
|
+
# Otherwise, returns a hash which contains all sequences.
|
1748
|
+
#
|
1454
1749
|
def seqres(chainID = nil)
|
1455
1750
|
unless defined?(@seqres)
|
1456
1751
|
h = make_hash(self.record('SEQRES'), :chainID)
|
@@ -1458,14 +1753,27 @@ module Bio
|
|
1458
1753
|
h.each do |k, a|
|
1459
1754
|
a.collect! { |f| f.resName }
|
1460
1755
|
a.flatten!
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1468
|
-
|
1756
|
+
# determine nuc or aa?
|
1757
|
+
tmp = Hash.new(0)
|
1758
|
+
a[0,13].each { |x| tmp[x.to_s.strip.size] += 1 }
|
1759
|
+
if tmp[3] >= tmp[1] then
|
1760
|
+
# amino acid sequence
|
1761
|
+
a.collect! do |aa|
|
1762
|
+
#aa is three letter code: i.e. ALA
|
1763
|
+
#need to look up with Ala
|
1764
|
+
aa = aa.capitalize
|
1765
|
+
(Bio::AminoAcid.three2one(aa) or 'X')
|
1766
|
+
end
|
1767
|
+
seq = Bio::Sequence::AA.new(a.to_s)
|
1768
|
+
else
|
1769
|
+
# nucleic acid sequence
|
1770
|
+
a.collect! do |na|
|
1771
|
+
na = na.strip
|
1772
|
+
na.size == 1 ? na : 'n'
|
1773
|
+
end
|
1774
|
+
seq = Bio::Sequence::NA.new(a.to_s)
|
1775
|
+
end
|
1776
|
+
newHash[k] = seq
|
1469
1777
|
end
|
1470
1778
|
@seqres = newHash
|
1471
1779
|
end
|
@@ -1476,6 +1784,10 @@ module Bio
|
|
1476
1784
|
end
|
1477
1785
|
end
|
1478
1786
|
|
1787
|
+
# Gets DBREF records.
|
1788
|
+
# Returns an array of Bio::PDB::Record::DBREF objects.
|
1789
|
+
#
|
1790
|
+
# If <em>chainID</em> is given, it returns corresponding DBREF records.
|
1479
1791
|
def dbref(chainID = nil)
|
1480
1792
|
if chainID then
|
1481
1793
|
self.record('DBREF').find_all { |f| f.chainID == chainID }
|
@@ -1484,28 +1796,38 @@ module Bio
|
|
1484
1796
|
end
|
1485
1797
|
end
|
1486
1798
|
|
1799
|
+
# Keywords in "KEYWDS".
|
1800
|
+
# Returns an array of string.
|
1487
1801
|
def keywords
|
1488
1802
|
self.record('KEYWDS').collect { |f| f.keywds }.flatten
|
1489
1803
|
end
|
1490
1804
|
|
1805
|
+
# Classification in "HEADER".
|
1491
1806
|
def classification
|
1492
1807
|
self.record('HEADER').first.classification
|
1493
1808
|
end
|
1494
1809
|
|
1810
|
+
#--
|
1495
1811
|
# Bio::DB methods
|
1812
|
+
#++
|
1813
|
+
|
1814
|
+
# PDB identifier written in "HEADER". (e.g. 1A00)
|
1496
1815
|
def entry_id
|
1497
1816
|
@id = self.record('HEADER').first.idCode unless @id
|
1498
1817
|
@id
|
1499
1818
|
end
|
1500
1819
|
|
1820
|
+
# Same as <tt>Bio::PDB#entry_id</tt>.
|
1501
1821
|
def accession
|
1502
1822
|
self.entry_id
|
1503
1823
|
end
|
1504
1824
|
|
1825
|
+
# Title of this entry in "TITLE".
|
1505
1826
|
def definition
|
1506
1827
|
self.record('TITLE').first.title
|
1507
1828
|
end
|
1508
1829
|
|
1830
|
+
# Current modification number in "REVDAT".
|
1509
1831
|
def version
|
1510
1832
|
self.record('REVDAT').first.modNum
|
1511
1833
|
end
|
@@ -1514,169 +1836,3 @@ module Bio
|
|
1514
1836
|
|
1515
1837
|
end #module Bio
|
1516
1838
|
|
1517
|
-
=begin
|
1518
|
-
|
1519
|
-
= Caution
|
1520
|
-
|
1521
|
-
This is a test version, specs of these class shall be changed.
|
1522
|
-
|
1523
|
-
= Bio::PDB < Bio::DB
|
1524
|
-
|
1525
|
-
PDB File format class.
|
1526
|
-
|
1527
|
-
--- Bio::PDB.new(str)
|
1528
|
-
|
1529
|
-
Creates new object.
|
1530
|
-
|
1531
|
-
--- Bio::PDB#entry_id
|
1532
|
-
|
1533
|
-
PDB identifier written in "HEADER". (e.g. 1A00)
|
1534
|
-
|
1535
|
-
--- Bio::PDB#accession
|
1536
|
-
|
1537
|
-
Same as Bio::PDB#entry_id
|
1538
|
-
|
1539
|
-
--- Bio::PDB#version
|
1540
|
-
|
1541
|
-
Current modification number in "REVDAT".
|
1542
|
-
|
1543
|
-
--- Bio::PDB#definition
|
1544
|
-
|
1545
|
-
Title of this entry in "TITLE".
|
1546
|
-
|
1547
|
-
--- Bio::PDB#keywords
|
1548
|
-
|
1549
|
-
Keywords in "KEYWDS".
|
1550
|
-
Returns an array of string.
|
1551
|
-
|
1552
|
-
--- Bio::PDB#classification
|
1553
|
-
|
1554
|
-
Classification in "HEADER".
|
1555
|
-
|
1556
|
-
--- Bio::PDB#record(name)
|
1557
|
-
|
1558
|
-
Gets all records whose record type is 'name'.
|
1559
|
-
Returns an array of Bio::PDB::Record.
|
1560
|
-
|
1561
|
-
--- Bio::PDB#remark(number = nil)
|
1562
|
-
|
1563
|
-
Gets REMARK records.
|
1564
|
-
If no arguments, it returns all REMARK records as a hash.
|
1565
|
-
If remark number is specified, returns only corresponding REMARK records.
|
1566
|
-
If number == 1 or 2 ("REMARK 1" or "REMARK 2"), returns an array
|
1567
|
-
of Bio::PDB::Record instances. Otherwise, returns an array of strings.
|
1568
|
-
|
1569
|
-
--- Bio::PDB#jrnl(sub_record = nil)
|
1570
|
-
|
1571
|
-
Gets JRNL records.
|
1572
|
-
If no arguments, it returns all JRNL records as a hash.
|
1573
|
-
If sub record name is specified, it returns only corresponding records
|
1574
|
-
as an array of Bio::PDB::Record instances.
|
1575
|
-
|
1576
|
-
--- Bio::PDB#seqres(chainID = nil)
|
1577
|
-
|
1578
|
-
Amino acid or nucleic acid sequence of backbone residues in "SEQRES".
|
1579
|
-
If chainID is given, it returns corresponding sequence as an array of string.
|
1580
|
-
Otherwise, returns a hash which contains all sequences.
|
1581
|
-
|
1582
|
-
--- Bio::PDB#helix(helixID = nil)
|
1583
|
-
|
1584
|
-
Gets HELIX records.
|
1585
|
-
If no arguments are given, it returns all HELIX records.
|
1586
|
-
(Returns an array of Bio::PDB::Record instances.)
|
1587
|
-
If helixID is given, it only returns records corresponding to given helixID.
|
1588
|
-
(Returns an Bio::PDB::Record instance.)
|
1589
|
-
|
1590
|
-
--- Bio::PDB#sheet(sheetID = nil)
|
1591
|
-
|
1592
|
-
Gets SHEET records.
|
1593
|
-
If no arguments are given, it returns all SHEET records as an array of
|
1594
|
-
arrays of Bio::PDB::Record instances.
|
1595
|
-
If sheetID is given, it returns an array of Bio::PDB::Record instances.
|
1596
|
-
|
1597
|
-
--- Bio::PDB#turn(turnId = nil)
|
1598
|
-
|
1599
|
-
Gets TURN records.
|
1600
|
-
If no arguments are given, it returns all TURN records.
|
1601
|
-
(Returns an array of Bio::PDB::Record instances.)
|
1602
|
-
If turnId is given, it only returns a record corresponding to given turnId.
|
1603
|
-
(Returns an Bio::PDB::Record instance.)
|
1604
|
-
|
1605
|
-
--- Bio::PDB.addModel(model)
|
1606
|
-
|
1607
|
-
Adds a model to the current structure
|
1608
|
-
Returns self
|
1609
|
-
|
1610
|
-
--- Bio::PDB.each
|
1611
|
-
|
1612
|
-
Iterates over each of the models in the structure
|
1613
|
-
Returns Bio::PDB::Models
|
1614
|
-
|
1615
|
-
--- Bio::PDB[](key)
|
1616
|
-
|
1617
|
-
Returns the model with the given key as serial number
|
1618
|
-
|
1619
|
-
--- Bio::PDB.to_s
|
1620
|
-
|
1621
|
-
Returns a string of Bio::PDB::Models. This propogates down the heirarchy
|
1622
|
-
till you get to Bio::PDB::Atoms which are outputed in PDB format
|
1623
|
-
|
1624
|
-
|
1625
|
-
= Bio::PDB::Record < Hash
|
1626
|
-
|
1627
|
-
A class for single PDB record.
|
1628
|
-
Basically, each line of a PDB file corresponds to an instance of the class.
|
1629
|
-
If continuation exists, multiple lines may correspond to single instance.
|
1630
|
-
|
1631
|
-
--- Bio::PDB::Record.new(line)
|
1632
|
-
|
1633
|
-
Internal use only.
|
1634
|
-
Creates a new instance.
|
1635
|
-
|
1636
|
-
--- Bio::PDB::Record#add_continuation(line)
|
1637
|
-
|
1638
|
-
Internal use only.
|
1639
|
-
If continuation is allowed and 'line' is a continuation of this record,
|
1640
|
-
it adds 'line' and returns self.
|
1641
|
-
Otherwise, returns false.
|
1642
|
-
|
1643
|
-
--- Bio::PDB::Record#original_data
|
1644
|
-
|
1645
|
-
Original text (except that "\n" are truncated) of this record.
|
1646
|
-
Returns an array of string.
|
1647
|
-
|
1648
|
-
--- Bio::PDB::Record#record_type
|
1649
|
-
|
1650
|
-
Record type of this record, e.g. "HEADER", "ATOM".
|
1651
|
-
|
1652
|
-
--- Bio::PDB::Record#do_parse
|
1653
|
-
|
1654
|
-
In order to speeding up processing of PDB File format,
|
1655
|
-
fields have not been parsed before calling this method.
|
1656
|
-
|
1657
|
-
If you want to use this class as a hash (not so recommended),
|
1658
|
-
you must call this method once.
|
1659
|
-
|
1660
|
-
When accessing via rec.xxxxx style (described below),
|
1661
|
-
do_parse is automatically called.
|
1662
|
-
|
1663
|
-
Returns self
|
1664
|
-
|
1665
|
-
--- Bio::PDB::Record#"anything"
|
1666
|
-
|
1667
|
-
Same as Bio::PDB::Record#[](:anything) after do_parse.
|
1668
|
-
For example, r.helixID is same as r.do_parse; r[:helixID] .
|
1669
|
-
|
1670
|
-
|
1671
|
-
= Bio::PDB::FieldDef
|
1672
|
-
|
1673
|
-
Internal use only.
|
1674
|
-
Format definition of each record.
|
1675
|
-
|
1676
|
-
= References
|
1677
|
-
|
1678
|
-
* ((<URL:http://www.rcsb.org/pdb/>))
|
1679
|
-
* PDB File Format Contents Guide Version 2.2 (20 December 1996)
|
1680
|
-
((<URL:http://www.rcsb.org/pdb/docs/format/pdbguide2.2/guide2.2_frame.html>))
|
1681
|
-
|
1682
|
-
=end
|