Category Archives: Uncategorized

Daftar Provinsi di Indonesia dan Kordinat GPS Ibukotanya

Pada postingan kali ini, saya ingin berbagi data tentang daftar provinsi di Indonesia beserta kordinat GPS nya. Terdapat 34 propinsi dari Aceh hingga Papua.  Data tersebut dapat di download di sini.

Propinsi Lat Long
ACEH 4.3685491 97.0253024
SUMATERA UTARA 3.58967 98.6738
SUMATERA BARAT -0.924759 100.363
RIAU 0.9400084 101.6556177
JAMBI -1.6395832 102.9436845
SUMATERA SELATAN -2.9888297 104.756857
BENGKULU -3.816013243 102.2833464
LAMPUNG -4.8555039 105.0272986
KEPULAUAN BANGKA BELITUNG -2.12067 106.113
KEPULAUAN RIAU 1.1061 104.038
DKI JAKARTA -6.1753936 106.827186
JAWA BARAT -6.9344694 107.6049539
JAWA TENGAH -6.9904038 110.4229455
DI YOGYAKARTA -7.9778384 110.3672257
JAWA TIMUR -7.2459717 112.7378266
BANTEN -6.4453801 106.1375586
BALI -8.6524973 115.2191175
NUSA TENGGARA BARAT -8.58377 116.107
NUSA TENGGARA TIMUR -10.1632 123.602
KALIMANTAN BARAT 0.0226903 109.345
KALIMANTAN TENGAH -2.20741 113.916
KALIMANTAN SELATAN -3.31875 114.593
KALIMANTAN TIMUR -0.50178 117.139
KALIMANTAN UTARA 3.30002 117.633
SULAWESI UTARA 1.49006 124.841
SULAWESI TENGAH -0.895779 119.868
SULAWESI SELATAN -5.1343 119.412
SULAWESI TENGGARA -3.99181 122.518
GORONTALO 0.7186174 122.4555927
SULAWESI BARAT -3.54593 118.961
MALUKU -3.118837 129.4207759
MALUKU UTARA 0.785233 127.383
PAPUA BARAT -0.86341 131.254
PAPUA -2.645407 140.8113427

Apabila diplot akan menjadi seperti gambar di bawah ini.

Figure_1.png

Kordinat dan python code untuk membuat peta di atas, dapat di unduh pada github saya. https://github.com/kucingkuantum/Indonesia-Provinces. Semoga bermanfaat.

Salam,

Syahril Siregar

 

Membuat Software Jadwal Shalat Untuk Raspberry Pi dengan Python.

Alhamdulillah, karena saya sedang bekerja di Swedia, ada banyak sekali hari libur yang terkait dengan kekristenan seperti Natal, Paskah, dan beberapa hari yang berhubungan dengan Santo.  Sebagai contoh, libur hari Paskah di mulai hari Jumat hingga hari Senin. Akibatnya, saya memiliki banyak waktu luang.

Liburan paskah kali ini, saya mencoba membuat perangkat lunak tentang jadwal ramadan untuk raspberry pi. Untuk yang belum tau, raspberry pi adakah “low cost” computer dengan harga kurang dari 100 USD dan dapat dimanfaatkan sebagai mikrokonroller sekaligus komputer. Beberapa bulan yang lalu, saya membeli Raspberry pi 3 B+ lengkap dengan 7 inch monitor. Saya ingin menggunakannya sebagai smart desk clock yang dapat menunjukkan waktu shalat dan juga kondisi cuaca. Waktu shalat dapat dhitung dengan external function sedangkan kondisi cuaca dapat di relay melalui API yahoo weather. Berikut penampilannya.

2019-04-23 (2).png

Software ini juga dapat menunjukkan waktu shalat, kondisi cuaca, serta ayat suci yang harus dibaca agar bisa khatam dalam 1 bulan. Rencananya, saya ingin menambahkan feature alarm dan megirim remainder email harian untuk mengingatkan jadwal-jadwal tersebut. Insyallah, minggu ini akan diselesaikan. Bagi yang tertarik, silahkan buka di github berikut ini  https://github.com/kucingkuantum. Semoga bermanfaat.

Salam,

Syahril

Peta “synchrotron radiation facilities”

Titik-titik merah pada gambar di bawah adalah peta sebaran fasilitas Synchrotron di seluruh dunia. Tersebar di seluruh negeri yang “kuat” akan sains dan teknologi, seperti Amerika, Eropa, Jepang, Cina, Rusia, India dan beberapa negara lain. Di Asia tenggara, fasilitas ini terdapat di Singapura dan di Thailand. Mereka menginvestasikan uang yang sangat besar untuk membangun fasiltas ini. Bisa dilihat di negara kita yang luas, tidak ada fasilitas ini.

Synchrotron_Map

