пятница, 27 декабря 2024 г.

Побеждаем базу данных UNIPROT при помощи duckdb

Широко известную в узких кругах базу UNIPROT можно скачать для локального использования в виде очень простых по своей структуре, но не очень удобных в использовании файлов. Например, goa_uniprot_gcrp.gpa.gz (contains all GO annotations for canonical accessions from the UniProt reference proteomes for all species, which provide one protein per gene. The reference proteomes comprise the protein sequences annotated in Swiss-Prot or the longest TrEMBL transcript if there is no Swiss-Prot record) содержит несколько строк комментариев, начинающихся с "!", за которыми следует таблица из 12 столбцов и 400 млн. строк без заголовков. В разархивированном виде файл весит 44 Гб, и для нормальной работы с ним в традиционном R-стиле с загрузкой таблицы целиком в ОЗУ нужно иметь в запасе ~128 Гб. Под катом решение в несколько строк кода, позволяющее снизить требования по памяти до пары Гб при сохранении приемлемой скорости работы.