class Exodb::Generef
Public Class Methods
expanding()
click to toggle source
oid = “chrrefseq:start..stop”
# File lib/exodb/datamodel/generef.rb, line 41 def self.expanding return @@expanding end
Public Instance Methods
can_translated?()
click to toggle source
Check if Generef
can translate
@return [Boolean] Return true if this can be translate
# File lib/exodb/datamodel/generef.rb, line 172 def can_translated?() return self.has_sequence? && self.has_splices? && self.longest_splice != nil ? true : false end
dl_occurrent!()
click to toggle source
Download incident data from TCGA
# File lib/exodb/datamodel/generef.rb, line 79 def dl_occurrent! if self.get_xref('urn:miriam:hgnc.symbol') cancerstudies = [] open("http://www.cbioportal.org/public-portal/webservice.do?cmd=getCancerStudies") {|f| f.each_line {|line| cancerstudies.push(line.chomp.split("\t")[0])} } occurrents = {} totalcase = {} cancerstudies.each do |study| totalcase[study] = 0 if !totalcase.has_key?(study) open("http://www.cbioportal.org/public-portal/webservice.do?cmd=getCaseLists&cancer_study_id=#{study}") do |f| f.each_line do |line| totalcase[study] += line.chomp.split(/\t/)[4].split(' ').length if line =~ /\tSequenced Tumors\t/ end end occurrents[study] = {} if !occurrents.has_key?(study) open("http://www.cbioportal.org/public-portal/webservice.do?cmd=getMutationData&genetic_profile_id=#{study}_mutations&gene_list=#{self.get_xref('urn:miriam:hgnc.symbol').id}") do |f| f.each_line do |line| dat = line.chomp.split(/\t/) if dat[5] == 'Missense_Mutation' occurrents[study][dat[7].split(/(\d+)/)[1]] = [] if !occurrents[study].has_key?(dat[7].split(/(\d+)/)[1]) occurrents[study][dat[7].split(/(\d+)/)[1]].push(dat[2]) end end end end self.occurrents.clear if self.occurrents occurrents.each_pair do |cancertype, v| v.each_pair do |position, occur| self.occurrents << Occurrent.new({cancertype: cancertype, position: position, occur: occur.uniq.sort, casenumber: totalcase[cancertype]}) end end self.save! end end
dl_symbol!()
click to toggle source
Download gene symbol from HGNC service
# File lib/exodb/datamodel/generef.rb, line 47 def dl_symbol! baseuri = "http://rest.genenames.org/search" query = "" if self.get_xref('urn:miriam:refseq') query = "#{baseuri}/refseq_accession/#{self.chrrefseq.id.split('.')[0]}" elsif self.get_xref('urn:miriam:ncbigene') query = "" end if !query.empty? response = JSON.parse(open(query, 'Accept' => 'application/json').read)['response'] if !response['docs'].empty? response['docs'].each do |e| self.add_to_set(:xrefs, "urn:miriam:hgnc:#{e["hgnc_id"]}") self.add_to_set(:xrefs, "urn:miriam:hgnc.symbol:#{e["symbol"]}") end self.save! end end end
has_sequence?()
click to toggle source
Check if Generef
has sequence
@return [Boolean] Return true if there is a sequence
# File lib/exodb/datamodel/generef.rb, line 165 def has_sequence?() return self[:sequence] ? true : false end
has_splices?()
click to toggle source
Check that this gene has any splice variant
@return [Boolean] true if has any splices
# File lib/exodb/datamodel/generef.rb, line 156 def has_splices? return self.isoforms.exists? end
Also aliased as: has_isoforms?
longest_splice()
click to toggle source
return longest splice of this gene
# File lib/exodb/datamodel/generef.rb, line 136 def longest_splice() length = 0 longest = nil self.isoforms.each do |e| if e.prot_len > length length = e.prot_len longest = e end end return longest end
Also aliased as: longest_isoform
symbol()
click to toggle source
Get gene symbol
@return [String] Return gene symbol or any id from xrefs or ‘nosymbol’
# File lib/exodb/datamodel/generef.rb, line 179 def symbol if self.get_xref('urn:miriam:hgnc.symbol') return self.get_xref('urn:miriam:hgnc.symbol').id elsif self.xrefs && !self.xrefs.empty? return self.xrefs.sort[0].id else return 'nosymbol' end end