Monday, 13 September 2021

Computing GC Content (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 "Computing GC Content". Sebagai acuan, teman-teman bisa cek dahulu problem yang akan kita bahas (disini). 

 
Di problem ini kita akan disajikan beberapa string DNA menggunakan format FASTA. Kemudian dari string-string tersebut kita ditugaskan untuk mencari string manakah yang mempunyai GC-content yang paling banyak. GC-content sendiri ialah presentase dari jumlah senyawa guanine (G) dan cytosine (C) dari total keseluruhan senyawa di DNA tersebut. Sebagai contoh DNA "GCATA" mempunyai GC-content yaitu 2/5 (0.4). 

Berikut kode untuk pengerjaannya (dalam bahasa java) :

static class Data {
double Max = 0.0;
String Name = "";
}
static void solve() {
Scanner sc = new Scanner(System.in);
Data result = new Data();
String name = "";
String nameCadangan = "";
boolean nameCadanganDipake = false;
while (sc.hasNext()) {
         if (!nameCadanganDipake) name = sc.next();
else {
name = nameCadangan;
nameCadanganDipake = false;
}
name = name.substring(1, name.length());
String s = "";
while (sc.hasNext()) {
nameCadangan = sc.next();
if (nameCadangan.charAt(0) == '>') {
nameCadanganDipake = true;
break;
}
s += nameCadangan;
}
int GC = 0;
for (char x : s.toCharArray()) {
if (x == 'G' || x == 'C') GC++;
}
double val = 100.0 * GC / s.length();
if (val > result.Max) {
result.Max = val;
result.Name = name;
}
}
out.printf("%s\n%.6f", result.Name, result.Max);
}

Disini saya memakai Scanner untuk meng-input data string. Hal itu dikarenakan di Scanner kita bisa memakai fungsi hasNext() yang berguna untuk meng-input data yang tidak diketahui banyaknya, seperti pada problem ini.

Sedangkan untuk output-nya saya memakai fungsi out.printf().Fungsi tersebut 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 di 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://en.wikipedia.org/wiki/GC-content

No comments:

Post a Comment