2010-12-19 109 views
4

我有興趣將protovis JavaScript可視化庫移植到Python以供科學計算使用。我有一個普遍的問題和具體的問題。將JavaScript庫移植到Python

一般:我從來沒有移植過一個完整的圖書館。什麼是一些好的策略?我應該首先實現面向用戶的API,然後以pythonic方式填充它嗎?或者先嚐試移植內部/基礎設施,然後重新構建API,會更好嗎?

具體:該庫似乎大量使用JavaScript的基於原型的繼承,這與python模型稍有不同。我發現有人用python模擬了prototypal-inheritance。但是,從移植一個庫的角度來看,我寧願不要將Python扭曲成更像javascript。任何有關這個問題的反饋將不勝感激。謝謝!

烏里

+3

從頂部開始,然後繼續前進。 – 2010-12-19 03:35:37

+0

您不會將代碼從一種語言移植到另一種語言;你正在尋找的單詞是* rewrite *。 – 2010-12-19 03:41:31

+0

爲什麼不用python編寫你的科學代碼並讓GUI成爲javascript? – 2010-12-19 03:53:00

回答

1

你可能會更好看Prefuse(http://www.prefuse.org),或火炬(http://flare.prefuse.org)。前者是基於Java的,後者是Flash。

Protovis與使用SVG作爲畫布的普通舊Javascript運行瀏覽器有點不同。你不能在Python重寫中使用它。

如果你是一個曲線圖/網絡可視化包後,你可能想看看NetworkX: http://networkx.lanl.gov/

+0

感謝您的鏈接。我實際上只對此時做靜態可視化感興趣。我想我可以將我的python端口連接到吐出SVG的東西,或者將它連接到matplotlib後端。稍後,我可以嘗試使用matplotlib重新實現交互。 關於protovis,我發現它的「聲明式」模型特別吸引人,並且希望在可以集成到許多科學計算管道中的python包中重新創建它。 – 2010-12-19 17:08:07

+0

SVG + Python = pycairo – 2010-12-19 17:24:50

1

如果你想從C/C++端口到Python你可能想使用痛飲。我不知道JavaScript到python,但你可能必須手動。我會考慮python unpythonic中的原型繼承。我不會推薦使用鏈接中提供的元類hack。 Python程序員不習慣繼承原型,並且可能不想使用它,並且在使用元類時應該非常巧妙。因此,我認爲最好是在重新分配繼承模型時。我也認爲API的重新設計不會讓它變得更加pythonic。

1

Python生態系統目前缺乏像Protovis這樣的可視化工具,繼續前進,祝您好運!