Module: Gene
- Extended by:
- Entity
- Defined in:
- lib/rbbt/entity/gene.rb
Constant Summary
Constants included
from Entity
Entity::UNPERSISTED_PREFIX
Class Method Summary
collapse
Methods included from Entity
extended
Class Method Details
.ensg2enst(organism, gene) ⇒ Object
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/rbbt/entity/gene.rb', line 17
def self.ensg2enst(organism, gene)
@@ensg2enst ||= {}
@@ensg2enst[organism] ||= Organism.gene_transcripts(organism).tsv(:type => :flat, :key_field => "Ensembl Gene ID", :fields => ["Ensembl Transcript ID"], :persist => true, :unnamed => true)
if Array === gene
@@ensg2enst[organism].values_at *gene
else
@@ensg2enst[organism][gene]
end
end
|
.filter(query, field = nil, options = nil, entity = nil) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/rbbt/entity/gene.rb', line 28
def self.filter(query, field = nil, options = nil, entity = nil)
return true if query == entity
return true if query == Gene.setup(entity.dup, options.merge(:format => field)).name
false
end
|
.gene_list_bases(genes) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/rbbt/entity/gene.rb', line 36
def self.gene_list_bases(genes)
genes = genes.ensembl
chromosome_genes = {}
Misc.process_to_hash(genes){|genes| genes.chromosome}.each{|gene, chr| chromosome_genes[chr] ||= []; chromosome_genes[chr] << gene}
total = 0
chromosome_genes.each do |chr,gs|
next if chr.nil?
total += Misc.total_length(genes.annotate(gs).chr_range.compact)
end
total
end
|
.gene_list_exon_bases(genes) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/rbbt/entity/gene.rb', line 49
def self.gene_list_exon_bases(genes)
genes = genes.ensembl
chromosome_genes = {}
Misc.process_to_hash(genes){|genes| genes.chromosome}.each{|gene, chr| chromosome_genes[chr] ||= []; chromosome_genes[chr] << gene}
@@exon_range_tsv ||= {}
organism = genes.organism
@@exon_range_tsv[organism] ||= Organism.exons(organism).tsv :persist => true, :fields => ["Exon Chr Start", "Exon Chr End"], :type => :list, :cast => :to_i, :unnamed => true
total = 0
chromosome_genes.each do |chr,gs|
next if chr.nil?
exons = genes.annotate(gs).transcripts.compact.flatten.exons.compact.flatten.uniq
exon_ranges = exons.collect{|exon|
Log.low "Exon #{ exon } does not have range" unless @@exon_range_tsv[organism].include? exon
next unless @@exon_range_tsv[organism].include? exon
pos = @@exon_range_tsv[organism][exon]
(pos.first..pos.last)
}.compact
total += Misc.total_length(exon_ranges)
end
total
end
|