계층 적 시뮬레이션 데이터 저장을위한 모범 사례 싶습니다. protein

TL, DR

대량의 계층 구조 데이터를 저장하기 위해 과학 컴퓨팅 분야에서 인정되는 모범 사례는 무엇입니까? 예를 들어 SQL은 큰 희소 행렬로 훌륭하게 재생되지 않습니다. 이런 종류의 데이터를 구조화, 보관 및 분석하는 데 유용한 도구가 있습니까? LHC 직원들은 무엇을 사용합니까?

사용 사례 세부 사항

다음 계층 구조에 따라 단백질 시뮬레이션의 데이터를 저장하고 싶습니다.

protein
  |__simulation conditions
  |____|__residues
  |____|____|__conformers
  |____|____|____|__atoms

모든 단백질은 각각의 잔류 물을 알고 있어야하며, 모든 원자는 시뮬레이션에 사용 된 조건 등을 알아야하며 그 반대도 마찬가지입니다.

원래 관계형 데이터베이스가이 응용 프로그램에 완벽 할 것이라고 생각했기 때문에 SQL 데이터베이스에 데이터를 저장하는 python과 sqlalchemey를 사용하는 프로그램을 작성했습니다. 그러나 실제로이 프로그램은 제대로 작동하지 않습니다.

가장 큰 문제는 모든 가능한 쌍의 순응 자 사이의 쌍별 상호 작용으로 인해 잠재적 에너지를 저장하는 순응 자 데이터 레벨에 N x N 매트릭스가 있다는 사실과 관련이 있습니다. 행렬의 대부분의 항목은 0이므로 데이터베이스의 별도 테이블에 행렬을 항목 당 한 줄씩 희소 형식으로 저장합니다. 불행히도, 수천 개의 순응자를 포함하는 시뮬레이션의 경우 pairwise 테이블은 여전히 ​​수십만 개의 행으로 끝나고 다음과 같습니다.

a) 빌드 및 쿼리 속도가 매우 느리다 (시간)
b) 희소 행렬이 아닌 데이터의 동등한 일반 텍스트 표현보다 하드 드라이브에서 더 많은 공간을
차지합니다. c) 10 기가 바이트 이상의 메모리를 차지합니다. 테이블을 메모리로 읽습니다.

나의 궁극적 인 목표는 데이터베이스에 수만 개의 런 (수십 개의 시뮬레이션 조건에서 수천 개의 단백질에서 파생 된)을 저장하여 모두 함께 분석하는 것입니다. 이는 페어 단위 행렬을 나타내는 테이블이 약 10 억 행으로 늘어날 수 있음을 의미합니다. 현재이 데이터베이스에서 단일 쿼리를 실행하기 위해 Cray 또는 다른 공유 메모리 몬스터가 필요할 것 같습니다.

더 나은 옵션이 있습니까? LHC 직원들은 무엇을 사용합니까?



답변

HDF5 파일 형식 사용을 고려하십시오 . HDF5는 몇 가지 유용한 기능을 갖춘 계층 적 데이터 저장 형식입니다.

  • 플랫폼 독립 스토리지 : 라이브러리는 거의 / 거대한 엔디안을 처리합니다
  • 데이터 세트의 계층 적 레이아웃 : 파일 내의 파일 시스템
  • 확장 가능한 대형 n 차원 어레이 스토리지
  • 혼합 데이터 세트 유형은 하나의 파일 내에 존재할 수 있습니다 (예 : 정수, 부동 소수점 등)
  • 자동 압축 가능
  • 이진 저장
  • 병렬 I / O

C 및 Fortran 인터페이스와 Python ( h5pypytables ) 랩퍼가 있습니다. MATLAB은 HDF5도 읽을 수 있습니다. HDF5는 거의 융통성이 있으며, 즉 “자기 설명”이 아니므로 XDMF 가 생성 됩니다 .

“시뮬레이션에 사용 된 조건”이 무엇을 의미하는지 정확히 알지 못하지만 이러한 매개 변수가 작은 매개 변수 인 경우 속성으로 저장할 수 있습니다 .


답변

데이터베이스를 사용하면 시뮬레이션 데이터를 구성 / 검색 할 수 있습니다 (단백질 검색, 시뮬레이션 매개 변수 검색). 그런 다음 데이터베이스는 디스크에서 관련 정보를 찾을 수있는 위치를 알려 주어야합니다. 여기서 분석을 위해로드하기에 가장 편리한 파일 형식 (사용자 정의 또는 시뮬레이션 스위트 중 어느 것이 든)에 따라 시뮬레이션별로 실행하는 것이 가장 좋습니다. 사용하고 있습니다).

이를 통해 원하는 시뮬레이션을 신속하게 찾을 수 있으며 희소 행렬 또는 효율적인 분석을 수행하는 데 필요한 도구를 자유롭게 사용할 수 있습니다.