Apa itu Synchrotron ? Sederhanya, anggap saja seperti mikroskop raksasa, karena ukuran mesinnya bisa berdiamter puluhan kilometer. Sebagai perbandingan, dengan menggunakan mikroskop biasa, kita bisa mendeteksi benda yang berukuran mikrometer seperti bakteri sehingga kita bisa mengidentifikasi jenis-jenis bakteri. Dengan mikroskop raksaksa, kita bisa “melihat” atau mendeteksi suatu objek yang berskala nanometer (1/semilyar meter) sehingga kita bisa mempelajari komposisi unik dari suatu material yang berbeda dengan material lainnya.

Bagaimana caranya ? Sederhananya, pertama elektron (partikel bermuatan) dipercepat melalui akselerator, menghasilkan gelombang elektromagnetik dari inframerah sampai ke sinar-x. Lalu gelombang elektromagnetik itu digunakan sebagai sumber “cahaya” mikroskop.

Mengapa kita butuh Synchrotron ? Dengan memiliki synchrotron maka para ilmuan Indonesia bisa meneliti teknologi material secara “lengkap”, sehingga diharapkan industri riset elektronika kita meninggkat. Ilmuan biologi dapat menggukan super mikroskop ini untuk mempelajaari komposisi kimia dari suatu reaksi biologi secara tepat. Selain itu, cahaya yang dihasilkan oleh synchrotron dapat digunakan oleh para dokter untuk terapi kanker dan lain-lain. Polisi juga dapat menggunakannya untuk mengidentifikasi bahan/material pada kasus kriminal. Arkeolog dapat menggunakan Mikroskop raksaksa ini untuk mempelajari kandungan dari suatu fosil dan masih banyak lagi kegunaanya.

Mumpung banyak teman saya yang menjadi pendukung garis keras capres dan partai tertentu yang mungkin akan dapat jabatan kalau “jagoannya” menang. Izinkan saya menyampaikan sedikit gagasan dan mohon sampaikan kepada “jagoannya”. Bangun Synchrotron untuk Indonesia !

Python dan Waktu Shalat di Swedia

Sebagai Seorang muslim Shalat merupakan suatu kewajiban.  Shalat merupakan rukun Islam yang ke-2, seperti tertera dalam riwayat berikut yang saya kopi dari sini.  Dari ‘Abdullah bin ’Umar radhiyallahu ’anhuma, Rasulullah shallallahu ’alaihi wa sallam bersabda,

بُنِىَ الإِسْلاَمُ عَلَى خَمْسٍ شَهَادَةِ أَنْ لاَ إِلَهَ إِلاَّ اللَّهُ وَأَنَّ مُحَمَّدًا عَبْدُهُ وَرَسُولُهُ وَإِقَامِ الصَّلاَةِ وَإِيتَاءِ الزَّكَاةِ وَحَجِّ الْبَيْتِ وَصَوْمِ رَمَضَانَ

Islam dibangun atas lima perkara, yaitu : (1) bersaksi bahwa tidak ada sesembahan yang benar untuk diibadahi kecuali Allah dan bersaksi bahwa Muhammad adalah utusan-Nya, (2) mendirikan shalat, (3) menunaikan zakat, (4) naik haji ke Baitullah -bagi yang mampu-, (5) berpuasa di bulan Ramadhan.” (HR. Bukhari no. 8 dan Muslim no. 16).

Pada kesempatan kali ini. Saya akan mencoba membahas sedikit tentang definisi waktu sholat dan contoh penerapannya untuk daerah Lund Swedia. Saya juga akan menyertakan code python untuk menghitung waktu sholat. Berikut merupakan pedoman waktu sholat yang saya ambil dari praytimes.org.

2018-11-25

Metode perhitungan secara rinci dapat dilihat pada tautan link berikut. Di lain kesempatan akan saya tulis. Tidak seperti Indonesia yang berada di khatulistiwa,  lamanya siang dan malam pada negara-negara 4 musim tidak selalu sama, hal ini disebakan oleh gerak semu matahari tahunan yang merupakan konsekuensi dari revolusi Bumi.  Akibatnya, waktu shalat di negara 4 musim berubah-ubah tergantung kepada gerak semua matahari tersebut. Berikut adalah contoh waktu sholat Maghrib selama 1 tahun di Lund, Swedia.  Kordinat kota Lund adalah sebagai berikut Latitude: 55,7074 Longitude: 13,1971 dan perbedaan waktu dengan GMT bergantung kepada tanggal. Pada

maghrib_lund

Gambar 1. Waktu Sholat Maghrib Selama 1 Tahun di Lund, Swedia.

Waktu Sholat Maghrib tercepat di Lund adalah 15:34 di akhir bulan Desember dan 21:56 di akhir bulan Juni, seperti terlihat pada Gambar 1.  Tidak seperti di Lund yang memilki waktu maghrib berubah secara dramatis sebagai fungsi waktu, Jakarta memiliki waktu sholat maghrib yang relatif idak berubah secara drastis. Berikut adalah waktu sholat maghrib di Jakarta.

