-
Notifications
You must be signed in to change notification settings - Fork 0
/
core.clj
81 lines (60 loc) · 2 KB
/
core.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
42
43
44
45
46
47
48
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
74
75
76
77
78
79
80
81
(ns ensembl.core
(:use [ensembl.config :only (data-source)])
(:import [uk.ac.roslin.ensembl.dao.database DBRegistry]))
(def ^:dynamic *registry* nil)
(defmacro with-registry
[registry & body]
`(binding [*registry* ~registry] ~@body))
(defn set-registry!
[registry]
(alter-var-root #'*registry*
(constantly registry)
(when (thread-bound? #'*registry*)
(set! *registry* registry))))
(defn registry
[ds]
(DBRegistry. (data-source ds)))
(defn- list-species-transform
[style]
(get {:binomial (memfn getSpeciesBinomial)
:common (memfn getCommonName)
:compara (memfn getComparaName)
:database (memfn getDatabaseStyleName)
:display (memfn getDisplayName)
:short (memfn getShortName)}
style
identity))
(defn list-species
[& [style]]
(map (list-species-transform style) (.getSpecies *registry*)))
(defn species
[species-name]
(or (.getSpeciesByEnsemblName *registry* (name species-name))
(.getSpeciesByAlias *registry* (name species-name))))
(defn list-chromosomes
[species-name]
(map #(.getChromosomeName %) (vals (.getChromosomes (species species-name)))))
(defn chromosome
[species-name chromosome-name]
(.getChromosomeByName (species species-name) chromosome-name))
(defn genes-on-region
([species-name chromosome-name begin end]
(genes-on-region (chromosome species-name chromosome-name) begin end))
([chromosome begin end]
(.getGenesOnRegion chromosome (Integer. begin) (Integer. end))))
(defn gene
[species-name gene-stable-id]
(.getGeneByStableID (species species-name) gene-stable-id))
(comment
(def ensreg (registry :ensembldb))
(with-registry ensreg
(list-species)
(chromosome "human" "20")
(gene "human" "ENSG00000153551"))
(set-registry! ensreg)
(list-species)
(chromosome "human" "20")
(list-chromosomes "human")
(genes-on-region "human" "chr20" 1 100000)
(genes-on-region (chromoosme "human" "20") 1 100000)
)