はじめに
Bioconductor 周辺のまとまった日本語解説が少ないので記載していこうと思います。
といっても私はRのプロフェッショナルというわけでもないので、マニュアルを翻訳していくようなレベルでしかないですが、なるべく体系的な理解ができるような記述にしていきたいです。
何か気がつく点、間違っている点などがありましたらぜひともコメント頂けると嬉しいです。
Biostrings パッケージ
さて、最初はBiostrings パッケージについて説明していこうと思います。
Biostrings は生物の配列情報を扱うのに優れたパッケージです。
またBioconductor ではBiostrings があることを前提にしたものも多く、欠かすことのできない存在であります。
一方で、クラスベースのオブジェクト指向であるために初学者のつまずくポイントであるように思います。
慣れた人にはくどい説明かもしれませんが、このあたりも適宜説明していきたいと思います。
Biostrings のインストール
以下の方法でbioLite を使えるようにします。
以下をコピペしていきましょう。
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("Biostrings")
library(Biostrings)
これで使えるようになるはずです。
BString objects
Biostringsにおいて、配列情報を格納するオブジェクトです。
以下のようにして生成することができます。
> BSobj = BString(x="This is BString object", start=1, nchar=NA)
> BSobj
22-letter "BString" instance
seq: This is BString object
このコンストラクタの引数は以下のようなものとなっています。
-
x:{string} 配列データ
-
start:{number} 読み込み開始地点("-"で末尾からの参照)
-
nchar:{number} 読む込む文字の数
例をみてもわかるように、配列データはなんだって構わないようです。
また、startやncharを指定することで読み込む配列を調整することができます。
> BString(x="This is BString object", start = 6)
17-letter "BString" instance
seq: is BString object
> BString(x="This is BString object", start = 6, nchar = 4)
4-letter "BString" instance
seq: is B
> BString(x="This is BString object", start = -6)
6-letter "BString" instance
seq: object
次にデータ構造を見てみましょう。
基本的にこのようなオブジェクトというものは複数の変数を格納しています。
str()で展開すると以下のようになっています。
> BSobj = BString(x="This is BString object", start=1, nchar=NA)
> BSobj
> str(BSobj)
Formal class 'BString' [package "Biostrings"] with 5 slots
..@ shared :Formal class 'SharedRaw' [package "XVector"] with 2 slots
.. .. ..@ xp :<externalptr>
.. .. ..@ .link_to_cached_object:<environment: 0x1100f2c60>
..@ offset : int 0
..@ length : int 22
..@ elementMetadata: NULL
..@ metadata : list()
これらの成分はスロットと呼ばれ、@でアクセスすることが可能です。
> BSobj@length
[1] 22
パッとみて配列情報が見当たりませんが、配列情報はXVectorパッケージのSharedRawクラスが預かっているようです。
あまり深入りすると際限なくなるので突っ込んで解説することはしませんが、配列情報は以下のコマンドで取り出すことが可能です。
> as.character(BSobj)
[1] "This is BString object"
長さは@でスロットにアクセスしても良いですが、相手はオブジェクトなのでできればマニュアルに指定された関数を介して参照するほうが良いと思います。
> length(BSobj)
[1] 22
subseq()で配列切り出したオブジェクトを作成することも可能です。
引数説明
- x {BString object}
- 配列データ
- start {number}
- 読み込み開始位置 (デフォルト:1)
- end {number}
- 読み込み終了位置 (デフォルト:末尾)
- width {number}
- 読み込む文字の数
※startとendを引数とした場合、widthは決定されてしまうので同時に使うことはできません。
> subseq(BSobj , start = 4)
19-letter "BString" instance
seq: s is BString object
> subseq(BSobj , start = 4 , end = 10)
7-letter "BString" instance
seq: s is BS
> subseq(BSobj , start = 4 , width = 10)
10-letter "BString" instance
seq: s is BStri
> subseq(BSobj , start = -4)
4-letter "BString" instance
seq: ject
> subseq(BSobj , end = -4)
19-letter "BString" instance
seq: This is BString obj
> subseq(BSobj , start = -10, end = -4)
7-letter "BString" instance
seq: ing obj
ベクトルで切り出すことも可能です。
> BSobj[4:12]
9-letter "BString" instance
seq: s is BStr
この場合ではベクトルを逆転させることで逆さまの配列を取り出すことができます。
> BSobj[12:4]
9-letter "BString" instance
seq: rtSB si s
今回はここまでとします。
次の回ではもう少し説明を行なったのち、サブクラスであるDNAString、 RNAString、AAString クラスの解説をしていきたいと思います。
ありがとうございました。