GeophyAI

Python与地球物理数据处理

0%

NoisePy安装及简易教程

NoisePy简易教程

翻译自GitHub

NoisePy是一个Python软件包,旨在快速轻松地计算背景噪声互相关函数。 它提供了用于噪声监视和表面波色散分析的其他功能。

免责声明:此代码不应“按原样”使用,也不能像黑盒一样运行。 希望用户更改本地路径和参数。 如果有问题,请将其提交到github,其中包含要调试的脚本和错误消息等信息。

完整doc请参考 https://noise-python.readthedocs.io/en/latest/
logo

引用

如果您在文章中使用了代码,请引用:

1
Jiang, C. and Denolle, M. "NoisePy: a new high-performance python tool for seismic ambient noise seismology." Seismological Research Letter 91 (3): 1853–1866.

安装

NoisePy由python脚本组成,因此其安装方式十分灵活,这实际上是为了构建脚本和相关功能的依赖库。 我们建议使用conda和pip安装库,因为它们更方便。 下面是我们经过测试的命令行,这些命令行将创建一个运行NoisePy的python环境。 请注意,该测试是在MacOS上执行的,因此对于其他OS可能会略有不同。(假设主机已经安装了MPI,mpi4py包会用到)

1
2
3
conda create -n noisepy -c conda-forge python=3.7 numpy=1.16.2 numba pandas pycwt jupyter mpi4py=3.0.1 obspy=1.1 pyasdf
conda activate noisepy
git clone https://github.com/mdenolle/NoisePy.git

功能

  • 根据obspy的get_stationget_waveforms的核心功能下载连续噪声数据
  • 以ASDF格式保存地震数据,该数据可以方便地将元数据、波形数据和辅助数据组合到一个文件中(读/写ASDF文件的教程)
  • 提供了高度的灵活性来处理存储在本地计算机上的混乱的SAC / miniSEED数据并将其转换为ASDF格式的数据,可以轻松地将其插入NoisePy
  • 通过MPI并行运行功能,执行快速,简单的互相关(cross-correlation)
  • 包括一系列监视功能,可使用一些最近开发的新方法来对结果互相关函数上的dv / v进行测量(有关更多详细信息,请参见我们的论文)

简易教程

0A. 使用S0A_download_ASDF_MPI.py下载地震噪声数据

该脚本(位于src目录中)及其现有参数允许通过SCEC数据中心下载位于某个区域并在1/Jul/2016-2/Jul/2016 期间运行的所有可用宽频CI台站(BH?) 。

在脚本中,为所有可根据用户需要更改的输入参数提供了简短摘要。

在脚本的当前形式中,我们设置inc_hours = 24,下载一整天的连续噪声数据以及元信息,并将其存储在单个ASDF文件中。 为了增加最终互相关函数的信噪比(SNR)(更多详细信息,请参见Seats等,2012),我们将整天的序列分成了较小的段,每个cc_len长, 相邻段之间有部分重叠。 如果在下载过程中需要保存中间输出/操作时间,则可能需要将flag设置为True

1
python S0A_download_ASDF_MPI.py

如果要使用多个内核(例如4个),请使用以下命令(使用mpi4py包)运行脚本。

1
mpirun -n 4 python S0A_download_ASDF_MPI.py

从S0A输出的文件包括包含每日(24h)连续噪声数据的ASDF文件,在S0A脚本中记录所有使用的参数的参数文件以及所有电台信息的CSV文件(有关读取带有下载数据的ASDF文件的更多详细信息 可以在docs / src / ASDF.md中找到)。 可以使用src目录中名为plotting_modules的绘图模块显示存储在ASDF文件中的连续波形数据,如下所示。

1
2
3
import plotting_modules #(cd to your source file directory first before loading this module)
sfile = '/RAW_DATA/2016_07_01_00_00_00T2016_07_02_00_00_00.h5'
plotting_modules.plot_waveform(sfile,'CI','BLC',0.01,0.4)

waveform3
请注意,该脚本还提供了从现有台站列表下载数据的选项,其格式与输出的CSV文件相同。 在这种情况下,应该在L53down_list设置为True

