Anthony Scopatz,南卡羅來納大學助理教授,HDF客座博主
“Python很棒,它的科學計算生態系統也是世界一流的。HDF5非常棒,是科學數據持久性的黃金標准。許多人使用Python的HDF5,而這個數字只是由於大熊貓的HDFStore而增長。但是,使用Python的HDF5至少還有一個比它需要的結。讓我們改變它。“
幾乎在使用Python的HDF5時,您可以選擇兩個具有重疊功能的精彩軟件包:h5py和PyTables。h5py使用自動生成的Cython更緊密地包裝HDF5 API。PyTables雖然也包裝了HDF5,但更多地關注Table數據結構,並增加了復雜的索引和核心外查詢。您使用哪個包取決於您的使用案例 - 有時您真的需要兩個!
在SciPy 2015上,來自PyTables,h5py,HDF Group,pandas以及社區成員的開發人員坐下來討論了如何使Python和HDF5的故事更精簡和更易於維護。以下是我們提出的建議:
- 重構PyTables依賴於h5py與HDF5的結合。
- 更新h5py以支持PyTables重構(需要一些數據類型等)。
- PyTables將保留其所有高級抽象。
- 使h5py - PyTables交互無縫。
- 確保API和HDF5文件向后兼容h5py和PyTable。
- PyTables的主要版本號,也許是h5py。
我們相信用戶和開發人員都將從中受益。你將不再被迫在前面選擇h5py和PyTables。相反,您可以根據需要自由地向上或向下移動堆棧。
重構的努力不僅僅是技術優勢。我們也將其視為社區的融合。雖然項目將保持獨立 - 它們填補了不同的利基 - 它們變得比以往更加共生。我們相信重構將為h5py和PyTables帶來更多用戶。作為實現這一目標的重要手段,h5py的核心開發人員現在擁有主要PyTables存儲庫的推送權限,反之亦然。我們致力於實現這一願景。
可持續性,維護和資金
從長遠來看,類似於提議的新堆棧必須發生,以使Python和HDF5生態系統保持可行。沒有理由存在兩個規范的低級別綁定庫到HDF5。這不僅是核心開發人員的冗余工作,也是用戶社區的冗余工作。目前的情況意味着現在有兩個地方可以報告錯誤,兩個地方可能會出現令人討厭的unicode問題,兩個處理內存中的HDF5文件,依此類推。這是不可持續的。
我們認為,擬議的重構是解決這些長期維護問題的最佳方法。PyTables和其他任何東西一樣長。說真的,PyTables的工作始於2001年 - 這是在NumPy之前,只要IPython等等。可能很容易認為PyTables可以順其自然地走。但是PyTables已經存在了很長時間,因為它已經適應了當天的需求。現在,任何代碼生存的最佳方式是協同工作。
當然,確保這些變化發生的最佳方式是我們獲得資金。這可能來自一個非常慷慨的來源,或來自多個組織。我們看到三種途徑,我們希望看到資助:
- 需要約6個月到1年FTE的重構器在PyTables和h5py之間分配。
- 針對需要每年約3個月FTE的h5py和PyTables的長期維護問題:例如發布管理,CI,錯誤修復,郵件列表響應等。
- 新穎的功能實現:
- 列式數據格式 - 我們多年來一直希望在PyTables中使用它。 Matt Rocklin很好地解釋了這個想法。
- 更快的讀/寫
- 改進壓縮
- 動態添加字段
- 單寫多次讀取支持
- 豐富的
getitem
索引,大熊貓。 - 改進了多維數據集的索引和查詢,例如。
- 和更多!
- 列式數據格式 - 我們多年來一直希望在PyTables中使用它。 Matt Rocklin很好地解釋了這個想法。
然而,籌款的一個主要問題是,“錢在哪里?”嗯,我們很高興地宣布我們已經解決了這個問題,因為......
PyTables現在是NumFOCUS項目!
截至2015年8月29日,PyTables的核心開發商已與NumFOCUS(NF)簽署了一份全面的財政贊助協議,這是一家501(c)3非營利性科學計算機。我們很榮幸加入IPython / Jupyter,Matplotlib,Julia,SymPy,Software Carpentry,Data Carpentry等行列。更重要的是,我們可以接受針對Python和HDF5活動的免稅捐贈。這包括雇用人員完成上述工作。我們非常興奮。
對於想要參與項目的個人,我們很快就會有PayPal鏈接。對於大型組織,請聯系PyTables的核心開發人員或h5py或NumFOCUS。我們非常樂意撰寫有競爭力的提案。如果您知道任何並希望我們申請,請告訴我們。
如果您是潛在的資助者並且被限制向非營利組織捐贈,請不要擔心!h5py和PyTable都有核心開發人員,他們能夠在美國的R1大學進行PI項目。
當然,如果編碼更符合你的風格,我們總會審查任何拉動請求。如果您需要幫助入門,請詢問我們,我們將很樂意為您提供指導。
所以無論你是誰,或者你的興趣是什么,我們都在這里,准備好,並且能夠幫助使Python和HDF5比以前更好地工作。這里的建議是我們想要的,也是掛鍾數月集體努力的結果。我們許多人都看不起這些項目的消失。簡化堆棧將有助於確保h5py和PyTables在可預見的未來都健康且充滿活力。
請讓我們將這個願景變為現實!
PyTables治理團隊 - Anthony Scopatz,Francesc Alted,Antonio Valentino,Andrea Bedini
h5py核心開發人員 - Andrew Collette
致謝
非常感謝NumFOCUS為我們提供財政贊助。這一點的重要性不容忽視。
非常感謝HDF集團(Mike Folk,John Readey,特別是Gerd Herber)在整個過程中鼓勵和參與我們。
編者注:安東尼為HDF5事業做出了許多精彩的貢獻,包括他恰如其分的“HDF5 for Lovers”教程。謝謝,安東尼!