通用VTK写入程序
uvw的Python项目详细描述
uvw-通用vtk写入程序
uvw是一个小型实用程序库,用于从numpy数组中包含的数据写入vtk文件。它处理在{1,2,3}-d域上定义的完全成熟的ndarrays
,具有任意数量的组件。组件的特定顺序没有限制,但如果数组是fortran连续的,则可以避免复制数据,因为vtk文件是按fortran顺序写入的。未来的发展将包括多进程写入支持。
开始
下面是如何安装和使用uvw
。
先决条件
- Python3。它可能与Python2一起工作,但还没有经过测试。
- Numpy。此代码已在Numpy 1.14.3版中测试过。
安装
此库可以使用pip
:
pip install --user uvw
写入numpy数组
作为第一个示例,让我们将多组件numpy数组写入一个直线网格:
importnumpyasnpfromuvwimportRectilinearGrid,DataArray# Creating coordinatesx=np.linspace(-0.5,0.5,10)y=np.linspace(-0.5,0.5,20)z=np.linspace(-0.9,0.9,30)# Creating the filegrid=RectilinearGrid('grid.vtr',(x,y,z))# A centered ballx,y,z=np.meshgrid(x,y,z,indexing='ij')r=np.sqrt(x**2+y**2+z**2)ball=r<0.3# Some multi-component multi-dimensional datadata=np.zeros([10,20,30,3,3])data[ball,...]=np.array([[0,1,0],[1,0,0],[0,1,1]])# Adding the point data (see help(DataArray) for more info)grid.addPointData(DataArray(data,range(3),'data'))grid.write()
uvw还支持在2d和1d物理域上写入数据,例如:
importnumpyasnpfromuvwimportRectilinearGrid,DataArray# Creating coordinatesx=np.linspace(-0.5,0.5,10)y=np.linspace(-0.5,0.5,20)# A centered diskxx,yy=np.meshgrid(x,y,indexing='ij')r=np.sqrt(xx**2+yy**2)R=0.3disk=r<Rdata=np.zeros([10,20])data[disk]=np.sqrt(1-(r[disk]/R)**2)# File object can be used as a context managerwithRectilinearGrid('grid.vtr',(x,y))asgrid:grid.addPointData(DataArray(data,range(2),'data'))
功能列表
以下是uvw中可用内容的列表:
vtk文件格式
- 图像数据(
.vti
) - 直线网格(
.vtr
) - 结构化网格(
.vts
)
数据表示
- ascii
- base64(未压缩)
计划开发
以下是未来发展的列表:
- [X]图像数据
- []非结构化网格
- [X]结构化网格
- []并行写入(多进程)
- []基准测试+与pyevtk的性能比较
开发
这些说明将为您在本地计算机上启动和运行项目的副本,以便进行开发和测试。
Git存储库
首先克隆git存储库:
git clone https://c4science.ch/source/uvw.git
然后您可以在开发模式下使用pip(可能在virtualenv中):
pip install --user -e .
运行测试
测试可以使用pytest:
cd tests; pytest
许可证
此项目是在麻省理工学院的许可下授权的-请参阅license.md文件以了解详细信息。