TL, DR
Quelle est la meilleure pratique acceptée dans les cercles de calcul scientifique pour stocker de grandes quantités de données structurées hiérarchiquement? Par exemple, SQL ne fonctionne pas bien avec les grandes matrices clairsemées. Existe-t-il un bon outil pour structurer, stocker et analyser ce type de données? Que font les gars du LHC?
Détails du cas d'utilisation
Je souhaite stocker les données des simulations de protéines selon la hiérarchie suivante:
protein
|__simulation conditions
|____|__residues
|____|____|__conformers
|____|____|____|__atoms
Chaque protéine doit être consciente de chacun de ses résidus, chaque atome doit connaître les conditions utilisées pour sa simulation, etc. et vice versa.
À l'origine, je pensais qu'une base de données relationnelle serait parfaite pour cette application, et j'ai donc écrit un programme utilisant python et sqlalchemey qui stocke les données dans une base de données SQL. Dans la pratique, cependant, ce programme ne fonctionne pas aussi bien.
Le plus gros problème concerne le fait qu'il existe une matrice N x N au niveau des données de conformateur qui stocke l'énergie potentielle en raison des interactions par paire entre chaque paire de conformateurs possible. La plupart des entrées de la matrice sont des zéros, donc je stocke la matrice dans une table distincte dans la base de données dans une sorte de format fragmenté, une ligne par entrée. Malheureusement, pour une simulation impliquant plusieurs milliers de conformistes, le tableau par paire se termine toujours par plusieurs centaines de milliers de lignes et:
a) génère et interroge très lentement (heures)
b) occupe un ordre de grandeur plus d'espace sur mon disque dur qu'une représentation en texte brut équivalente des données sous forme de matrice non clairsemée
c) occupe plus de dix gigaoctets de mémoire lorsque la table est lue en mémoire
Mon objectif ultime est de stocker des dizaines de milliers d'analyses (dérivées de milliers de protéines sous plusieurs dizaines de conditions de simulation) dans la base de données afin qu'elles puissent toutes être analysées ensemble. Cela signifierait que le tableau représentant les matrices par paire passerait probablement à environ un milliard de lignes. Actuellement, il semble que je vais avoir besoin d'un Cray ou d'un autre monstre à mémoire partagée afin d'exécuter même une seule requête sur cette base de données.
Ai-je de meilleures options ici? Que font les gars du LHC?
L'utilisation d'une base de données est idéale pour vous aider à organiser / trouver des données de simulation (Recherche par protéine, recherche par paramètres de simulation). La base de données devrait ensuite vous indiquer où trouver les informations pertinentes sur le disque, où j'imagine qu'elles sont probablement mieux stockées pour chaque simulation dans le type de fichier le plus pratique à charger pour l'analyse (que ce soit personnalisé ou à partir de la suite de simulation que vous utilise).
Cela vous permettra de trouver rapidement les simulations que vous souhaitez et vous donnera la liberté / les performances d'utiliser des matrices clairsemées ou tout autre outil dont vous avez besoin pour effectuer une analyse efficace.
la source
Vérifiez si TextMaster Data Editor PRO peut vous être utile. http://exnp.com/TM/
la source