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_isoforms?()
Alias for: has_splices?
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_isoform()
Alias for: longest_splice
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