class Exodb::Mapping
Public Class Methods
convert(locstr, target = Exodb::LATESTASSEMBLY)
click to toggle source
# File lib/exodb/datamodel/reference.rb, line 67 def self.convert(locstr, target = Exodb::LATESTASSEMBLY) begin query = parse_locstr(locstr) return self.where({from: query['assembly'], to: target, :start.lte => query[:pos], :stop.gte => query[:pos]}).first.convert(query[:pos]) rescue end end
load_assembly_mapping!(from, to)
click to toggle source
# File lib/exodb/extra/upload.rb, line 17 def self.load_assembly_mapping!(from, to) self.where(from: Exodb::assembly(from), to: Exodb::assembly(to)) Exodb::Chrref.where({:assembly => Exodb::assembly(from), 'location.chr' => /\Achr/}).each do |chr| Exodb::Ensembl::REST.assembly_map(chr.locstr =~ /\Achr/ ? chr.locstr[3..-1] : chr.locstr, Exodb::assembly(to), Exodb::assembly(from))["mappings"].each do |map| #map = {"original"=>{"seq_region_name"=>"1", "strand"=>1, "coordinate_system"=>"chromosome", "end"=>235674528, "start"=>235669016, "assembly"=>"GRCh37"}, "mapped"=>{"seq_region_name"=>"1", "strand"=>1, "coordinate_system"=>"chromosome", "end"=>235511225, "start"=>235505713, "assembly"=>"GRCh38"}} mapping = self.new() mapping.chr = "#{map['original']["coordinate_system"] == "chromosome" ? 'chr' : ''}#{map['original']["seq_region_name"]}" mapping.start = map['original']["start"] mapping.stop = map['original']["end"] mapping.from = map['original']["assembly"] mapping.tchr = "#{map['mapped']["coordinate_system"] == "chromosome" ? 'chr' : ''}#{map['mapped']["seq_region_name"]}" mapping.tstart = map['mapped']["start"] mapping.tstop = map['mapped']["end"] mapping.coeff = map['mapped']["strand"] mapping.to = map['mapped']["assembly"] p mapping.save! end end end
Public Instance Methods
convert(pos)
click to toggle source
# File lib/exodb/datamodel/reference.rb, line 76 def convert(pos) return "#{self[:tchr]}:#{(coeff > 0 ? tstart : tstop) + ((pos - self[:start]) * coeff)}:#{to}" end