SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
RとSQLiteで気軽に
 データベース作成

antiplastics@Kashiwa.R#4
         2012/9/28
テーブルデータの限界


      4.39GBのデータを
      read.table()



webから取得した
シロイヌナズナの
遺伝子発現データ




                     堅気の人はまず見る事が無いエラーメッセージ
データをどう管理するか
                              RDBMS
- リレーショナルデータベースマネージメントシステム
- データを関係モデルで管理
- MySQL, PostgreSQL, Oracle, SQLite等




                     テーブル2

                             テーブル3

            テーブル1
データをどう管理するか
                            NoSQL
               最近注目されているRDBMSと異なる技術

キー・バリュー型 : データを単純に“キー”と“値”を持つものとして管理
- Cassandra(前までfacebookが使ってた), Google BigTable, Amazon
DynamoDB等
   keyX     124      keyX      526      keyX   9579
   keyY     ABAV     keyY      DHHD     keyY   DHAS      ・・・
   keyZ     tes352   keyZ      fsj574   keyZ   sutr325



ドキュメント志向型 : データをXML, JSON等で書かれたドキュメントとして管理
- MongoDB, CouchDB, Xquery等


                                 XML
                                XML
                               XML
                              XML
                             XML
データを取得する
言わずもがなの文献データベース                                     雑誌毎にフォルダ分けされており、
XML形式で文献データを提供                                      中身は月毎にファイルを分けている
(http://www.ncbi.nlm.nih.gov/pmc/tools/ftp/)              (XML)




                      ダウンロード             解凍
                       (7時間!)         (34.1GB!!!)
補足:スキーマ
         テーブルをどのように分割するか、
           どのキー同士で参照するか、
          どこにインデックスを貼るか…等
           データベース全体のデザイン



        テーブル2
                        今回はI/Oが早くなればそれでいいので、
                テーブル3
                           特にスキーマとか考えない
テーブル1                        (1個のでかいテーブル)
補足:スキーマ
ゲノムデータベースEnsemblのスキーマ




        あまりにアレだからBiomartがもっと簡単に
        データを取得できるようにしている
補足:SQLite
                          RDBMSの一種で、サーバーvsクライアントという概念が無い
                                SQLの文法はMySQLとかと大体は同じ
                         → 個人で気軽にローカルのデータベースを構築するのに最適




                                                                                 隠しファイル

Macだと                                         Macだと
/Users/ユーザー名/Library/Application              /Users/ユーザー名/Library/Application    Macだと
Support/Firefox/Profiles/307dewum.default/    Support/Skype/アカウント名/               /Users/ユーザー名/.dropbox



        他にもあらゆるアプリケーションが利用 (http://www.sqlite.org/famous.html)
XML→CSV
library(XML)
d <- xmlToList(“XMLファイル名”)                                  みたいなのを毎回走らせる
A <- d$front$’journal-meta’$’journal-id’$text               のはダルいから、
B <- d$front$’article-meta’$’pub-date’$year                 実際はシェルスクリプトで
C <- d$front$’article-meta’$’title-group’$’article-title’
D <- d$front$’article-meta’$’abstract$p
E <- paste(“PMC”,d$front$’article-meta’$’article-id’$text,sep=“”)
F <-paste(“http://www.ncbi.nlm.nih.gov/pmc/articles/”,E,”/pdf/”,sep=“”)

…
result <- c(A,B,C,D,E,F)
sink(file=“pubmed.txt”,append=T)
cat(result)
sink()

                        このようなtab区切りテーブルpubmed.txtができる
       雑誌名      年代     タイトル アブスト (???GB)
                                    PMCID      URL
       Nature   2012   hoge        Hoge is...   PMC2751374   http://www.ncbi.nlm.......
SQLiteにCSVをインポート
> sqlite3 pubmed.sqlite
sqlite> DROP TABLE IF EXISTS pubmed.sqlite;
sqlite> CREATE TABLE pubmed (
        journal_name VARCHAR(30),
        year INTEGER,
        title VARCHAR(300),                   pubmed.sqlite
        abst VARCHAR(5000),
        pmcid CHAR(10),
        url VARCHAR(100)
                                              完成!!!
        );
Sqlite> .separator ¥t
sqlite> .import pubmed.txt pubmed
sqlite> .exit
RSQLite
       RでSQLiteを操作できるパッケージ
   Rでコマンドを叩いても、実際は裏でSQLが走る
SQLがデータをとってきても、返ってくるのはRオブジェクト


               SQL文
       例: SELECT * FROM pubmed;

                               pubmed.sqlite


              Rオブジェクト
             (データフレーム)


DBI(データベースインターフェース)という
他の言語でも実装されている
 例: PerlのDBD::Pg、JavaのJDBI、Rubyのruby-dbi
検索してみる


dbGetQuery(con,"SELECT title FROM pubmed WHERE abst like '%RNA-Seq%';")




Microarrays, deep sequencing and the true…
Maintaining RNA integrity in a …
Microarrays and RNA-Seq identify molecular mechanisms…
                      ・
                      ・
                      ・                 このタイトルのものは、アブストに
                                        RNA-Seqの事が書かれている
集計してみる

dbGetQuery(con,"SELECT COUNT(*) FROM pubmed WHERE abst like '%RNA-Seq%';")




               アブストにRNA-Seqと書かれた論文は167件!
可視化
paper <- rep(0:0,length=85)
for(i in 1928:2012){
command <- paste("SELECT COUNT(*) FROM pubmed WHERE abst like '%RNA-Seq%' AND year = ",i,";",sep="")
prepaper <- dbGetQuery(con,command)
if(as.numeric(prepaper)!=0){
  paper[i-1928] <- as.numeric(prepaper)
}
}
jpeg(file="paper.jpeg")
plot(1928:2012,paper,"l",ylab="Frequency",xlab="Year")
dev.off()




    論文の本数が2000年後半あたりにい
    きなり急増している!
可視化




“RNA-Seq”,“microarray”,“RT-PCR”,“Western blot”,“two-hybrid”,“GFP”の6
実験手法のアブスト内での出現頻度(ノードの大きさ)と、共起頻度(エッジの
短さ)をCytoscapeで可視化
pdf根こそぎダウンロード
  keyword <- "RNA-Seq"

  url <- as.matrix(dbGetQuery(con,paste("SELECT url FROM pubmed WHERE abst
  like '%",keyword,"%';",sep="")))
  url <- sub(" ","",url)
  d <- getwd()
  dir.create(paste(d,"/",keyword,sep=""))
  setwd(paste(d,"/",keyword,sep=""))
  for(i in 1:length(url)){
  call <- paste(i,"/",length(url), "is now downloading...",sep=" ")
  print(call)
  filename <- paste(i,".pdf",sep="")
  download.file(url=url[i],destfile=filename,quiet=T)
  }
  setwd(d)




RNA-Seqというキーワードがアブストに
ある文献を一度にダウンロード
その他

• web上の既存のDBにアクセスもできる
  (Rパッケージガイドブック参照)
まとめ
• 大規模データの扱いはRDBMS

• データ解析はR

• RSQLiteで美味しいとこどりできる

• 書いたソースコードは以下にあるのでご自由に
  https://sites.google.com/site/scriptofbioinformatics/
  sql-guan-xi/pubmednodetabesu-gou-zhu-r-sqlite
参考
二階堂さんのサイト
http://cat.hackingisbelieving.org/bioinfo_tips/Learning-sqlite3.html


DBOnline
http://www.dbonline.jp/sqlite/


sqliteコマンド 基本的な使い方
http://aaabbbkirai.sytes.net/wiki/tech/db/sqlite%A5%B3%A5%DE%A5%F3%A
5%C9%20%B4%F0%CB%DC%C5%AA%A4%CA%BB%C8%A4%A4%CA%F
D.html#p2994141


RSQLite Reference manual
http://cran.r-project.org/web/packages/RSQLite/RSQLite.pdf


Rパッケージガイドブックの@wakutekaが書いたとこ

Contenu connexe

Tendances

比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
takehikoihayashi
 
Normalization of microarray
Normalization of microarrayNormalization of microarray
Normalization of microarray
弘毅 露崎
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
Daisuke Yoneoka
 

Tendances (20)

3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布
 
(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ(2017.6.9) Neo4jの可視化ライブラリまとめ
(2017.6.9) Neo4jの可視化ライブラリまとめ
 
{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析{tidygraph}と{ggraph}によるモダンなネットワーク分析
{tidygraph}と{ggraph}によるモダンなネットワーク分析
 
実践で学ぶネットワーク分析
実践で学ぶネットワーク分析実践で学ぶネットワーク分析
実践で学ぶネットワーク分析
 
effectsパッケージを用いた一般化線形モデルの可視化
effectsパッケージを用いた一般化線形モデルの可視化effectsパッケージを用いた一般化線形モデルの可視化
effectsパッケージを用いた一般化線形モデルの可視化
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
最適輸送入門
最適輸送入門最適輸送入門
最適輸送入門
 
KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告KDD Cup 2021 時系列異常検知コンペ 参加報告
KDD Cup 2021 時系列異常検知コンペ 参加報告
 
比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!比例ハザードモデルはとってもtricky!
比例ハザードモデルはとってもtricky!
 
Normalization of microarray
Normalization of microarrayNormalization of microarray
Normalization of microarray
 
ブートストラップ法とその周辺とR
ブートストラップ法とその周辺とRブートストラップ法とその周辺とR
ブートストラップ法とその周辺とR
 
最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情最近のDeep Learning (NLP) 界隈におけるAttention事情
最近のDeep Learning (NLP) 界隈におけるAttention事情
 
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
最近のKaggleに学ぶテーブルデータの特徴量エンジニアリング
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Graphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data ScienceGraphic Notes on Linear Algebra and Data Science
Graphic Notes on Linear Algebra and Data Science
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法Rパッケージ“KFAS”を使った時系列データの解析方法
Rパッケージ“KFAS”を使った時系列データの解析方法
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
CV分野におけるサーベイ方法
CV分野におけるサーベイ方法CV分野におけるサーベイ方法
CV分野におけるサーベイ方法
 
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
Rによるやさしい統計学第20章「検定力分析によるサンプルサイズの決定」
 

Similaire à RとSQLiteで気軽にデータベース作成

Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
Yoshinori Matsunobu
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
Insight Technology, Inc.
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
 

Similaire à RとSQLiteで気軽にデータベース作成 (20)

cassandra調査レポート
cassandra調査レポートcassandra調査レポート
cassandra調査レポート
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門SQL Server 使いのための Azure Synapse Analytics - Spark 入門
SQL Server 使いのための Azure Synapse Analytics - Spark 入門
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
20160220 MSのビッグデータ分析基盤 - データマイニング+WEB@東京
 
MongoDB
MongoDBMongoDB
MongoDB
 
Azure Datalake 大全
Azure Datalake 大全Azure Datalake 大全
Azure Datalake 大全
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
[de:code 2018] [DA19] 次世代データベース サービス「Azure Cosmos DB」を使いこなそう ~ Azure Cosmos D...
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
[db tech showcase Tokyo 2018] Azure Cosmos DB Technical Deep Dive ~グローバル分散型マル...
[db tech showcase Tokyo 2018] Azure Cosmos DB Technical Deep Dive ~グローバル分散型マル...[db tech showcase Tokyo 2018] Azure Cosmos DB Technical Deep Dive ~グローバル分散型マル...
[db tech showcase Tokyo 2018] Azure Cosmos DB Technical Deep Dive ~グローバル分散型マル...
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版LINEのMySQL運用について 修正版
LINEのMySQL運用について 修正版
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Mongodb 紹介
Mongodb 紹介Mongodb 紹介
Mongodb 紹介
 
2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ
 
XPages 開発 Tips 百連発
XPages 開発 Tips 百連発XPages 開発 Tips 百連発
XPages 開発 Tips 百連発
 

Plus de 弘毅 露崎

大規模テンソルデータに適用可能なeinsumの開発
大規模テンソルデータに適用可能なeinsumの開発大規模テンソルデータに適用可能なeinsumの開発
大規模テンソルデータに適用可能なeinsumの開発
弘毅 露崎
 
Predicting drug-induced transcriptome responses of a wide range of human cell...
Predicting drug-induced transcriptome responses of a wide range of human cell...Predicting drug-induced transcriptome responses of a wide range of human cell...
Predicting drug-induced transcriptome responses of a wide range of human cell...
弘毅 露崎
 
非負値テンソル分解を用いた細胞間コミュニケーション検出
非負値テンソル分解を用いた細胞間コミュニケーション検出非負値テンソル分解を用いた細胞間コミュニケーション検出
非負値テンソル分解を用いた細胞間コミュニケーション検出
弘毅 露崎
 
データベースとデータ解析の融合
データベースとデータ解析の融合データベースとデータ解析の融合
データベースとデータ解析の融合
弘毅 露崎
 
Identification of associations between genotypes and longitudinal phenotypes ...
Identification of associations between genotypes and longitudinal phenotypes ...Identification of associations between genotypes and longitudinal phenotypes ...
Identification of associations between genotypes and longitudinal phenotypes ...
弘毅 露崎
 
A novel method for discovering local spatial clusters of genomic regions with...
A novel method for discovering local spatial clusters of genomic regions with...A novel method for discovering local spatial clusters of genomic regions with...
A novel method for discovering local spatial clusters of genomic regions with...
弘毅 露崎
 
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
弘毅 露崎
 
ISMB読み会 2nd graph kernel
ISMB読み会 2nd graph kernelISMB読み会 2nd graph kernel
ISMB読み会 2nd graph kernel
弘毅 露崎
 

Plus de 弘毅 露崎 (20)

大規模テンソルデータに適用可能なeinsumの開発
大規模テンソルデータに適用可能なeinsumの開発大規模テンソルデータに適用可能なeinsumの開発
大規模テンソルデータに適用可能なeinsumの開発
 
バイオインフォ分野におけるtidyなデータ解析の最新動向
バイオインフォ分野におけるtidyなデータ解析の最新動向バイオインフォ分野におけるtidyなデータ解析の最新動向
バイオインフォ分野におけるtidyなデータ解析の最新動向
 
Benchmarking principal component analysis for large-scale single-cell RNA-seq...
Benchmarking principal component analysis for large-scale single-cell RNA-seq...Benchmarking principal component analysis for large-scale single-cell RNA-seq...
Benchmarking principal component analysis for large-scale single-cell RNA-seq...
 
R-4.0の解説
R-4.0の解説R-4.0の解説
R-4.0の解説
 
scTGIFの鬼QC機能の追加
scTGIFの鬼QC機能の追加scTGIFの鬼QC機能の追加
scTGIFの鬼QC機能の追加
 
20191204 mbsj2019
20191204 mbsj201920191204 mbsj2019
20191204 mbsj2019
 
1細胞オミックスのための新GSEA手法
1細胞オミックスのための新GSEA手法1細胞オミックスのための新GSEA手法
1細胞オミックスのための新GSEA手法
 
Predicting drug-induced transcriptome responses of a wide range of human cell...
Predicting drug-induced transcriptome responses of a wide range of human cell...Predicting drug-induced transcriptome responses of a wide range of human cell...
Predicting drug-induced transcriptome responses of a wide range of human cell...
 
LRBase × scTensorで細胞間コミュニケーションの検出
LRBase × scTensorで細胞間コミュニケーションの検出LRBase × scTensorで細胞間コミュニケーションの検出
LRBase × scTensorで細胞間コミュニケーションの検出
 
非負値テンソル分解を用いた細胞間コミュニケーション検出
非負値テンソル分解を用いた細胞間コミュニケーション検出非負値テンソル分解を用いた細胞間コミュニケーション検出
非負値テンソル分解を用いた細胞間コミュニケーション検出
 
Exploring the phenotypic consequences of tissue specific gene expression vari...
Exploring the phenotypic consequences of tissue specific gene expression vari...Exploring the phenotypic consequences of tissue specific gene expression vari...
Exploring the phenotypic consequences of tissue specific gene expression vari...
 
データベースとデータ解析の融合
データベースとデータ解析の融合データベースとデータ解析の融合
データベースとデータ解析の融合
 
ビール砲の放ち方
ビール砲の放ち方ビール砲の放ち方
ビール砲の放ち方
 
Identification of associations between genotypes and longitudinal phenotypes ...
Identification of associations between genotypes and longitudinal phenotypes ...Identification of associations between genotypes and longitudinal phenotypes ...
Identification of associations between genotypes and longitudinal phenotypes ...
 
A novel method for discovering local spatial clusters of genomic regions with...
A novel method for discovering local spatial clusters of genomic regions with...A novel method for discovering local spatial clusters of genomic regions with...
A novel method for discovering local spatial clusters of genomic regions with...
 
Rによる統計解析と可視化
Rによる統計解析と可視化Rによる統計解析と可視化
Rによる統計解析と可視化
 
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
文献注釈情報MeSHを利用した網羅的な遺伝子の機能アノテーションパッケージ
 
PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説PCAの最終形態GPLVMの解説
PCAの最終形態GPLVMの解説
 
カーネル法を利用した異常波形検知
カーネル法を利用した異常波形検知カーネル法を利用した異常波形検知
カーネル法を利用した異常波形検知
 
ISMB読み会 2nd graph kernel
ISMB読み会 2nd graph kernelISMB読み会 2nd graph kernel
ISMB読み会 2nd graph kernel
 

RとSQLiteで気軽にデータベース作成