文章目录
IGV——基因组可视化
Integrative Genomics Viewer (IGV) 是一种高性能、易于使用的交互式工具,用于对基因组数据进行可视化探索。IGV 支持所有常见类型的基因组数据和metadata的灵活集成,且支持各种各式的大型数据集的可视化,包括二代测序,芯片测序数据和基因组数据等。例如,查看转录组数据不同区域的Reads丰度,不同样本的基因表达差异,查找SNP位点,查看甲基化,查看基因结构信息。
官网:https://igv.org/doc/desktop/#QuickStart/
安装
IGV 可以直接下载到带桌面图像的 MAC,Linux 或 Windows 系统的本地电脑直接使用,一般情况下本地电脑即可通过简单图形界面完成 IGV 可视化,如果数据量过大,可以考虑在服务器安装,在本地查看图形界面。
下载地址:https://igv.org/doc/desktop/#DownloadPage/
方式一:服务器(Linux)安装,本地使用
(1)服务器安装与配置
考虑到大部分生信数据分析都基于服务器完成且文件较大下载到本地可能存在空间不足的问题,此处可以直接在服务器上完成安装,再配合 Jupyter 使用,建立 FTP 来通过 url 访问,即可以把可视化图像转到本地电脑屏幕。
wget https://data.broadinstitute.org/igv/projects/downloads/2.18/IGV_Linux_2.18.2_WithJava.zip
unzip IGV_Linux_2.18.2_WithJava.zip
bash igv.sh # 可能会报错 No X11 DISPLAY variable was set,但是不影响
# 使用本地屏幕可视化,需要搭配 Java11 使用
wget https://download.java.net/java/GA/jdk11/13/GPL/openjdk-11.0.1_linux-x64_bin.tar.gz
tar -xzvf openjdk-11.0.1_linux-x64_bin.tar.gz
# 设置路径
vi ~/.bashrc
# 最后一行添加以下两条命令 (根据你实际的路径)
export PATH=~/tool/jdk11/jdk-11.0.1/bin:$PATH
alias igv='bash ~/tool/igv/IGV_Linux_2.18.2/igv.sh' # 直接使用 igv 即可启用
注意:如果使用 conda 安装 igv 或者 igvtools 会自动搭配安装 java8,即使已经安装 java11 也会被强制修改,而 java8 无法启用 command line 模式。
(2)本地可视化配置(X11 安装)
服务器一般只有命令行无法完成可视化,因此需要在本地搭配可视化屏幕,从而将服务器的显示连到本地电脑上,不同的操作系统有对应不同的视窗系统软件,mac 可以使用 Xquartz,windows 系统可以另外查找和安装视窗系统,最后在服务器中用 igv
启动即可。
- mac 版本:
安装 XQuartz:https://www.xquartz.org/
配置 XQuartz:在 terminal 里修改 /etc/ssh/sshd_config
文件,将 X11Forwarding
参数改为 yes 保存退出后重启电脑激活 service ssh restart
。
如果没有修改权限,可以运行 finder -> 前往 -> 前往文件夹 -> 输入 /private/etc/ssh/
-> 编辑另存 -> 覆盖原来文件 -> 重新启动
打开 XQuartz 后需要进行一些基本配置: 设置
-> 安全性
-> 允许从网络客户端连接
,设置
-> 输入
-> 依照系统键盘布局
。
在 XQuartz 的 xterm 窗口键入 ssh -X username@serverip
即可与服务器连接,再输入 igv
即可实现本地可视化,如果出现 xterm 无法打出 .
的情况可以直接在终端中运行。
注意:此处安装 Xquartz 可能会出现闪退,此处尝试了两种解决方案解决(参考:https://github.com/XQuartz/XQuartz/issues/31),但是速度较慢
# 方案一:在远程计算机中设置环境变量
vi ~/.igv/java_arguments
# 在 ~/.igv/java_arguments 中加入如下内容
-Dsun.java2d.xrender=false
-Dsun.java2d.pmoffscreen=false
-Dremote.x11.workaround=false
-Dawt.useSystemAAFontSettings=lcd
-Dsun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
-Djava2d.font.loadFontConf=true
# 方案二:在终端中直接键入
defaults write org.xquartz.X11 enable_render_extension 0
- windows 版本:
Windows 对应软件有 Xmanager(付费)
、Xming
、VcXsrv Windows X Server
,可自行了解。
使用 Xming
教程:https://blog.csdn.net/akuoma/article/details/82182913?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
方式二:本地(Mac/Windows)安装(推荐)
如果文件较小,建议直接使用本地安装的 IGV 完成可视化,速度较快,下载地址同上,建议下载 Java included 的版本,方便安装,建议最好安装在固态硬盘所在分区,可以提高加载速度。
使用
1. 载入参考基因组和注释
IGV 可以通过工具栏参考基因组物种的选择确定物种,如果没有对应物种,需要自行联网下载,或者使用如下命令构建索引,得到 .fai
的文件。
# conda install -c bioconda samtools
samtools faidx genome.fa
.fai
文件也可以直接使用 igvtools
生成。
后续的载入均可以直接在 IGV 中完成,具体可参考教程:https://blog.csdn.net/lyyaaaaa/article/details/140064114
注意:使用 IGV 自带的基因组可以直接查基因,但自行导入的不行,需要自己搜索。
2. 载入数据
目前支持的格式包括(https://igv.org/doc/desktop/#FileFormats/DataTracks/):
- 序列比对:bam,cram
- 基因组注释:bed,gtf,gff3,psl,bigbed
- 信号数据:wig,bedgraph,bigwig,tdf
- 拷贝数:seg
注意:bam/cram/vcf 文件,需要预先把输入文件 index 处理,bam 文件与 bai 文件放在同一目录下。导入ref,file(bam/cram/vcf),如果需要根据基因名来查的,还需要从 file 途径导入 bed 文件。
(1)bam 文件:将 bam 文件导入 IGV 中,还需要有 bam 文件对应的 bai 文件,因此需要先用 samtools 来生成 bai 索引文件。
for file in `ls *.bam`
do
samtools sort ${file} -o sorted_${file}
samtools index -b sorted_${file}
done
参数说明:
-b
:创建bai索引文件,未指定输出格式时,此参数为默认参数
(2)bigwig 文件:直接把 bam 导入IGV看峰图太慢,如果将 bam 转为 bigWig 格式,文件会小很多,载入也更快,以下提供了 stranded paired-end library
的转化示例,其他具体可参考 https://deeptools.readthedocs.io/en/latest/content/tools/bamCoverage.html。
# conda create -n deeptools
# conda activate deeptools
# conda install -c bioconda deeptools
# conda install -c bioconda samtools
for file in `ls /path/to/*.bam`
do
## For a stranded `paired-end` library
sample=${file/_Aligned.sortedByCoord.out.bam/}
# To get the file for transcripts that originated from the forward strand
samtools view -b -f 128 -F 16 $file > ${sample}_fwd1.bam
samtools view -b -f 80 $file > ${sample}_fwd2.bam
samtools merge -f ${sample}_fwd.bam ${sample}_fwd1.bam ${sample}_fwd2.bam
samtools index ${sample}_fwd.bam
bamCoverage -b ${sample}_fwd.bam -o ${sample}_fwd.bw
rm ${sample}_fwd*.bam
# To get the file for transcripts that originated from the reverse strand
samtools view -b -f 144 $inputdir/$file > ${sample}_rev1.bam
samtools view -b -f 64 -F 16 $inputdir/$file > ${sample}_rev2.bam
samtools merge -f ${sample}_rev.bam ${sample}_rev1.bam ${sample}_rev2.bam
samtools index rev.bam
bamCoverage -b ${sample}_rev.bam -o ${sample}_rev.bw
rm ${sample}_rev*.bam
done
(3)如果在本地可视化,需要将 bam 和 bai 或 bigwig 文件从 linux 系统上传到本地,且放置在同一个文件夹下,如果服务器搭建有 ftp 站点则可以直接使用 url 载入,也可以将数据上传至可以接受外部访问的服务器(如 https://de.cyverse.org/dashboard )上再使用 url 载入,具体可参考教程《通过 url 访问服务器文件》。
# 从 linux 下载数据到本地,由于挂到后台无法输入密码,所以此处选择了直接运行
scp -r -v username@serverip:'/path/*.bam' /Users/Desktop/bam_bai
scp -r -v username@serverip:'/path/*.bam.bai' /Users/Desktop/bam_bai
参数说明:
-r
:循环拷贝文件夹-v
:显示传输详情
3. 可视化
补充
(1)igvtools
-
使用 igvtools 可以将 .bam 文件转换成相应的 .tdf 文件(节省空间),.tdf 文件有其对应的可查看的文本 .wig 文件。
-
使用igvtools命令时要使bam.bai文件(bam的索引文件,可用samtools的index命令建立索引文件)与bam文件在同一个文件夹中
-
BAM和SAM都得按位置排序并索引,排序和索引可以用igvtools完成;参考基因组和SAM/BAM的染色体名称必须一致(很多人很容易忽视这点,导致文件导入后没有图像,只是一条线)
-
一般来说,相比BAM文件,TDF文件会小很多,导入和查看也更快速,可以通过igvtools来生成TDF文件,在较小的分辨率下,bamcoverage 基本和 tdf 无异;但当分辨率较大的时候,bam 是以单碱基存储深度的,而 tdf 是以区域内储存平均深度的。
-
bigWig:和TDF类似,只是统计区间相较于TDF更大。类似的文件还有bedGraph,统计区域比TDF还小。下图展示了三种文件的区别,在小分辨率下几乎没差异,在大分辨率下就会看出细节差异。因此,在文件大小上,bedGraph > TDF > bigwig。一般以bigWig(.bw)上传到数据库。
(2)合并生物学重复
- 方法一:首先对于生物学重复 bam 使用 deeptools 的 multiBamSummary 进行 correlations 统计,相关性系数较好的可以进行bam合并(https://www.jianshu.com/p/7dde995186e2);
- 方法二:使用 IDR 统计一致性较好的 peak 然后 bedtools intersect 合并 peak(https://www.jianshu.com/p/7dde995186e2);
- 方法三:使用 bigWigMerge 合并 BigWig 文件(https://uteric.github.io/Linux/bigwigmerge/)
(3)IGV 图形界面
- 具体可参考保姆级 IGV 基因组浏览器使用指南(图文详解)_igv使用-CSDN博客:https://blog.csdn.net/u011262253/article/details/119442120
参考
- 服务器安装IGV并在本地电脑使用 - 知乎 (zhihu.com):https://zhuanlan.zhihu.com/p/108571232
- 保姆级 IGV 基因组浏览器使用指南(图文详解)igv使用-CSDN博客:https://blog.csdn.net/u011262253/article/details/119442120
- 官方文档:https://igv.org/doc/desktop/#QuickStart/
- linux中IGV的运行, Linux IGV使用说明-CSDN博客:https://blog.csdn.net/weixin_39824801/article/details/116698326
- 学IGV必看的初级教程 | hope (tiramisutes.github.io):https://tiramisutes.github.io/2018/02/05/IGV.html
- ChIP-seq/DAP-seq/ATAC-seq/CUT&Tag结果可视化-IGV使用攻略cuttag测序gain和loss-CSDN博客:https://blog.csdn.net/Igenebook/article/details/136797895