Tuesday, April 22, 2014

Meteo #8 - Cara Menjalankan Model WRF-EMS (Part 1 - Set Your Timezone)

Pada tulisan sebelumnya, saya telah berbagi cara melakukan instalasi model WRF-EMS di Linux via VMware Player. Kali ini saya akan mencoba memaparkan bagaimana cara menjalankan makhluk yg bernama WRF-EMS ini.

Langkah pertama yang saya lakukan sebelum menjalankan model adalah melakukan konfigurasi zona waktu

Konfigurasi zona waktu ini sebenarnya tidak mutlak harus dilakukan, karena model masih bisa berjalan tanpanya. Namun, pemahaman tentang zona waktu ini akan sangat membantu pada saat kita akan melakukan konfigurasi lanjut ketika menjalankan model, terutama yang berhubungan dengan waktu awal dan berapa lama prediksi yang akan dilakukan.

Secara default, WRF-EMS akan melakukan prediksi dengan waktu awal (initial time) terbaru, dengan lama prediksi (boundary condition) 24 jam, menggunakan time cycle pada 00,06,12 dan 18 UTC (ingat, zona waktunya UTC). WRF-EMS akan mengakses data sesuai dengan waktu pada sistem PC anda, dan di sinilah masalah biasanya muncul. Umumnya pada saat instalasi linux, pengguna lebih banyak memperhatikan jam daripada zona waktu itu sendiri. Akibatnya, tidak jarang, zona waktu tersebut tidak sesuai dengan lokasi si pengguna. Hal ini akan berujung pada 'kebingungan' pada saat menentukan waktu awal dan akhir prediksi.

Misalnya, lokasi anda ada di Papua dan waktu setempat sekarang jam 02:00 pagi, tapi zona waktu anda menggunakan WIB (GMT+7), bukan WIT (GMT+9). Dengan kondisi ini, WRF-EMS akan menganggap sekarang jam 19 UTC, bukan 17 UTC. Karena WRF-EMS akan mengakses data terbaru (pada 00,06,12 atau 18 UTC) dan saat ini (menurut si model) adalah jam 19 UTC, maka model akan mengunduh data terbaru yg telah diproses dari server (GFS misalnya), yaitu data pada jam 18 UTC. Tentunya data 18 UTC tersebut tidak akan pernah bisa diunduh, karena waktu saat ini sebenarnya adalah jam 17 UTC. 

Jadi, konfigurasi zona waktu sebelum melakukan eksekusi model sangatlah penting, terutama apabila anda akan menjalankan model secara real-time.

Untuk melihat zona waktu yang digunakan sistem, disarankan melalui terminal, bukan GUI. Buka terminal, lalu ketikkan perintah date pada shell. Misalnya anda saat ini berada di Jakarta, waktu setempat menunjukkan pukul 18:49, dan perintah tadi menghasilkan : 

Tue Apr 22 18:49:58 WIB 2014
maka, anda tidak perlu melakukan konfigurasi zona waktu lagi, karena model akan menganggap saat ini adalah pukul 11:49 UTC. Pada kasus lain misalnya, hasil yang ditunjukkan adalah :

Tue Apr 22 18:49:58 PDT 2014

Ini menunjukkan bahwa zona waktu anda adalah PDT (Pacific Daylight Time), dan model akan mengganggap saat ini adalah pukul 18:49 UTC. Anda harus melakukan konfigurasi zona waktu ulang, karena waktu yang sebenarnya saat ini adalah 11:49 UTC, bukan 18:49 UTC.

Untuk melakukan konfigurasi ulang zona waktu lakukan hal berikut :
  1. Buka terminal dan ketikkan : ls /usr/share/zoneinfo/Asia
  2. Pastikan lokasi anda terwakili oleh file nama kota yang ada dalam direktori tersebut. Misalnya anda di Bandung (GMT+7), maka pastikan Jakarta atau Bangkok (keduanya mewakili zona waktu GMT+7) ada ada dalam direktori.
    Jakarta ada di sana nggak ?
  3. Hubungkan (link) file informasi zona waktu dari lokasi tadi dengan file localtime di direktori /etc/localtime dengan perintah : ln -sf /usr/share/zoneinfo/Asia/Jakarta /etc/localtime
  4. Jalankan kembali perintah date. Bila tidak ada kesalahan, maka zona waktu anda seharusnya akan berubah menjadi WIB.

Bila zona waktu sudah benar, maka langkah berikutnya adalah mempersiapkan data model untuk eksekusi (initial time, boundary condition, cycles dll) pada tulisan selanjutnya :-)

Tuesday, April 15, 2014

Meteo #7 - Cara Instalasi Model Prediksi Cuaca WRF-EMS di Linux via VMware Player

