186 lines
5.1 KiB
Plaintext
186 lines
5.1 KiB
Plaintext
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# read src_rec file and check its arrival time and distance from src to rec\n",
|
||
|
|
"import numpy as np\n",
|
||
|
|
"\n",
|
||
|
|
"def read_src_rec_file(fpath):\n",
|
||
|
|
"\n",
|
||
|
|
" with open(fpath, \"r\") as f:\n",
|
||
|
|
" lines = f.readlines()\n",
|
||
|
|
"\n",
|
||
|
|
" # list to store src lon lat\n",
|
||
|
|
" src_pos = []\n",
|
||
|
|
" # list to store rec lon lat\n",
|
||
|
|
" rec_pos_tmp=[]\n",
|
||
|
|
" rec_pos = []\n",
|
||
|
|
"\n",
|
||
|
|
" for line in lines:\n",
|
||
|
|
" # src line if there are 13 elements\n",
|
||
|
|
" if len(line.split()) == 13:\n",
|
||
|
|
" # store source lon lat dep\n",
|
||
|
|
" stlon = float(line.split()[8])\n",
|
||
|
|
" stlat = float(line.split()[7])\n",
|
||
|
|
" src_pos.append([stlon, stlat])\n",
|
||
|
|
"\n",
|
||
|
|
" nrec = float(line.split()[11])\n",
|
||
|
|
" # rec line if there are 9 elements\n",
|
||
|
|
" elif len(line.split()) == 9:\n",
|
||
|
|
" # store receiver lon lat dep\n",
|
||
|
|
" rclon = float(line.split()[4])\n",
|
||
|
|
" rclat = float(line.split()[3])\n",
|
||
|
|
" rctime= float(line.split()[8])\n",
|
||
|
|
" # calc epicentral distance from src\n",
|
||
|
|
" dist = np.sqrt((stlon-rclon)**2 + (stlat-rclat)**2)\n",
|
||
|
|
" rec_pos_tmp.append([rclon, rclat, rctime, dist])\n",
|
||
|
|
"\n",
|
||
|
|
" nrec-=1\n",
|
||
|
|
" else:\n",
|
||
|
|
" raise ValueError(\"src_rec_test_out.dat file is not correct\")\n",
|
||
|
|
"\n",
|
||
|
|
" if nrec==0:\n",
|
||
|
|
" rec_pos.append(rec_pos_tmp)\n",
|
||
|
|
" # remove all rec_pos_tmp\n",
|
||
|
|
" rec_pos_tmp = []\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
" src_pos = np.array(src_pos)\n",
|
||
|
|
" rec_pos = np.array(rec_pos)\n",
|
||
|
|
"\n",
|
||
|
|
" return src_pos, rec_pos"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"src_pos_true, rec_pos_true = read_src_rec_file(\"./src_rec_test_out.dat\")\n",
|
||
|
|
"src_pos_try, rec_pos_try = read_src_rec_file(\"./src_rec_test_out_out.dat\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# plot rec_pos for each src_pos with color by 3rd element\n",
|
||
|
|
"import matplotlib.pyplot as plt\n",
|
||
|
|
"\n",
|
||
|
|
"\n",
|
||
|
|
"def plot_srcrec(src_pos, rec_pos):\n",
|
||
|
|
"\n",
|
||
|
|
" # selected source\n",
|
||
|
|
" id_src = 1\n",
|
||
|
|
" \n",
|
||
|
|
" fig, axs = plt.subplots(2,1,figsize=(10,10))\n",
|
||
|
|
" \n",
|
||
|
|
" # plot arrival time\n",
|
||
|
|
" # src\n",
|
||
|
|
" axs[0].scatter(src_pos[id_src,0], src_pos[id_src,1], c='r', marker='o', s=100)\n",
|
||
|
|
" # rec\n",
|
||
|
|
" axs[0].scatter(rec_pos[id_src][:,0], rec_pos[id_src][:,1], c=rec_pos[id_src][:,2], s=10, marker='o')\n",
|
||
|
|
" \n",
|
||
|
|
" # colorbar\n",
|
||
|
|
" cbar = plt.colorbar(axs[0].scatter(rec_pos[id_src][:,0], rec_pos[id_src][:,1], c=rec_pos[id_src][:,2], s=100, marker='o'))\n",
|
||
|
|
" cbar.set_label('arrival time')\n",
|
||
|
|
" \n",
|
||
|
|
" # plot epicentral distance\n",
|
||
|
|
" # src\n",
|
||
|
|
" axs[1].scatter(src_pos[id_src,0], src_pos[id_src,1], c='r', marker='o', s=100)\n",
|
||
|
|
" # rec\n",
|
||
|
|
" axs[1].scatter(rec_pos[id_src][:,0], rec_pos[id_src][:,1], c=rec_pos[id_src][:,3], s=100, marker='o')\n",
|
||
|
|
" \n",
|
||
|
|
" # colorbar\n",
|
||
|
|
" cbar = plt.colorbar(axs[1].scatter(rec_pos[id_src][:,0], rec_pos[id_src][:,1], c=rec_pos[id_src][:,3], s=10, marker='o'))\n",
|
||
|
|
" cbar.set_label('epicentral distance')\n",
|
||
|
|
" \n"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"plot_srcrec(src_pos_true, rec_pos_true)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"plot_srcrec(src_pos_try, rec_pos_try)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"rec_pos_diff = rec_pos_true[:][:][2]-rec_pos_try[:][:][2]"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"rec_pos_diff.shape"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"rec_pos_true.shape"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"interpreter": {
|
||
|
|
"hash": "02f83e1f4cd9619657a6845405e2dd67c4de23753ba48bca5dce2ebf57b3813a"
|
||
|
|
},
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3.9.1 64-bit ('3.9.1')",
|
||
|
|
"language": "python",
|
||
|
|
"name": "python3"
|
||
|
|
},
|
||
|
|
"language_info": {
|
||
|
|
"codemirror_mode": {
|
||
|
|
"name": "ipython",
|
||
|
|
"version": 3
|
||
|
|
},
|
||
|
|
"file_extension": ".py",
|
||
|
|
"mimetype": "text/x-python",
|
||
|
|
"name": "python",
|
||
|
|
"nbconvert_exporter": "python",
|
||
|
|
"pygments_lexer": "ipython3",
|
||
|
|
"version": "3.9.1"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 2
|
||
|
|
}
|