a b/inst/queries/datasetGeneProbeAvg.xq
1
; datasetGeneProbeAvg
2
(fn [dataset samples genes]
3
    (let [probemap (:probemap (car (query {:select [:probemap]
4
                                           :from [:dataset]
5
                                           :where [:= :name dataset]})))
6
          get-probes (fn [gene] (xena-query {:select ["name" "position"] :from [probemap] :where [:in :any "genes" [gene]]}))
7
          avg (fn [scores] (mean scores 0))
8
          scores-for-gene (fn [gene]
9
              (let [probes (get-probes gene)
10
                    probe-names (probes "name")
11
                    scores (fetch [{:table dataset
12
                                    :samples samples
13
                                    :columns probe-names}])]
14
                {:gene gene
15
                 :position (probes "position")
16
                 :scores (if (car probe-names) (avg scores) [[]])}))]
17
      (map scores-for-gene genes)))