Module | Bio::Map::ActsLikeMarker |
In: |
lib/bio/map.rb
|
The Bio::Map::ActsLikeMarker module contains methods that are typical for marker-like things:
Classes that include this mixin should provide an array property called mappings_as_marker.
For example:
class MyMarkerThing include Bio::Map::ActsLikeMarker def initialize (name) @name = name @mappings_as_marker = Array.new end attr_accessor :name, :mappings_as_marker end
Adds a Bio::Map::Mappings object to its array of mappings.
# suppose we have a Bio::Map::Marker object called marker_a marker_a.add_mapping_as_marker(Bio::Map::SimpleMap.new('my_map'), '5')
Arguments:
Returns: | itself |
# File lib/bio/map.rb, line 203 203: def add_mapping_as_marker(map, location = nil) 204: unless map.class.include?(Bio::Map::ActsLikeMap) 205: raise "[Error] map is not object that implements Bio::Map::ActsLikeMap" 206: end 207: my_mapping = (location.nil?) ? Bio::Map::Mappings.new(map, self, nil) : Bio::Map::Mapping.new(map, self, Bio::Locations.new(location)) 208: if ! self.mapped_to?(map) 209: self.mappings_as_marker.push(my_mapping) 210: map.mappings_as_map.push(my_mapping) 211: else 212: already_mapped = false 213: self.positions_on(map).each do |loc| 214: if loc.equals?(Bio::Locations.new(location)) 215: already_mapped = true 216: end 217: end 218: if ! already_mapped 219: self.mappings_as_marker.push(my_mapping) 220: map.mappings_as_map.push(my_mapping) 221: end 222: end 223: end
Check whether this marker is mapped to a given Bio::Map::SimpleMap.
Arguments:
Returns: | true or false |
# File lib/bio/map.rb, line 230 230: def mapped_to?(map) 231: unless map.class.include?(Bio::Map::ActsLikeMap) 232: raise "[Error] map is not object that implements Bio::Map::ActsLikeMap" 233: end 234: 235: mapped = false 236: self.mappings_as_marker.each do |mapping| 237: if mapping.map == map 238: mapped = true 239: return mapped 240: end 241: end 242: 243: return mapped 244: end
Return all mappings of this marker on a given map.
Arguments:
Returns: | array of Bio::Map::Mapping objects |
# File lib/bio/map.rb, line 271 271: def mappings_on(map) 272: unless map.class.include?(Bio::Map::ActsLikeMap) 273: raise "[Error] map is not object that implements Bio::Map::ActsLikeMap" 274: end 275: 276: m = Array.new 277: self.mappings_as_marker.each do |mapping| 278: if mapping.map == map 279: m.push(mapping) 280: end 281: end 282: 283: return m 284: end
Return all positions of this marker on a given map.
Arguments:
Returns: | array of Bio::Location objects |
# File lib/bio/map.rb, line 251 251: def positions_on(map) 252: unless map.class.include?(Bio::Map::ActsLikeMap) 253: raise "[Error] map is not object that implements Bio::Map::ActsLikeMap" 254: end 255: 256: positions = Array.new 257: self.mappings_as_marker.each do |mapping| 258: if mapping.map == map 259: positions.push(mapping.location) 260: end 261: end 262: 263: return positions 264: end