WRF (the Weather Research and Forecasting) adalah salah satu model numerik yang paling populer digunakan untuk prediksi cuaca (NWP) dalam skala meso (~5km sampai ratusan km), baik untuk kepentingan operasional maupun penelitian. Penggunaan model NWP untuk keperluan operasional maupun riset umumnya menjadi momok, khususnya bagi pengguna/user dengan pengetahuan komputasi pas-pasan. Salah satu permasalahan yang paling sering dialami pengguna adalah kesalahan pada saat instalasi model ybs. Umumnya model NWP dibuat dengan menggunakan bahasa pemrograman seperti Fortran, C atau Perl, dan membutuhkan library khusus pada sistem operasi (OS) agar model tersebut dapat bekerja dengan baik. Tidak jarang, berbagai kesalahan/error terjadi pada saat kompilasi dan instalasi model pada OS. Untuk OS sendiri, yang umumnya digunakan adalah OS berbasis UNIX, seperti Linux atau Sun Solaris. Sehingga, untuk bisa melakukan instalasi NWP, pengguna umumnya harus memiliki pengetahuan tentang Linux dan bahasa pemrograman yang digunakan pada model tersebut.

WRF-Environmental Modeling System (WRF-EMS) adalah model berbasis WRF yang dikembangkan oleh NOAA/NWS Science and Training Resource Center (STRC). WRF-EMS merupakan model NWP yang lengkap, full-physics dan mendukung core WRF yang dikembangkan NCAR (Advance Research WRF a.k.a ARW) maupun NCEP (Non-hydrostatic Mesoscale Model a.k.a NMM).

So ... tulisan tentang instalasi WRF-EMS via VMware Player saya buat karena :
  • Bila dibandingkan dengan WRF biasa, proses instalasi, konfigurasi dan eksekusi pada WRF-EMS sangat sangat sangat disederhanakan untuk mendorong penggunaan NWP untuk kepentingan riset. Begitu sederhananya, sehingga pengguna dengan pengetahuan dasar UNIX pun masih bisa melakukan instalasi/konfigurasi model ini dengan mudah.
  • Dokumentasi penggunaan WRF-EMS sangat komprehensif dan mudah diikuti. Thanks to Dr. Robert Rozumalski ... You're a genius !!!
  • VMware player (atau VirtualBox) merupakan salah satu cara paling mudah untuk melakukan instalasi UNIX/Linux via Windows tanpa harus pusing atau khawatir terjadi kesalahan partisi yg umumnya ditakuti oleh pengguna Linux tingkat dasar.
  • VMware player memungkinkan pengguna untuk menjalankan Linux (dan model) secara portable dan mobile. Anda bahkan bisa melakukan eksekusi model di mobil atau di atas tempat tidur anda.
  • Umur saya makin tua, dan saya mulai jadi pelupa. Tulisan ini dibuat sebagai bahan contekan kalo saya sewaktu-waktu lupa. "WRF-EMS will provide more hair on your head and less on your back, and that's a good thing !!"

Tulisan ini juga saya tujukan untuk sharing dengan pembaca/pengguna yang :
  • ... ingin melakukan studi/riset dengan model NWP, tanpa harus berpusing ria dengan proses instalasi /konfigurasi yang rumit.
  • ... memiliki pengetahuan yang cukup tentang ilmu meteorologi.
  • ... memiliki pengetahuan dasar tentang model NWP.
  • ... memiliki pengetahuan dan kemampuan dasar menggunakan UNIX/Linux.
  • ... memiliki pengetahuan dasar pemrograman.

Bila anda membutuhkan referensi tambahan tentang NWP atau yang lainnya, silakan akses :
  • Untuk NWP : http://en.wikipedia.org/wiki/Numerical_weather_prediction
  • Untuk model WRF : http://www.wrf-model.org/index.php
  • Untuk model WRF-EMS : http://strc.comet.ucar.edu/software/newrems/
  • Untuk Linux : http://en.wikipedia.org/wiki/Linux
  • Untuk VMWare Player : http://en.wikipedia.org/wiki/Vmware_player
Sebelum melakukan instalasi model, diharapkan anda mempersiapkan beberapa hal berikut :
  1. IBM PC atau yang kompatibel, baik tipe desktop atau laptop/notebook, dengan spesifikasi minimal : Intel Core2Duo/Dual Core, RAM 2 GB, dan harddisk dengan sisa space minimal 40GB. Anda bisa menggunakan Mac/Apple, tapi saya tidak bisa menjamin karena saya belum pernah melakukan instalasi model/Linux dengan Mac/Apple.
  2. OS minimal Windows Vista/7. Saya belum pernah melakukan instalasi dengan XP atau 8. Tentu saja anda bisa juga mencobanya.
  3. Koneksi internet yang cukup cepat. Tidak disarankan menggunakan modem.
  4. Salah satu distribusi Linux. Saya menggunakan CentOS yang bisa diunduh di www.centos.org. Anda juga bisa menggunakan distro lain seperti Mint, Ubuntu atau Fedora. Unduhlah file ISO image dari Linux yang anda inginkan, dan simpan di harddisk. Umumnya file ISO berukuran 700mb (CD) atau 4.7 GB (DVD) .. and that's why I told you not using modem for internet connection ...
  5. VMware Player yang bisa di unduh secara gratis di https://my.vmware.com/web/vmware/downloads. Saya menggunakan VMware Player versi 4.0.
  6. Melakukan registrasi untuk memperoleh script instalasi WRF-EMS di http://strc.comet.ucar.edu/software/newrems/
