TLDR Girişinizi
yönetmek / değiştirmek ve çıktınızı mercanlamak için Python'u, verilerinizi düzenlemek / depolamak için HDF5'i kullanın. İlk bakışta göründüğü kadar karmaşık, SQL-şeyden daha basit olacaktır.
Daha uzun cevap + Örnek
Bu tür durumlarla başa çıkmak için kişisel olarak Python komut dosyası ve HDF5 dosya biçimini bir arada kullanıyorum. Python komut dosyası çalıştırma, çalışma dosyalarınızı değiştirmek için gerekli metin ikamelerini işleyebilir (ve yinelenen çalıştırmaları kontrol edebilir) ve daha fazla komut dosyasıyla çıktı verilerini programınızdan alıp bir HDF5 dosyasına koyabilirsiniz.
HDF5'i az çok tam olarak normal bir dosya sistemi (yani bilgisayarınızdaki dizinler ve alt dizinler kümesi) gibi düşünmek, ancak büyük veri kümelerine kolayca ölçeklendirmek en kolayıdır. Her dizin / alt dizin meta verilerle etiketlenebilir (sizin durumunuzda yalnızca değiştirdiğiniz parametreler veya tüm parametre kümesi). Verilerinizi analiz etme zamanı geldiğinde, meta verilere göre arama yapabilirsiniz.
İşte bunun gibi görünen simülasyon verilerimin (zaten HDF5 biçiminde) bazılarına dayanarak nasıl çalışacağına dair kısa bir örnek:
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 dosyasıdır ve Runxx'ın her biri, belirli bir simülasyondan çıktı verilerini tutan ve ilişkili meta verilerle etiketlenmiş bir alt dizindir. Çalışmalarda arama yapan ve istenen meta verilere sahip olanların listesini döndüren bir python betiği şöyle görünür:
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
Yani ben içeren bir dizinde bir komut satırında mydata.hdf5
olsaydım yukarıdaki komut dosyası gibi çalıştırabilirsiniz:
python myscript.py mydata.hdf5 maxSteps 1e7 size 13
komut dosyasına meta verilere sahip herhangi bir çalışmayı kısmen veya tamamen eşleşen bulmasını söyler {'maxSteps':'1e7', 'size':'13'}
. Komut dosyası daha sonra istediğiniz gibi ("burada bir şeyler yapın" bölümünde) bu verileri işleyebilir ve ardından şöyle görünecek bir liste yazdırabilir:
["Run01", "Run03"]
Bununla birlikte bir not, HDF5'in verilerinizi yalnızca n boyutlu diziler olarak göstermeniz mümkün olduğunda verileriniz için tamamen doğal bir harita sunacağıdır. Simülasyon çıktılarının bir çeşit dizide olması oldukça yaygındır, bu yüzden bu muhtemelen bir sorun olmayacaktır.
İyi başlangıç noktaları
Python: http://www.openbookproject.net/thinkcs/python/english2e/
HDF5: http://www.h5py.org/docs/