2010-12-19 117 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这样的可视化工具,继续前进,祝您好运!