Seismic Processing,

Interactive Muting pada Seismic Un*x

12:39:00 AM Leo Cahya D 0 Comments


Disclaimer: banyak istilah, arti, dan hal-hal lain yang saya rubah arti atau pengertiannya sehingga kadang tidak seperti arti sebenarnya. Tujuan saya melakukan itu untuk memudahkan pembaca dalam memahami isi dari post-post seperti ini. ”

Setahun terakhir saya sedang tertarik dengan yang namanya prosessing seismik karena ingin melihat kecocokan model yang dibuat pada SPECFEM-nya Komatitsch and Martin dengan hasil forward modellingnya. Well, minimnya pelatih di Laboraturium Paradigm dan kadang error juga software Echos-nya  memaksa saya beralih menggunakan seismic un*x dalam hal pengolahan. Selain open source, tutorialnya pun banyak di internet, untuk yang bahasa Indonesia dapat dilihat di ensiklopedi seismik milik Agus Abdullah, P.hd. (terima kasih untuk ilmu dan inspirasi dari blog beliau)

Muting merupakan salah satu tahap dalam pengolahan data seismik untuk menghilangkan noise gelombang langsung dengan cara merendahkan bahkan bisa dengan membuat nilainya menjadi nol pada matriks yang kita tunjuk sebagai gelombang langsung.  Pada seismic un*x perintahnya adalah sumute. Kekurangannya disini kita harus memasukkan satu persatu matriks yang akan kita mute. Tentu akan lebih mudah lagi jika kita melakukan muting dengan cara interaktif seperti pada software-software terkenal (contoh: Echos Paradigm, dll) bukan?

Pada seismic un*x sebenarnya sudah ada contoh pada demo untuk muting tapi hanya sekedar untuk contoh data suplane. Oleh karena itu saya buat bashscript interactive muting untuk data dengan shot banyak (baik untuk yang tipe split spread shot juga).

Langkah-langkahnya :
1. Taruh program ini pada file data berada. Edit parameter di dalam file mutepick sesuai dengan parameter data anda. Jalankan sh mutepick pada terminal. Lalu pick titik-titik garis mute-nya.
#! /bin/sh
# Muting data:
# leocd91@gmail.com
#set -x
mutepick backup## PARAMETER YANG PERLU DIINPUT
datainput=testmodel.su #input data yang akan dimute
shotmin=1 #indeks nomor shot min
shotmax=101 #indeks nomor shot maks
## ----------------------------------
#PROGRAM INTI
#----memotong data per shot----------------------------------
parfile=par$data #data hasil picking untuk muting, jgn diubah
#potong shot
echo pemotongan tiap shot dimulai
let COUNTER=$shotmin-1
echo $COUNTER
counter2=$shotmin
echo $shotmax
while [ $COUNTER -lt $shotmax ]; do
echo potong shot gather ke-$counter2 ..
suwind< $datainput key=ep min=$counter2 max=$counter2 > data$counter2.su
let COUNTER=COUNTER+1
let counter2=counter2+1
done
echo pemotongan selesai
#-------------------------------------------------------------
key=tracl
mutepicks=mutepicks$data
echo
echo "Interactive Mute Picking"
echo "March, 14th 2013 : Leo edited for muting"
echo
echo "Pick dua titik yang mana akan dijadikan ujung garis muting."
echo "Untuk picking arahkan pointer ke titik lalu tekan "
echo " \"s\" . Jika dua titik sudah dipilih akhiri dengan tekan \"q\"."
echo
echo
suximage < data1.su mpicks=$mutepicks.1.1 perc=90
echo
echo
echo "Garis mute sudah di-pick"
echo
echo
sort < $mutepicks.1.1 -n | mkparfile string1=tmute string2=xmute > $parfile.1.1
sumute < data1.su par=$parfile.1.1 key=$key > mute.su
echo
echo "Pick mute bagian sebelahnya? (y = ya, jika split spread shot, n = tidak) (y/n) " | tr -d "\012" >/dev/tty
read response
case $response in
n*) # continue
;;
y*) # pick lagi mutenya
echo
echo
echo "Pick lagi dua titik yang mana akan dijadikan ujung garis muting."
echo "Untuk picking arahkan pointer ke titik lalu tekan "
echo " \"s\" . Jika dua titik sudah dipilih akhiri dengan tekan \"q\"."
echo
echo
suximage < mute.su mpicks=$mutepicks.2.1 perc=90
echo
echo
echo "Garis mute sudah di-pick"
echo
echo
sort < $mutepicks.2.1 -n | mkparfile string1=tmute string2=xmute > $parfile.2.1
sumute < mute.su par=$parfile.2.1 key=$key > mute2.su
;;
esac
suximage < mute2.su key=$key perc=90
#------
echo "$shotmin" >> dataoc
echo "$shotmaxs" >> dataoc
#------
echo
echo
echo Silahkan RUN dulu program octave/matlab mute_parring.m!
echo
exit 0
view raw mutepick hosted with ❤ by GitHub




