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