裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

プログラムも簡明に書く必要がある

2012年06月04日 | ブログラミング

5/30 MIKUセミナー」について


「21個のアミノ酸,コドンを一生懸命打ったのでメモ」ということだが,21個のアミノ酸というのは,

end <- c("T", "C", "A", "G")
codon <- list(paste("G", "C", end, sep=""),
            paste("T", "G", end[1:2], sep=""),
            paste("G", "A", end[1:2], sep=""),
            paste("G", "A", end[3:4], sep=""),
            paste("T", "T", end[1:2], sep=""),
            paste("G", "G", end, sep=""),
            paste("C", "A", end[1:2], sep=""),
            paste("A", "T", end[1:3], sep=""),
            paste("A", "A", end[3:4], sep=""),
            paste("C", "T", end, sep=""),
            paste("A", "T", end[4], sep=""),
            paste("A", "A", end[1:2], sep=""),
            paste("C", "C", end, sep=""),
            paste("C", "A", end[3:4], sep=""),
            paste("C", "G", end, sep=""),
            paste("T", "C", end, sep=""),
            paste("A", "C", end, sep=""),
            paste("G", "T", end, sep=""),
            paste("T", "G", end[4], sep=""),
            paste("T", "A", end[1:2], sep=""))

のあたりのことか?1000個あったら1000行書くか?そんなことないね。データ構造も考えて,以下のように。より簡単に,間違いが少なくなるようにプログラムすることも重要。同じようなことを何行も書くのはダメダメプログラム。間違いの入り込む余地も多くなるので避けるべし。

f1 <- c("G", "T", "G", "G", "T", "G", "C", "A", "A", "C", "A", "A", "C", "C", "C", "T", "A", "G", "T", "T")
s1 <- c("C", "G", "A", "A", "T", "G", "A", "T", "A", "T", "T", "A", "C", "A", "G", "C", "C", "T", "G", "A")
f2 <- c(1,1,1,3,1,1,1,1,3,1,4,1,1,3,1,1,1,1,4,1)
s2 <- c(4,2,2,4,2,4,2,3,4,4,4,2,4,4,4,4,4,4,4,2)
codon <- unname(mapply(function(x, y, i, j) paste(x, y, end[i:j], sep=""), f1, s1, f2, s2))

f1, s1 は文字列として入力(f1 <- "GTGG...GTT")して,バラしてから(f1 <- unlist(strsplit(f1, "")))使うようにすれば,入力はより簡単になる。f2, s2 も同じように文字列で入力してバラして整数化してから使えばよい。
mapply 関数もこんな場合には役に立つ。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« table 関数の使い方が変 | トップ | 定石を使おう »
最新の画像もっと見る

コメントを投稿

ブログラミング」カテゴリの最新記事