แนวปฏิบัติที่ดีที่สุดสำหรับการจัดเก็บข้อมูลการจำลองแบบลำดับชั้น


13

TL, DR

แนวปฏิบัติที่ดีที่สุดที่ได้รับการยอมรับในวงการคำนวณทางวิทยาศาสตร์คืออะไรสำหรับการจัดเก็บข้อมูลที่มีโครงสร้างเป็นลำดับชั้นจำนวนมาก ตัวอย่างเช่น SQL ไม่สามารถเล่นได้ดีกับเมทริกซ์กระจัดกระจายขนาดใหญ่ มีเครื่องมือที่ดีสำหรับการจัดโครงสร้างคลังสินค้าและการวิเคราะห์ข้อมูลประเภทนี้หรือไม่? พวก LHC ใช้อะไร?

ใช้รายละเอียดเคส

ฉันต้องการจัดเก็บข้อมูลจากการจำลองโปรตีนตามลำดับชั้นดังต่อไปนี้:

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

โปรตีนทุกชนิดควรตระหนักถึงสิ่งตกค้างแต่ละอะตอมทุกอะตอมควรรู้เงื่อนไขที่ใช้ในการจำลองสถานการณ์ ฯลฯ และในทางกลับกัน

แต่เดิมฉันคิดว่าฐานข้อมูลเชิงสัมพันธ์จะสมบูรณ์แบบสำหรับแอปพลิเคชันนี้และดังนั้นฉันจึงเขียนโปรแกรมโดยใช้ python และ sqlalchemey ที่เก็บข้อมูลในฐานข้อมูล SQL อย่างไรก็ตามในทางปฏิบัติโปรแกรมนี้ทำงานได้ไม่ดีนัก

ปัญหาที่ใหญ่ที่สุดเกี่ยวข้องกับความจริงที่ว่ามีเมทริกซ์ N x N ที่ระดับข้อมูลผู้ตรวจสอบที่เก็บพลังงานที่มีศักยภาพเนื่องจากการมีปฏิสัมพันธ์ระหว่างคู่ที่เป็นไปได้ทุกคู่ที่เป็นไปได้ รายการส่วนใหญ่ในเมทริกซ์เป็นศูนย์ดังนั้นฉันจึงจัดเก็บเมทริกซ์ในตารางแยกต่างหากในฐานข้อมูลในรูปแบบที่กระจัดกระจายหนึ่งแถวต่อรายการ น่าเสียดายที่การจำลองที่เกี่ยวข้องกับผู้ใช้หลายพันคนโต๊ะคู่ยังคงจบลงด้วยแถวหลายแสนแถวและ:

a) การสร้างและการสืบค้นช้ามาก (ชั่วโมง)
b) ใช้ลำดับความสำคัญของพื้นที่บนฮาร์ดไดรฟ์ของฉันมากกว่าการแสดงข้อความธรรมดาที่เทียบเท่ากันของข้อมูลในฐานะที่เป็นเมทริกซ์ที่ไม่หรี่
c) ใช้หน่วยความจำมากกว่าสิบกิกะไบต์ ตารางถูกอ่านในหน่วยความจำ

เป้าหมายสูงสุดของฉันคือการจัดเก็บการวิ่งนับหมื่นนับพัน (มาจากโปรตีนหลายพันภายใต้เงื่อนไขการจำลองหลายโหล) ในฐานข้อมูลเพื่อให้พวกเขาสามารถวิเคราะห์ร่วมกัน นี่หมายความว่าตารางที่แสดงถึงเมทริกซ์การจับคู่ที่น่าจะเติบโตประมาณหนึ่งพันล้านแถว ขณะนี้ดูเหมือนว่าฉันจะต้อง Cray หรือสัตว์ประหลาดหน่วยความจำที่ใช้ร่วมกันอื่น ๆ เพื่อที่จะสามารถเรียกใช้แบบสอบถามเดียวในฐานข้อมูลนี้

ฉันมีตัวเลือกที่ดีกว่านี้ไหม พวก LHC ใช้อะไร?

คำตอบ:


12

