SQLite3 はリレーショナルデータベース管理システムのひとつ。サーバクライアントモデルではなく、データベースがファイルになっています。ライセンスがパブリックドメインであることもあり、組み込みDBとしてよく使われます。iPhone の位置情報などのデータを格納しているのも SQLite3 です。ウェブアプリケーションのフレームワークである、Ruby on Rails では標準の組み込みDBとして使われています。また中規模のデータベースならMySQLなどと比較しても遜色ない速度で利用できます。
バイオ業界でも、マイクロアレイやNGSデータを格納する際によく利用されており、Bioconductor の annotation package に含まれるデータも SQLite3 のデータベースになっています。
インストール # Mac OS X には標準でインストールされており、設定なしでターミナルから利用できます。Linuxでもほとんどのディストリビューションでパッケージマネジメントシステムでインストール可能です。Windows は知りません。
使いかた # SQLite3 が正常にインストールされていれば、以下のようにして対話型のクライアントを起動することができます。
sqlite3 データベースを作成するには (ここでは expressions.sqlite という名前のデータベースを作成する)
sqlite3 expressions.sqlite とする。
テーブルを作りスキーマを確認する。スキーマとはテーブルの定義のこと。
sqlite> create table transcripts(id varchar(10), sample varchar(10), fpkm real); sqlite> .schema CREATE TABLE transcripts(id varchar(10), sample varchar(10), fpkm real); sqlite> データを格納する。
DNA配列をRで操作する
基本的なDNA配列の操作方法や、FASTA/FASTQ file を取り込む方法を解説します。また全ゲノム配列を読み込み操作する方法についても述べます。
準備 # source("http://bioconductor.org/biocLite.R") biocLite("Biostrings") 基本的なDNA, アミノ酸配列の操作 # library("Biostrings") x <- DNAString("actttGtag") is(x) ## [1] "DNAString" "XString" "XRaw" "XVector" "Vector" "Annotated" x ## 9-letter "DNAString" instance ## seq: ACTTTGTAG XString クラスを継承した DNAString オブジェクトを作成しています。このオブジェケクトにしておくと、いろいろな配列操作が可能になります。RNA, アミノ酸は、それぞれ、RNAString and AAString を使います。
x[1:2] ## 2-letter "DNAString" instance ## seq: AC aa <- translate(x) is(aa) ## [1] "AAString" "XString" "XRaw" "XVector" "Vector" "Annotated" aa ## 3-letter "AAString" instance ## seq: TL* aa.revcomp <- translate(reverseComplement(x)) aa.revcomp ## 3-letter "AAString" instance ## seq: LQS x.freq <- alphabetFrequency(x, baseOnly = TRUE) is(x.freq) ## [1] "integer" "numeric" "vector" ## [4] "data.frameRowLabels" "EnumerationValue" "atomic" ## [7] "vectorORfactor" x.freq ## A C G T other ## 2 1 2 4 0 DNA配列やコード表のデータ # もちろんDNAやコードのデータも用意されています。
GEOquery を使って公共データベースから発現データを入手する
例としてこのデータを取り出します。
GSE20349 準備 # source("http://bioconductor.org/biocLite.R") biocLite("GEOquery") データをダウンロードします。ネットワークからダウンロードするので時間がかかります。この例では数秒から数分ぐらいだと思います。
library("GEOquery") ## Loading required package: Biobase ## Loading required package: BiocGenerics ## Attaching package: 'BiocGenerics' ## The following object(s) are masked from 'package:stats': ## ## xtabs ## The following object(s) are masked from 'package:base': ## ## anyDuplicated, cbind, colnames, duplicated, eval, Filter, Find, get, ## intersect, lapply, Map, mapply, mget, order, paste, pmax, pmax.int, pmin, ## pmin.int, Position, rbind, Reduce, rep.int, rownames, sapply, setdiff, ## table, tapply, union, unique ## Welcome to Bioconductor ## ## Vignettes contain introductory material; view with 'browseVignettes()'. To ## cite Bioconductor, see 'citation("Biobase")', and for packages ## 'citation("pkgname")'. ## Setting options('download.file.method.GEOquery'='auto') g <- getGEO("GSE20349") ## Found 1 file(s) ## GSE20349_series_matrix.txt.gz ## File stored at: ## /var/folders/cz/cny0ysmx205dnj0y2_34k8cc0000gn/T//RtmpqdGru3/GPL8492.soft is(g) ## [1] "list" "vector" "AssayData" g ## $GSE20349_series_matrix.txt.gz ## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 16331 features, 4 samples ## element names: exprs ## protocolData: none ## phenoData ## sampleNames: GSM509823 GSM509824 GSM509825 GSM509826 ## varLabels: title geo_accession ... data_row_count (35 total) ## varMetadata: labelDescription ## featureData ## featureNames: 100009600_at 100012_at ... 99982_at (16331 total) ## fvarLabels: ID Gene_ID ... SPOT_ID (5 total) ## fvarMetadata: Column Description labelDescription ## experimentData: use 'experimentData(object)' ## Annotation: GPL8492 is(g[[1]]) ## [1] "ExpressionSet" "eSet" "VersionedBiobase" ## [4] "Versioned" g[[1]] ## ExpressionSet (storageMode: lockedEnvironment) ## assayData: 16331 features, 4 samples ## element names: exprs ## protocolData: none ## phenoData ## sampleNames: GSM509823 GSM509824 GSM509825 GSM509826 ## varLabels: title geo_accession ... data_row_count (35 total) ## varMetadata: labelDescription ## featureData ## featureNames: 100009600_at 100012_at ... 99982_at (16331 total) ## fvarLabels: ID Gene_ID ... SPOT_ID (5 total) ## fvarMetadata: Column Description labelDescription ## experimentData: use 'experimentData(object)' ## Annotation: GPL8492 データは、ExpressionSet が要素にはいった、List のデータ構造で保存されます。ExpressionSet は、Bioconductor で発現データを持つ際に良く使われるデータ構造です。この構造にしておけば、あらゆる発現解析の関数が利用できるようになります。なぜ List になっているかと言うと、検索で複数の結果が帰ってくる場合を想定しているためです。