Class: Bio::Location
Overview
Description
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.
Usage
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
Instance Attribute Summary collapse
-
#from ⇒ Object
Returns the value of attribute from.
-
#gt ⇒ Object
Returns the value of attribute gt.
-
#lt ⇒ Object
Returns the value of attribute lt.
-
#sequence ⇒ Object
Returns the value of attribute sequence.
-
#strand ⇒ Object
Returns the value of attribute strand.
-
#to ⇒ Object
Returns the value of attribute to.
-
#xref_id ⇒ Object
Returns the value of attribute xref_id.
Instance Method Summary collapse
-
#<=>(other) ⇒ Object
Check where a Bio::Location object is located compared to another Bio::Location object (mainly to facilitate the use of Comparable).
-
#complement ⇒ Object
Complements the sequence (i.e. alternates the strand).
-
#initialize(location = nil) ⇒ Location
constructor
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.
-
#range ⇒ Object
Returns the range (from..to) of the location as a Range object.
-
#replace(sequence) ⇒ Object
Replaces the sequence of the location.
Constructor Details
#initialize(location = nil) ⇒ Location
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:
-
(required) str: GenBank style position string (see Bio::Locations documentation)
- Returns
-
the Bio::Location object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/bio/location.rb', line 44 def initialize(location = nil) if location if location =~ /:/ # (G) ID:location xref_id, location = location.split(':') end if location =~ /</ # (I) <,> lt = true end if location =~ />/ gt = true end end # s : start base, e : end base => from, to case location when /^[<>]?(\d+)$/ # (A, I) n s = e = $1.to_i when /^[<>]?(\d+)\.\.[<>]?(\d+)$/ # (B, I) n..m s = $1.to_i e = $2.to_i if e - s < 0 # raise "Error: invalid range : #{location}" $stderr.puts "[Warning] invalid range : #{location}" if $DEBUG end when /^[<>]?(\d+)\^[<>]?(\d+)$/ # (C, I) n^m s = $1.to_i e = $2.to_i if e - s != 1 # raise "Error: invalid range : #{location}" $stderr.puts "[Warning] invalid range : #{location}" if $DEBUG end when /^"?([ATGCatgc]+)"?$/ # (H) literal sequence sequence = $1.downcase s = e = nil when nil ; else raise "Error: unknown location format : #{location}" end @from = s # start position of the location @to = e # end position of the location @strand = 1 # strand direction of the location # forward => 1 or complement => -1 @sequence = sequence # literal sequence of the location @lt = lt # true if the position contains '<' @gt = gt # true if the position contains '>' @xref_id = xref_id # link to the external entry as GenBank ID end |
Instance Attribute Details
#from ⇒ Object
Returns the value of attribute from.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def from @from end |
#gt ⇒ Object
Returns the value of attribute gt.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def gt @gt end |
#lt ⇒ Object
Returns the value of attribute lt.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def lt @lt end |
#sequence ⇒ Object
Returns the value of attribute sequence.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def sequence @sequence end |
#strand ⇒ Object
Returns the value of attribute strand.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def strand @strand end |
#to ⇒ Object
Returns the value of attribute to.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def to @to end |
#xref_id ⇒ Object
Returns the value of attribute xref_id.
95 96 97 |
# File 'lib/bio/location.rb', line 95 def xref_id @xref_id end |
Instance Method Details
#<=>(other) ⇒ Object
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:
-
(required) _other location_: a Bio::Location object
- Returns
-
1 if self < other location
-
-1 if self > other location
-
0 if both location are the same
-
nil if the argument is not a Bio::Location object
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/bio/location.rb', line 134 def <=>(other) if ! other.kind_of?(Bio::Location) return nil end if @from.to_f < other.from.to_f return -1 elsif @from.to_f > other.from.to_f return 1 end if @to.to_f < other.to.to_f return -1 elsif @to.to_f > other.to.to_f return 1 end return 0 end |
#complement ⇒ Object
Complements the sequence (i.e. alternates the strand).
- Returns
-
the Bio::Location object
100 101 102 103 |
# File 'lib/bio/location.rb', line 100 def complement @strand *= -1 self # return Location object end |
#range ⇒ Object
Returns the range (from..to) of the location as a Range object.
117 118 119 |
# File 'lib/bio/location.rb', line 117 def range @from..@to end |
#replace(sequence) ⇒ Object
Replaces the sequence of the location.
Arguments:
-
(required) sequence: sequence to be used to replace the sequence at the location
- Returns
-
the Bio::Location object
111 112 113 114 |
# File 'lib/bio/location.rb', line 111 def replace(sequence) @sequence = sequence.downcase self # return Location object end |