ลองใช้รูปแบบไฟล์HDF5 HDF5 เป็นรูปแบบการจัดเก็บข้อมูลแบบลำดับชั้นพร้อมคุณสมบัติที่ดีหลายประการ:

  • ที่เก็บข้อมูลอิสระของแพลตฟอร์ม: ห้องสมุดจะดูแลความเป็นตัวตนเล็ก ๆ / ใหญ่สำหรับคุณ
  • เค้าโครงลำดับชั้นของชุดข้อมูล: เช่นระบบไฟล์ภายในไฟล์
  • ที่เก็บข้อมูลอาร์เรย์ n มิติขนาดใหญ่และเติบโตได้
  • ประเภทชุดข้อมูลแบบผสมสามารถมีอยู่ภายในไฟล์เดียว (เช่นจำนวนเต็มลอย ฯลฯ )
  • การบีบอัดอัตโนมัติสามารถใช้ได้
  • ที่เก็บข้อมูลไบนารี
  • i / o ขนาน

มีอินเตอร์เฟส C และ Fortran รวมถึงตัวห่อPython ( h5pyและpytables ) MATLAB สามารถอ่าน HDF5 HDF5 มีความยืดหยุ่นพอสมควรเกือบจะเป็นความผิดพลาดคือมันไม่ได้เป็น "ตัวเองอธิบาย" ด้วยเหตุนี้การสร้างXDMF

ฉันไม่แน่ใจว่าสิ่งที่คุณหมายถึง "เงื่อนไขที่ใช้สำหรับการจำลอง" แต่ถ้าเหล่านี้เป็นเพียงคอลเลกชันขนาดเล็กของพารามิเตอร์ที่คุณสามารถเก็บไว้เป็นแอตทริบิวต์


3
ลิงค์สองทางใน HDF5 เป็นความเจ็บปวดเล็กน้อยที่จะรักษา เนื่องจากรูปแบบ HDF5 นั้นเป็นวิธีที่คุณสามารถรีดได้ด้วยตัวเองคุณจึงสามารถพิจารณารักษาข้อมูลเมตาในฐานข้อมูลเชิงสัมพันธ์และเก็บข้อมูลที่หนักกว่าไว้ในไฟล์แยกต่างหาก (HDF5 หากต้องการ)
Jed Brown

0

การใช้ฐานข้อมูลนั้นยอดเยี่ยมสำหรับการช่วยคุณจัดระเบียบ / ค้นหาข้อมูลการจำลอง (ค้นหาโดยโปรตีน, ค้นหาโดยพารามิเตอร์การจำลอง) ฐานข้อมูลควรบอกให้คุณทราบว่าจะหาข้อมูลที่เกี่ยวข้องในดิสก์ได้จากที่ใดฉันคิดว่ามันน่าจะถูกเก็บไว้ในรูปแบบต่อการจำลองในรูปแบบไฟล์ใดก็ตามที่สะดวกที่สุดในการโหลดสำหรับการวิเคราะห์ (ไม่ว่าจะกำหนดเองหรือ กำลังใช้งาน)

สิ่งนี้จะช่วยให้คุณค้นหาแบบจำลองที่คุณต้องการได้อย่างรวดเร็วและให้อิสระ / ประสิทธิภาพในการใช้เมทริกซ์กระจัดกระจายหรือเครื่องมืออะไรก็ตามที่คุณต้องใช้เพื่อทำการวิเคราะห์ที่มีประสิทธิภาพ


-8

ดูว่า TextMaster Data Editor PRO อาจช่วยคุณได้บ้าง http://exnp.com/TM/


2
นีน่ายินดีต้อนรับสู่ SciComp! คุณช่วยอธิบายได้ไหมว่าทำไมซอฟต์แวร์นี้ถึงมีประโยชน์? นอกจากนี้โปรดเปิดเผยความร่วมมือของคุณ ชุมชนมีแนวโน้มที่จะขมวดคิ้วเมื่อได้รับการส่งเสริมโดยไม่มีส่วนร่วมในไซต์มากขึ้น เห็นส่วนหนึ่งของคำถามที่พบบ่อยสำหรับรายละเอียดนี้
Geoff Oxberry
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.