Tujuan: Mengaplikasikan ObspyDMT untuk manajemen data seismologi
\n",
"
Keluaran: Peserta dapat mengunduh, mengolah, dan mengelola data seismologi
\n",
"
Sesi: 3
\n",
"
Waktu/Tempat: Sabtu, 27 Februari 2021/ Zoom Meeting
\n",
"
\n",
"
"
]
},
{
"cell_type": "markdown",
"id": "affiliated-formula",
"metadata": {},
"source": [
"## 1. Perkembangan Data Seismologi\n",
"\n",
"Sesi kedua kemarin kita mengolah data katalog gempa kemudian membuat visualisasi sederhana dari katalog tersebut. Katalog gempa bumi merupakan salah satu data seismologi. Data seismologi lain dapat berupa seismogram rekaman gempa dan informasi mengenai instrumen perekam gempa pada masing-masing stasiun perekam tersebut. Seiring majunya instrumentasi dan mendukungnya sarana telekomunikasi melalui internet, badan-badan misi perekaman data seismologi memberikan sarana untuk mengunduh masing-masing jenis data tersebut melalui berbagai macam metode yang didasari pada komunikasi internet.\n",
"\n",
"![seismological data growth](figures/seismological_data_growth.png)\n",
"\n",
"Gambar di atas adalah perkembangan jumlah data rekaman gempa komponen vertikal dan magnitudo gempa di atas 5 (Hosseini dan Sigloch, 2017). Garis biru putus-putus merupakan jumlah kejadian gempa bumi, garis biru merupakan jumlah rekaman gempanya, dan garis merah merupakan nilai kumulatif jumlah kejadian yang dikalikan dengan jumlah channel. Dari gambar di atas kita dapat melihat bahwa perkembangan jumlah rekaman (garis biru) sangat cepat dibanding jumlah kejadian gempa.\n",
"\n",
"Masing-masing badan-badan misi memiliki pusat data untuk mengunduh data dengan dua macam antarmuka komunikasi yaitu FSDN dan Arclink, pusat-pusat data tersebut adalah:\n",
"\n",
"sumber data| URL|\n",
"--------| -------- |\n",
"BGR | http://eida.bgr.de\n",
"EMSC | http://www.seismicportal.eu\n",
"ETH | http://eida.ethz.ch\n",
"GEONET | http://service.geonet.org.nz\n",
"GFZ | http://geofon.gfz-potsdam.de\n",
"INGV | http://webservices.rm.ingv.it\n",
"IPGP | http://eida.ipgp.fr\n",
"IRIS | http://service.iris.edu\n",
"ISC | http://isc-mirror.iris.washington.edu\n",
"KOERI | http://eida.koeri.boun.edu.tr\n",
"LMU | http://erde.geophysik.uni-muenchen.de\n",
"NCEDC | http://service.ncedc.org\n",
"NIEP | http://eida-sc3.infp.ro\n",
"NOA | http://eida.gein.noa.gr\n",
"ODC | http://www.orfeus-eu.org\n",
"ORFEUS | http://www.orfeus-eu.org\n",
"RESIF | http://ws.resif.fr\n",
"SCEDC | http://service.scedc.caltech.edu\n",
"USGS | http://earthquake.usgs.gov\n",
"USP | http://sismo.iag.usp.br\n",
"*Hosseini dan Sigloch (2017)*\n",
"\n",
"Melimpahnya sumber data ini membuat analisis seismologi menjadi lebih kaya dan komprehensif. Namun, hal tersebut juga memberikan masalah baru yaitu bagaimana mengunduh, mengelola, dan mengecek data apabila kita hendak menggunakan sumber data yang berbagai macam karena tentunya setiap sumber data memiliki format data yang berbeda. Masalah tersebut yang kemudian mendasari pembuatan perangkat lunak Obspy Data Management Tool (ObspyDMT). ObspyDMT dapat mengunduh, memproses, dan mengelola data seismologi mulai dari katalog, data rekaman, dan metadata rekaman serta stasiun dengan otomatis dan efektif."
]
},
{
"cell_type": "markdown",
"id": "convinced-aquatic",
"metadata": {},
"source": [
"## 2. Obspy Data Management Tool (ObspyDMT)\n",
"\n",
"ObspyDMT dikembangkan oleh Hosseini dan Sigloch (2017) menggunakan bahasa pemrograman Python dan dapat dijalankan pada sistem operasi Linux, MacOS, dan Windows. Program ini merupakan bagian dari Obspy (modul Python untuk seismologi) yang memiliki fungsi spesifik untuk mendownload, mengolah, dan mengelola data seismologi, beberapa fungsi untuk mengolah dan mengunduh data merupakan fungsi yang diimpor Obspy. ObspyDMT juga memanfaatkan `scipy`, `numpy`, `matplotlib`, dan `Basemap` untuk fungsionalitas yang lain sehingga juga merupakan dependensi dari paket ini. Daftar proses yang dapat dilakukan dari ObspyDMT adalah.\n",
"\n",
"1. Mengunduh meta data stasiun: berdasarkan waktu absolut atau relatif terhadap kejadian gempa, terhadap lokasi (dapat berupa kotak atau lingkaran), berdasarkan channel, dan parameter lain. Kita dapat memanfaatkan *wildcards* `*` untuk mempermudah penyaringan data.\n",
"2. Mengunduh meta data sumber gempa bumi: dari berbagai macam penyedia data (sumber data), yang didukung adalah: NEIC, Global CMT, IRIS DMC, NCEDC, USGS, INGV and ISC. Meta data yang dapat diunduh mulai dari informasi umum sumber gempa sampai informasi tensor momen.\n",
"3. Menampilkan plot metadata dengan perintah yang mudah yang berfungsi sebagai alat pengecekan/diagnostik\n",
"4. Mengunduh data rekaman gempa bumi (seismogram) berdasarkan kejadian gempa dan stasiun yang sebelumnya sudah diunduh pada proses (2) baik dengan protokol ArcLink atau FSDN.\n",
"5. Memanfaatkan paralelisasi dalam pengunduhan data sehingga dapat lebih cepat\n",
"6. Memperbarui (*update*) data yang sebelumnya kita unduh, data akan dikelola secara otomatis oleh ObspyDMT\n",
"7. Mengelola data secara otomatis dalam folder-folder yang sudah rapi\n",
"8. Memproses data berdasarkan fungsi yang dapat ditentukan sendiri oleh pengguna\n",
"9. Melakukan koreksi instrumen secara otomatis\n",
"10. Mengunduh seismogram sintetik sampai dengan 30 data untuk dibandingkan dengan data yang asli.\n",
"\n",
"![obspydmt folder structure](figures/obspydmt_folder.png)\n",
"\n",
"Gambar di atas adalah struktur folder data yang kita unduh. `datapath` merupakan nama folder tempat kita menyimpan semua data kita, baik itu meta data ataupun data rekaman, setiap kita menjalankan proses obspyDMT kita harus mendefinisikan `datapath` ini, folder kemudian akan dibuat oleh ObspyDMT yang akan berisi berbagai macam data yang telah kita unduh. Misalkan kita ingin mengolah data untuk Indonesia, kita bisa memberikan nama folder adalah `indonesia_events`. Di dalam folder `indonesia_events` ini nantinya akan ada satu folder bernama `EVENTS-INFO` dan folder lain yang biasanya bernama `[tanggal]_[identita-sevent].a`. Data katalog akan tersimpan di folder `EVENTS-INFO` berbentuk data tabular bernama `catalog.txt` atau format lain seperti QuakeML (`catalog.ml`) dan format *pickle*. \n",
"\n",
"Data rekaman akan masuk ke masing-masing folder yang berformat `[tanggal]_[identitas-event].a`, contoh: `20210210_131955.a` untuk gempa yang terjadi pada 10 Februari 2021 dengan identitas 131955. Di dalam folder ini akan terdapat empat folder utama `info`, `resp`, `raw`, `processed`. `info` akan menyimpan informasi lokasi gempa dan stasiun, ketersediaan data, informasi input kita, serta informasi log dari setiap proses, `resp` akan menyimpan informasi respon istrumen (meta data instrumen/stasiun), `raw` akan menyimpan data rekaman yang asli, dan `processed` akan menyimpan data rekaman yang sudah diproses, salah satu prosesnya adalah koreksi instrumen."
]
},
{
"cell_type": "markdown",
"id": "flush-given",
"metadata": {},
"source": [
"## 3. Menginstal ObspyDMT\n",
"Paket ObspyDMT ini merupakan salah satu paket Python yang dapat sudah dilengkapi *command line interface* (CLI) sehingga sebenarnya pengguna tidak harus memiliki pengetahuan Python terlebih dahulu. Bagi yang lebih nyaman menjalankan kode di dalam lingkungan Python maka pengguna juga dapat menjalankannya sebagai paket yang bisa diimpor. Metode menjalankan program yang dibahas lengkap pada sesi ini adalah CLI.\n",
"\n",
"Instalasi ObspyDMT dapat dilakukan di *virtual environment* kemarin atau pada *virtual environment* yang baru, karena paket ini tidak tersedia di repositori Anaconda Cloud maka kita harus menginstall melalui `pip`. Hal ini yang menyebabkan tidak semua dependensi ikut terinstall sehingga kita harus melakukannya secara manual, di awali dengan menginstal `numpy`, `scipy`, dan `basemap`.\n",
"\n",
"```\n",
"conda install numpy scipy basemap\n",
"```\n",
"\n",
"Langkah dilanjutkan dengan menginstall `obspy` melalui kanal `conda-forge`:\n",
"\n",
"```\n",
"conda install -c conda-forge obspy\n",
"```\n",
"\n",
"Setalah semua dependensi terinstal kita selanjutnya dapat menginstall ObspyDMT dengan perintah:\n",
"\n",
"```\n",
"pip install obspydmt\n",
"```\n",
"\n",
"Instalasi akan berjalan cepat karena ukuran ObspyDMT kecil. Setelah proses instalasi selesai kita dapat mencoba mengetes dengan menuliskan perintah pada Anaconda Prompt kita:\n",
"\n",
"```\n",
"obspyDMT --check\n",
"```\n",
"\n",
"Sering terjadi *error* `cannot import 'dedent' from 'matplotlib.cbook'` pada Windows yang disebabkan karena versi `matplotlib` yang terlalu tinggi, `dedent` hanya ada pada `matplotlib` versi 3.2 ke bawah sehingga kita harus *mendowngrade* `matplotlib`. Proses *downgrade* bisa dilakukan baik di `conda` maupun `pip`, pada contoh ini kita akan menggunakan `pip`:\n",
"\n",
"```\n",
"pip install -U matplotlib==3.2\n",
"```\n",
"\n",
"Jalankan ObspyDMT lagi, jika berhasil maka akan muncul:\n",
"\n",
"```\n",
"--------------------------------------------------------------------------------\n",
"\t\t obspyDMT (obspy Data Management Tool)\n",
"\n",
"\tPython Toolbox for Retrieving, Processing and Management of\n",
"\t\t\tLarge Seismological Datasets\n",
"\n",
":copyright:\n",
"The ObsPy Development Team (devs@obspy.org)\n",
"\n",
"Developed by Kasra Hosseini\n",
"email: kasra.hosseinizad@earth.ox.ac.uk\n",
"\n",
":license:\n",
"GNU General Public License, Version 3\n",
"(http://www.gnu.org/licenses/gpl-3.0-standalone.html)\n",
"--------------------------------------------------------------------------------\n",
"```\n",
"\n",
"di bagian bawah akan tercetak versi-versi paket yang menjadi dependensi dari ObspyDMT:\n",
"\n",
"```\n",
"********************************\n",
"Check all the BASIC dependencies\n",
"********************************\n",
"\n",
"=================================\n",
"obspy ver: 1.2.2\n",
"numpy ver: 1.20.1\n",
"scipy ver: 1.6.0\n",
"matplotlib ver: 3.2.0\n",
"Basemap ver: 1.2.2+dev\n",
"=================================\n",
"```\n",
"\n",
"ObspyDMT bergantung pada lima modul lain yaitu `obspy`, `numpy`, `scipy`, `matplotlib`, dan `Basemap`, sehingga lima paket tersebut dapat kita sebut sebagai dependensi dari ObspyDMT.\n"
]
},
{
"cell_type": "markdown",
"id": "inner-tender",
"metadata": {},
"source": [
"## 4. Mode Kelola Meta Data Katalog (Metadata Sumber Gempa)\n",
"\n",
"### 4.1 Mengunduh Katalog\n",
"\n",
"Katalog dapat kita unduh secara otomatis dengan menggunakan parameter/*flag* `event_info` yang didahulu lokasi folder untuk menyimpan data `datapath` dan parameter lain untuk memfilter katalog yaitu:\n",
"\n",
"| *flag*/parameter | deskripsi | contoh |\n",
"| ----------- | ----------- | ----------- |\n",
"| `min_date` | waktu awal dalam `YYYY-MM-DD` | 2020-01-01 |\n",
"| `max_date` | waktu akhir dalam `YYYY-MM-DD` | 2020-01-31 |\n",
"| `min_depth` | kedalaman maksimum dalam km | 30.0 |\n",
"| `max_depth` | kedalaman minimum dalam km | 600.0 |\n",
"| `min_mag` | magnitudo minimum | 3.0 |\n",
"| `max_mag` | magnitudo maksimum | 7.0 |\n",
"| `mag_type` | jenis magnitudo | Mw |\n",
"| `event_rect` | batas kotak area gempa `` dalam derajat| 95/141/-6/11 |\n",
"| `event_circle` | batas lingkaran area gempa ` ///` dalam derajat| 120/0/1/5 |\n",
"\n",
"Contoh apabila kita ingin menyimpan file katalog yang kita unduh ke folder `katalog_dunia_neic` untuk magnitudo minimum 4,5 yang terjadi pada 2020-01-01 sampai 2020-04-30 dengan sumber katalog NEIC_USGS maka kita dapat menggunakan perintah:\n",
"\n",
"```\n",
"obspyDMT --datapath katalog_dunia_neic --min_mag 4.5 --min_date 2020-01-01 --max_date 2020-04-30 --event_catalog NEIC_USGS --event_info\n",
"```\n",
"\n",
"Setelah menjalankan perintah di atas di Anaconda Prompt maka akan muncul status pengunduhan data:\n",
"\n",
"```\n",
"obspyDMT primary mode: event_based\n",
"\n",
"\n",
"Event(s) are based on:\tNEIC_USGS\n",
"#Divisions: 4\n",
"1,2,3,\n",
"```\n",
"\n",
"Ringkasan data yang terunduh akan ditampilkan setelah proses selesai:\n",
"\n",
"```\n",
"#N LAT LON DEP DATETIME MAG AUTH EV_ID FLY \n",
"--------------------------------------------------------------------------------\n",
"1 -23.280 -66.610 195 2020-04-29T16:04:31 4.9 None 20200429_160431.a NAN\n",
"2 20.191 -74.158 10 2020-04-29T10:22:47 4.6 None 20200429_102247.a NAN\n",
"3 -24.270 -67.046 149 2020-04-29T05:37:16 5.4 None 20200429_053716.a NAN\n",
"..\n",
"440 51.202 -178.130 38 2020-01-01T15:05:57 4.8 None 20200101_150557.a NAN\n",
"441 -17.428 -172.504 10 2020-01-01T08:31:24 5.4 None 20200101_083124.a NAN\n",
"442 51.660 -176.691 54 2020-01-01T03:20:28 4.6 None 20200101_032028.a NAN\n",
"--------------------------------------------------------------------------------\n",
"\n",
"Number of events/intervals: 442\n",
"Time for retrieving and saving the event info: 0:00:41\n",
"```\n",
"\n",
"### 4.2 Mengeplot kejadian gempa\n",
"Data yang kita unduh akan masuk di folder `katalog_dunia_neic/EVENTS-INFO`, ada berbagai macam format data yang terunduh. Data yang sudah familiar dengan kita adalah data tabular yang tersimpan dalam file `catalog.txt`. Kita dapat mengeplot data katalog kita dengan menggunakan tambahan parameter `--local` yang menunjukkan proses lokal (tanpa mendownload data) dan parameter `--plot_ev` yang merupakan perintah untuk mengeplot *event* atau kejadian:\n",
"\n",
"```\n",
"obspydmt --datapath katalog_dunia_neic --local --plot_ev\n",
"```\n",
"\n",
"Peta seperti ini akan muncul dalam jendela baru:\n",
"\n",
"![world catalog](./figures/world_catalog_ev.png)\n",
"\n",
"Dengan tambahan opsi (atau sering disebut sebagai `flag`) seperti tabel pada bagian 4.1 di atas kita dapat membuat lokasi spesifik yaitu di Indonesia dengan memasukkan nilai batas Indonesia dalam opsi `--event_rect` seperti pada contoh perintah di bawah ini (hasil download akan kita masukkan ke folder `katalog_indonesia_neic`):\n",
"\n",
"```\n",
"obspyDMT --datapath katalog_indonesia_neic --event_rect 95/141/-6/11 --min_mag 4.5 --min_date 2020-01-01 --max_date 2020-04-30 --event_catalog NEIC_USGS --event_info\n",
"```\n",
"![indonesia catalog](./figures/indonesia_catalog_ev.png)\n",
"\n",
"\n",
"### 4.3 Mengeplot Seismisitas\n",
"\n",
"Informasi lebih mendetail mengenai seismisitas yang meliputi statistik kedalaman, statistik magnitudo, plot kejadian berdasarkan magnitudo dan kedalaman, serta plot dari mekanisme fokal dari katalog dapat kita buat memanfaatkan *flag* `plot_seismicity`. Perintah lengkapnya adalah seperti ini:\n",
"\n",
"```\n",
"obspydmt --datapath katalog_dunia_neic --local --plot_seismicity\n",
"```\n",
"\n",
"Akan ada empat gambar yang muncul setelah proses ini dijalankan:\n",
"1. Plot Seismisitas Berdasarkan Magnitudo dan Kedalaman\n",
"![world catalog](./figures/world_catalog_seism_pl.png)\n",
"2. Plot Seismisitas dengan Mekanisme Fokal\n",
"![world catalog](./figures/world_catalog_seism.png)\n",
"\n",
"Pada plot di atas secara sekilas gempa-gempa hanya berupa titik dalam peta, apabila kita perbesar (*zoom*) maka kita dapat melihat mekanisme fokal dari masing-masing gempa:\n",
"![world catalog](./figures/world_catalog_seism_z.png)\n",
"\n",
"3 dan 4: Histogram \n",
"![world catalog](./figures/world_catalog_seism_hist.png)\n"
]
},
{
"cell_type": "markdown",
"id": "therapeutic-luxembourg",
"metadata": {},
"source": [
"## 5. Mode Kelola Data Rekaman Gempa (*Event Based*)\n",
"### 5.1 Mengunduh Data Rekaman Gempa\n",
"\n",
"Jika pada langkah sebelumnya kita hanya mengunduh meta data dari kejadian gempabumi dengan format data katalog kejadian, pada mode *event based* kita akan mengunduh data rekaman tiap gempabumi yang memenuhi syarat yang kita berikan. Beberapa tambahan *flag* perlu kita tambahkan yang menjelaskan sumber download data dan informasi stasiun apa saja yang ingin kita download datanya, secara lebih lengkap kita dapat rinci parameter-parameter tersebut dalam tabel seperti di bawah ini:\n",
"\n",
"| *flag*/parameter | deskripsi | contoh |\n",
"| ----------- | ----------- | ----------- |\n",
"| `data_source` | Sumber download data rekaman gempa | IRIS |\n",
"| `net` | Kode jaringan stasiun yang digunakan |II|\n",
"| `sta` | Kode nama stasiun | KAPI |\n",
"| `loc` | Kode lokasi stasiun | 00 |\n",
"| `cha` | Channel yang akan diunduh | BHZ |\n",
"| `identity` | Identitas spesifik dengan format `NET.STA.LOC.CHA` | II.KAPI.00.BHZ\n",
"| `station_rect` | Kotak batas lokasi stasiun yang akan diunduh datanya, format: `` dalam derajat| 95/141/-6/11 |\n",
"| `station_circle` | Lingkaran batas lokasi stasiun yang akan diunduh datanya, format: ` ///` dalam derajat| 120/0/1/5 |\n",
"\n",
"Sebagai contoh pertama untuk *event mode*, kita akan mendownload data gempa untuk jangka waktu tahun 2021 yaitu (1 Januari-25 Februari) dengan magnitudo minimal adalah 7.0. Sumber data yang dipilih adalah `IRIS` dengan kode jaringan (`--net`) adalah `II` dan kode lokasi (`--loc`) adalah `00`, komponen yang akan diunduh adalah komponen `BHZ`. Panjang rekaman yang akan kita unduh adalah 1800 detik (`--offset`). Lama proses pengunduhan tergantung dari jumlah gempa dan stasiun yang masuk dalam syarat yang telah kita lakukan. Perintah yang diketikkan adalah:\n",
"\n",
"```\n",
"obspyDMT --datapath event_2021 --min_date 2021-01-01 --max_date 2021-02-25 --min_mag 7.0 --event_catalog NEIC_USGS --data_source IRIS --net \"II\" --loc \"00\" --cha \"BHZ\" --preset 100 --offset 1800\n",
"```\n",
"\n",
"Keterangan yang akan tercetak pada Anaconda Prompt adalah daftar event atau kejadian gempa yang memenuhi syarat yang kita berikan:\n",
"\n",
"```\n",
"obspyDMT primary mode: event_based\n",
"\n",
"\n",
"Event(s) are based on:\tNEIC_USGS\n",
"#Divisions: 1\n",
"1,\n",
"Assembling 2 xml files...\n",
"1,2,\n",
"cleaning up the temporary folder.\n",
"\n",
"3.575270993 sec to retrieve the event info form NEIC.\n",
"\n",
"#N LAT LON DEP DATETIME MAG AUTH EV_ID FLY \n",
"--------------------------------------------------------------------------------\n",
"1 37.745 141.749 50 2021-02-13T14:07:50 7.1 None 20210213_140750.a NAN\n",
"2 -23.054 171.601 10 2021-02-10T13:19:55 7.7 None 20210210_131955.a NAN\n",
"3 5.005 127.519 80 2021-01-21T12:23:04 7.0 None 20210121_122304.a NAN\n",
"--------------------------------------------------------------------------------\n",
"\n",
"Number of events/intervals: 3\n",
"```\n",
"\n",
"Setelah itu di bawah dari keterangan event akan ada keterangan capaian dari pengunduhan data dan pengunduhan file response.\n",
"\n",
"```\n",
"IRIS -- event: /Users/anangsahroni/Job/geohazardpy/obspyDMT/event_2021/20210213_140750.a\n",
"[1/3-1/43] -- IRIS -- saving waveform for: II.AAK.00.BHZ ---> DONE\n",
"[1/3-1/43] -- IRIS -- saving response for: II.AAK.00.BHZ ---> DONE\n",
"[1/3-2/43] -- IRIS -- saving waveform for: II.ABPO.00.BHZ ---> DONE\n",
"[1/3-2/43] -- IRIS -- saving response for: II.ABPO.00.BHZ ---> DONE\n",
"[1/3-3/43] -- IRIS -- saving waveform for: II.ALE.00.BHZ ---> DONE\n",
"[1/3-3/43] -- IRIS -- saving response for: II.ALE.00.BHZ ---> DONE\n",
"[1/3-4/43] -- IRIS -- saving waveform for: II.ARTI.00.BHZ ---> DONE\n",
"[1/3-4/43] -- IRIS -- saving response for: II.ARTI.00.BHZ ---> DONE\n",
"[1/3-6/43] -- IRIS -- saving waveform for: II.BFO.00.BHZ ---> DONE\n",
"[1/3-6/43] -- IRIS -- saving response for: II.BFO.00.BHZ ---> DONE\n",
"[1/3-7/43] -- IRIS -- saving waveform for: II.BORG.00.BHZ ---> DONE\n",
"[1/3-7/43] -- IRIS -- saving response for: II.BORG.00.BHZ ---> DONE\n",
"[1/3-9/43] -- IRIS -- saving waveform for: II.CMLA.00.BHZ ---> DONE\n",
"```\n",
"\n",
"### 5.2 Mengeplot Titik Episenter, Stasiun, dan Garis Episentral\n",
"Saat proses sudah selesai kita dapat mengeplot episenter gempa (`plot_ev`), lokasi stasiun (`plot_sta`), dan garis penjalaran dari episenter gempa ke stasiun (`plot_ray`) dengan perintah:\n",
"\n",
"```\n",
"obspyDMT --datapath event_2021 --local --plot_sta --plot_ev --plot_ray\n",
"```\n",
"\n",
"Akan muncul jendela plotting dengan gambar:\n",
"\n",
"![event 2021 plot sta ray](figures/event_2021_ev_sta_ray.png)\n",
"\n",
"### 5.3 Mengeplot Data Rekaman Berdasarkan Jarak\n",
"\n",
"Data rekaman yang sudah kita unduh dapat kita plot berdasarkan jarak (dalam derajat) menggunakan *flag* `--plot_waveform` seperti contohnya:\n",
"\n",
"```\n",
"obspyDMT --datapath event_2021 --local --plot_waveform\n",
"```\n",
"\n",
"Hasil dari perintah di atas adalah gambar yang menunjukkan rekaman gempa berdasarkan jarak seperti pada gambar di bawah ini:\n",
"\n",
"![event 2021 plot waveform](figures/event_2021_waveform_IRIS.png)\n",
"\n",
"### 5.4 Memperbarui Data Rekaman\n",
"\n",
"Terkadang kita perlu memperbarui data rekaman, misalkan ada data yang rusak dan ingin kita unduh ulang atau kita ingin menambah data baik dengan gempa yang lain, waktu yang lain, atau stasiun yang lain. Pada contoh ini kita akan memperbarui data dengan menambah data rekaman dari stasiun-stasiun yang memiliki awalan kode `G` yang dikelola oleh `IPGP`. Perintah untuk mengupdate ini tidak berbeda dengan perintah untuk mengunduh data seperti di atas hanya saja pada proses download ini ada parameter lain yang kita ubah, disini kita mengubah `--data_source` ke `IPGP` dan mengubah nama stasiun menjadi `G*` untuk memilih stasiun yang kodenya diawali dengan huruf G:\n",
"\n",
"```\n",
"obspyDMT --datapath event_2021 --min_date 2021-01-01 --max_date 2021-02-25 --min_mag 7.0 --event_catalog NEIC_USGS --data_source IPGP --net \"G*\" --loc \"00\" --cha \"BHZ\" --preset 100 --offset 1800\n",
"```\n",
"\n",
"Plot pada peta memperlihatkan bahwa stasiun semakin banyak dan garis menjadi semakin padat:\n",
"![event 2021 plot sta ray](figures/event_2021_ev_sta_ray_IRIP.png)\n",
"Dari plot *waveform* kita juga dapat mengamati bahwa ada tambahan data:\n",
"![event 2021 plot waveform](figures/event_2021_waveform_IRIP.png)\n",
"\n",
"Setelah diperbarui dengan jumlah rekaman dan stasiun yang lebih banyak maka fase-fase gelombangnya juga lebih terlihat secara visual.\n",
"\n",
"### 5.5 Memilih Lokasi Gempa dan Stasiun Secara Spesifik\n",
"\n",
"Apabila pada contoh di atas kita memilih lokasi gempa dan stasiun rekaman di seluruh dunia, pada contoh ini kita akan mendownload data rekaman untuk gempa yang terjadi di waktu dan lokasi tertentu yang terekam di stasiun tertentu. Gempa yang akan kita gunakan adalah gempa di sekitar Mamuju sehingga pada pilihan `--event_rect` kita memberikan nilai parameter . Parameter tambahan yang kita masukkan adalah `min_epi` dan `max_epi` yang masing-masing menjelaskan jarak minimum stasiun dengan sumber gempa dan jarak maksimum stasiun dari sumber gempa. Data gempa mamuju ini akan kita simpan pada folder `event_mamuju` sehingga pada parameter `datapath` kita jangan lupa mengganti menjadi `event_mamuju` agar rekaman kita tadi yang berada di `event_2021` tidak tertumpuk.\n",
"\n",
"```\n",
"obspyDMT --datapath event_mamuju --min_mag 6.0 --min_date 2021-01-14 --max_date 2021-01-15 --event_rect 118.5/119.2/-3.25/-2.65 --event_catalog NEIC_USGS --data_source IRIS --min_epi 30 --max_epi 40 --cha BHZ\n",
"```\n",
"\n",
"Seperti biasa kita akan melihat plot stasiun, episenter, dan garis episentral dengan:\n",
"\n",
"```\n",
"obspyDMT --datapath event_mamuju --local --plot_sta --plot_ev --plot_ray\n",
"```\n",
"\n",
"![event mamuju sta ev ray](figures/event_mamuju_sta_ev_ray.png)\n",
"\n",
"Dapat kita lihat pada gambar di atas bahwa stasiun-stasiun rekaman yang digunakan hanya yang berada pada jangkauan jarak 30-40 derajat.\n",
"\n",
"Data rekaman dari stasiun-stasiun tersebut adalah:\n",
"\n",
"![waveform mamuju raw](figures/event_mamuju_wave_raw.png)"
]
},
{
"cell_type": "markdown",
"id": "fundamental-ukraine",
"metadata": {},
"source": [
"## 6. Melakukan Koreksi Instrumen\n",
"\n",
"ObspyDMT juga memberikan fitur untuk melakukan koreksi instrumen dari data rekaman. Koreksi instrumen adalah proses yang berguna untuk menghilangkan efek instrumen pada hasil rekaman. Sebenarnya data rekaman yang kita dapatkan sedikit terdistorsi efek fungsi tanggap frekuensi dari seismometer yang tidak datar di sepanjang frekuensi rekaman sehingga koreksi perlu kita lakukan untuk mendapatkan gerakan tanah yang sesungguhnya. Perintah untuk melakukan koreksi instrumen sama dengan perintah untuk mengunduh data dengan menambahkan *flag* `--instrument_correction` di belakang perintah. Perintah dapat diikuti lagi dengan *flag* `--corr_unit ` untuk memilih unit keluaran hasil koreksi, secara default akan terpilih `DIS` yaitu *displacement*. Kita akan mengunduh data lagi untuk gempa Mamuju dan stasiun perekam dengan azimuth 0-45 derajat.\n",
"Mengunduh data mentah:\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --min_mag 6.0 --min_date 2021-01-14 --max_date 2021-01-15 --event_rect 118.5/119.2/-3.25/-2.65 --event_catalog NEIC_USGS --data_source IRIS --min_epi 30 --max_epi 40 --min_azi 0 --max_azi 45 --cha BHZ\n",
"```\n",
"\n",
"Mengeplot peta untuk stasiun dan episenter gempa bumi:\n",
"\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --local --plot_sta --plot_ev --plot_ray\n",
"```\n",
"\n",
"![event mamuju sta ev ray](figures/event_mamuju_az45_sta_ev_ray.png)\n",
"\n",
"Melakukan koreksi instrumen, kita menambahkan *flag* `--local` karena tidak mengunduh data (*offline*/lokal) kemudian diikuti *flag* `--instrument_correction:\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --local --instrument_correction\n",
"```\n",
"\n",
"Setelah proses selesai kita dapat melihat hasil rekaman yang sudah dikoreksi dengan memanfaatkan *flag* `--plot_waveform` dengan menambah flag `--plot_dir` yang diikuti dengan `processed` sebagai folder penyimpanan hasil koreksi:\n",
"\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --local --plot_waveform --plot_dir processed\n",
"```\n",
"\n",
"Rekaman yang telah dikoreksi:\n",
"![event 2021 waveform instcor](figures/event_mamuju_az45_wave_instcor.png)\n",
"\n",
"Rekaman asli:\n",
"![event 2021 waveform instcor](figures/event_mamuju_az45_wave_raw.png)\n",
"\n",
"Pada rekaman yang telah dikoreksi terdapat fitur-fitur yang tidak biasa, rekaman yang rusak di sekitar 37,8 derajat menjadi seperti sinyal periodik (tetap rusak) sedangkan rekaman di bawahnya yang kurang bagus sebelum dikoreksi kini sudah lebih baik dan bisa digunakan untuk analisis. Kenampakan lain terjadi pada rekaman dengan jarak terjauh dimana terbentuk semacam sinyal dengan frekuensi rendah sebelum dan sepanjang terjadinya gempa bumi. Proses koreksi instrumen memang seringkali akan mengamplifikasi amplitudo dari gelombang dengan frekuensi rendah, terutama jika fungsi tanggap frekuensinya yang cenderung juga rendah (grafik turun) pada frekuensi rendah tersebut. Pengguna dapat mengaplikasikan *pre filtering* terlebih dahulu sebelum koreksi instrumen dengan tambahan *flag* `--pre_filt (f1,f2,f3,f4)` sebagai filter *bandpass*, terkhusus pada data rekaman yang bermasalah dan tergantung tipe instrumennya."
]
},
{
"cell_type": "markdown",
"id": "opened-solomon",
"metadata": {},
"source": [
"## 7. Membuat Seismogram Sintetik\n",
"\n",
"Seismogram sintetik dari kejadian gempa dapat kita simulasikan dengan menambah *flag* `--syngine` dan `--syngine_bg_model` karena kita memanfaatkan [Syngine](http://ds.iris.edu/ds/products/syngine/), parameter kemudian diikuti dengan model kecepatan yaitu `iasp91_2s` (opsi model lain dapat dilihat di laman Syngine) sehingga perintah lengkapnya menjadi:\n",
"\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --min_mag 6.0 --min_date 2021-01-14 --max_date 2021-01-15 --event_rect 118.5/119.2/-3.25/-2.65 --event_catalog NEIC_USGS --data_source IRIS --min_epi 30 --max_epi 40 --min_azi 0 --max_azi 45 --cha BHZ --instrument_correction --syngine --syngine_bg_model iasp91_2s\n",
"```\n",
"\n",
"Sintetik seismogram kemudian dapat kita plot dengan memilih *flag* `--output_dir` yaitu `syngine_iasp91_2s`:\n",
"\n",
"```\n",
"obspyDMT --datapath data_mamuju_az45 --local --plot_waveform --plot_dir syngine_iasp91_2s\n",
"```\n",
"\n",
"![mamuju waveform syn](figures/event_mamuju_az45_wave_syn.png)\n"
]
},
{
"cell_type": "markdown",
"id": "sufficient-diary",
"metadata": {},
"source": [
"## 8. Mengunduh Data Kontinyu (Mode *Continuous*)\n",
"\n",
"Kegunaan ObspyDMT yang tidak kalah penting yaitu untuk mengunduh data secara kontinyu, jika sebelumnya pada mode *event* kita mengunduh data rekaman gempa tertentu, pada mode *continuous* ini kita dapat mengunduh data pada waktu yang bebas, baik itu terjadi gempa atau tidak. Data rekaman saat tidak terjadi gempa ini sering dimanfaatkan untuk beberapa keperluan seperti analisis derau untuk melihat mobilitas saat *lockdown* Covid19 atau membuat citra bawah permukaan dengan korelasi *ambient noise*.\n",
"\n",
"Data Meramex (Bohm et al, 2005) akan coba kita unduh, sebelumnya peserta dapat mengakses ([GFZ](https://geofon.gfz-potsdam.de/waveform/archive/network.php?ncode=Z6&year=2004)) untuk melihat ketersediaan datanya. Kita akan mengunduh rekaman pada stasiun `BH2` dan komponen `*Z` yang berlangsung dari 1 Juli sampai 3 Juli 2004. Perintah untuk mengunduhdidahului dengan *flag* `--continuous`.\n",
"\n",
"```\n",
"obspyDMT --continuous --datapath meramex_bh12 --min_date 2004-07-01 --max_date 2004-07-3 --sta BH2 --cha *Z --data_source GFZ \n",
"```\n",
"\n",
"Untuk melihat datanya kita dapat memanfaatkan `obspy`:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "democratic-deadline",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5bzxxhuN/jX1yCOPZMKECbWGKSFoe6ZMmQJEEuJsox4CkZbj448/Tjj8wQcfZPPmzbg7O+64Ix9++CEXXXTR1gss+utZWy5AV8A3bNjgyVRXV/vrr7/uX331lbu7L1682GfMmOEeaSBW+vbtGxt/5syZXlJSkrTNRMJtxZeePXu6u3tZWVls2PDhw33FihWNmkei+Z111llJYzjnnHNqTfPll1/G6pYuXVprmtzc3ISxr1y5ss68a2pq/C9/+Uudz/G4447b4uVprH//+99+0003eU1NTa0YzKzWeJMnT/Zhw4b5v//97zrLFrV+/XofOXKkP/zww7Fh0Xbj/elPf6ozvbv73/72N3/xxRd9xIgRDvioUaMatTwrVqyItbt48eLY8CuuuCI2/J577mlQWxdffHGtGDds2OBr1671vLy8hLFvDZs3b/YlS5YkrZ81a5bvs88+PmHCBHd3Ly8vj8X64x//2AE/6qijkk5fUVHhpaWltYYl2p6vuOKKemN9//33fc2aNQ1cMsl2if7nM2nz5s2xeMaPH5/pcERanE8//dRPPfVUnzt3bmxYaWmp33vvvf7FF18023xTHeedd955/uabbyaq6+rNfSzc3DNoCSVVQvDee+/5pEmT/Omnn3bAu3fvXmuFLliwwAsKCmLvO3bs6O7u999/f+yAPd78+fP9F7/4ha9atarW8E2bNqXcUKI7ohtuuKHO8OjB38cff+yXXHKJf/3113Xmm0h0+kGDBrl75AA2vu3DDjvMzznnHH/99dfd3X3VqlWxupkzZ9ZqJ1WJP9AKb/ThNoYOHVpv3BUVFXX+YUtLS/3tt9/2qqqqOuPX1NT45s2bky4/4NXV1Ql3+uEdb6IydepUnzRpkvfr16/WtDU1NX7wwQf7oYce6tXV1bXme/vtt8fG/eSTT9zdfcmSJQnb37x5s0+dOtUXL17s8+fP94qKiqSfSzghmDVrViyOcHvDhg2r9/N1dz/llFNqLU94O8/UgdHhhx8e+8zjrVmzpk5sFRUVSf+PEtl///29Q4cOXlRUFBuWaPrf/OY37h5Jzg866CC/8sora7Uzb968rDp4lORee+01/93vflfnfzReNicEu+22W6bDEWlRwj9shv+nx40b54B36tSp2eZd37HS448/roQgUyWaEFx22WUO+M9//vM6K27AgAGx12+88UbKlbl582Y/+OCDY+/feecdnzRpkru7f/TRR96tWzcHfN999621kRxxxBH1bignnniiDxkypM7w66+/3t3dv/Od7zjghx9+eKzdjz/+2E844QT/8MMP3d29sLDQDzjgAP/DH/4Qm36bbbZxd/f77rsv5fzfe++9Wu8nT56c8FfzROWDDz6IxVRZWenPPPNMrK6ysjL2OtrLUlFR4dOnT48dAC9ZsiTWQ3PqqafG1oW7+1tvvRWbPtGvZWeffbbn5eX5smXLag0Px3fBBRck/IL41a9+1aDli592w4YNsfeLFi1yd/fbbrutVuIQHv+TTz5J2NYJJ5xQ6/3ZZ59dZ/miwgnBiy++6O6Jk7zo8FQHQQMHDoyNnygJBfzaa6/1e++9t1ZPyAcffOC33367V1ZWJm07kbKyMr/++utjPUaJROd7/PHH16l7//33a8VWU1OTNCFIttzR+ieeeKLOsHC55JJL3N39X//6V53txd390UcfjQ1PlKBGlZeX+zfffJPyc5HmFV6vN9xwQ9LxevbsmXBdp1OibeWdd95xwEeMGFHrfyr+h4ps89VXX/lHH32U6TBEErrwwgsT/v+cdNJJsWG33HKLH3TQQSnPHtkS9R0/JDmmUkKwNQpBQhAu0VN9GnsgCJFegkTDd9111zrD/ve//3nv3r3917/+dZPbnzZtWsINfN9996017N577004/bJlyxq9rPUlEOEyefJkd3e//PLLvaCgwP/v//4vVvfhhx/WGfeqq65ywC+88EL/6quvYnWzZ8+OvT7ooIPc3b1///61pj/llFP8iiuu8G+++cbvueee2PALL7ww5T/mNttsU+fzy8/Pb/Tn8s477/jGjRtj7x977DG/5ZZbko7vXvu0nvpKIkuWLPE777wzNk70tJlECUFVVZWfccYZ3r9/f1+/fn2tdsrLy/31119v1PL+6U9/cnf3hx9+ODbslltuSRhnMuFpk4nWf+9736tTt3Tp0loxrV27NmlCEH/g98QTT9RKgCCSUMRvl6nKvffe61VVVf7111/71KlTY8M///zzhMtSUVHhu+yyiwN++eWX+5QpUxr1eUl6xK/HZD1wgwcPrnf73BKbNm3yJ554wn/2s5/5tttuG/vRorCw0B944IFasUV7ad3rJgSFhYVJ5/Hpp5/6U089lfQUxuaw4447OtT+IUgkW5x77rkJ96mXXnpp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jx5d56myXbp0ccDz8vISrrhbb7211vsxY8b45MmTfY899nDA99prLz///PN98ODBvn79er/++utj4+68887u7v7ss8/6Rx995CNHjtzig8/Zs2e7+7cb8zHHHBNbhugBe/Sg7csvv/S+ffv6lVdeWWsDdP/2oCxcXnnlFT/ggAMSPj0vqiExRh/AtHLlSn/ppZdqbfThNm699VZ3j9yHe8KECV5cXOzukScRR+8RHh03esvML774wseOHetPP/10nS/z8K/n9913X8Lh8WXMmDGx8eIfWJaoHHXUUbXef/3117VuWxn9tSnRtFFVVVV+6qmn1rkd2plnnunu394HfYcddvBkfv/739dpd/Xq1Qnn+dlnnzXoIWBA0sT17rvv9kceeST2mc+cOTNWtyW37luwYIFv2rSp3piiiWBY+Lal0WVMdFvH8GcTFn7gYPTZAYWFhUmnDz83ASK3v62pqfFNmzb5+eefn3JeUV9++aXPmTOnAZ+MNIfwd8DgwYNjD5CMF/7B4sYbb9zKUUbijO8VvPjii+vdpjOpsLDQ//e//2U6DJGEfvSjH8X+d371q1/Fhvfq1Ss2fPz48X7YYYel3Cc1VrLeP8D79evns2fPTnbWgxKCRi1M5DkELwOlwGJgZAOn6wokfBpdUVGRf/7557UeYvH888/7pEmT/He/+12dg8qjjz7a3SMPjbnvvvti97IPi54accUVV9Qafvvtt6c86Pz+97/vq1atqnWf3Ntuu61W9hodvvvuu8eGRe8BHRY9gLvjjjt8u+2284ULF9ZpI1rCT5uMf1BT1J133ulHHHGEn3jiiQljP/nkk+scqIeTI3f34447znNycuo8TTiRCRMm+IgRI2JPLq5P9Nf6Tz75pNbwc845JxbDX//619jrQw45JDZOeXm5v/zyy0nXy/Dhw93dY7/k7b333u7uPmPGjDoJQXQe4dPREgm3P27cOHd3X7ZsmY8dOzb2xOlEwk/IjYrfRnfccccGfWbhadasWdPgA+uqqqoGr5fGis734YcfrlP3/PPP14mtpqbGL7zwQj/77LPrjXv+/Pl1EoJkSWP8NJ07d67VVvj0Kclut9xyix9wwAG1flGPF94O4h9umCnh78/PPvss0+GItCjffPONjx492m+++eZaPW/R/XhzJf7JzjzZdtttY+MsWLBACUGmSqqEIKqoqMjHjBnjL7zwQp268Eo78MADk7YRVVhY6M8884xv3ry51vD48/3jy6GHHurukZ3TnDlzYl3LYdGHHTXm3Nb4A/X4+cb/0ht+oFe8uXPnOkROnYiOc+WVVyac7+rVqz0vL89PP/30WBzR3oB0Ky4urnNqTFS4Ryga8y677FJnvHfeeSfhelm1alVsnLlz58YOLL744os6CUHYq6++mvQpth9++KEPGjTIzzrrrEady/r2228nXDdHH310bHhDzxEOL2OyU722tlmzZvm4ceMSPk22oqIilmxHT5cKe+mll7x9+/Z+//33J2x77dq1seVatGhRbHh9yz137lxfs2ZNrWHRB63NnDlzSxZTslB03Y8ePTrTobh77VM1m+t7U6QtKioqatbTxhLtUzp16lRrnP33318JQSZKQxKCVMIr7e67796iNtzd77nnnpQJwZ///Od626ioqPAFCxY0aWOOn++7775bZ5xXX3016ekm69evr3Uh20UXXZR0XmVlZVl1vub48eMdal9rEBZ+mvPSpUsTPjE4fvyLL764OUJNqKamxs8991y//vrraw0fPXp0ow/io6fLRae54oor/LTTTstoQtBU5eXlSevCvwKHe8xSnSonbUdjfvTZGsJP7lZCINJyJDvGC1u7dq2PHj3azzvvPCUEW7M0NSE4/vjjneC0gfoOEFOp70LOprTdGG+99Vbsgl5giy92jE4/duzYNEfYvFKdLxg+l74lOeOMMxodd79+/RJO88tf/jJpL0pL9/e//92vueaaOsPDF4i3tHUv6RFd9/vss0+mQ3F393/+859KCERaoIYkBFGh65eaPSFoTc8hyJiJEyfy3HPPMXr0aNq1a7fF7UTvo51I3759m9R2Y4wYMYLp06fHHlue6DHejRF9rHhLkSrezp07b8VI0icvL6/R02y77basWLGizvDbb7+dIUOGcNxxx6UjtKxy/vnnJxye6n9T2oZJkyZx1VVX8fe//z3ToQCwzTbbZDoEEWlFWtOTijOmW7dunHvuuWy77bZNaifVQUdTD8qborKycoume/rppxk5ciQ33XRTmiPKnJaW3ERtSdzR9TZ27Ng6bZ1//vn06dMnLbG1BEoI5IwzzmD58uUMGzYs06EANHl/IyKZcd9992U6hITUQ5BFsi0h+PWvf83MmTO3+JfgMWPGMGbMmDRHlVltqYdg1KhR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\n",
"text/plain": [
"