| Class | Bio::Location |
| In: |
lib/bio/location.rb
|
| Parent: | Object |
The Bio::Location class describes the position of a genomic locus. Typically, Bio::Location objects are created automatically when the user creates a Bio::Locations object, instead of initialized directly.
location = Bio::Location.new('500..550')
puts "start=" + location.from.to_s + ";end=" + location.to.to_s
#, or better: through Bio::Locations
locations = Bio::Locations.new('500..550')
locations.each do |location|
puts "start=" + location.from.to_s + ";end=" + location.to.to_s
end
| carat | [RW] | (true, false or nil) true if the location indicates the site between two adjoining nucleotides |
| from | [RW] | (Integer) start position of the location |
| gt | [RW] | (true, false or nil) true if the position contains ’>’ |
| lt | [RW] | (true, false or nil) true if the position contains ’<’ |
| sequence | [RW] | (String) literal sequence of the location |
| strand | [RW] | (Integer) strand direction of the location (forward => 1 or complement => -1) |
| to | [RW] | (Integer) end position of the location |
| xref_id | [RW] | (String) link to the external entry as GenBank ID |
Parses a‘location’ segment, which can be ‘ID:’ + (‘n’ or ‘n..m’ or ‘n^m’ or "seq") with ’<’ or ’>’, and returns a Bio::Location object.
location = Bio::Location.new('500..550')
Arguments:
| Returns: | the Bio::Location object |
# File lib/bio/location.rb, line 45
45: def initialize(location = nil)
46:
47: if location
48: if location =~ /:/ # (G) ID:location
49: xref_id, location = location.split(':')
50: end
51: if location =~ /</ # (I) <,>
52: lt = true
53: end
54: if location =~ />/
55: gt = true
56: end
57: end
58:
59: # s : start base, e : end base => from, to
60: case location
61: when /^[<>]?(\d+)$/ # (A, I) n
62: s = e = $1.to_i
63: when /^[<>]?(\d+)\.\.[<>]?(\d+)$/ # (B, I) n..m
64: s = $1.to_i
65: e = $2.to_i
66: if e - s < 0
67: # raise "Error: invalid range : #{location}"
68: $stderr.puts "[Warning] invalid range : #{location}" if $DEBUG
69: end
70: when /^[<>]?(\d+)\^[<>]?(\d+)$/ # (C, I) n^m
71: s = $1.to_i
72: e = $2.to_i
73: carat = true
74: if e - s != 1 or e != 1 # assert n^n+1 or n^1
75: # raise "Error: invalid range : #{location}"
76: $stderr.puts "[Warning] invalid range : #{location}" if $DEBUG
77: end
78: when /^"?([ATGCatgc]+)"?$/ # (H) literal sequence
79: sequence = $1.downcase
80: s = e = nil
81: when nil
82: ;
83: else
84: raise "Error: unknown location format : #{location}"
85: end
86:
87: @from = s # start position of the location
88: @to = e # end position of the location
89: @strand = 1 # strand direction of the location
90: # forward => 1 or complement => -1
91: @sequence = sequence # literal sequence of the location
92: @lt = lt # true if the position contains '<'
93: @gt = gt # true if the position contains '>'
94: @xref_id = xref_id # link to the external entry as GenBank ID
95: @carat = carat # true if the location indicates the site
96: # between two adjoining nucleotides
97: end
Check where a Bio::Location object is located compared to another Bio::Location object (mainly to facilitate the use of Comparable). A location A is upstream of location B if the start position of location A is smaller than the start position of location B. If they‘re the same, the end positions are checked.
Arguments:
Returns::
# File lib/bio/location.rb, line 163
163: def <=>(other)
164: if ! other.kind_of?(Bio::Location)
165: return nil
166: end
167:
168: if @from.to_f < other.from.to_f
169: return -1
170: elsif @from.to_f > other.from.to_f
171: return 1
172: end
173:
174: if @to.to_f < other.to.to_f
175: return -1
176: elsif @to.to_f > other.to.to_f
177: return 1
178: end
179: return 0
180: end
Complements the sequence location (i.e. alternates the strand). Note that it is destructive method (i.e. modifies itself), but it does not modify the "sequence" attribute.
| Returns: | the Bio::Location object |
# File lib/bio/location.rb, line 129
129: def complement
130: @strand *= -1
131: self # return Location object
132: end
Replaces the sequence of the location.
Arguments:
| Returns: | the Bio::Location object |
# File lib/bio/location.rb, line 140
140: def replace(sequence)
141: @sequence = sequence.downcase
142: self # return Location object
143: end