2014年8月11日月曜日

liftover

既に解析済みのbedやgif, positionデータはあるものの、現在自分が解析しているゲノムのバージョンとは異なる場合があるが、UCSCにあるliftoverでそろえる事が可能。

http://hgdownload.cse.ucsc.edu/admin/exe/で環境に合わせて
私の場合はlinux.x86_64/以下にあるliftoverをダウンロードchmod +x liftoverでlocal/binなどパスが通っている場所に置いておく。さらに、例えば、mm8からmm10に変換したい場合は、http://hgdownload.soe.ucsc.edu/goldenPath/mm8/liftOver/mm8ToMm10.over.chain.gzをダウンロードして解凍。適当に共有ディレクトリ等に置いておく。

#変換したいファイルがbedなら(chr1 1000099 1000200)
liftOver Oct4_mm8.bed mm8ToMm10.over.chain Oct4_mm10.bed unmapped.txt
Oct4_mm10.bed>>変換されたbed 
unmapped.txt>>変換できなかったもの
#変換したいファイルがpositionなら(chr1:1000100-1000200)
liftOver -positions Oct4_mm8.txt mm8ToMm10.over.chain Oct4_mm10.txt unmapped.txt
Oct4_mm10.txt>>変換されたposition
unmapped.txt>>変換できなかったのもの
liftOver_XXXXXX.bed>>変換前のbedファイル
liftOver_XXXXXX.bedmapped>>変換後のbedファイル
positionでもliftover出来て、そのbedを得られるのは便利

GEOのRAWデータをターミナルからダウンロード

あるアクセッション番号のRAWデータをダウンロードしたい時に、webのリンクからだと直接ダウンロードできないので、以下の様に自分のダウンロードしたい番号を入れる。親ディレクトリは下三桁をnnnとして、それより上の桁をダウンロードしたい番号と同じにする。
以下は例
wget ftp://ftp.ncbi.nlm.nih.gov/geo/series/GSE11nnn/GSE11431/suppl/GSE11431_RAW.tar

2014年7月25日金曜日

サーバーの特定のディレクトリをマウントする

サーバー側で作成したpdfやpngなどのファイルをいちいちscpするのはめんどくさいのでマウントして手元のPCから直接覗けるようにする。 基本的にhttp://blog.offline-net.com/2014/03/02/mavericks-osxfuse-sshfs-local2remoteをみればわかる 私も上記解説と同じ環境である。 デスクトップにhogeという名前のフォルダを先に作成する。 以下の様にターミナルで叩けばマウントできる。
sshfs ユーザー名@サーバー名(hoge.co.jp):/home/ユーザー名/PATH/TO/指定ディレクトリ /Users/ユーザー名/Desktop/hoge
指定ディレクトリ以下にディレクトリがあってもアクセスできる。

fastaファイルの特定の位置をマスクする方法

bedtoolsの中のmaskFastaFromBedというツールを使う。 使い方は
maskFastaFromBed -fi [マスクかけたいfasta ファイル] -bed  [位置を指定した bedファイル] -fo [ 出力fa staファイル名] -mc N(Nでマスクする)
マスクかけたいfasta ファイルはmulti fastaでOK bedも複数行でOK 例として
test.fa
>chr1
TCTCATGCTAATCAGGATCTGGGGCACAGTACAAACCTCAAATGCTGTAGTTGAG
>chr2
GCTATTTCAGCCCTAGTGGAAGGGGGTGGGGCGGCACTAGGGCAGCAGCCCGTGCCCGCTGCACTTCCCTTATCGGATTACTGCTTAACTCCCACCCCCTCCTAGGTCCAAAAAGTATACTAATTACATGGA
>chr3
GCAGTACATTCCACAGCATCCTTAGGTGTTGCTCAGAGTCTACCTAACACCTAAGTACAAAAATGAAGCCCTAGGGCAGCCCTAAATGGTTTGTTTCCGCAAAATAGTGATCAACTCAAGTAAACAAGGGTT
>chr4
CATAAGACACATTGAAGACACCGCCACAGAACTTTACTGCCCTCAAGAGTCTTCTCTCATCTCTGGGATGCCTGTGAGGC

test.bed
chr1 5 10
chr2 10 20
chr2 21 23
chr5 10 20

maskFastaFromBed -fi test.fa -bed  test.bed -fo out.fa -mc N

out.fa
>chr1
TCTCANNNNNATCAGGATCTGGGGCACAGTACAAACCTCAAATGCTGTAGTTGAG
>chr2
GCTATTTCAGNNNNNNNNNNANNGGGTGGGGCGGCACTAGGGCAGCAGCCCGTGCCCGCTGCACTTCCCTTATCGGATTACTGCTTAACTCCCACCCCCTCCTAGGTCCAAAAAGTATACTAATTACATGGA
>chr3
GCAGTACATTCCACAGCATCCTTAGGTGTTGCTCAGAGTCTACCTAACACCTAAGTACAAAAATGAAGCCCTAGGGCAGCCCTAAATGGTTTGTTTCCGCAAAATAGTGATCAACTCAAGTAAACAAGGGTT
>chr4
CATAAGACACATTGAAGACACCGCCACAGAACTTTACTGCCCTCAAGAGTCTTCTCTCATCTCTGGGATGCCTGTGAGGC
となるはず。 bedは定義がstartの数字を含まないので5と書いてあれば6文字目を示しendは10と書いてあれば10文字目を示す事に注意する。

2014年7月24日木曜日

マップしなかったリード・マップしたリード・ユニークなリードの数え方