Sebelum muting

Setelah muting


























2. Setelah preview hasil pick mute anda untuk 1 shot ditampilkan dan hasilnya OK, sekarang run program octave/matlab mute_parring.m
%membuat mute par by leocd91@gmail.com
a=dlmread('dataoc');
b=dlmread('mutepicks.1.1');
c=dlmread('mutepicks.2.1');
x=0;
namafile={'mute.1.1' 'mute.2.1'};
for j=1:101
namafile{j,1}=namafile{1,1};
namafile{j,2}=namafile{1,2};
xx=j/10;
if xx < 1
namafile{j,1}(8:8)=num2str(j);
namafile{j,2}(8:8)=num2str(j);
else if xx < 10
namafile{j,1}(8:9)=num2str(j);
namafile{j,2}(8:9)=num2str(j);
else
namafile{j,1}(8:10)=num2str(j);
namafile{j,2}(8:10)=num2str(j);
end
end
d(1,1)=b(1,1);
d(1,2)=b(1,2)+x;
d(2,1)=b(2,1);
d(2,2)=b(2,2)+x;
dlmwrite(namafile{j,1},d,'delimiter','\t')
e(1,1)=c(1,1);
e(1,2)=c(1,2)+x;
e(2,1)=c(2,1);
e(2,2)=c(2,2)+x;
dlmwrite(namafile{j,2},e,'delimiter','\t')
x=x+101;
end
view raw mute_parring.m hosted with ❤ by GitHub
3. Setelah file par dibuat menggunakan kode octave/matlab di atas, selanjutnya kita aplikasikan dengan bash script muteit berikut:
#! /bin/sh
# Muting data:
# leocd91@gmail.com
#set -x
## PARAMETER YANG PERLU DIINPUT
datainput=testmodel.su #input data yang akan dimute
shotmin=1
shotmax=101
key=tracl
## PROGRAM INTI
#aplikasi mute
let hoho=shotmax-1
echo
echo "Apakah ini split-spread shot? (y = ya, jika split spread shot, n = tidak) (y/n) " | tr -d "\012" >/dev/tty
read response
case $response in
n*) # continue
let COUNTER=$shotmin-1
counter2=$shotmin
while [ $COUNTER -le $hoho ]; do
echo muting shot gather ke-$counter2 ..
sort < mute.1.$counter2 -n | mkparfile string1=tmute string2=xmute > par.1.$counter
sumute < data$counter2.su par=par.1 key=$key > mute$counter2.su
let COUNTER=COUNTER+1
let counter2=counter2+1
done
echo muting selesai..
;;
y*) # mute bagian sebelahnya
let COUNTER=$shotmin-1
counter2=$shotmin
while [ $COUNTER -le $hoho ]; do
echo muting shot gather ke-$counter2 ..
sort < mute.1.$counter2 -n | mkparfile string1=tmute string2=xmute > par.1.$counter
sumute < data$counter2.su par=par.1.$counter key=$key > nyamute$counter2.su
sort < mute.2.$counter2 -n | mkparfile string1=tmute string2=xmute > par.2.$counter
sumute < nyamute$counter2.su par=par.2.$counter key=$key > mute$counter2.su
rm nyamute$counter2.su
let COUNTER=COUNTER+1
let counter2=counter2+1
done
echo muting selesai..
;;
esac
#gabung shot
COUNTER=$shotmin-1
counter2=$shotmin
counter3=$shotmin+1
echo "#!/bin/sh" >> gabungshot
echo "##set -x" >> gabungshot
echo "cat \\" >> gabungshot
i=$shotmin
while [ $i -le $((shotmax)) ]
do
echo "mute$i.su \\" >>gabungshot
i=$(( i+1 ))
done
echo " > $datainput.mute.su" >>gabungshot
i=$shotmin
while [ $i -le $((shotmax)) ]
do
echo "rm mute$i.su" >>gabungshot
echo "rm data$i.su" >>gabungshot
echo "rm mute.1.$i" >>gabungshot
echo "rm mute.2.$i" >>gabungshot
i=$(( i+1 ))
done
echo "exit 0" >>gabungshot
echo
echo Silahkan sekarang run 'sh gabungshot'
exit 0
view raw muteit hosted with ❤ by GitHub
4. Setelah itu lanjutkan saja perintah setelah mute it berjalan

Setelah perintah dari program terakhir dijalankan maka data anda setiap shot sudah diberlakukan muting. Kira-kira begitu saja postingan saya. InsyaAllah untuk berikutnya saya akan menceritakan tentang interactive velocity picking menggunakan bashscript di seismic unix.

see ya,
L

0 comments: