TLDR
ใช้ Python เพื่อจัดการ / แก้ไขอินพุตและจัดเรียงเอาต์พุตของคุณและใช้ HDF5 เพื่อจัดระเบียบ / เก็บข้อมูลของคุณ ซับซ้อนเท่าที่ดูในตอนแรกมันจะง่ายกว่า SQL-nothing
ตอบอีกต่อไป + ตัวอย่าง
ฉันใช้การรวมกันของ Python scripting และรูปแบบไฟล์ HDF5 เพื่อจัดการกับสถานการณ์ประเภทนี้ การเขียนสคริปต์ Python สามารถจัดการการแทนที่ข้อความที่จำเป็นสำหรับการแก้ไข runfiles ของคุณ (และสามารถตรวจสอบการทำงานซ้ำ) และด้วยการเขียนสคริปต์เพิ่มเติมคุณสามารถนำข้อมูลที่ส่งออกจากโปรแกรมของคุณและใส่ลงในไฟล์ HDF5
เป็นการง่ายที่สุดที่จะนึกถึง HDF5 ว่าเหมือนกับระบบไฟล์ปกติมากขึ้น (เช่นชุดของไดเรกทอรีและไดเรกทอรีย่อยในคอมพิวเตอร์ของคุณ) แต่สิ่งหนึ่งที่ปรับขนาดได้อย่างง่ายดายเป็นชุดข้อมูลขนาดใหญ่ แต่ละไดเรกทอรี / ไดเรกทอรีย่อยสามารถติดแท็กด้วยข้อมูลเมตา (ในกรณีของคุณอาจเป็นเพียงพารามิเตอร์ที่คุณกำลังเปลี่ยนแปลงหรือชุดพารามิเตอร์ทั้งหมด) เมื่อถึงเวลาวิเคราะห์ข้อมูลของคุณคุณสามารถค้นหาได้ตามข้อมูลเมตา
ต่อไปนี้เป็นตัวอย่างสั้น ๆ ของวิธีการทำงานของข้อมูลจำลองของฉัน (ในรูปแบบ HDF5) ที่มีลักษณะดังนี้:
mydata.hdf5
|___Run01(metadata: {size:13, maxSteps:1e7, maxTime:inf})
|___Run02(metadata: {size:10, maxSteps:1e6, maxTime:inf})
|___Run03(metadata: {size:13, maxSteps:1e7, maxTime:inf})
|___Run04(metadata: {size:9, maxSteps:1e7, maxTime:inf})
mydata.hdf5
คือไฟล์ HDF5 และ Runxx แต่ละรายการเป็นไดเรกทอรีย่อยที่เก็บข้อมูลเอาต์พุตจากการจำลองที่กำหนดและถูกติดแท็กด้วยข้อมูลเมตาที่เกี่ยวข้อง สคริปต์ python ที่ค้นหาการเรียกใช้และส่งคืนรายการที่มีเมทาดาทาที่ต้องการจะมีลักษณะดังนี้:
import sys
import h5py #the python module that interfaces with HDF5
def GetRuns(hdfRoot, attributeValuePairs):
return [subdir for subdir in hdfRoot.values() if not(attributeValuePairs.viewitems() - dict(subdir.attrs).viewitems())]
if __name__=="__main__":
attributeValuePairs = dict(zip(sys.argv[2::2], sys.argv[3::2]))
with h5py.File(sys.argv[1]) as hdfRoot:
runs = GetRuns(hdfRoot, attributeValuePairs)
#do something here with runs...
print runs
ดังนั้นถ้าฉันอยู่ที่บรรทัดคำสั่งในไดเรกทอรีที่มีmydata.hdf5
ฉันสามารถเรียกใช้สคริปต์ข้างต้นดังนี้:
python myscript.py mydata.hdf5 maxSteps 1e7 size 13
ซึ่งจะบอกสคริปต์เพื่อค้นหาวิ่งใด ๆ {'maxSteps':'1e7', 'size':'13'}
กับเมตาดาต้าทั้งหมดหรือบางส่วนที่ตรงกับ สคริปต์สามารถจัดการข้อมูลที่คุณชอบได้ (ในส่วน "ทำอะไรที่นี่") จากนั้นสคริปต์จะพิมพ์รายการที่มีลักษณะดังนี้:
["Run01", "Run03"]
แม้ว่าหนึ่งหมายเหตุคือ HDF5 จะนำเสนอการทำแผนที่ที่เป็นธรรมชาติอย่างสมบูรณ์สำหรับข้อมูลของคุณเฉพาะในกรณีที่เป็นไปได้ที่จะแสดงข้อมูลของคุณเป็นชุดของอาร์เรย์ n-Dim เป็นเรื่องปกติที่ผลลัพธ์ของการจำลองจะอยู่ในอาร์เรย์บางประเภทดังนั้นสิ่งนี้อาจไม่เป็นปัญหา
จุดเริ่มต้นที่ดี
Python: http://www.openbookproject.net/thinkcs/python/english2e/
HDF5: http://www.h5py.org/docs/