bowtieが終わったあとに表示される以下の様なリード数が表示されるがこれをあとでコマンドから確認する方法
135582741 reads; of these:
135582741 (100.00%) were unpaired; of these:
22383842 (16.51%) aligned 0 times
61518065 (45.37%) aligned exactly 1 time
51680834 (38.12%) aligned >1 times
83.49% overall alignment rate 
基本的にフラグが立っているのでそれを利用する。
#reads; of these:これはfastQCした結果のhtmlを見るかbowtieにかける前のfastqをwc -lして4で割れば良い。
#aligned 0 times:マップされなかったリード数の表示は
samtools view -cf 4 filename.bam
#マップされたリード数の表示は
samtools view -cF 4 filename.bam
#aligned >1 times:マルチマップされたリード数の表示は
grep 'XS:' ./filename.sam | wc -l
#aligned exactly 1 time:ユニークにマップされたリード数の表示は
マップされたリード数からマルチマップされたリード数を引くか
sed '/XS:/d' Enh1.sam | wc -lとして、全リード数からマルチマップのリードをsamから取り除いた行カウントを行う。その値からsamのheaderのライン数とマップされなかったリード数を引く。
ちなみに、pairをきちんと組んでいるものを抽出するには この組み合わせ
samtools view -S -f 99 -S filename.sam > ./filename.99.sam
samtools view -S -f 147 -S filename.sam > ./filename.147.sam
この組み合わせ
samtools view -S -f 83 -S filename.sam > ./filename.83.sam
samtools view -S -f 163 -S filename.sam > ./filename.163.sam
http://ppotato.wordpress.com/2010/08/25/samtool-bitwise-flag-paired-reads/がわかりやすい。
<<<<<追記>>>>>>
 XS:による方法は非常に限られた状況でのみ成立するっぽいです.
 bowtie2でSEでやった時は少なくともbowtieを走らせたあとの結果と一致しました。
ちなみにPEでやったものを同様に行うと、想定よりも大きい値が出たため、PEにはこの方法は適応できません。
XS:i:<N>
Alignment score for the best-scoring alignment found other than the alignment reported. Can be negative. Can be greater than 0 in --local mode (but not in --end-to-end mode). Only present if the SAM record is for an aligned read and more than one alignment was found for the read. Note that, when the read is part of a concordantly-aligned pair, this score could be greater than AS:i. ってbowtie2のmanualに記載があるけれどよくわかりません( TДT)

SE/PEどちらの場合も、よくいわれるNH:i:のフラグはbowtie2では立ちませんでした。MAPQの値で行う事も出来ませんでした。

確実にmulti alignを取り除く方法知っている方いたら教えてくださいm(_ _ )m

Trimmomatic

だいぶ慣れてきたので、インストールの仕方よりもツールの使い方をメインに記載するかな。 アダプタートリマーツールであり、クリーニングも出来るTrimmomatic (http://www.usadellab.org/cms/?page=trimmomatic) 使い方としては、デフォルトにadoptersにいくつか入っているが、適当に自作してよい。例えば、Truseq4-SE.faとして
>TruSeq_v1v2_Index12Adapter
GATCGGAAGAGCACACGTCTGAACTCCAGTCACCTTGTAATCTCGTATGCCGTCTTCTGCTTG
TruSeq_v1v2_UniversalAdapter
AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT
というファイルを作って、以下のコマンドを叩く。
java -jar Trimmomatic-0.32/trimmomatic-0.32.jar SE \
-threads 8 -phred33 \
-trimlog ./DNseqE14.log.txt \
 ./DNseqE14.fastq \
 ./trimmomatic/DNseqE14.trim.fastq \
 ILLUMINACLIP:../../../../../local/Trimmomatic-0.32/adapters/TruSeq4-SE.fa:2:40:15 \
 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:20
ILLUMINACLIP自体がアダプタートリム。その他はクオリティ値でトリム。 ペアエンドの時は少し書き方が異なるがhttp://www.usadellab.org/cms/?page=trimmomaticに参考例の記載がある。
このツールはシーケンスするフラグメントが非常に短い時にインサートを突き抜けてアダプターもシーケンスしてしまった時の除去に非常に有効なツール

2014年5月18日日曜日

ChIPpeakAnnoのTSSデータを追加する

ChIPpeakAnnoはデフォルトでいくつかのTSSデータが入っている (R-version/library/ChIPpeakAnno/data)
今回はデフォルトにはない、酵母のTSSの情報を得るのが目的

既にbiomaRtがインストールされている前提で、R上で以下のコマンドを入力
mart1 = useMart(biomart="ensembl")
listDatasets(mart1)
とするとリストがでてくる。
13番目にscerevisiae_gene_ensemblがある。

sacCer3= useMart(biomart="ensembl", datset="scerevisiae_gene_ensembl")
TSS.scerevisiae.sacCer3 = getAnnotation(mart=sacCer3, featureType="TSS")
として、
ls()とすると
mart1
TSS.mouse.sacCer3
sacCer3
となるので
rm('mart1')
rm('sacCer3')
として、TSS.mouse.sacCer3のみの状態にしてから
save(list=ls(), file = "./TSS.scerevisiae.sacCer3.rda")
Rを終了させて、カレントディレクトリでlsするとTSS.scerevisiae.sacCer3.rdaがあるのでこれを
/PATH/TO/R-version/library/data/
以下にコピーすれば、デフォルトに入っているマウスやヒトのデータを扱うのと同じように扱えるようになる。