Анализируйте файлы .bgen с помощью HAIL без загрузки данных на одном узле
Я пытаюсь проанализировать геномные данные, которые доставляются в формате.bgen в Spark DF с помощью HAIL. Размер файла составляет 150 ГБ, и он не поместится в один узел моего кластера.
Мне интересно, есть ли потоковые команды / способы для анализа данных в желаемый целевой формат, которые не требуют от меня загрузки данных в память заранее.
Буду очень признателен за любые предложения / идеи! Большое спасибо!
2 ответа
Hail не загружает данные в память, а течет через нее. С какой ошибкой вы столкнулись? Следующее должно работать нормально:
import hail as hl
mt = hl.import_bgen('gs://path/to/file.bgen')
mt.show()
Вы можете использоватьto_spark
чтобы получить фрейм данных Spark из таблицы Hail Matrix.
Могли бы вы использовать автономный считыватель BGEN, чтобы получить то, что вам нужно, а затем переместить его в нужный формат?
import numpy as np
from bgen_reader import open_bgen
bgen = open_bgen("M:/deldir/genbgen/good/merged_487400x1100000.bgen")
# read all samples and variants 1M to 1M+31
val = bgen.read(np.s_[:,1000000:1000031])
print(val.shape)
=> (487400, 31, 3)
Библиотека 'bed-reader' предлагает API-интерфейс, вдохновленный NumPy, который позволяет очень быстро и легко считывать фрагменты файлов BGEN в массивы NumPy. При первом чтении создается файл метаданных. После этого он запускается мгновенно и считывает миллионы вероятностей в секунду.
- Установить: https://pypi.org/project/bgen-reader/
- Документы: https://bgen-reader.readthedocs.io/en/latest/quickstart2.html
Я рад помочь с использованием или вопросами.
- Карл