前言
第七届“地震学算法与程序培训班” 于2021年8月9日–11日举办,本篇基于2021.8.10上午张淼老师的讲座搭建实验环境,程序及说明文档下载链接已提供,笔者使用的是Ubuntu18.04(虚拟机)系统,以此记录环境配置过程进行学习,特意在此感谢老师的开源资料!十分用心!
一、软件包下载+环境配置
1、软件包下载
1)PhaseNet[contains Obspy], REAL, VELEST,HYPOINVERSE, hypoDD, GrowClust, FDTCC, Match&Locate软件包下载:网址
进入LOC-FLOW文件夹:cd src
python software_download.py
#software_download.py
import warnings
import os
os.system('git clone https://github.com/Dal-mzhang/REAL.git')
os.system('git clone https://github.com/wayneweiqiang/PhaseNet.git') #Note: it is a new version
os.system('wget http://www.ldeo.columbia.edu/~felixw/HYPODD/HYPODD_1.3.tar.gz -N')
os.system('tar -zxvf HYPODD_1.3.tar.gz')
os.system('rm HYPODD_1.3.tar.gz')
os.system('git clone https://github.com/dttrugman/GrowClust.git')
os.system('git clone https://github.com/Dal-mzhang/MatchLocate2.git')
os.system('git clone https://github.com/MinLiu19/FDTCC')
2)安装软件、依赖包
SAC、gfortran、gawk
①编译FDTCC:安装包下bin目录已包含可执行文件,但是显示报错./FDTCC: 无法执行二进制文件: 可执行文件格式错误
cd src
make clean
#make报错显示/usr/bin/ld: 最后的链结失败: 输出不可表示的节
#修改Makefile,在CFLAGS这一句加上-no-pie禁pie
make
②编译GrowClust
cd SRC
sudo apt-get install gfortran
#修改Makefile,在CFLAGS这一句加上-no-pie禁pie
make
make all
③编译HYPODD
一、hypoDD
cd src
cd hypodd
#修改Makefile,将FC=g77改为FC=gfortran,CC= gcc -no-pie,FC= gfortran -no-pie
make
二、ph2dt
cd src
cd ph2dt
#修改Makefile,将FC=g77改为FC=gfortran,CC= gcc -no-pie,FC= gfortran -no-pie
make
④编译MatchLocate2
cd src
#修改Makefile,基于linux系统,选择第五行的编译器语句
#另外在CC这一句加上-no-pie禁pie
#,否则Ubuntu18.04的小伙伴有错误提示“最后的链结失败:输出不可表示的节”
make clean
make
#编译成功后bin文件夹下有四个可执行文件:MatchLocate2、SelectFinal、SHIFT、lsac、ccsacc
⑤编译REAL
一、pick2real
#如果已经有.o后缀的文件记得先make clean删除一下
#修改makefile文件,在CC命令加上-no-pie
make clean
make
二、REAL
#修改makefile文件,编译器语句选择Linuxmp那条命令,在CC命令加上-no-pie
make
三、VELEST
#修改makefile文件,在FC命令加上-no-pie
make
⑥官网下载HYPOINVERSE(hyp1.4)未果,找老师拿软件安装包,听说github有
cd source
#修改makefile文件:1、将cp地址改为自己的路径。2、将g77改为gfortran -no-pie
make
完成编译后生成的可执行文件如下,不是这个图标的一般是共享库文件哦,要注意!
2、环境配置
1)首先将编译好的可执行文件统一移动到目录的bin文件下,执行run_install.sh
#可以直接运行run_install.sh,或者手动cp
...
cp ./FDTCC/bin/FDTCC ../bin/ #need SAC lib in Makefile
cp ./GrowClust/SRC/growclust ../bin/
cp ./HYPODD/src/hypoDD/hypoDD ../bin/ #change g77 to gfortran or similar complier
cp ./HYPODD/src/ph2dt/ph2dt ../bin/ #change g77 to gfortran or similar complier
cp ./MatchLocate2/bin/* ../bin/ #need SAC lib in Makefile
cp ./REAL/bin/* ../bin/ #change gcc-10 (on Mac) to gcc as needed
cp ./hyp1.40/source/hyp1.40 ../bin #change f77 to gfortran or similar complier
2)配置环境变量
gedit ~/.bashrc
export PATH=${your path}/LOC-FLOW/bin/:$PATH
source ~/.bashrc
3、问题
1)官网没有软件HYPOINVERSE——解决:直接找一个hpy1.40安装包
aa@ubuntu:~/2021.8.SEIS_PROGRAM/LOC-FLOW/src$ wget ftp://ehzftp.wr.usgs.gov/klein/hyp1.40
--2021-08-05 21:26:33-- ftp://ehzftp.wr.usgs.gov/klein/hyp1.40
=> “hyp1.40”
正在解析主机 ehzftp.wr.usgs.gov (ehzftp.wr.usgs.gov)... 137.227.224.179, 2001:49c8:8000:120c::179
正在连接 ehzftp.wr.usgs.gov (ehzftp.wr.usgs.gov)|137.227.224.179|:21... 已连接。
正在以 anonymous 登录 ... 登录成功!
==> SYST ... 完成。 ==> PWD ... 完成。
==> TYPE I ... 完成。 ==> CWD (1) /klein ... 完成。
==> SIZE hyp1.40 ... 完成。
==> PASV ... 完成。 ==> RETR hyp1.40 ...
文件 “hyp1.40” 不存在。
#运行run_install.sh,报错cp: 无法获取'./hyp1.40/source/hyp1.40' 的文件状态(stat): 没有那个文件或目录
2)编译过程报错提示“最后的链结失败:输出不可表示的节”——解决
3) Phasenet安装虚拟环境conda env create -f env.yml
卡在solving…
手动安装:
1、环境conda create --name phasenet python=3.11
2、python库:numpy…
conda install numpy spicy matplotlib pandas scikit-learn tqdm obspy unicorn fastapi kafka-python keras pymongo
找到原因了,是卡在了tensorflow:pip3 install tensorflow
单独使用上面这条命令,还是不行的话去官网下载whl文件,不知道安装在什么地方,暂时没有装,安装代码pip install tensorflow-2.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
第二天重启Ubuntu,一度飙到2M/s,可谓是胜利在望,成功!
二、下载数据
cd Data
python waveform_download_mseed.py
python waveform_download.py
python phasenet_input.py
三、运行
source activate
conda activate phasenet
bash run_all.sh
报错1——运行bash run_all.sh报错如下:
查的原因是出自FDTCC命令(主要是hypoDD文件夹),没有生成IN/dt.cc
aa@ubuntu:~/2021.8.SEIS_PROGRAM/LOC-FLOW/hypoDD_dtcc$ FDTCC -F-3 -B2/8 -C1/1/1 -W1.0/1.0/0.3/1.0/1.5/0.5 -D0.01/0.6/1/2 -G1.4/20/0.01/1 ../Data/station.dat ../REAL/tt_db/ttdb.txt ../Data/waveform_sac ./event.sel ./dt.ct ./hypoDD.pha
已杀死
解决——修改参数?
更新:2023/8/2
Data/waveform_sac根据station_all.dat下载了2016-10-14头3000s(50mins)的sac格式波形数据,三分量,重采样到100Hz,去均值去线性,滤波[0.002,25],去仪器响应
ENZ分量分别有:46、49、48共143个波形信号
0.下载数据【使用2016年10月14日意大利中部地震检测定位为例。三角:台站;红点:目录地震】
1-1.STALTA
拾取P波到时:44
拾取S波到时:46
1-2.Phasenet
拾取P波到时:50
拾取S波到时:48
👉文件存储格式(REAL需要的到时文件格式)
年月日/台网.台站.P.txt
年月日/台网.台站.S.txt
2、生成走时表ttbd.txt
3、REAL关联
查看结果:
1)X/T curves for P and S(50min关联后结果)
2)check waveforms and picks to verify events.eg.ID40
3)3Dlocation
4、绝对定位
👉VELEST(hypo=1,mode=1)
【得到初步目录catalog1】
5、相对定位
👉hypoDD双差定位(hypo=1)
【得到catalog2】
6、获取高精度定位结果(互相关)
👉FDTCC
【加入互相关再进行hypoDD,catalog3】
👉GrowClust
【catalog4】【跟FDTCC+hypoDD的目录做对比】
👉Match&Locate(先模板匹配再GrowClust)
7、精确的计算震级