TL, DR
Какова общепринятая практика в научных вычислительных кругах для хранения большого количества иерархически структурированных данных? Например, SQL плохо работает с большими разреженными матрицами. Есть ли хороший инструмент для структурирования, складирования и анализа таких данных? Что используют ребята на LHC?
Использовать детали случая
Я хочу хранить данные моделирования белка в соответствии со следующей иерархией:
protein
|__simulation conditions
|____|__residues
|____|____|__conformers
|____|____|____|__atoms
Каждый белок должен знать о каждом своем остатке, каждый атом должен знать условия, используемые для его моделирования и т. Д., И наоборот.
Первоначально я полагал, что реляционная база данных была бы идеальной для этого приложения, и поэтому я написал программу, использующую python и sqlalchemey, которая хранит данные в базе данных SQL. Однако на практике эта программа работает не так хорошо.
Самая большая проблема связана с тем фактом, что на уровне данных конформера существует матрица N x N, которая хранит потенциальную энергию из-за парных взаимодействий между каждой возможной парой конформеров. Большинство записей в матрице являются нулями, поэтому я храню матрицу в отдельной таблице в базе данных в своего рода разреженном формате, по одной строке на запись. К сожалению, для моделирования, включающего несколько тысяч конформеров, парная таблица все еще заканчивается несколькими сотнями тысяч строк и:
а) очень медленно строит и запрашивает (часы)
б) занимает на порядок больше места на моем жестком диске, чем эквивалентное текстовое представление данных в виде не разреженной матрицы
в) занимает более десяти гигабайт памяти, когда таблица читается в память
Моя конечная цель - сохранить в базе данных десятки тысяч прогонов (полученных из тысяч белков при нескольких десятках условий моделирования), чтобы их можно было анализировать вместе. Это будет означать, что таблица, представляющая попарные матрицы, вероятно, вырастет примерно до миллиарда строк. В настоящее время мне кажется, что мне понадобится Cray или какой-нибудь другой монстр с общей памятью, чтобы даже выполнить один запрос к этой базе данных.
У меня есть варианты получше? Что используют ребята на LHC?
Использование базы данных отлично подходит для организации / поиска данных моделирования (поиск по белку, поиск по параметрам моделирования). Затем база данных должна сообщить вам, где найти соответствующую информацию на диске, где, как я полагаю, ее лучше всего хранить отдельно для каждого прогона моделирования в любом типе файла, который удобнее всего загрузить для анализа (независимо от того, какой пользователь вы выбрали - из какого-либо набора для моделирования). Используешь).
Это позволит вам быстро найти желаемое моделирование и даст вам свободу / производительность при использовании разреженных матриц или любых других инструментов, необходимых для эффективного анализа.
источник
Посмотрите, может ли TextMaster Data Editor PRO вам чем-то помочь. http://exnp.com/TM/
источник