Sebagai langkah awal, lakukan instalasi Linux via VMware Player :
  • Lakukan instalasi VMware Player di Windows (bila anda sudah memilikinya, silakan lanjut ke langkah berikutnya).
  • Jalankan VMware Player, dan pilih Create a New Virtual Machine. Pada jendela New Virtual Machine Wizard, pilihlah instalasi dari file image/ISO. Pilihlah (browse) file ISO dari Linux yang sebelumnya sudah anda unduh dan simpan di harddisk, lalu klik Next.
  • Isilah informasi pengguna/root Linux, mulai dari nama lengkap, username dan passwordnya, lalu klik Next.
  • Isilah informasi virtual machine (VM) yang ingin anda buat. Nama VM ini nantinya akan ditampilkan pada daftar VM di VMware player. Pilih juga lokasi tempat VM ini disimpan (VM akan diperlakukan sebagai file di Windows). Lanjutkan dengan Next.
  • Tentukan ukuran file VM yang akan disimpan di harddisk. Sebagai catatan, umumnya instalasi Linux secara default membutuhkan minimal 15-20GB, sementara WRF-EMS membutuhkan minimal 16GB. Jadi untuk amannya, setidaknya siapkan ruang harddisk minimal 40 GB. Untuk meningkatkan performa, simpanlah VM sebagai file tunggal dengan memilih Store virtual disk as a single file. Lanjutkan dengan Next.
Perhatikan ukuran harddisk anda. 
  • VM siap dibuat. Perhatikan setting VM yang akan dibuat, terutama ukuran harddisk dan RAM. Bila anda ingin melakukan pengaturan tambahan untuk RAM atau lainnya, pilih Customize Hardware. Disarankan anda menggunakan RAM minimal 1 GB (1024 MB) untuk VM. Anda bisa mengabaikan setting lain (misal floppy dll). Bila sudah selesai, klik Finish.
Dua pilihan : Setting tambahan atau ... Selesai 
Perhatikan ukuran RAM PC anda sebelum menentukan RAM untuk Linux di VM. 
  • Pilih dan jalankan VM pada daftar VMware Player, klik Play virtual machine atau klik dua kali nama VM pada daftar. Tunggulah sampai Linux selesai terinstall. Bila ada beberapa opsi/pertanyaan pada saat instalasi, pilihlah jawaban berdasarkan sistem atau common sense anda. Misal : bila diminta memasukkan jenis keyboard, pilihlah US-English atau yg sesuai dengan jenis keyboard yg anda miliki.

Tunggu sampai proses instalasi selesai ...
  • Bila proses instalasi Linux selesai, dan login screen tampak, SELAMAT !! Anda berhasil melakukan instalasi Linux via VMware Player. Silakan login sesuai dengan username dan password yang sudah anda tentukan sebelumnya.
Selamat ! Linux is installed !!
  • Anda bisa memperlakukan Linux pada VM seperti halnya Linux normal. Misalnya anda telah selesai, anda bisa melakukan shutdown pada Linux dan otomatis VM akan dimatikan. Bila anda ingin menggunakan Linux kembali, jalankan kembali VMware Player dan pilihlah VM Linux yang telah anda install sebelumnya.

OK, setelah instalasi Linux rampung, kita masuk ke hidangan utama, yaitu instalasi model WRF-EMS. Seperti yang telah disebutkan sebelumnya, anda perlu melakukan registrasi untuk memperoleh script instalasi WRF-EMS, kecuali anda melakukan instalasi WRF-EMS via DVD atau lokal (dan dua cara terakhir tersebut tidak akan saya jelaskan pada tulisan ini). 


Setelah melakukan registrasi, tunggulah sampai ada email balasan yang menyertakan script instalasi WRF-EMS. Bila belum ada email balasan (terutama bila anda registrasi pada saat weekend), BERSABARLAH. Tidak perlu menulis email tambahan untuk meminta/mengingatkan script instalasi WRF-EMS. Perlu diingat, si pembuat model juga harus melakukan aktivitas sehari-hari (baca : bekerja) sambil terus mengembangkan model ini. Thus, please be kind and patient.

Setelah anda menerima email balasan lakukan langkah-langkah berikut untuk melakukan instalasi WRF-EMS pada Linux via VMware Player :
  • Buka email dan unduh script ems_install.pl, lalu simpanlah pada USB-flash atau media lainnya.
Buka email dan unduh script ems_install.pl
  • Jalankan VMware Player dan Linux yang telah anda install sebelumnya. Lalu login seperti biasa.
  • Pastikan anda bisa mengakses internet via Linux di VMware. Bila anda telah terkoneksi dengan internet di Windows sebelum menjalankan VMware, maka seharusnya Linux di VMware juga akan terhubung dengan internet secara otomatis. Bila belum bisa terhubung ke internet, periksa koneksi pada PC dan LAN/wireless anda. 
  • Salin/Simpan script ems_install.pl dari flashdisk ke salah satu direktori Linux, misal : /home/ardhi/Download. Anda juga bisa langsung membuka email dan mengunduh script tersebut via browser yang ada di Linux.
  • Buka Terminal dan pastikan anda menggunakan shell bash, csh atau tcsh, dengan mengetikkan perintah berikut : echo $SHELL. Perlu diingat, hingga tulisan ini dibuat, WRF-EMS hanya bisa diinstall dengan ketiga shell di atas.
