目录
前言
第七届“地震学算法与程序培训班” 于2021年8月9日–11日举办,本篇基于2021.8.10上午朱尉强博士的讲座搭建实验环境,程序及说明文档下载链接已提供,笔者使用的是Ubuntu18.04(虚拟机)系统,以此记录环境配置过程进行学习,特意在此感谢老师的开源资料!十分用心!
一、安装Python环境
1、安装miniconda
从miniconda官网下载miniconda,我下载的是Miniconda3-py37_4.10.3-Linux-x86_64版本。
如果python版本低于3.7,参考以下教程。Miniconda3-4.5.4 was the last Python 3.6 miniconda package.
#我的主机名ubuntu,用户名aa,cd到miniconda的路径
aa@ubuntu:~/Downloads$ bash Miniconda3-py37_4.10.3-Linux-x86_64.sh -b -u
PREFIX=/home/aa/miniconda3
...
aa@ubuntu:~/Downloads$ gedit ~/.bashrc
#添加环境变量
export PATH=$HOME/miniconda3/bin:$PATH
aa@ubuntu:~/Downloads$ which python
/home/aa/miniconda3/bin/python
2、安装jupyter lab
1)安装jupyter lab: conda install jupyterlab --y
2)启动jupyter lab: jupyter lab
二、降噪 – DeepDenoiser
安装环境和测试
1)下载代码:
git clone https://github.com/wayneweiqiang/DeepDenoiser.git
2)进入目录:
cd DeepDenoiser
3)安装默认环境:
conda env update -f=env.yml -n base
4)安装名为“deepdenoiser”的虚拟环境:
conda env create -f env.yml
conda activate deepdenoiser
(如报错先激活环境👇)
创建好deepdenoiser环境之后进入deepdenoiser环境:
aa@ubuntu:~/DeepDenoiser$ source activate
(base)aa@ubuntu:~/DeepDenoiser$ conda activate deepdenoiser
(deepdenoiser) aa@ubuntu:~/DeepDenoiser$ conda deactivate
5)下载例子(位于docs文件夹内,或者利用wget下载):
wget https://raw.githubusercontent.com/wayneweiqiang/DeepDenoiser/master/docs/example_interactive.ipynb
wget https://raw.githubusercontent.com/wayneweiqiang/DeepDenoiser/master/docs/example_batch_prediction.ipynb
(注意区分在命令行中跑的代码和在jupyter notebook中跑的代码)
【DeepDenooiser程序代码测试】
示例一:example_interactive.ipynb
前提准备:激活环境,启动服务器。这里用到了uvicorn(一个web服务器框架),可以看到这个脚本的代码开头提示了uvicorn --app-dir=deepdenoiser app:app --reload --port 8003
这一句,需要在终端上执行,故先要安装uvicorn。
aa@ubuntu:~/DeepDenoiser$ pip install uvicorn
aa@ubuntu:~/DeepDenoiser$ uvicorn --app-dir=deepdenoiser app:app --reload --port 8003
当出现下列提示表明开启成功~同时,可以在http://127.0.0.1:8003网页查看到相关信息
另外再开一个终端,用于打开jupyter notebook
aa@ubuntu:~/DeepDenoiser$ source activate
(base) aa@ubuntu:~/DeepDenoiser$ conda activate deepdenoiser
(deepdenoiser) aa@ubuntu:~/DeepDenoiser$ jupyter notebook
①Run DeepDenoiser in terminal
(时隔2年重新装Anaconda)使用jupyter notebook跑程序有一个报错:ModuleNotFoundError: No module named 'obspy'
奇怪的是能在deepdenoiser环境下conda list obspy
搜索到obspy,使用该环境终端的pythonimport obspy
成功,但是在jupyter notebook使用import obspy
还是出错;重新下载conda install -c conda-forge obspy
后存在同样的问题。用spyder也出现一样的ModuleNotFoundError: No module named 'obspy'
发现:conda list jupyter
和conda list spyder
都是空的,说明默认使用的是base的jupyter和spyder,该环境没有装obspy
解决:pip install jupyter -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
② Prepare seismic waveforms
③Get denoised waveforms using DeepDenoiser
示例二:example_batch_prediction.ipynb
①下载数据并查看数据
cd DeepDenoiser
wget https://github.com/wayneweiqiang/PhaseNet/releases/download/test_data/test_data.zip
unzip test_data.zip
cat ./test_data/npz.csv
②终端执行程序
numpy格式数据:For numpy format(取消–plot_figure即可不画图节省时间)
python deepdenoiser/predict.py --model_dir=model/190614-104802 --data_list=test_data/npz.csv --data_dir=test_data/npz --format=numpy --save_signal --plot_figure
在Windows系统下使用py程序会碰到找不到文件路径问题,这是因为与Linux系统下使用的斜杠差异,在加载signal前加上语句即可fp = fp.replace('\\', '/')
输出文件/output/figures目录如下所示👇
输出文件/output/results目录如下所示👇
对比npz原数据和/output/results,打开jupyter notebook画图即可
同理,mseed格式数据:
python deepdenoiser/predict.py --model_dir=model/190614-104802 --data_list=test_data/mseed.csv --data_dir=test_data/mseed --format=mseed --save_signal --plot_figure
报错:FileNotFoundError: [Errno 2] No such file or directory: 'test data/mseed\\CI.BO.2020-10-01T00:00.mseed
因为文件名和列表mseed.csv没有对应
输出文件/output-mseed/figures目录如下所示👇
输出文件/output-mseed/results目录如下所示👇
对比mseed原数据和/output-mseed/results,jupyter notebook画图程序出错,numpy的load()函数代表用Numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息。一般load读取的是.npy或者.npz的文件。而这里mseed数据格式似乎读入数据有问题,报错ValueError: Cannot load file containing pickled data when allow_pickle=False参考教程降低numpy版本为numpy==1.16.2依然出错。
对比的绘图脚本:
import obspy
plt.close("all")
for i, fp in enumerate(sorted(glob.glob(os.path.join(PROJECT_ROOT, "output-mseed/results/*npz")))):
fp = fp.replace('\\', '/')
signal = np.load(fp)["data"][:,-1,-1]
p1 = fp.split(".npz")[0]
p2 = p1.split("/")[-1]
raw_signal = obspy.read(os.path.join(PROJECT_ROOT, "test_data/mseed/",p2))#["data"][5000:8000,-1]
data = []
for trace in raw_signal:
data.append(trace.data)
raw_data = np.array(data).T
plt.figure(figsize=(6,2))
plt.subplot(121)
plt.plot(raw_data[:,2], 'k', linewidth=0.5, label="Z")
ylim = plt.ylim()
plt.subplot(122)
plt.plot(signal, 'k', linewidth=0.5)
plt.ylim(ylim)
plt.suptitle(p2)#(fp.split("/")[-1])
plt.tight_layout()
plt.show()
if i >= 3:
break
对比mseed原数据和/output-mseed/results,打开jupyter notebook画图即可
三、到时拾取 – PhaseNet
安装环境和测试
1)下载代码:git clone https://github.com/wayneweiqiang/PhaseNet.git
2)进入目录:cd PhaseNet
3)安装默认环境:conda env update -f=env.yml -n base
经验:当一直处于卡在solving…(主要是卡在tensorflow)
解决办法:手动安装!!!
1、环境conda create --name phasenet python=3.11
2、python库:
conda install numpy spicy matplotlib pandas scikit-learn tqdm obspy uvicorn fastapi keras gradio
找到原因了,是卡在了tensorflow:pip3 install tensorflow
4)安装名为“phasenet”的虚拟环境:
conda env create -f env.yml
conda activate phasenet
(如报错先激活环境👇)
创建好phasenet环境之后进入phasenet环境:
aa@ubuntu:~/PhaseNet$ source activate
(base)aa@ubuntu:~/PhaseNet$ conda activate phasenet
(phasenet) aa@ubuntu:~/PhaseNet$ conda deactivate
5)测试例子(位于demo和docs文件夹内,或者利用wget下载):
示例1:example_interactive.ipynb(example_gradio)
wget https://raw.githubusercontent.com/wayneweiqiang/PhaseNet/master/docs/example_interactive.ipynb
【注】导入model=“ai4eps/phasenet”需要⛓
示例2:example_fastapi.ipynb
示例3:example_batch_prediction.ipynb
批量预测
wget https://raw.githubusercontent.com/wayneweiqiang/PhaseNet/master/docs/example_batch_prediction.ipynb
①下载数据并查看数据
wget https://github.com/wayneweiqiang/PhaseNet/releases/download/test_data/test_data.zip
②终端执行程序(取消–plot_figure即可不画图节省时间)
mseed格式
python phasenet/predict.py --model=model/190703-214543 --data_list=test_data/mseed.csv --data_dir=test_data/mseed --format=mseed --amplitude --response_xml=test_data/stations.xml --batch_size=1 --sampling_rate=100 --plot_figure
报错:AttributeError: conv2d is not available with Keras 3.
sac格式
python phasenet/predict.py --model=model/190703-214543 --data_list=test_data/sac.csv --data_dir=test_data/sac --format=sac --plot_figure
numpy格式
python phasenet/predict.py --model=model/190703-214543 --data_list=test_data/npz.csv --data_dir=test_data/npz --format=numpy --plot_figure
示例4:结合LOCFLOW
python ../../src/PhaseNet/phasenet/predict.py --mode=pred --model_dir=../../src/PhaseNet/model/190703-214543 --data_dir=../../Data/waveform_sac --data_list=../../Data/fname.csv --batch_size=1 --format=sac --highpass_filter=1 --amplitude
6)迁移学习(训练-预测)
Start training from the pre-trained model
python phasenet/train.py --model_dir=model/190703-214543/ --train_dir=test_data/npz --train_list=test_data/npz.csv --plot_figure --epochs=10 --batch_size=10
四、初步检测流程 – QuakeFlo
安装环境和测试
1)下载代码:git clone https://github.com/wayneweiqiang/QuakeFlow.git
2)进入目录:cd QuakeFlow
3)安装默认环境:conda env update -f=env.yml -n base
4)安装名为“quakeflow”的虚拟环境:
conda env create -f env.yml
conda activate quakeflow
(如报错先激活环境👇)
创建好quakeflow环境之后进入quakeflow环境:
aa@ubuntu:~/QuakeFlow$ source activate
(base)aa@ubuntu:~/QuakeFlow$ conda activate quakeflow
(quakeflow) aa@ubuntu:~/QuakeFlow$ conda deactivate
5)下载例子(位于docs文件夹内,或者利用wget下载):
wget https://raw.githubusercontent.com/wayneweiqiang/QuakeFlow/master/docs/workflow.ipynb
wget https://raw.githubusercontent.com/wayneweiqiang/QuakeFlow/master/docs/plot_catalog.ipynb
五、其他
1)Vm虚拟机内存不够扩展Ubuntu系统磁盘空间——解决
2)输conda activate deepdenoiser报错:CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’——解决
# 激活 anaconda 环境
aa@ubuntu:~/DeepDenoiser$ source activate
(base) aa@ubuntu:~/DeepDenoiser$ conda activate deepdenoiser
# 退出 anaconda 环境
(deepdenoiser) aa@ubuntu:~/DeepDenoiser$ conda deactivate
(base) aa@ubuntu:~/DeepDenoiser$ conda deactivate
aa@ubuntu:~/DeepDenoiser$
3)查看环境
aa@ubuntu:~$ conda info --envs
# conda environments:
#
base * /home/aa/miniconda3
deepdenoiser /home/aa/miniconda3/envs/deepdenoiser
phasenet /home/aa/miniconda3/envs/phasenet
quakeflow /home/aa/miniconda3/envs/quakeflow