将一个 JavaScript 库移植到 Python

4
我有兴趣将protovis JavaScript 可视化库移植到Python中,以便在科学计算中使用。我有一个一般性的问题和一个具体的问题。
一般:我以前从未移植过整个库。有什么好的策略吗?我应该首先只实现用户界面API,然后再用Python风格填充它吗?还是最好先移植内部/基础设施,然后在其上重建API?
具体:这个库似乎广泛使用JavaScript的基于原型的继承,这与Python模型有些不同。我找到了一个相当简单的方法来在Python中模拟prototypal-inheritance。但是,从移植库的角度来看,我不想强迫Python更像JavaScript。对此问题的任何反馈将不胜感激。谢谢!
Uri

3
从顶部开始,逐级向下进行。 - Ignacio Vazquez-Abrams
为什么不用Python编写科学代码,让GUI使用JavaScript呢? - James
4
有一些正在积极进行的移植/重写项目,例如:https://github.com/laserson/pyprotovis,您可以考虑查看一下。 - Adam Vandenberg
3
@Adam,你应该知道git也是OP的创造者,哈哈 :-D - st0le
@James,我对生成用于出版物等的静态图形很感兴趣。从浏览器中获取静态SVG很麻烦,而且不容易自动化。 - Uri Laserson
显示剩余2条评论
3个回答

1

目前Python生态系统缺乏像Protovis这样的可视化工具,祝你重写好运!


1
如果你想从C/C++转到Python,你可能想使用swig。我不知道JavaScript转Python怎么做,但你可能需要手动完成。在Python中,我认为原型继承是不符合Python风格的。我不建议使用链接中提供的元类hack。Python程序员不习惯原型继承,他们可能不想使用它,而且在使用元类时应该非常小心。因此,我认为最好重新设计继承模型。我还认为重新设计API以使其更符合Python风格也是有益的。

1

你最好看看Prefuse(http://www.prefuse.org)或Flare(http://flare.prefuse.org)。前者是基于Java的,后者是Flash。

Protovis有点不同,它使用纯旧的Javascript在浏览器中运行,并使用SVG作为画布。你不会轻易地在Python重写中利用它。

如果你想要一个图形/网络可视化包,你可能想要查看NetworkX: http://networkx.lanl.gov/


感谢提供的链接。目前我只对制作静态可视化感兴趣。我想连接我的Python端口到能够输出SVG的工具,或者连接到Matplotlib后端。之后,我可以尝试使用Matplotlib重新实现交互性。关于Protovis,我发现它的“声明式”模型特别吸引人,并希望在一个Python包中重新创建它,以便能够集成到许多科学计算管道中。 - Uri Laserson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接