টিএলডিআর
আপনার ইনপুটটি পরিচালনা / পরিবর্তন করতে এবং আউটপুট প্রবাল করতে পাইথন ব্যবহার করুন এবং আপনার ডেটা সংগঠিত / সঞ্চয় করতে এইচডিএফ 5 ব্যবহার করুন। প্রথমটিকে যত জটিল মনে হচ্ছে এটি এসকিউএল-যে কোনও কিছুর চেয়ে সহজ হবে।
দীর্ঘ উত্তর + উদাহরণ
আমি এই ধরণের পরিস্থিতি মোকাবেলায় ব্যক্তিগতভাবে পাইথন স্ক্রিপ্টিং এবং এইচডিএফ 5 ফাইল ফর্ম্যাটটির সংমিশ্রণটি ব্যবহার করি। পাইথন স্ক্রিপ্টিং আপনার রানফাইলগুলি পরিবর্তনের জন্য প্রয়োজনীয় পাঠ্য বিকল্পগুলি পরিচালনা করতে পারে (এবং ডুপ্লিকেট রানগুলি পরীক্ষা করতে পারে) এবং আরও কিছু স্ক্রিপ্টিংয়ের সাহায্যে আপনি আপনার প্রোগ্রাম থেকে আউটপুট ডেটা নিতে এবং একটি HDF5 ফাইলে রাখতে পারেন put
এইচডিএফ 5 কে কম বেশি সাধারণ ফাইল সিস্টেমের (যেমন আপনার কম্পিউটারে ডিরেক্টরি এবং উপ-ডিরেক্টরিগুলির সেট) বলে মনে করা সবচেয়ে সহজ তবে বড় ডেটা সেটগুলিতে সহজেই স্কেল করে। প্রতিটি ডিরেক্টরি / উপ-ডিরেক্টরিকে মেটাডেটা দিয়ে ট্যাগ করা যেতে পারে (আপনার ক্ষেত্রে হয় কেবলমাত্র যে পরামিতিগুলি আপনি পৃথক করছেন তা বা পুরো পরামিতিগুলির সেট)। যখন আপনার ডেটা বিশ্লেষণ করার সময় আসে আপনি মেটাডেটার ভিত্তিতে এটি অনুসন্ধান করতে পারেন।
আমার কিছু সিমুলেশন ডেটার (ইতিমধ্যে এইচডিএফ 5 ফর্ম্যাটে) এর উপর ভিত্তি করে এটি কীভাবে কাজ করবে তার একটি সংক্ষিপ্ত উদাহরণ এখানে:
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
এইচডিএফ 5 ফাইল, এবং প্রতিটি রানএক্সএক্স একটি উপ-ডিরেক্টরি যা কোনও নির্দিষ্ট সিমুলেশন থেকে আউটপুট ডেটা ধারণ করে এবং যা সম্পর্কিত মেটাডেটা দ্বারা ট্যাগ হয়। একটি অজগর স্ক্রিপ্ট যা রানগুলি অনুসন্ধান করে এবং পছন্দসই মেটাডেটাযুক্ত তাদের একটি তালিকা ফিরিয়ে দেয়:
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"]
তবে একটি দ্রষ্টব্য হ'ল এইচডিএফ 5 কেবলমাত্র আপনার ডেটার জন্য সম্পূর্ণ প্রাকৃতিক ম্যাপিং উপস্থাপন করতে চলেছে যদি আপনার ডেটা এন-ডাইমেনশনাল অ্যারের সেট হিসাবে উপস্থাপন করা সম্ভব হয়। সিমুলেশনগুলির আউটপুট কোনও ধরণের অ্যারেতে থাকা খুব সাধারণ, তাই সম্ভবত এটি কোনও সমস্যা হবে না।
পাইথনের শুভ সূচনা পয়েন্ট : http://www.openbookproject.net/thinkcs/python/english2e/
HDF5: http://www.h5py.org/docs/