Reproducible material for Separation-PINN: Seismic P- and S-waves mode separation with physics informed neural networks - Xinru Mu, Shijun Cheng, and Tariq Alkhalifah.
This repository is organized as follows:
- 📂 asset: folder containing logo;
- 📂 elastic_wave_modeling: folder generating the elastic wavefield;
- 📂 prepare_input_data: folder generating input data for training PINN based on the elastic wavefield;
- 📂 PINN_training/xp_xs_component/code: folder contains Python scripts for separating P- and S-waves of the horizontal components;
- 📂 PINN_training/zp_zs_component/code: folder contains Python scripts for separating P- and S-waves of the vertical components;
- 📂 PINN_training/plot_xp_xs: folder contains MATLAB scripts for plotting separated P- and S-waves of the horizontal components;
- 📂 PINN_training/plot_zp_zs: folder contains MATLAB scripts for plotting separated P- and S-waves of the vertical components
The following scripts are provided:
- 📙
wpfbos.m: script is located in elastic_wave_modeling and is used for performing elastic forward modeling; - 📙
build_input.m: script is located in prepare_input_data and is used for generating the input data for training PINN; - 📙
train_x.py: script is located in PINN_training/xp_xs_component/code and is used for training PINN model to separate P- and S-waves in the horizontal component; - 📙
train_z.py: script is located in PINN_training/zp_zs_component/code and is used for training PINN model to separate P- and S-waves in the vertical component
To ensure reproducibility of the results, we suggest using the sepapinn.yml file when creating an environment.
Simply run:
sh install_env.sh
It will take some time, if at the end you see the word Done! on your terminal you are ready to go.
Remember to always activate the environment by typing:
conda activate sepapinn
Once you have downloaded the files and set up the environment, you can directly run the execution scripts in folders PINN_training/xp_xs_component/code and PINN_training/xp_xs_component/code to train the Separation-PINN model by using the following commands:
sh train_exe_x
sh train_exe_z
Note: While training the PINN, we simultaneously perform data prediction and save the predicted results in the output folder under the current directory.
Disclaimer: All experiments have been carried on a Intel(R) Xeon(R) CPU @ 2.10GHz equipped with a single NVIDIA GEForce A100 GPU. Different environment configurations may be required for different combinations of workstation and GPU.
@article{mu2025separationpinn,
title={SeparationPINN: Physics-informed neural networks for seismic P-and S-wave mode separation},
author={Mu, Xinru and Cheng, Shijun and Alkhalifah, Tariq},
journal={IEEE Transactions on Geoscience and Remote Sensing},
year={2025},
publisher={IEEE}
}