Class: Exodb::Mapping
- Inherits:
-
Object
- Object
- Exodb::Mapping
- Includes:
- Mongoid::Document
- Defined in:
- lib/exodb/extra/upload.rb,
lib/exodb/datamodel/reference.rb
Class Method Summary collapse
- .convert(locstr, target = Exodb::LATESTASSEMBLY) ⇒ Object
- .load_assembly_mapping!(from, to) ⇒ Object
Instance Method Summary collapse
Class Method Details
.convert(locstr, target = Exodb::LATESTASSEMBLY) ⇒ Object
67 68 69 70 71 72 73 74 |
# 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) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# 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 |
Instance Method Details
#convert(pos) ⇒ Object
76 77 78 |
# File 'lib/exodb/datamodel/reference.rb', line 76 def convert(pos) return "#{self[:tchr]}:#{(coeff > 0 ? tstart : tstop) + ((pos - self[:start]) * coeff)}:#{to}" end |