a b/inst/queries/segmentedDataRange.xq
1
; segmentedDataRange
2
(fn [dataset samples chr start end]
3
    (let [getfield (fn [field]
4
                     (:id (car (query {:select [:field.id]
5
                                       :from [:dataset]
6
                                       :join [:field [:= :dataset.id :field.dataset_id]]
7
                                       :where [:and [:= :field.name field] [:= :dataset.name dataset]]}))))
8
          sampleID (getfield "sampleID")]
9
      {:samples (map :value (query {:select [:value]
10
                                    :from [:code]
11
                                    :where [:and [:in :value samples][:= :field_id sampleID]]}))
12
       :rows (xena-query {:select ["sampleID" "position" "value"]
13
                          :from [dataset]
14
                          :where [:and [:in "position" [[chr start end]]] [:in "sampleID" samples]]})}))