Bila anda menggunakan shell bash ...
  • Masuk ke direktori tempat anda menyimpan script ems_install.pl, dan jalankan script tersebut pada Terminal dengan mengetikkan perintah berikut : ems_install.pl --install atau perl ems_install.pl --install. Perintah ini akan menginstall WRF-EMS versi terbaru ke Linux. Anda juga bisa menentukan versi yang diinstall, misalnya : ems_install.pl --install 3.4.1.14.15
  • Anda akan diminta memberikan informasi tentang lokasi tempat WRF-EMS akan diinstall. Saya misalnya, menginstall WRF-EMS pada direktori /usr. Anda bebas menggunakan direktori lain, misalnya : /home/badu/wrf. Bila direktori ini belum ada, buatlah dengan perintah mkdir di Linux.
  • Anda akan diminta menjawab beberapa pertanyaan mengenai sistem PC anda. Pertanyaan-pertanyaan ini mudah, dan saya yakin anda bisa menjawabnya. Setelah itu, script akan mengunduh file-file yang dibutuhkan untuk instalasi. Silakan duduk santai dan tunggu sampai proses instalasi selesai. Seberapa cepat proses ini selesai, sepenuhnya bergantung pada koneksi internet yang anda gunakan. Untuk mengisi waktu, anda bisa membaca dokumentasi WRF-EMS di http://strc.comet.ucar.edu/software/newrems/.
  • Setelah proses instalasi selesai, perhatikan pesan yang ditampilkan di terminal. Bila ada library yang tidak ditemukan pada Linux, installer akan menginformasikannya.
Selama library yang hilang tidak kritikal ... anda masih bisa menjalankan WRF-EMS
  • Periksa environment variable WRF-EMS sesuai shell yang anda gunakan. Untuk shell bash misalnya, bukalah file : /home/<nama user anda>/.bashrc dengan gedit atau vi, lalu pastikan baris berikut terdapat dalam file tersebut : if [ -f /<direktori instalasi WRF-EMS>/etc/EMS.profile ] ; then. /<direktori instalasi WRF-EMS>/etc/EMS.profile fi. Bila tidak ada, edit file tersebut seperti gambar di bawah, dan simpan. Hal ini penting, agar sistem bisa mengakses WRF-EMS dari direktori mana pun.
Penting !! Pastikan WRF-EMS terdapat pada path environment variable.
  • Logout dari Linux, lalu login kembali dengan username dan password anda.
  • Buka kembali Terminal. Lalu jalankan perintah berikut pada shell : cd $EMS. Bila WRF-EMS telah terinstall dengan benar, anda akan diarahkan ke direktori tempat model terinstall. Lalu jalankan perintah berikut : ls $EMS_STRC, dan anda akan melihat isi direktori strc dari WRF_EMS. Terakhir, jalankan tool sysinfo untuk melihat informasi sistem anda. Bingung ? Perhatikan gambar di bawah :
Banzai !!!
  • Bila tampilan terminal anda seperti gambar di atas, SELAMAT !! Anda telah berhasil menginstall WRF-EMS pada Linux. Bila ketiga perintah pada langkah sebelumnya gagal (tidak menghasilkan gambar di atas), coba anda restart Linux, dan ulangi langkah sebelumnya.
Seperti yang anda lihat, instalasi WRF-EMS di Linux via VMware Player, sangat mudah. Tidak perlu konfigurasi atau kompilasi program yang rumit. Yang dibutuhkan hanya kesabaran dan ketelitian anda (serta koneksi internet yg kencang :-P) dalam proses instalasinya. Pada tulisan berikutnya, saya akan berbagi cara konfigurasi WRF-EMS untuk melakukan prediksi cuaca, dengan perintah-perintah 'sakti' seperti ems_prep, ems_run dan ems_post.

Untuk petunjuk menjalankan model WRF-EMS via VMware player, silakan baca posting selanjutnya : Cara Menjalankan WRF-EMS (Part 1)

Update (14 Dec 2014) :

Beberapa pengguna sempat mengalami masalah ketika pertama kali menjalankan WRF-EMS di Linux dengan pesan kesalahan berikut :

gempak@CentOS-60-64-minimal-> ems_domain.pl --locdom domain Can't locate Time/HiRes.pm in @INC (@INC contains: /home/gempak/wrfems/strc/ems_util /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /home/gempak/wrfems/strc/ems_util/ems_utils.pm line 1401.
BEGIN failed--compilation aborted at /home/gempak/wrfems/strc/ems_util/ems_utils.pm line 1401.
Compilation failed in require at ems_domain.pl line 169.
BEGIN failed--compilation aborted at ems_domain.pl line 169.


Masalah ini terjadi karena modul Time::HiRes dari Perl belum terinstall di sistem Linux. Modul ini dibutuhkan oleh WRF-EMS untuk menjalankan beberapa fungsi waktu resolusi tinggi pada saat simulasi. Untuk mengatasi masalah ini, anda bisa melakukan instalasi modul Time::Hires tersebut, baik secara online maupun offline, dengan perintah :

