Class: Ensembl::Core::SeqRegion

Inherits:
DBConnection
  • Object
show all
Defined in:
lib/ensembl/core/activerecord.rb

Overview

DESCRIPTION

The SeqRegion class describes a part of a coordinate systems. It is an interface to the seq_region table of the Ensembl mysql database.

This class uses ActiveRecord to access data in the Ensembl database. See the general documentation of the Ensembl module for more information on what this means and what methods are available.

USAGE

chr4 = SeqRegion.find_by_name('4')
puts chr4.coord_system.name     #--> 'chromosome'
chr4.genes.each do |gene|
puts gene.biotype
end

Instance Method Summary collapse

Methods inherited from DBConnection

connect

Instance Method Details

#assembled_seq_regions(coord_system_name = nil) ⇒ Object

DESCRIPTION

The SeqRegion#assembled_seq_regions returns the sequence regions on which the current region is assembled. For example, calling this method on a contig sequence region, it might return the chromosome that that contig is part of. Optionally, this method takes a coordinate system name so that only regions of that coordinate system are returned.


Arguments

coord_system_name (optional)

Returns

array of SeqRegion objects



387
388
389
390
391
392
393
394
395
396
397
398
399
400
# File 'lib/ensembl/core/activerecord.rb', line 387

def assembled_seq_regions(coord_system_name = nil)
  if coord_system_name.nil?
    return self.asm_seq_regions
  else
    answer = Array.new
	  coord_system = CoordSystem.find_by_name(coord_system_name)
    self.asm_seq_regions.each do |asr|
      if asr.coord_system_id == coord_system.id
        answer.push(asr)
      end
    end
	  return answer
  end
end

DESCRIPTION

This method queries the assembly table to find those rows (i.e. AssemblyLink objects) for which this seq_region is the assembly.

USAGE

my_seq_region = SeqRegion.find('4')
first_link = my_seq_region.assembly_links_as_assembly[0]
puts first_link.asm_start.to_s + "\t" + first_link.asm_end.to_s

Arguments:

  • coord_system_name: name of coordinate system that the components should belong to (default = nil)

Returns

array of AssemblyLink objects



442
443
444
445
446
447
448
449
450
# File 'lib/ensembl/core/activerecord.rb', line 442

def assembly_links_as_assembly(coord_system_name = nil)
	if coord_system_name.nil?
    return self.asm_links_as_asm
  else
    coord_system = CoordSystem.find_by_name(coord_system_name)
#      	  return self.asm_links_as_asm.select{|alaa| alaa.cmp_seq_region.coord_system_id == coord_system.id}
    return AssemblyLink.find_by_sql("SELECT * FROM assembly a WHERE a.asm_seq_region_id = " + self.id.to_s + " AND a.cmp_seq_region_id IN (SELECT sr.seq_region_id FROM seq_region sr WHERE coord_system_id = " + coord_system.id.to_s + ")")
  end
end

DESCRIPTION

This method queries the assembly table to find those rows (i.e. AssemblyLink objects) for which this seq_region is the component.

USAGE

my_seq_region = SeqRegion.find('Chr4.003.1')
first_link = my_seq_region.assembly_links_as_component[0]
puts first_link.asm_start.to_s + "\t" + first_link.asm_end.to_s

Arguments:

  • coord_system_name: name of coordinate system that the assembly should belong to (default = nil)

Returns

array of AssemblyLink objects



467
468
469
470
471
472
473
474
# File 'lib/ensembl/core/activerecord.rb', line 467

def assembly_links_as_component(coord_system_name = nil)
  if coord_system_name.nil?
    return self.asm_links_as_cmp
  else
    coord_system = CoordSystem.find_by_name(coord_system_name)
	  return self.asm_links_as_cmp.select{|alac| alac.asm_seq_region.coord_system_id == coord_system.id}
  end
end

#component_seq_regions(coord_system_name = nil) ⇒ Object

DESCRIPTION

The SeqRegion#component_seq_regions returns the sequence regions contained within the current region (in other words: the bits used to assemble the current region). For example, calling this method on a chromosome sequence region, it might return the contigs that were assembled into this chromosome. Optionally, this method takes a coordinate system name so that only regions of that coordinate system are returned.


Arguments

coord_system_name (optional)

Returns

array of SeqRegion objects



412
413
414
415
416
417
418
419
420
421
422
423
424
425
# File 'lib/ensembl/core/activerecord.rb', line 412

def component_seq_regions(coord_system_name = nil)
	if coord_system_name.nil?
    return self.cmp_seq_regions
  else
    answer = Array.new
	  coord_system = CoordSystem.find_by_name(coord_system_name)
    self.cmp_seq_regions.each do |csr|
      if csr.coord_system_id == coord_system.id
        answer.push(csr)
      end
    end
	  return answer
  end
end

#sequenceObject Also known as: seq

DESCRIPTION

The SeqRegion#sequence method returns the sequence of this seq_region. At the moment, it will only return the sequence if the region belongs to the seqlevel coordinate system.


Arguments

none

Returns

DNA sequence as String



483
484
485
# File 'lib/ensembl/core/activerecord.rb', line 483

def sequence
  return self.dna.sequence
end

#sliceObject

DESCRIPTION

The SeqRegion#slice method returns a slice object that covers the whole of the seq_region.


Arguments

none

Returns

Ensembl::Core::Slice object



374
375
376
# File 'lib/ensembl/core/activerecord.rb', line 374

def slice
  return Ensembl::Core::Slice.new(self)
end

#subsequence(start, stop) ⇒ Object Also known as: subseq

DESCRIPTION

The SeqRegion#subsequence method returns a subsequence of this seq_region. At the moment, it will only return the sequence if the region belongs to the seqlevel coordinate system.


Arguments

start and stop position

Returns

DNA sequence as String



495
496
497
# File 'lib/ensembl/core/activerecord.rb', line 495

def subsequence(start, stop)
	return self.seq.slice(start - 1, (stop - start) + 1)
end