Module: Exodb::GeneLocationField

Extended by:
ActiveSupport::Concern
Included in:
Chrref, Generef
Defined in:
lib/exodb/datamodel/genelocfield.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#beginInteger

get the start position of gene rely on the genome

Returns:

  • (Integer)

    start position of gene



96
97
98
# File 'lib/exodb/datamodel/genelocfield.rb', line 96

def begin
  self[:strand] == '+' ? self[:start] : self[:stop]
end

#chromosomeInteger

get the chromosome

Returns:

  • (Integer)

    chromosome



110
111
112
# File 'lib/exodb/datamodel/genelocfield.rb', line 110

def chromosome
  self[:chr]
end

#dl_seq!Object

Download sequence from web service please use by caution. NCBI will block scamming sequest



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/exodb/datamodel/genelocfield.rb', line 66

def dl_seq!
  
  case self.chrrefseq
  when /\Aurn:miriam:refseq:/
    self.sequence = Bio::FastaFormat.new(Bio::NCBI::REST.efetch(self.chrrefseq.split(':', 4), {"db"=>"nucleotide", "rettype"=>"fasta", "retmode"=>"text", "seq_start"=>self.start, "seq_stop"=>self.end})).seq
  else 
    self.sequence = Exodb::Ensembl::REST.sequence_region()
  end
  
  self.save!
  
end

#endInteger

get the start position of gene rely on the genome

Returns:

  • (Integer)

    start position of gene



103
104
105
# File 'lib/exodb/datamodel/genelocfield.rb', line 103

def end
  self[:strand] == '+' ? self[:stop] : self[:start]
end

#get_splice(arr, strand = nil) ⇒ String

join exon or cds position into a string

Parameters:

  • input (Array)

    array exon or cds

  • Position (Interger)

    to stop positive value for forward read negative value for complement

Returns:

  • (String)

    a string in start..end,start..end,…



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/exodb/datamodel/genelocfield.rb', line 160

def get_splice(arr, strand = nil)
  
  strand = strand || self[:strand]
  
  reducer = self[:seqlocation]['start'] - 1
  
  str = []
  
  arr.each do |e|
    str.push("#{e[0] - reducer}..#{e[1] - reducer}")
  end
  
  return strand == '+' ? self.to_seq.splicing("join(#{str.join(',')})") : self.to_seq.splicing("complement(join(#{str.join(',')}))")
  
end

#location=(loc) ⇒ Object

Assign location

Parameters:

  • location (String, Hash)

    string in chromosome:start..stop or chromosome:start-stop format



117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'lib/exodb/datamodel/genelocfield.rb', line 117

def location=(loc)
  if loc.is_a?(String)
    
    begin
      loc.parse_loc.delete_if {|k, v| k == 'pos'}.each_pair do |k, v|
        self[k.to_sym] = v
      end
    rescue
      
    end
    
  end
end

#location_strString Also known as: locstr

Return location

Returns:

  • (String)

    location string in chromosome:position



134
135
136
# File 'lib/exodb/datamodel/genelocfield.rb', line 134

def location_str
  return "#{self.chromosome}:#{[self.start, self.stop].uniq.join('..')}"
end

#startInteger

get the start position of gene rely on the genome

Returns:

  • (Integer)

    start position of gene



82
83
84
# File 'lib/exodb/datamodel/genelocfield.rb', line 82

def start
  self[:start]
end

#stopInteger

get the end position of gene rely on the genome

Returns:

  • (Integer)

    end position of gene



89
90
91
# File 'lib/exodb/datamodel/genelocfield.rb', line 89

def stop
  self[:stop]
end

#to_seqBio::Sequence

Return gene sequence

Returns:

  • (Bio::Sequence)

    gene sequence



143
144
145
# File 'lib/exodb/datamodel/genelocfield.rb', line 143

def to_seq
  whole_seq.splice("#{self[:start] - self[:seqstart] + 1}..#{self[:stop] - self[:seqstart] + 1}")
end

#whole_seqBio::Sequence

Return whole deposited sequence

Returns:

  • (Bio::Sequence)

    gene sequence



150
151
152
# File 'lib/exodb/datamodel/genelocfield.rb', line 150

def whole_seq
  Bio::Sequence::NA.new(self[:sequence])
end