yum install perl-Time-HiRes

Good luck and welcome to modeling nirvana !

Wednesday, February 26, 2014

Meteo #6 - Menghitung Statistik pada Excel berdasarkan Warna Cell

Salah satu bagian yang paling merepotkan ketika mengolah data dengan Excel adalah melakukan perhitungan statistik. Perhitungan statistik yang dimaksud di sini tentu saja bukan statistik dasar (karena Excel pada dasarnya dirancang untuk melakukan perhitungan statistik). Yang saya maksud adalah statistik lanjut, misalnya anda ingin menghitung rata-rata berdasarkan kondisi yang acak dan tidak tetap.

Contoh kasus :

Anda mempunyai data hujan bulanan (Januari-Desember) selama 13 tahun (2000-2012). Misalnya anda ingin mengetahui rata-rata seluruh bulan, anda tinggal menggunakan fungsi AVERAGE dan memilih seluruh sel data, dan ... hola, muncullah nilai rata-rata yang anda cari.


Pada contoh di atas, saya menghitung rata-rata pada sel B155 sampai M167, dikali 100, hasilnya berada pada sel A168. Piece of cake.

Sekarang, bagaimana misalnya anda ingin menghitung rata-rata hujan pada saat MJO fase 1 ? Artinya tidak semua nilai ikut dimasukkan dalam rata-rata, karena MJO fase 1 terjadi hanya pada bulan-bulan tertentu saja. Untuk lebih jelasnya perhatikan gambar berikut.


Nilai pada cell dengan background kuning pada gambar di atas tidak ikut dirata-ratakan. 

Salah satu cara yg paling mudah adalah dengan menghapus nilai pada cell dengan background kuning, karena Excel tidak akan meratakan-ratakan data pada cell kosong. Masalahnya, bagaimana bila jumlah data yg ingin dirata-ratakan banyak ? Misal 100 tahun atau 100 stasiun ? Tentu tidak akan efisien bila kita menghapus nilai pada cell dengan background kuning secara manual.

Sayangnya, Excel tidak memiliki fungsi statistik untuk melakukan perhitungan berdasarkan properti cell, seperti warna background, warna teks dll. Saya kurang tahu kalau Excel 2010 dan setelahnya bisa melakukannya. karena selama ini saya menggunakan Excel 2007 dan sebelumnya.

Salah satu trik yang bisa kita lakukan adalah dengan menggunakan Macro. Macro pada dasarnya merupakan kode program yang bisa disisipkan dalam spreadsheet untuk melakukan suatu fungsi tertentu. 

Untuk melakukan perhitungan statistik berdasarkan warna background cell, lakukan langkah berikut :

  • Tekan Alt-F11 untuk membuka jendela Microsoft Visual Basic. Di sinilah anda akan memasukan kode macro ke spreadsheet.
  • Pada menu 'Insert' pilih 'Module'. Kode yang dimasukkan ke Module akan bisa diakses oleh setiap Sheet pada Spreadsheet Excel.
  • Copy dan paste kode berikut pada jendela Module :

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult

lCol = rColor.Interior.ColorIndex
If SUM = True Then
  For Each rCell In rRange
    If rCell.Interior.ColorIndex = lCol Then
      vResult = WorksheetFunction.SUM(rCell, vResult)
    End If
  Next rCell
Else
  For Each rCell In rRange
    If rCell.Interior.ColorIndex = lCol Then
      vResult = 1 + vResult
    End If
  Next rCell
End If
ColorFunction = vResult
End Function

  • Simpan kode di atas. Agar spreadsheet bisa menggunakan Macro, anda harus menyimpan file Excel ke dalam format Macro Spreadsheet (.xlsm). 
  • Pada spreadsheet, buatlah fungsi berikut untuk melakukan perhitungan pada cell. 
=COLORFUNCTION(CELLWARNA,RANGEDATA,OPSI)

COLORFUNCTION adalah nama fungsi yang kita buat dari modul Macro.
CELLWARNA adalah cell dari warna background yang ingin kita proses.
RANGEDATA adalah rentang cell dari data yang ingin kita proses.
OPSI adalah proses yang ingin kita lakukan. Pada kode di atas, bila kita ingin melakukan penjumlahan (SUM), gunakan TRUE. Sedangkan bila ingin menghitung jumlah cell (COUNT), gunakan FALSE. Anda bisa mengganti SUM atau COUNT tadi ke fungsi lain seperti AVERAGE, STDEV dll tergantung selera dan kebutuhan anda.  

Ini contohnya :


Pada gambar di atas, saya meletakkan fungsi COLORFUNCTION(FW2,FI2:FT2,TRUE) pada cell FU2. Artinya, saya akan menghitung akumulasi data (TRUE) pada cell dengan warna background yg sama dengan cell FW12 (putih), dengan rentang data dari cell FI2 sampai FT2.

Untuk cell FV2, saya meletakkan fungsi COLORFUNCTION(FW2,FI2:FT2,FALSE). Proses kerjanya sama dengan sebelumnya, hanya fungsinya adalah menghitung jumlah cell dengan background putih. Hasilnya, FV2 bernilai 7, karena jumlah cell dengan background putih dari FI2 sampai FT2 ada 7.

