是否可以使用 python 的特征创建一个 ui 来为元胞自动机模拟创建接口?
1 回答
当然,你可以用 Python 的 Traits 做任何事情!
不过说真的,我认为您的问题实际上是关于生成一个用于显示 CA 的 GUI。在这种情况下,我可以推荐基于 Traits 的 Mayavi。它有一个 surf 函数,可以将一组规则间隔的数据绘制为 3D 表面。有一些关于动画数据的文档显示了如何更改底层表面数据以实现非常快速的渲染,我已经使用过并且效果很好。我有一个 3D numpy 数组 shape=(x,y,time) 然后对于每一步我将切片传递给表面对象数据对象:
surf.mlab_source.scalars = array[:,:,timepoint_index]
或者,您可以使用 Matplotlib 的 imshow 绘制相同数据的 2D 图。有一个很好的关于在特征中嵌入 matplotlib 的教程。
使用这些大型库(它们本身有很多很多依赖项)的一个问题是能够将您的应用程序与这些库一起分发。我已经成功地在 Mac 上使用 py2app 和使用 py2exe 冻结了 Mayavi/matplotlib/traits 应用程序,从 Enthought Python Distribution 开始,但这并不容易。但是,如果您只需要它在您的计算机上工作并生成结果,那么这两种方法都将节省您为元胞自动机编写图形系统的时间。
说了这么多,我还听到了关于 GarlicSim 的好消息(正如cool-RR 提到的),这似乎是为您的目的而定制的。
因为这是我的第一篇文章,所以无法发布链接,稍后我会添加它们。