Как выполнять запросы наследования / передачи в схеме вариантов BigQuery

Схема вариантов, используемая конвейерами преобразования вариантов Google Genomics, представляет генотипы в виде вложенных записей в BigQuery, например:

Пример 1000 вариантов генома с 4 генотипами

(из: https://bigquery.cloud.google.com/table/genomics-public-data:1000_genomes.variants?pli=1&tab=preview)

У меня возникают проблемы с пониманием того, как писать запросы, которые включают отношения между образцами, такие как:

select all variants where sampleA.genotype=HET and sampleB.genotype=HET and sampleC.genotype=HOM-ALT

или аналогичные запросы, где sampleA и sampleB являются родителями sampleC, и вы ищете варианты, которые следуют определенному шаблону наследования.

Как люди пишут эти запросы с помощью вложенной схемы?

1 ответ

Решение

Я думаю, что это будет что-то вроде ниже - не проверял, так как таблица довольно дорогая - но один прогон дал нулевой результат, означающий, что нет записей, которые соответствуют этим конкретным критериям - но, по крайней мере, вы видите логику, как сделать такой запрос

SELECT * EXCEPT(cnt)
FROM (
    SELECT reference_name,  start, `end`,
        (SELECT COUNT(1) 
            FROM UNNEST(call) 
            WHERE (call_set_name="HG00261" AND genotype[SAFE_OFFSET(0)] = 0 AND genotype[SAFE_OFFSET(1)] = 1)
            OR (call_set_name="HG00593" AND genotype[SAFE_OFFSET(0)] = 1 AND genotype[SAFE_OFFSET(1)] = 0)
            OR (call_set_name="NA12749 " AND genotype[SAFE_OFFSET(0)] = 1 AND genotype[SAFE_OFFSET(1)] = 1)
        ) cnt
    FROM `genomics-public-data.1000_genomes.variants` 
)
WHERE cnt = 3 
Другие вопросы по тегам