Tentu saja, fungsi Macro ini bisa disalin seperti fungsi Excel lainnya, sehingga dapat membantu pengolahan data secara lebih efektif dan efisien.

Thursday, July 18, 2013

Meteo #5 - Membuka dan Menganalisis Banyak Data SDF/NetCDF di GrADS (Bagian 1)

NetCDF (Network Common Data Form) atau yang biasa disingkat "nc" adalah salah satu format data yang paling populer di dunia saintifik, terutama untuk ilmu kebumian yang banyak menggunakan array/matriks untuk data spasial yang digunakannya. Oleh sebab itu, tidak aneh kalau  nc menjadi salah satu format data yang paling banyak didukung oleh perangkat lunak saintifik, mulai dari GrADS sampai ArcGIS.

Khusus untuk GrADS, data nc merupakan salah satu format data yang paling sering digunakan, karena kemudahan yang diberikannya. Data binary biasa umumnya membutuhkan control file (file ctl dalam format ASCII) terpisah untuk "memberi tahu" GrADS akan informasi dimensi dan variabel dari data tersebut. Nah, data nc umumnya sudah mengandung informasi dimensi dan variabel tersebut (tersimpan pada header data nc), sehingga pengguna tidak perlu lagi membuat control file untuk membuka data nc. Dengan kata lain, data nc lebih mudah digunakan karena kemampuannya untuk "memberi tahu" GrADS tentang dimensi dan variabel dari data yang dikandungnya tanpa bantuan pengguna. Data-data semacam inilah yang disebut sebagai Self-Describing File atau SDF.

Membuka data SDF di GrADS pada umumnya sangat mudah, karena prosesnya hampir sama dengan membuka file binary biasa. Bila file binary biasa dibuka dengan perintah open, maka SDF dibuka dengan perintah sdfopen.


Gambar di atas adalah salah satu contoh SDF dalam format nc yang dibuka dengan GrADS. Setelah SDF dibuka, proses selanjutnya tidak berbeda dengan data binary biasa. Anda bisa mengatur dimensi yang ditampilkan, menampilkan data, melakukan perhitungan statistik dan lain-lain seperti biasa.

Walaupun kelihatannya mudah, membuka SDF kadang bisa membuat dahi berkerut, terutama bila SDF yang dibuka jumlahnya lebih dari satu atau memiliki perbedaan dimensi waktu antara satu sama lainnya. Pada tulisan kali ini, saya akan berbagi cara untuk membuka dan menganalisis banyak file SDF/NetCDF pada GrADS, berdasarkan pengalaman pribadi saya dalam "berurusan" dengan file-file tersebut :-)

--------------

Kasus #1 :  Dua file data SDF/NetCDF dengan variabel berbeda dan dimensi waktu yang sama

Misalnya anda punya dua file nc yang berisi data kecepatan angin zonal (u-wind) dan meridional (v-wind), maka anda bisa menampilkan keduanya dalam bentuk vektor untuk mengetahui arahnya. Contoh :

ga-> sdfopen uwnd.2012.nc
ga-> sdfopen vwnd.2012.nc
ga-> set lon 90 145
ga-> set lat -11 11
ga-> d uwnd.1;vwnd.2

Akan menghasilkan :



Perhatikan pada jendela command prompt di atas, setelah kita membuka SDF kedua, akan ada pernyataan berikut :

SDF file vwnd.2012.nc is open as file 2

Maksud penyataan ini jelas, vwnd.2012.nc dibuka sebagai file no.2. Informasi nomor file ini perlu dicantumkan ke tiap perintah GrADS selanjutnya. Bila anda tidak mencantumkannya (misalnya menuliskan d uwnd;vwnd saja), maka GrADS akan mencari variabel vwnd di file no.1 (dalam hal ini uwnd.2012.nc), yang hanya berisi variabel uwnd, dan berakibat munculnya pesan kesalahan karena GrADS tidak menemukan variabel vwnd yang dicari di file tersebut. Perintah d uwnd.1;vwnd.2 akan memerintahkan GrADS untuk menampilkan variabel uwnd dari file no.1, dan vwnd dari file no.2.

Kasus ini adalah kasus yang paling mudah dalam menampilkan lebih dari satu data NetCDF. Saya bilang mudah, karena kedua data, walaupun memiliki variabel berbeda, namun keduanya memiliki dimensi ruang dan waktu yang sama.

Pada tulisan berikutnya, saya akan mengulas cara membuka dan menampilkan data SDF/NetCDF yang memiliki dimensi yang berbeda.

Bersambung ... 

Wednesday, July 10, 2013

Meteo #4 - Cara Menyimpan Nilai Variabel GrADS ke File Teks/ASCII

Salah satu masalah yang seringkali dihadapi oleh para pengguna GrADS adalah pengolahan data dalam format teks. Contoh kasus, anda ingin mengolah data curah hujan TRMM atau GSMaP (dalam format binary atau NetCDF) dan menampilkannya ke dalam bentuk time series. Setelah grafik time series muncul di layar, anda mungkin berpikir, bagaimana kalau data hujan tadi dibandingkan dengan data time series yang lain, seperti indeks IOD atau NINO3.4. Masalahnya, format data indeks-indeks tadi adalah ASCII sedangkan data hujannya adalah binary. 