实际上,下载速度取决于许多因素,例如目标数据的原始采样率,网络,托管该数据的数据中心以及要存储在计算机上的一般结构等。我们测试了许多评估其性能的参数,读者可参考我们的论文以获取更多详细信息(Jiang等人,2019)。

0B. 使用S0B_sacMSEED_to_ASDF.py处理本地SAC /缩小文件

如果要使用NoisePy处理存储在自己磁盘上的SAC /缩小格式的本地数据,则需要使用此脚本。 大多数变量与S0A的变量相同,因此应该很容易理解和更改。

在此脚本中,它将通过合并,去趋势,去斜,下采样然后进行修整来对数据进行预处理,然后再将其保存为ASDF格式以用于以后的NoisePy处理。 特别是,我们希望脚本能够处理非常混乱的数据,这意味着地震数据会被分解成小块,并且混乱的时间信息(例如重叠的时间)会被分解。 记住,当数据混乱时,将L62处的messydata设置为True! (有关删除仪器响应的教程)

1. 使用S1_fft_cc_MPI.py 执行互相关

这是NoisePy的核心脚本,该脚本首先对所有噪声数据执行傅立叶变换,然后将它们加载到内存中,然后再进行进一步的互相关。

这意味着互相关是在频率域进行的。 在脚本中,我们提供了几种计算互相关的选项,包括rawcoherencydeconv(有关详细定义,请参见我们的论文*)。 我们在这里以coherency为例。

运行脚本后,它将创建一个名为CCF的新文件夹,在其中放置了包含不同工作站对之间所有互相关函数的新ASDF文件。 它还创建一个fft_cc_data.txt参数文件,该文件记录了此脚本中使用的所有有用参数。

一旦获得互相关文件,就可按以下方式在plotting_modules中调用plot_substack_cc函数来显示所有站对之间的每日时间变化。

1
2
3
import plotting_modules
sfile = '/2016_07_01_00_00_00T2016_07_02_00_00_00.h5'
plot_modules.plot_substack_cc(sfile,0.1,0.2,200,True,'/Users/chengxin/Documents/SCAL/CCF/figures')

waveform3

2. 使用S2_stacking.py叠加

该脚本用于叠加S1中所有台站对的互相关函数,并将它们保存到ASDF文件中以供将来分析(例如,时间变化和/或频散提取)。 特别地,叠加过程有两种选择,包括线性和相位加权堆叠(pws)。 通常,pws产生的波形具有高SNR,下面的快照显示了两种叠加方法的波形比较。 我们使用下面的命令来绘制动校正图。

1
2
3
4
import plotting_modules,glob
sfiles = glob.glob('/SCAL/STACK/*/*.h5')
plot_modules.plot_all_moveout(sfiles,'Allstack_linear'0.1,0.2,'ZZ',1,300,True,'/SCAL/STACK') #(move-out for linear stacking)
plot_modules.plot_all_moveout(sfiles,'Allstack_pws'0.1,0.2,'ZZ',1,300,True,'/SCAL/STACK') #(move-out for pws)

waveform3
waveform3
无论如何,这里仅给出一个简单的示例,说明NoisePy可能如何工作!
我们强烈建议您下载NoisePy软件包并自行探索!
如果在运行代码期间有任何意见和/或建议,请不要犹豫通过电子邮件与我们联系,或在此github页面中创建issue!

1
2
Chengxin Jiang (chengxin_jiang@fas.harvard.edu)
Marine Denolle (mdenolle@fas.harvard.edu).

参考文献

1
Seats, K. J., Jesse F. L., and German A. P. "Improved ambient noise correlation functions using Welch′ s method." Geophysical Journal International 188, no. 2 (2012): 513-523.
1
*Jiang, C. and Denolle, M. "NoisePy: a new high-performance python tool for seismic ambient noise seismology." Seismological Research Letter 91, no. 3 (2020): 1853–1866..
1
** Yuan, C., Bryan, J. T., Jiang, C., Okubo, K., Clements, T. and Denolle, M. (2019). Comparing approaches to measuring time- and frequency-dependent seismic phase variations for coda wave interferometry. In AGU Fall Meeting 2019.