とかとか

chromsomal locationに該当する配列をensemblから一括で取り出す ~Rでの自動化~

take-cさんによるイラストACからのイラスト

忘れないようにメモ 。

Ensemblで”chromosome: start-endを入力 “例) 1:10000000-10000200

Export dataをクリック

そのままNextをクリック

Textをクリック

>1 dna:chromosome chromosome:GRCm38:1:10000000:10000200:1GTTTTCAATGCAGGAAATGCAATTGTTCTGTAGGTACAAGTGGGTCAGATTTGTGGTGTAATTCAGGTTAGTGACTTGACTAATGCGATTATCATATAAATATAAAACACTCAGGTTTCTGCAAAGAGAGAGGTCATCCTGAAAAGTAAACAAAACAGGCCCTATTTAATTACCTCACAAGCTTACAAGTTGGATTTTAAG
というtextファイルが出力される。

1個なら問題ないが数100個を手作業でやるのは大変 (人のする作業ではない)。
下記のアドレスにアクセスできれば、配列情報を取得できるので、 Rでまとめて取得できる(別にRじゃなくてもできますが、普段Rを使うことが多いので、、、)。 https://asia.ensembl.org/Mus_musculus/Export/Output/Location?db=core;flank3_display=0;flank5_display=0;output=fasta;r=1:10000000-10000200;strand=feature;utr3=yes;cdna=yes;peptide=yes;genomic=unmasked;coding=yes;utr5=yes;intron=yes;exon=yes;_format=Text

① chromosomal_location.csvを準備
列1: chromosome 列2: start 列3:  end の情報を入力

chromosomestartend
11000000010000200
21000000010000200
31000000010000200

② 出力ファイルとして何も記入していない空のoutput.txtを準備

③下記コードをRで実行 ( C:/Users/pekop/Desktop/getSequenceFromEnsembl/output.txt の部分は変更すること)

chromosomalLocation <- read.csv("chromosomal_location.csv", header=T)
for(i in 1:nrow(chromosomalLocation)){
  chromosome <- chromosomalLocation[i,"chromosome"]
  start <- chromosomalLocation[i,"start"]
  end <- chromosomalLocation[i,"end"]
  url <- paste("https://asia.ensembl.org/Mus_musculus/Export/Output/Location?db=core;flank3_display=0;flank5_display=0;output=fasta;",
               "r=", chromosome, ":", start, "-", end, ";",
               "strand=feature;genomic=unmasked;utr5=yes;utr3=yes;coding=yes;cdna=yes;exon=yes;intron=yes;peptide=yes;_format=Text",
               sep="")
  dat <- read.csv(file=url, header=TRUE)
  colnames(dat) <- sub("X.", ">", colnames(dat))
  write.table(dat, "C:/Users/pekop/Desktop/getSequenceFromEnsembl/output.txt",
              quote=F, row.names=FALSE, col.names=TRUE, append=T)
}

R言語勉強したいという方は以下の書籍がお勧めです。