Ada dua cara, pertama, mengubah data time series indeks tadi ke format binary kemudian menampilkannya bersama data hujan di GrADS, atau yang kedua, mengubah data time series hujan tadi ke format ASCII, kemudian menampilkannya bersama data indeks di software lain seperti Excel atau Surfer. Saya lebih suka cara kedua. Alasannya jujur saja, Excel jauh lebih mudah digunakan dibanding GrADS. Opsi grafik di Excel juga lebih banyak. Jadi kita bisa menampilkan data time series dengan lebih mudah dan lebih menarik.

Pada tulisan kali ini, saya akan mengulas cara kedua, yaitu menyimpan data variabel atau hasil pengolahan pada GrADS ke dalam format file ASCII, sehingga bisa ditampilkan ke software statistik lain seperti Excel, Surfer, SPSS, atau sekedar Notepad.

Pertama, siapkan file data yang ingin anda buka atau olah dengan GrADS. Formatnya terserah, bisa plain binary, NetCDF, Grib, HDF atau yang lain. Yang penting masih bisa buka dengan GrADS.

Kedua, anda membutuhkan script fprintf.gs yang berisi fungsi untuk menyimpan argumen/variabel GrADS ke dalam file teks. Bila anda menggunakan OpenGrads di Windows, script ini berada dalam direktori C:\OpenGrADS\Contents\Resources\Scripts. Bila anda menggunakan GrADS di Linux (instalasi via Synaptic Package Manager), kemungkinan script ini belum tersedia. Bila memang belum ada, anda bisa menyalin script tersebut pada akhir tulisan ini.

Ketiga, tampilkan variabel atau hasil pengolahan data yang ingin anda simpan ke file ASCII. Misalnya, saya ingin menampilkan data time series dari data curah hujan harian GSMaP NRT di daerah 90E-110E, 10S-0S pada bulan Juni 2013.

ga-> open GSMaP_NRT.daily.00Z-23Z.ctl
ga-> set x 1
ga-> set y 1
ga-> set time 1jun2013 30jun2013
ga-> define chaave=tloop(aave(precip,lon=90,lon=110,lat=-10,lat=0))
ga-> d chaave

Normalnya, hasil yang akan muncul pada GrADS adalah seperti ini :


Langkah berikutnya, menyimpan data time series yang sudah ditampilkan GrADS ini ke file ASCII. Untuk melakukan hal tersebut, yang paling dibutuhkan adalah variabel atau argumen dari data yang ditampilkan sebelumnya, dalam hal ini adalah : chaave

Yang perlu diperhatikan, script fprintf.gs akan menyimpan isi dari variabel chaave tadi ke file teks dengan memanfaatkan perintah set gxout print dan set prnopts pada GrADS. Hal ini akan membuat GrADS mengubah mode grafik ke dalam mode teks, lalu menyimpan variabel/argumen GrADS ke file teks. Sebelum menggunakan script, tentukan format file teks yang anda inginkan dengan perintah set prnopts. Misalnya, saya ingin menyimpan isi variabel chaave ke data teks dengan 1 data per record (1 kolom per baris). Ketikkan :

ga-> set prnopts %g 1 1

Untuk info lebih lanjut tentang perintah set prnopts, silakan baca GrADS manual aja ya :-)

Langkah terakhir, tinggal jalankan script fprintf.gs dengan syntax :

fprintf <variabel/argumen> <nama file teks atau ASCII>

Untuk kasus kita, misal file ASCII-nya adalah testlagi.txt contohnya penulisannya adalah :

ga-> fprintf chaave testlagi.txt

Bila prosesnya lancar, GrADS akan menginfokan bahwa file teks tersebut berhasil dibuat. File tersebut sudah bisa dibuka dengan menggunakan software lain seperti Excel atau pengolah kata sederhana seperti Notepad.


Bila dibuka dengan Excel, lalu dibuat grafik hasilnya seperti ini : 


Selanjutnya anda bisa menambahkan data lain (misal indeks IOD dll) ke dalam grafik tersebut untuk analisis lebih lanjut. 

Mudah kan ? Semoga bermanfaat :-)

-------------------------------------------

Script fprintf.gs (copy setelah baris ini).

function fprintf(args)
* Command line argumets
* ---------------------
  expr = subwrd(args,1)
  file = subwrd(args,2)
  format = subwrd(args,3)
  numl = subwrd(args,4)
  numb = subwrd(args,5)
  u = subwrd(args,6)
  if ( file='' )
    say ''
    say 'NAME'
    say '     fprintf - print GrADS variables to a text file'
    say ''
    say 'SYNOPSIS'
    say '     fprintf  expr  txtFile  [format numl numb [u]]'
    say ''
    say 'DESCRIPTION'
    say '     Evaluates the contents of the GrADS expression *expr* writing'
    say '     its values to a formatted text file *txtFile*. On output, the'
    say '     number of values and the undef values are returned; a negative'
    say '     number of values signals an error condition.'
    say ''
    say '     Unlike the output of *set gxout print*, the resulting ASCII'
    say '     file has only the data values and *no header*.'
    say ''
    say 'OPTIONS'
    say '     The optional parameters are the same as the ones required by'
    say '     the GrADS command *set prnopts*, namely'
    say '     format   a C language template for formatting ASCII output.'
    say '              Default is %g.'
    say '     numl     number of values to print per record. Default is 8.'
    say '     numb     number of blanks to insert between values. Default is 1.'
    say '     u        print "Undef" instead of the numerical value for'
    say '              missing data.'
    say 'BUGS'
    say '     The GrADS expression cannot have spaces in it.'
    say ''    
    say 'COPYRIGHT'
    say '     This script has been placed in the public domain'
    say ''
    return
  endif
