Saturday, 18 September 2021

Calculating Expected Offspring (Rosalind)

          

rosalind


Halo teman-teman, apa kabar? Kali ini saya ingin membahas sedikit tentang salah satu problem yang ada di web rosalind.info. Judulnya ialah "Calculating Expected Offspring". Sebagai acuan, teman-teman bisa cek dahulu problem yang akan kita bahas (disini). 


Di problem ini kita akan disajikan 6 buah bilangan bulat (integer) yang mewakili jumlah pasangan-pasangan berikut:

1. AA-AA
2. AA-Aa
3. AA-aa
4. Aa-Aa
5. Aa-aa
6. aa-aa

Tugas kita ialah mencari expected value dari jumlah keturunan yang mempunyai fenotip dominan (AA & Aa) jika diambil 2 dari masing-masing pasangan. 

Expected value sendiri ialah nilai rata-rata dari nilai semua kemungkinan. Sebagai contoh, expected value dari nilai semua kemungkinan lemparan dadu 1 kali ialah (3.5). Angka tersebut didapat dari nilai rata-rata semua kemungkinan dadu; (1 + 2 + 3 + 4 + 5 + 6) dibagi dengan 6. 

Berikut kode untuk pengerjaannya (dalam bahasa java) :

1. static void solve() {
2. double[] val = {2, 2, 2, 1.5, 1, 0};
3. double tot = 0.0;
4. for (int i = 0; i < 6; i++) {
5. tot += val[i] * nd();
6. }
7.     out.printf("%.1f\n", tot);
8. }

Seperti yang teman-teman lihat, kode pengerjaannya cukup simpel. Yang pertama saya lakukan ialah membuat variabel double[] val (baris 2).Variabel tersebut berisi probabilitas fenotip dominan dari keturunan masing-masing pasangan (AA-AA = 4/4, Aa-Aa = 3/4, dll) yang dikali dengan jumlah keturunan yang diambil (2). 

Langkah selanjutnya ialah mengalikan variabel double[] val dengan jumlah pasangan yang disediakan. 

Disini saya memakai fungsi nd() untuk meng-input data double. Fungsi tersebut adalah extend yang saya modifikasi dari salah satu sistem input yang ada di java, yaitu BufferedReader. Sedangkan untuk output-nya saya memakai fungsi out.printf() . Fungsi tersebut juga adalah modifikasi dari fungsi System.out.printf()  yang merupakan fungsi default di java. Untuk lebih jelasnya teman-teman bisa melihat kode tambahan untuk memodifikasi fungsi tersebut (input maupun outputdi versi lengkap kode saya di github

Sekian dari saya. Jika teman-teman ingin menanyakan sesuatu, teman-teman bisa menulisnya di kolom komentar. Semoga bermanfaat dan sampai jumpa di artikel berikutnya!


Referensi :
Sumber gambar 1 :https://www.facebook.com/ProjectRosalind/
Sumber gambar 2 :https://4eso7phymodee.wordpress.com/2015/03/22/mendels-laws/

No comments:

Post a Comment