开源软件mtpy的安装和使用
1. 为什么要使用这个软件2. mtpy软件的下载3. 安装```Anoconda3```4. 安装好后首先给Anaconda和pip进行换源5. 进行所需库文件的安装6. 安装mtpy7. 使用mtpy8. 使用```mtpy```生成```ModEM```输入文件
1. 为什么要使用这个软件
该软件提供了丰富的python自动化处理脚本文件,为我们在处理大地电磁二维和三维数据过程中节省了不少时间,而且可以自动生成很多软件的模型输入文件,例如Occam反演的输入文件和ModEM的三维反演输入文件,还有大地电磁处理过程中的各种分析,都提供了一键处理edi的python脚本文件。而且全部开源,便于各位同学查看源码和快速入门。也避免了大家重复造轮子浪费大量的时间,我们要的是快速使用和快速理解各种知识。
2. mtpy软件的下载
从github上下载,链接如下: https://github.com/MTgeophysics/mtpy鉴于墙的存在,部分同学可能会无法下载,所以提供上传到csdn的安装包,里面不仅包括mtpy的安装包,还有些其他提升安装正确率的文件,下载链接如下: https://download.csdn.net/download/Shrekul/12913159
3. 安装Anoconda3
经过本人不断重复的安装和卸载,折腾了不下20余次,终于总结出不会出错的安装方法,而且配置好导出vtk图件格式的方法。下面就是正式安装教程。
首先安装Anoconda3 大家直接从清华的源下载即可,免得在官网直接下载很慢,下载链接是: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.3.1-Windows-x86_64.exe 安装过程大家全部下一步即可,安装好后大家的程序里面会有这样的结果:
4. 安装好后首先给Anaconda和pip进行换源
不换源下载一些依赖库会特别慢。
换源教程链接 https://blog.csdn.net/JohnLeeK/article/details/102686424
5. 进行所需库文件的安装
打开Anaconda Navigator (Anaconda3),打开后结果: 点击Environments – Creat,创建名为’mtpy’的环境,创建好后会多出下面这样一个叫做mtpy的环境: 点击到mtpy的环境上,我们开始依次添加所需要的库:
依次搜索这些库,并勾选添加:
gdal
libgdal
geopandas
netcdf4
pyyaml
下面示意一个: 依次把这些安装完后,下面安装另外所需的东西。
安装mtpy环境下的spyder,按照如下图示,进行操作即可: 安装obspy 以管理员权限打开下图所示powershell
然后输入如下命令进行激活mtpy环境:
conda activate mtpy
激活后结果是这样: 然后在这里输入一句命令即可安装所需要的文件:
pip
install obspy
效果图是这样:
安装pyvtk 安装这个前需要先安装visualcppbuildtools_full.exe,该文件在前面的下载包中已经提供,直接双击,大概5分钟安装完成。安装图如下: 然后在powershell中输入如下安装pyvtk的命令:
pip
install pyevtk
效果图如下: 以上这些准备工作做完就可以安装mtpy了。
6. 安装mtpy
把握提供的mtpy安装包文件解压会有一个mtpy-develop的文件夹,然后改名为mtpy,然后复制到电脑的如下目录下:
C:\mtpywin
还是打开之前的powershell,然后在里面输入如下命令切换到如下文件夹:
cd C:\mtpywin\mtpy
最后在该处输入如下命令,mtpy就安装好了:
pip
install .
到这里mtpy软件就安装好了。
7. 使用mtpy
通过打开spyder(mtpy)来操作python脚本
切换到内置脚本文件夹来使用很多自动化处理脚本 把目录切换到下面目录:
C:\mtpywin\mtpy\examples\scripts
然后这里就有很多自带的脚本文件了,大家看自己需要的去探索。
任意执行一个例子,其效果图如下图:
8. 使用mtpy生成ModEM输入文件
在Spyder(mtpy)中打开C:\mtpywin\mtpy\examples\scripts\ModEM_build_inputfiles.py的该文件,就可以生成ModEM的输入文件了。只需要改下edi文件路径,下面就是该文件的代码:
"""
Created on Wed Oct 18 10:18:12 2017
@author: u64125
"""
import os
os
.chdir
(r
'C:\mtpywin\mtpy')
import os
.path
as op
from mtpy
.modeling
.modem
import Model
from mtpy
.modeling
.modem
import Data
from mtpy
.modeling
.modem
import Covariance
from mtpy
.core
.edi
import Edi
from mtpy
.utils
.calculator
import get_period_list
import numpy
as np
workdir
= r
'C:\test\ModEM'
edipath
= r
'C:\mtpywin\mtpy\examples\data\edi_files_2'
start_period
= 0.002
stop_period
= 2000
periods_per_decade
= 4
period_list
= get_period_list
(start_period
,stop_period
,periods_per_decade
,
include_outside_range
=True)
edi_list
= [op
.join
(edipath
,ff
) for ff
in os
.listdir
(edipath
) if (ff
.endswith
('.edi'))]
if not op
.exists
(workdir
):
os
.mkdir
(workdir
)
do
= Data
(edi_list
=edi_list
,
inv_mode
= '1',
save_path
=workdir
,
period_list
=period_list
,
period_buffer
= 2,
error_type_z
=np
.array
([['floor_percent','floor_egbert'],
['floor_egbert','percent']]),
error_value_z
=np
.array
([[20.,5.],
[5.,20.]]),
error_type_tipper
= 'floor_abs',
error_value_tipper
=.03,
model_epsg
=28354
)
do
.write_data_file
()
do
.data_array
['elev'] = 0.
do
.write_data_file
(fill
=False)
mo
= Model
(station_locations
=do
.station_locations
,
cell_size_east
=8000,
cell_size_north
=8000,
pad_north
=7,
pad_east
=7,
pad_z
=6,
pad_stretch_v
=1.6,
pad_stretch_h
=1.4,
pad_num
=3,
n_air_layers
= 10,
res_model
=100,
n_layers
=100,
z1_layer
=10,
pad_method
='stretch',
z_mesh_method
='new',
z_target_depth
=120000
)
mo
.make_mesh
()
mo
.write_model_file
(save_path
=workdir
)
mo
.add_topography_to_model2
(r
'C:\mtpywin\mtpy\examples\data\AussieContinent_etopo1.asc')
mo
.write_model_file
(save_path
=workdir
)
do
.project_stations_on_topography
(mo
)
mo
.plot_sealevel_resistivity
()
co
= Covariance
()
co
.smoothing_east
= 0.4
co
.smoothing_north
= 0.4
co
.smoothing_z
= 0.4
co
.write_covariance_file
(model_fn
=mo
.model_fn
)
大家可以按照我写的中文注释更改自己所需要的反演模型参数,每次更改后运行会自动生成一个网格剖分图,下面就是该程序自带的edi文件生成的网格剖分图: 同时会生ModEM反演输入文件在C:\test\ModEM这个默认文件夹,大家按需修改即可。 教程到这里就完了,大家有什么需要,还可以一起探讨,后面可以增加一些该软件其他的处理的教程。大家可以修改文件夹路径为自己的edi数据处理自己的文件。非常方便,高效。