|
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]]})})) |