class Exodb::Cell

Public Class Methods

translate!() click to toggle source
# File lib/exodb/datamodel/source.rb, line 57
def self.translate!
        self.where({}).each {|e| e.translate!}
end

Public Instance Methods

add_to_dataset(str) click to toggle source

get the start position of gene rely on the genome

@param [String] oid or

# File lib/exodb/datamodel/source.rb, line 64
def add_to_dataset(str)
        
        dataset = Dataset.where('$or' => [{'oid' => str}, {'name' => str}])
        
        if dataset.exists?
                self.dataset = dataset.first()
                #output.puts "#EXODUS:INFO This sample is added to #{dataset.first().name}." if $0 == 'pry'
        else
                #output.puts "#EXODUS:ERRO Cannot find dataset by #{str}."  if $0 == 'pry'
        end
end
translate!(cutoff = 0) click to toggle source

Translate variant

@param [Float] cutoff score

# File lib/exodb/datamodel/source.rb, line 79
def translate!(cutoff = 0)
        self.variants.each do |variant|
                
                Generef.cover?(variant.location_str).each do |generef|
                        
                        if generef.can_translated?
                                
                                mainsplice = generef.longest_splice
                                position = mainsplice.get_prot_pos(variant.start)
                                
                                if !position.empty?
                                        gene = self.genes.find_or_create_by({symbol: generef.symbol})
                                        gene.generef = generef
                                        aacid = gene.aacids.find_or_create_by({position: /\A[A-Z]#{position[0]}[A-Z]?\z/ =~ variant.aachange ? position[0] : variant.aachange.split(/(\d+)/)[1].to_i})
                                        aacid.refcodon = mainsplice.get_codon(position[0]) if !aacid.refcodon
                                        aacid.refaa = mainsplice.get_codon(position[0]).translate if !aacid.refaa
                                        aacid.altcodon = {} if !aacid.altcodon
                                        aacid.altcodon[position[1]]  = aacid.altcodon[position[1]] ? aacid.altcodon[position[:posincodon]] | variant.alternate : variant.alternate
                                        aacid.isoform = [] if !aacid.isoform
                                        aacid.variants.push(variant)
                                        
                                        generef.splices.each do |splice|
                                                position = splice.get_prot_pos(variant.start)
                                                aacid.isoform.push("#{generef.get_xref()}:p.#{mainsplice.get_codon(position[0]).translate}#{position[0]}") if !position.empty?
                                        end
                                        gene.save!
                                end
                        end
                end
        end
end