* Set the display environment and produce buffered ASCII output
* -------------------------------------------------------------
  'set gxout print'
  if ( format != '' )
    'set prnopts ' format ' ' numl ' ' numb ' ' u ' '
  endif
  'display ' expr
   if ( rc!=0 ); return -1; endif
*  Get rid of header line: Printing Grid -- 3358 Values -- Undef = 1e+20
*  but record number of values and undef values for later reference
*  ---------------------------------------------------------------------
   buffer = result
   i = 1; line = sublin(buffer,i)
   n = subwrd(line,4)
   undef = subwrd(line,9)
* Now write the data values to text file: first line...
* -----------------------------------------------------
  i = 2; line = sublin(buffer,i)
  if ( write_(file,line) > 0 ); return -2; endif
* Append subsequent lines
* -----------------------
  i = i + 1; line = sublin(buffer,i)
  while ( line != '' )
    if ( write_(file,line,append) != 0 ); return -3; endif 
    i = i + 1; line = sublin(buffer,i)
  endwhile
  if ( close(file) != 0 ); return -4; endif
* All done
* --------
  say 'wrote ' n ' values to file "' file '"'
  return n ' ' undef ' ' 
function write_(file,line)
   rc = write(file,line)
   return subwrd(rc,1)
   


Tuesday, July 9, 2013

Gunpla #21 - MG Buster Gundam Review


Buster. My second MG kit. I've loved the design since the first time I watched SEED series. Two big guns, dual misile pods and cool military scheme, this is truly one of the best artillery-type Gundams other than Heavyarms from Wing series. I bought this kit together with Blitz at Yodobashi-camera Yokohama during my stay in Japan last month. As the other remastered MG from SEED, the boxart of Buster is just awesome !

The boxart is just awesome !
I could only build Buster at night after works, hence it took one week for me to finish the kit. There are 13 runners, less than Duel, but there are more details on Buster armors. The inner frame looks similar, but Buster's armors have greater amounts of panel line and segments. One of the most detailed parts is the leg. It took several hours for me, just for building a pair of Buster's legs. Such a pain in the ass if I recalled the time I spent for its HG version. But in my opinion, the sexiest part of Buster is its shoulder. There are two huge missile pods, with 6 missiles for each pods. Yeah, they are less than Heavyarms has, but aesthetically, Buster looks better in term of militaristic theme than the former.  

Big shoulders with even bigger missile pods.
Even though Buster's not equipped with short range weapons such as beam sabers,  you'll get two big guns as the main accessories, and I meant it .. they're truly BIG !  The 350mm gun launcher and 94mm high energy rifle are equipped on the right and the left side of Buster body respectively. You could choose to use one of them or wield them both. And of course, you could also combine the guns to form an Anti-armor shotgun or Hyper-impulse long range energy rifle. Personally, I prefer Buster wields the anti-armor shotgun, as shown on the MG box art. 


Speaking about the decals, you'll get one clear sticker and one dry transfer. Different with its brother unit, Duel, I found no trouble for decaling Buster. The decals simply make Buster looks even much cooler than before ! I really like the decals on one of Buster's arms which shows its OS : "GUNDAM" (as for SEED series, it stands for General Unilateral Neuro - Link Dispersive Automatic Maneuver). 


OK. Now, about the complaints. Well ... there are some parts which easily falling off whenever I posed the Buster. The first and the most irritating ones were side skirts. Buster is usually posed with its huge guns, hence, the legs are usually posed with an "open-wide" stance to balance the weight from the guns. On the other hand, the side skirts tend to slide out from their frames whenever I posed the legs. One of the solutions is to use lower crotch connection for more maneuverable stances. I also plan to use power glue for the side skirts. I will do the same for any other parts which keep fall off, such as the head crest and U-shape parts of Buster guns.

Articulation. It's really AMAZING !! Just look at the pictures below and you'll now why Buster has become one of the best kit of 2012. No complaints here.   












   
Closing remarks. Buster is one of my favorite mobile suits of all time (i have both HG and MG). There are many good things and few bad things about this kit. If you're a fan of SEED series, I could assure you that this guy is a MUST BUY kit for your collection.

-------------------------------------

GAT-X103 Buster Gundam (Master Grade)

Pros :
  • Cool military design
  • Two big guns and Two big missile pods with so many play options
  • Tons of details (especially for panel lines and decals)
  • One of the best articulated kit Bandai ever released
Cons :
  • Side skirts, head crest and some of the guns parts keep falling off easily.
  • No short range weapons and shield.