tripack和stripack fortran代码的python接口,用于笛卡尔坐标系和球体上的三角测量/插值
strip的Python项目详细描述
条纹
tripack和stripack fortran代码的python接口,用于在笛卡尔坐标系和球体上进行(受约束的)三角剖分。stripy是一个面向对象的包,它包括srfpack和ssrfpack的例程,用于插值(最近邻、线性和hermite立方)和求导(renka 1996a、b和1997a、b)。
stripy
与litho1pt0
捆绑在一起,后者是地壳1.0数据集和litho 1.0数据集岩石圈部分(laske et al,2013和pasyanos et al,2014)的python接口,两者都需要并演示由<代码>条纹
使用"条纹"创建的示例图像演示了网格划分功能、优化网格以匹配数据密度等条件的能力以及创建网格距离加权平均值和连续插值函数的能力
活页夹
在links.underworldcode.org/stripy-live(mybinder.org)启动演示
引文
https://doi.org/10.21105/joss.01110
导航/笔记本
有两组匹配的条纹笔记本电脑-一组用于笛卡尔三角剖分,另一组用于球面三角剖分。对于大多数地理应用来说,球面三角剖分是自然的选择,因为它们期望经纬度坐标(当然是弧度坐标)。
注意:笛卡尔和球面笔记本可以从stripy
本身获得/安装,如下所示:
python -c 'import stripy; stripy.documentation.install_documentation(path="Notebooks")'
笛卡尔
- ex1笛卡尔三角剖分.ipynb
- ex2 cartesiangrids.ipynb
- ex3 interpolation.ipynb
- ex5 smoothing.ipynb
- ex6 sposted data.ipynb
- ex7三角剖分的细化。ipynb
球形
- ex1 spheral triangulations.ipynb
- ex2 sphericalgrids.ipynb
- ex3 interpolation.ipynb
- ex4 gradients.ipynb
- ex5 smoothing.ipynb
- ex6 sported data.ipynb
- ex7三角剖分的细化。ipynb
示例
注意,这些示例是从 包装本身:
python -c 'import litho1pt0; litho1pt0.documentation.install_documentation(path="Notebooks")'
前三个笔记本是对lithi1pt0
的介绍,没有明确提到stripy
但是
接下来的两个示例演示了如何借助stripy
例程搜索、插值和绘图。
- ex1-lith1layers.ipynb
- ex2-lithin1properties.ipynb
- ex3外壳区域化.ipynb
- workex1克拉通平均值属性.ipynb
- 工作ex2 oceandepthage.ipynb
安装
依赖关系
您将需要Python2.7或3.5+。 此外,还需要以下软件包:
运行笔记本电脑的推荐软件包:
使用PIP安装
您可以使用
pip包管理器
使用任一版本的python:
python2 -m pip install stripy python3 -m pip install stripy
所有依赖项都将由pip
自动安装,除了gfortran
(或任何Fortran编译器)。在安装之前,它必须安装在系统中
stripy
带pip
如果更改Fortran编译器,则可能需要添加
运行setup.py
时的标志
(参见文档了解numpy.distutils)。
使用Docker安装
不依赖于特定编译器的更直接的安装依赖于docker虚拟化系统。
要安装Docker映像并测试它是否正常工作:
docker pull underworldcode/stripy:latest
docker run --rm underworldcode/stripy:latest help
安装bash的帮助脚本:
docker run --rm underworldcode/stripy:latest bash_utils > bash_utils.sh
source bash_utils.sh
(您可能会发现移动/重命名此文件并将其从 登录时的bash配置文件)
bash-utils.sh脚本安装以下函数 可通过bash命令行使用:
stripy-docker-help stripy-docker-sh stripy-docker-nb stripy-docker-browse stripy-docker-serve stripy-docker-terminal
有关这些功能的详细信息,请运行
source bash_utils.sh
stripy-docker-help
要像使用docker版本一样使用,比如说,使用ipython在命令行上键入:
source bash_utils.sh # (only needs to be done once) stripy-docker-terminal ls ipython
使用Docker版本运行脚本
source bash_utils.sh # (only needs to be done once) stripy-docker-sh my_python_script.py
为了在本地构建dockerfile,我们提供了一个脚本。首先确保您已经从github签出了源代码,然后在docker目录中运行脚本。如果您修改了dockerfile并希望推送该图像以使其公开,则需要重新标记该图像以上载到黑社会代码库以外的其他位置。
python -c 'import stripy; stripy.documentation.install_documentation(path="Notebooks")'
0
用法
条纹套装包含两个类别:
条纹角度
(球面坐标)三角剖分
(笛卡尔坐标)
这些类共享相似的方法,并且可以很容易地交换。 此外,还提供了许多用于构建网格的辅助函数。
一系列测试位于tests子目录中。
为了执行这些测试,克隆存储库并运行pytest
:
python -c 'import stripy; stripy.documentation.install_documentation(path="Notebooks")'
1
参考文献
Laske,G.,G.Masters和Z.MA(2013年),《甲壳1的更新》。地壳0-a 1度全球模型,地球物理研究摘要,15,egu2013–2658。
Pasyanos,M.E.,T.G.Masters,G.Laske和Z.MA(2014年),《岩石1.0:地球的地壳和岩石圈模型更新》,《地球物理研究杂志固体地球》,119(3),2153–2173,doi:10.1002/2013jb010626。
R.J.Renka,"算法751:Tripack:一个约束的二维Delaunay三角剖分包",ACM Trans.数学。软件,第22卷,第1期,1996年,第1-8页。
R.J.Renka,"算法752:SRFPack:张力下带约束曲面的散乱数据拟合软件",ACM Trans.数学。软件,第22卷,第1期,1996年,第9-17页。
R.J.Renka,"算法772:Stripack:球面上的Delaunay三角剖分和Voronoi图",ACM Trans.数学。软件,第23卷,第3期,1997年,第416-434页。
R.J.Renka,"算法773:SSRFPACK:在有张力表面的球体表面上的散射数据插值",ACM Trans.数学。软件,第23卷,第3期,1997年,第437-439页。