maghrib_jakarta.png

Gambar 2. Waktu Sholat Maghrib di Jakarta, Indonesia.

Di Jakarta, waktu sholat maghrib tercepat terjadi pada Bulan November yaitu 17:40 dan terlama pada bulan Juli, yaitu 18:20. Perbedaan waktu sholat maghrib terlama dan tercepat hanya 40 menit, sehingga tidak terlalu besar dibandingkan dengan perbedaan yang sama di Lund.

Code perhitungan waktu sholat, class nya saya peroleh dari sini (http://praytimes.org/code/) lalu saya buatkan looping untuk mendapatkan perhitungan selama 1 tahun.

import math
import re</pre>
'''
--------------------- Copyright Block ----------------------
praytimes.py: Prayer Times Calculator (ver 2.3)
Copyright (C) 2007-2011 PrayTimes.org
Python Code: Saleem Shafi, Hamid Zarrabi-Zadeh
Original js Code: Hamid Zarrabi-Zadeh
License: GNU LGPL v3.0
TERMS OF USE:
Permission is granted to use this code, with or
without modification, in any website or application
provided that credit is given to the original work
with a link back to PrayTimes.org.
This program is distributed in the hope that it will
be useful, but WITHOUT ANY WARRANTY.
PLEASE DO NOT REMOVE THIS COPYRIGHT BLOCK.
--------------------- Help and Manual ----------------------
User's Manual:
http://praytimes.org/manual
Calculation Formulas:
http://praytimes.org/calculation
------------------------ User Interface -------------------------
getTimes (date, coordinates, timeZone [, dst [, timeFormat]])
setMethod (method) // set calculation method
adjust (parameters) // adjust calculation parameters
tune (offsets) // tune times by given offsets
getMethod () // get calculation method
getSetting () // get current calculation parameters
getOffsets () // get current time offsets
------------------------- Sample Usage --------------------------
&gt;&gt;&gt; PT = PrayTimes('ISNA')
&gt;&gt;&gt; times = PT.getTimes((2011, 2, 9), (43, -80), -5)
&gt;&gt;&gt; times['sunrise']
07:26

'''

#----------------------- PrayTimes Class ------------------------

class PrayTimes():
#------------------------ Constants --------------------------

# Time Names
timeNames = {
'imsak' : 'Imsak',
'fajr' : 'Fajr',
'sunrise' : 'Sunrise',
'dhuhr' : 'Dhuhr',
'asr' : 'Asr',
'sunset' : 'Sunset',
'maghrib' : 'Maghrib',
'isha' : 'Isha',
'midnight' : 'Midnight'
}

# Calculation Methods
methods = {
'MWL': {
'name': 'Muslim World League',
'params': { 'fajr': 18, 'isha': 17 } },
'ISNA': {
'name': 'Islamic Society of North America (ISNA)',
'params': { 'fajr': 15, 'isha': 15 } },
'Egypt': {
'name': 'Egyptian General Authority of Survey',
'params': { 'fajr': 19.5, 'isha': 17.5 } },
'Makkah': {
'name': 'Umm Al-Qura University, Makkah',
'params': { 'fajr': 18.5, 'isha': '90 min' } }, # fajr was 19 degrees before 1430 hijri
'Karachi': {
'name': 'University of Islamic Sciences, Karachi',
'params': { 'fajr': 18, 'isha': 18 } },
'Tehran': {
'name': 'Institute of Geophysics, University of Tehran',
'params': { 'fajr': 17.7, 'isha': 14, 'maghrib': 4.5, 'midnight': 'Jafari' } }, # isha is not explicitly specified in this method
'Jafari': {
'name': 'Shia Ithna-Ashari, Leva Institute, Qum',
'params': { 'fajr': 16, 'isha': 14, 'maghrib': 4, 'midnight': 'Jafari' } }
}

# Default Parameters in Calculation Methods
defaultParams = {
'maghrib': '0 min', 'midnight': 'Standard'
}
#---------------------- Default Settings --------------------

calcMethod = 'MWL'

# do not change anything here; use adjust method instead
settings = {
"imsak" : '10 min',
"dhuhr" : '0 min',
"asr" : 'Standard',
"highLats" : 'NightMiddle'
}

timeFormat = '24h'
timeSuffixes = ['am', 'pm']
invalidTime = '-----'

numIterations = 1
offset = {}
#---------------------- Initialization -----------------------

def __init__(self, method = "MWL") :

# set methods defaults
for meth, config in self.methods.items():
for name, value in self.defaultParams.items():
if not name in config['params'] or config['params'][name] is None:
config['params'][name] = value

# initialize settings
self.calcMethod = method if method in self.methods else 'MWL'
params = self.methods[self.calcMethod]['params']
for name, value in params.items():
self.settings[name] = value

# init time offsets
for name in self.timeNames:
self.offset[name] = 0
#-------------------- Interface Functions --------------------

def setMethod(self, method):
if method in self.methods:
self.adjust(self.methods[method].params)
self.calcMethod = method

def adjust(self, params):
self.settings.update(params)

def tune(self, timeOffsets):
self.offsets.update(timeOffsets)

def getMethod(self):
return self.calcMethod

def getSettings(self):
return self.settings

def getOffsets(self):
return self.offset

def getDefaults(self):
return self.methods

# return prayer times for a given date
def getTimes(self, date, coords, timezone, dst = 0, format = None):
self.lat = coords[0]
self.lng = coords[1]
self.elv = coords[2] if len(coords)&gt;2 else 0
if format != None:
self.timeFormat = format
if type(date).__name__ == 'date':
date = (date.year, date.month, date.day)
self.timeZone = timezone + (1 if dst else 0)
self.jDate = self.julian(date[0], date[1], date[2]) - self.lng / (15 * 24.0)
return self.computeTimes()

# convert float time to the given format (see timeFormats)
def getFormattedTime(self, time, format, suffixes = None):
if math.isnan(time):
return self.invalidTime
if format == 'Float':
return time
if suffixes == None:
suffixes = self.timeSuffixes

time = self.fixhour(time+ 0.5/ 60) # add 0.5 minutes to round
hours = math.floor(time)

minutes = math.floor((time- hours)* 60)
suffix = suffixes[ 0 if hours &lt; 12 else 1 ] if format == &#039;12h&#039; else &#039;&#039;
formattedTime = &quot;%02d:%02d&quot; % (hours, minutes) if format == &quot;24h&quot; else &quot;%d:%02d&quot; % ((hours+11)%12+1, minutes)
return formattedTime + suffix
#---------------------- Calculation Functions -----------------------

# compute mid-day time
def midDay(self, time):
eqt = self.sunPosition(self.jDate + time)[1]
return self.fixhour(12 - eqt)

# compute the time at which sun reaches a specific angle below horizon
def sunAngleTime(self, angle, time, direction = None):
try:
decl = self.sunPosition(self.jDate + time)[0]
noon = self.midDay(time)
t = 1/15.0* self.arccos((-self.sin(angle)- self.sin(decl)* self.sin(self.lat))/
(self.cos(decl)* self.cos(self.lat)))
return noon+ (-t if direction == &#039;ccw&#039; else t)
except ValueError:
return float(&#039;nan&#039;)

# compute asr time
def asrTime(self, factor, time):
decl = self.sunPosition(self.jDate + time)[0]
angle = -self.arccot(factor + self.tan(abs(self.lat - decl)))
return self.sunAngleTime(angle, time)

# compute declination angle of sun and equation of time
# Ref: http://aa.usno.navy.mil/faq/docs/SunApprox.php
def sunPosition(self, jd):
D = jd - 2451545.0
g = self.fixangle(357.529 + 0.98560028* D)
q = self.fixangle(280.459 + 0.98564736* D)
L = self.fixangle(q + 1.915* self.sin(g) + 0.020* self.sin(2*g))

R = 1.00014 - 0.01671*self.cos(g) - 0.00014*self.cos(2*g)
e = 23.439 - 0.00000036* D

RA = self.arctan2(self.cos(e)* self.sin(L), self.cos(L))/ 15.0
eqt = q/15.0 - self.fixhour(RA)
decl = self.arcsin(self.sin(e)* self.sin(L))

return (decl, eqt)

# convert Gregorian date to Julian day
# Ref: Astronomical Algorithms by Jean Meeus
def julian(self, year, month, day):
if month  portion:
time = base + (-portion if direction == 'ccw' else portion)
return time

# the night portion used for adjusting times in higher latitudes
def nightPortion(self, angle, night):
method = self.settings['highLats']
portion = 1/2.0 # midnight
if method == 'AngleBased':
portion = 1/60.0 * angle
if method == 'OneSeventh':
portion = 1/7.0
return portion * night

# convert hours to day portions
def dayPortion(self, times):
for i in times:
times[i] /= 24.0
return times
#---------------------- Misc Functions -----------------------

# compute the difference between two times
def timeDiff(self, time1, time2):
return self.fixhour(time2- time1)

# convert given string into a number
def eval(self, st):
val = re.split('[^0-9.+-]', str(st), 1)[0]
return float(val) if val else 0

# detect if input contains 'min'
def isMin(self, arg):
return isinstance(arg, str) and arg.find('min') &gt; -1
#----------------- Degree-Based Math Functions -------------------

def sin(self, d): return math.sin(math.radians(d))
def cos(self, d): return math.cos(math.radians(d))
def tan(self, d): return math.tan(math.radians(d))

def arcsin(self, x): return math.degrees(math.asin(x))
def arccos(self, x): return math.degrees(math.acos(x))
def arctan(self, x): return math.degrees(math.atan(x))

def arccot(self, x): return math.degrees(math.atan(1.0/x))
def arctan2(self, y, x): return math.degrees(math.atan2(y, x))

def fixangle(self, angle): return self.fix(angle, 360.0)
def fixhour(self, hour): return self.fix(hour, 24.0)

def fix(self, a, mode):
if math.isnan(a):
return a
a = a - mode * (math.floor(a / mode))
return a + mode if a  82 and count &lt; 301):
times = prayTimes.getTimes(dates, (6.1805, 106.8283), +7);
else:
times = prayTimes.getTimes(dates, (6.1805, 106.8283), +7);
# print(times[&#039;fajr&#039;])
count += 1
hari[count] = day
shubuh[count] = times[&#039;fajr&#039;]
zhuhur[count] = times[&#039;dhuhr&#039;]
ashar[count] = times[&#039;asr&#039;]
maghrib[count] = times[&#039;maghrib&#039;]
isya[count] = times[&#039;isha&#039;]

# simpan = pd.DataFrame.from_dict(shubuh)
df0 = pd.DataFrame([hari]).astype(&#039;datetime64[ns]&#039;)
# pd.to_datetime(df0)
df1 = pd.DataFrame([shubuh]).astype(&#039;datetime64[ns]&#039;)
df2 = pd.DataFrame([zhuhur]).astype(&#039;datetime64[ns]&#039;)
df3 = pd.DataFrame([ashar]).astype(&#039;datetime64[ns]&#039;)
df4 = pd.DataFrame([maghrib]).astype(&#039;datetime64[ns]&#039;)
df5 = pd.DataFrame([isya]).astype(&#039;datetime64[ns]&#039;)

df = df0.append([df1,df2,df3,df4,df5])
df = df.T
df.columns = [&quot;Tanggal&quot;, &quot;Shubuh&quot;, &quot;Zuhur&quot;, &quot;Ashar&quot;,&quot;Maghrib&quot;,&quot;Isya&quot;]
df[&#039;Tanggal&#039;] = pd.to_datetime(df[&#039;Tanggal&#039;]).dt.date
df[&#039;Shubuh&#039;] = pd.to_datetime(df[&#039;Shubuh&#039;],format= &#039;%H:%M:%S&#039; ).dt.time
df[&#039;Zuhur&#039;] = pd.to_datetime(df[&#039;Zuhur&#039;],format= &#039;%H:%M:%S&#039; ).dt.time
df[&#039;Ashar&#039;] = pd.to_datetime(df[&#039;Ashar&#039;],format= &#039;%H:%M:%S&#039; ).dt.time
df[&#039;Maghrib&#039;] = pd.to_datetime(df[&#039;Maghrib&#039;],format= &#039;%H:%M:%S&#039; ).dt.time
df[&#039;Isya&#039;] = pd.to_datetime(df[&#039;Isya&#039;],format= &#039;%H:%M:%S&#039; ).dt.time

writer = pd.ExcelWriter(&#039;Jakarta_shalat.xlsx&#039;)
df.to_excel(writer,&#039;Sheet1&#039;)
### update.to_excel(writer, &quot;Here&quot;, startrow=1, startcol=2)
writer.save()
### u = dpd.to_datetime(df0)
# print(df1.dtypes)
# plt.plot(df[&#039;Tanggal&#039;],df[&#039;Shubuh&#039;],&#039;x&#039;)
# plt.plot(df[&#039;Tanggal&#039;],df[&#039;Zuhur&#039;])
# plt.plot(df[&#039;Tanggal&#039;],df[&#039;Ashar&#039;])
plt.plot(df[&#039;Tanggal&#039;],df[&#039;Maghrib&#039;])
# plt.plot(df[&#039;Tanggal&#039;],df[&#039;Isya&#039;])
plt.show()

 

Apabila tampilan code tersebut tidak dapat dikopi, sedangkan anda membutuhkannya, silahkan tulis alamat email anda.

Salam,

Syahril

Perjalanan dari Bandara Kastrup, Denmark Menuju Lund, Swedia

Setelah tertahan di bandara Kastrup selama 30 menit. Akhirnya saya diijinkan ke luar bandara untuk melanjutkan perjalanan ke Lund University.  Lund Central dapat diakses dengan menggunakan Kereta dari Kastrup. Kira-kira butuh waktu 45 menit untuk sampai di stasiun Lund C. Harga tiketnya 140 SEK (Swedish Krona), kurang lebih Rp. 250,000. Tiket bisa dibeli dengan menggunakan vending machine dan pembayarannya hanya dapat menggunakan Credit Card atau  kartu debit. Jadi, buat teman-teman yang akan pergi ke Lund, jangan lupa membawa kartu debit atau kartu kreditnya ya !

Denmark dan Swedia sebenarnya merupakan daratan yang berbeda. Namun, keduanya dihubungkan dengan jembatan. Serius jembatannya panjang banget, Maaf norak ! Sayangnya saya tidak bisa mengupload video di wordpress ini karena gratisan. Namun, pesan saya adalah selalu bawa kartu Kredit /debit anda apabila ingin berkunjung ke Swedia melalui Denmark.

Salam, Lund

Syahril

Tertahan di Bandara Kastrup Denmark

Hari ini, tepat dua minggu saya tinggal di belahan bumi Eropa.  Negara Eropa pertama  yang berhasil saya kunjungi adalah Denmark. Saya mendarat di bandara Kastrup Denmark bukan untuk menetap di Denmark, tetapi hanya singgah untuk beberapa Jam saja. Tepatnya, Jumat 28 September 2018. Setelah sempat ditahan selama kurang-lebih 30 menit oleh polisi Imigrasi, Alhamdulillah saya dibebaskan dan diijinkan untuk keluar bandara. Masalah pada saat itu adalah ijin masuk saya ke Swedia tertulis 1 Oktober 2018, sedangkan saya datang ke Denmark 28 September tanpa menggunakan visa lain, hanya residence card yang berlaku mulai 1 Oktober. Akhirnya saya tertahan dan diinterogasi oleh polisi imigrasi. Anehnya, mereka sangat sopan setelah membaca visa saya sebagai Forskare/researcher. Setelah berkordinasi dengan pihak kepolisian Swedia, saya diijinkan untuk keluar bandara, karena pihak Swedia tidak mempermasalahkan kedatangan saya yang lebih cepat 2 hari dari seharusnya.

dav

Demikian postingan saya kali ini. Buat teman-teman yang akan memasuki Eropa, perhtaikan baik-baik kapan residence card anda akan berlaku. Jangan sampai kejadian seperti saya terulang.

Salam, Lund

Syahril

 

Mengenal Savitzky-Golay Filter dan implementasinya pada python

Hallo teman-teman, sebelumnya saya ingin mengucapkan selamat Idul-Fitri 1439 H. Mohon maaf lahir dan bathin.  Beberapa hari yang lalu ketika saya melakukan wawancara kerja, pewawancara menanyakan kepada saya tentang data pre-processing dalam riset menggunakan Raman spectroscopy. Salah satu metode yang mereka gunakan adalah Savitzky-Golay Filter. Untuk itu, saya sengaja menuliskan metode tersebut pada blog ini.

Savitzky-Golay filter adalah suatu metode smoothing kurva (sinyal) dengan tujuan meningkan Signal-to-noise Ratio (SNR) tanpa menghilangkan informasi penting dari sinyal. Metode ini pertama kali dikenalkan oleh Abraham Savitzky dan Marcel J.E. Golay pada tahun 1964.

Data yang digunakan akan dicocokan dengan data sebelum ataupun setelahnya dengan metode pangkat terkecil. Koefisien yang akan digunakan, sudah ditentukan melalui tabel.

Sebagai contoh,  data n {xjyj}  titik (j = 1, …, n), dengan x adalah variable bebas dan yj variable terikat. Data diolah dengan sejumlah m koefisien konvolusion, Ci, dengan persamaan ;

{\displaystyle Y_{j}=\sum _{i=-{\tfrac {m-1}{2}}}^{\tfrac {m-1}{2}}C_{i}\,y_{j+i},\qquad {\frac {m-1}{2}}\leq j\leq n-{\frac {m-1}{2}}}

Koefisien konvolusion dapat dilihat pada tabel di bawah. Sebagai contoh, kita ingin melakukan smoothing dengan 5 titik polinomial kuadratik m = 5, i = -2, -1 , 0 ,1 , dan 2. Formula smoothingnya menjadi

{\displaystyle Y_{j}={\frac {1}{35}}(-3y_{j-2}+12y_{j-1}+17y_{j}+12y_{j+1}-3y_{j+2})},

nilai -3/35 , 12/35 dan seterusnya diperoleh dari tabel.

Screenshot 2018-06-22 16.14.56

Tabel 1. Nilai konstanta untuk koefisien smoothing.

Selanjutnya tentu saja, kita akan mencoba mengaplikasikan filter ini kepada data sesunggunya. Berikut adalah Python code untuk mencoba mengenerate signal, noise dan proses untuk menghilangkan noise.

""" program to execute smoothing spectra
using Savitzky-Golay Filter
written by Syahril Siregar
2018/5/22
"""
import numpy as np
from scipy.signal import savgol_filter
import matplotlib.pyplot as plt
ndata = 400
xx = np.linspace(-15.0,15,ndata)
yy_ori = np.sin(xx)/xx
yy_noisy = yy_ori + 0.5*np.random.random(ndata) - 0.5*np.random.random(ndata)
y_filter = savgol_filter(yy_noisy,55,2)
plt.figure(1)
plt.title('Noisy Signal')
plt.plot(xx,yy_noisy)
plt.figure(2)
plt.title('Data tanpa Noise')
plt.plot(xx,yy_ori)
plt.figure(3)
plt.title('Data Perbandingan')
plt.plot(xx,yy_ori,xx,y_filter)
plt.legend(('tanpa noise', 'smoothing'),
loc='best',shadow=False, fontsize=14)
plt.show()

Berikut adalah hasilnya

tanpa_noise

Gambar 1. Berikut adalah kurva tanpa noise.

Kurva tanpa noise di atas kemudian ditambahkan random noise.

noisy

Gambar 2. Kurva setelah ditambahkan noise

Lalu kita aplikasikan metode Savitzky-Golay filter. Hasilnya sebagai berikut

figure_3

Gambar 3. Perbandingan kurva original (tanpa noise) dengan hasil smooting .

Demikian postingan kali ini, mohon maaf bahasa yang agak berantakan. Karena menulisnya buru-buru.

Sumber : Wikipedia 

Kuliah di Jepang dengan biaya sendiri

Pada postingan kali ini saya akan menggambarkan hidup di Jepang sebagai mahasiswa dengan biaya sendiri.

Jepang merupakan negara maju yang biaya hidupnya sangat mahal apabila dibandingkan dengan biaya hidup di Indonesia. Sebagai contoh, harga 1 botol air mineral (500 ml) seharga 120 Yen, kurang lebih Rp. 15.000. Biaya makan siang di kantin setidaknya butuh 500 Yen, kurang lebih Rp. 60.000. Setidaknya, saya menghabiskan sehemat-hematnya untuk hidup di Sendai Jepang 80,000 Yen/bulan (Rp. 10.000.000). Biaya tersebut sudh termasuk dengan biaya apartemen, biaya makan (memasak sendiri), biaya listrik, internet dan komunikasi.

Pertanyaan selanjutnya, berapa biaya kuliah di universitas di Jepang ? Jepang merupakan negara yang mewajibkan mahasiswa untuk membayar tuition fee dan admission fee. Apabila teman-teman mendapatkan beasiswa mombusho,  teman-teman tidak perlu untuk membayar tuition fee dan admission fee karena sudah dibayarkan oleh mombusho. Berikut adalah rincian biaya kuliah di universitas negeri di Jepang

Screenshot 2018-06-13 18.42.52

Gambar 1. Biaya kuliah kampus negeri di Jepang. Sumber di sini.

Apabila kita berstatus mahasiswa tanpa beasiswa, kita bisa mengajukan keringanan biaya kuliah. Ada beberapa jenis keringanan biaya kuliah diantaranya dibebaskan utuh (100%) atau setengahnya. Namun perlu diingat, pengajuan keringanan kita belum tentu dikabulkan.

Ada berbagai macam cara untuk menghasilkan uang halal di Jepang untuk keperluan kuliah seperti bekerja paruh waktu di luar kampus dan bekerja di kampus. Bekerja dikampus seperti TA (Teaching assistant) dan RA (Research Assistant). Kisaran gaji untuk TA dan RA adalah 1200-1500 Yen/Jam. Sedangkan untuk bekerja di luar kampus 800-1500 Yen/jam bergantung jenis pekerjaannya.

Ada baiknya mencari beasiswa saja. Mengapa ? karena apabila kita bekerja paruh waktu dan memiliki penghasilan kita diharuskan membayar pajak yang sangat mahal dan biaya asuransi yang kita bayar akan menjadi mahal. Sebagai perbandingan, beasiswa mombusho 144,000 Yen tidak membayar pajak dan biaya asuransi 2,100 Yen. Anggaplah gaji paruh waktu anda setara dengan beasiswa mombusho, maka anda diharuskan membayar pajak kota sebesar 18.000 yen/ dua bulan, dan biaya asuransi anda menjadi 8000 yen/bulan. Terkesan tidak adil memang, tapi apa boleh buat.

Oh ya, sebenarnya batas waktu untuk bekerja paruh waktu itu hanya 28 jam/minggu. Lebih dari waktu tersebut maka kita sudah melanggar hukum.

Demikian gambaran hidup di jepang sebagai mahasiswa dengan biaya sendiri. Ada baiknya anda mencari beasiswa saja….

Salam

 

Syahril

28 Ramadhan 1439 H

Selesai sudah amanah PPI Sendai 2017-2018

Halo,

Pada kesempatan kali ini, saya ingin posting random lagi berhubungan dengan kegiatan saya selama menjadi mahasiswa di Sendai. Terhitung sejak, Sabtu 5 Mei 2017 hingga Sabtu 28 April 2018 saya menjalankan amanah sebagai ketua PPI Sendai 2017-2018. Oh ya, PPI Sendai itu perhimpunan pelajar Indonesia di Jepang, komisariat Miyagi. Banyak suka duka yang saya lewati selama menjadi ketua PPI Sendai.

Pada post ini, akan saya tampilkan beberapa postingan-postingan yang ada saya wkwkw. Sebagai kenang-kenangan saya di masa depan.

 

20368744_10211360181152779_1222556887216189724_o

Perkenalan kepengurusan PPIS 2017-2018

 

 

21994024_1822194391141505_2134117106525726171_o

Wisuda Fall 2017

 

5042

Pendakian Gunung Fuji Summer 2017

 

18449595_1868349596512426_5593258088582176892_o

Tohoku University International Festifal 2017. Bersama Abi Nubli Ketua PPI Korda Tohoku 2017-2018.

 

22135489_2156328957717996_7678171757341966652_o.jpg

Hari Batik Nasional 2017

 

23275628_1866213296739614_1839797273861065026_o.jpg

Wisata Alam Fall 2017

 

19748855_2033077793376447_7368478261691259596_n

Tim Building PPIS 2017-2018 Summer

 

24991061_2263469560337268_6656195457001921736_n

Seminar Forensics Odontology Winter 2017

 

29665050_10156241437529185_1865460858106121198_o

Mengantar Senpai (Adam B. Cahaya) di terminal bus sendai, spring 2018

 

29542209_2427998217217734_3514015253738540359_n.jpg

Wisuda Spring 2018

 

1517044384177.jpg

Memberikan Kenang-kenangan kepada pembicara Winter talk  Hanami Yuliana. Winter talk  bertema #pekaBukanKepo

 

66904bb9397827a55f5e6a423ecaa81e

Bermain piano bersama anak-anak sendai, Maret 2017

 

 

5030

Hanami 2018 Kajo Park Yamagat

 

5018

Indonesia Cooking Class 2018

 

18491433_10211103273270907_282370833578778702_o

With President of Tohoku University Prof. Susumu Satomi at Tohoku University International Festival spring 2017

 

Demikian beberapa kenang-kenangan saya, selaman menjadi ketua PPI Sendai 2017-2018. Sedih juga kalau mengingat kenangan di atas. Saya mengucapkan terima kasih kepada seluruh staff PPI Sendai 2017-2018. Tak lupa saya mengucapkan banyak terima kasih kepada seluruh warga sendai

 

 

 

 

 

 

 

 

 

 

 

 

Mencari Kerja

Mohon maaf untuk posting random lagi. Satu bulan belakangan ini, saya sangat sibuk untuk menulis disertasi dan mengerjakan paper untuk konferensi. Sehingga, saya meminta maaf tidak sempat untuk memposting hal-hal tentang image processing maupun python.  Saya tetap bisa dihubungi melalui gmail, sekiranya ada hal-hal yang perlu didiskusikan (kucing.kuantum[-at-]gmail.com).

Selain menulis disertasi dan paper, saya juga sedang sibuk mencari kerja wkwkwk, mungkin lebih tepatnya sok sibuk #lol. Saya ingin bekerja postdoc/ company setidaknya 3 tahun, setelah itu pulang ke Indonesia. Saya ingin menjadi dosen, tetapi saya harus punya pengalaman riset di luar negeri agar saya punya banyak hal untuk dibagikan nanti ketika saya mengajar.

Apa sih bidang yang saya kerjakan ? Saya mengerjakan agen pengkontras pada pencitraan photoakustik dengan menggunakan karbon nanotube. Selain itu, saya juga melakukan pemerosesan sinyal dan citra untuk menghilangkan derau/noise pada citra dengan menggunakan metode konvensional dan metode mesim pembelajar (machine learning). Saya juga tertarik dengan pembuatan perangkat lunak untuk kepentingan perhitungan analisa numerik dan pencitraan. Biasanya saya menggunakan python dan QT untuk membuat aplikasi berbasis objek. Sekadar menambahkan, saya juga memanfaatkan algoritma mesin pembelajar untuk mengklasifikasikan objek. Sehingga, pekerjaan yang berhubungan dengan data besar dan mesin pembelajar bukan masalah besar.  Pekerjaan yang saya inginkan diantaranya memanfaatkan algoritma mesin pembelajar untuk berbagai macam sistem pencitraan, seperti USG, PET, SPECT, PA imaging, RTRT system, dan lain-lain.

Doakan saya teman-teman, semoga disertasi dan sidang saya lencar serta semoga saya mendapatkan kesempatan untuk bekerja pada institusi riset maupun divisi riset dan pengembangan pada perusahaan.  いつも頑張って下さい

salam,

Syahril