これと同時に、TSS のリストをまとめてグラフ化(ヒートマップや平均値の線グラフ)する要件もあるので、以下の手順を実行する。
awk で max のカラムを作った後、SQL 一発で処理する場合:
SELECT DISTINCT
*
FROM (
SELECT
c2 || c3 || c4 AS id
, c7, c8, c9, c10, c11, c12, c13, c14
, c15, c16, c17, c18, c19, c20, c21
, c22, c23, c24, c25, c26, c27
FROM
t1
ORDER BY c1 DESC
LIMIT 100
)
各 TSS について、-50~50 bp には −250~250 bp に始まりがあるリードの数が表示される。
100 ずつスライドの場合は、50~150 bp には −150~350 bp のリード数、といった要領。
ZIP されたディレクトリが出力される。ここには TSS 毎に別々の bedgraph ファイルが入っていて、それらはファイルサイズが小さいので bigwig に変換することなく IGV で読み込める。
ファイルを別々にしない場合、領域が重なっている別の TSS のウィンドウをどう扱うかという問題が生じてしまうので、このようにした。
BAM はアップロード時にバックグラウンドで BAM Index が作成されるので、その BAM Index を使えるようにする
XML でこのように記述しておくと、スクリプトで input.bam と input.bai をそれぞれ参照できるようになる。
参照: https://biostar.usegalaxy.org/p/10128/
shell の場合はこう書いてもよいが:
<command interpreter="shell">
<![CDATA[
ln -s $input1 input.bam &&
ln -s $input1.metadata.bam_index input.bai &&
..
]]>
</command>
perl の場合はこんな感じにしておいて:
<command interpreter="perl">
count_reads.pl $bam_file $bam_file.metadata.bam_index ..
</command>
perl スクリプトでシンボリックリンクを作成する:
system "ln -s $bam $tmp";
system "ln -s $bai $tmp.bai";