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