TopHat的使用和错误

TopHat是一款基于python编写的RNA-seq读段剪切拼接定位软件(splice junction mapper),它通过调用高通量短读段比对软件bowtie实现将RNA-seq的读段比对到基因组上,并通过分析mapping的情况来确定外显子之间的剪切与拼接。下面简单记录一下TopHat的使用以及使用中所遇到的错误。

安装与依赖

因为需要调用python和bowtie,因此我们在使用的过程中需要设置好合适的环境变量,以适配不同版本的python和bowtie。因为需要做好不同版本的python的管理,因此推荐在anaconda的环境中安装和运行。目前我发现在python 2.7.15的环境中,最新版TopHat(TopHat 2.1.1 release 2/23/2016)能够正常运行和使用,因此我推荐在此python版本下安装与使用。

安装bowtie2

进入安装了python 2.7.15的conda环境,从anaconda的官网找到安装bowtie2所需要的依赖和代码。

#在conda环境中安装bowtie2
conda install -c bioconda bowtie2

安装TopHat

TopHat的安装有两种方法,一种从源代码进行编译,一种是安装预编译的二进制版本,这里为了节省时间选择安装预编译的版本。从TopHat官网上下载对应平台(linux macos等)的安装压缩包,解压后即可使用。

#从官网下载安装压缩包,解压后即可使用
#linux版本
wget http://ccb.jhu.edu/software/tophat/downloads/tophat-2.1.1.Linux_x86_64.tar.gz
tar -zxvf tophat-2.1.1.Linux_x86_64.tar.gz

TopHat使用脚本

根据上面的描述,很显然我们需要做以下准备:

  1. python 2.7.15的路径
  2. bowtie2的路径
  3. 基因组文件(bowtie2 index)
  4. 基因组注释文件

python和bowtie2的路径其实都在conda environment的bin文件夹下,基因组文件需要使用bowtie2预先处理基因组文件得到相应的index,代码如下。

# Building a small index
bowtie2-build example/reference/lambda_virus.fa example/index/lambda_virus

需要注意的是,lambda_virus是生成bowtie2index的前缀。bowtie2-build总共会生成一组6个文件,并以设定的前缀进行命名,下面以hg19前缀举例。

-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 914M Dec  3  2019 hg19.1.bt2
-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 683M Dec  3  2019 hg19.2.bt2
-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 3.3K Dec  3  2019 hg19.3.bt2
-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 683M Dec  3  2019 hg19.4.bt2
-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 914M Dec  3  2019 hg19.rev.1.bt2
-rw-rw-r-- 1 lch3000_pkuhpc lch3000_pkuhpc 683M Dec  3  2019 hg19.rev.2.bt2

下面简单给出我使用的TopHat脚本,可以根据需要进行相应的修改。

#!/bin/bash

#python path
export PATH=/lustre1/lch3000_pkuhpc/sunym/envs/analyse/bin:$PATH
export PYTHONPATH=/lustre1/lch3000_pkuhpc/sunym/envs/analyse/lib/python2.7
export PATH=$HOME/.local/bin:$PATH
export PYTHON_EGG_CACHE=
#bowtie2 path
export PATH=/lustre1/lch3000_pkuhpc/sunym/envs/analyse/bin:$PATH
#tophat path
export PATH=/lustre1/lch3000_pkuhpc/sunym/software/tophat-2.1.1.Linux_x86_64:$PATH

tophat -G /lustre1/lch3000_pkuhpc/liuyt/genome/Homo_sapiens/UCSC/hg19/Annotation/Archives/archive-2014-06-02-13-47-56/Genes/genes.gtf \
       -p 20 \
       -o /lustre1/lch3000_pkuhpc/sunym/denglab/data/RNA-Seq-200819/tophat/CD8-_FRAS202381493-1r_thout \
       /lustre1/lch3000_pkuhpc/liuyt/genome/Homo_sapiens/UCSC/hg19/Sequence/Bowtie2Index/genome \
       /lustre1/lch3000_pkuhpc/sunym/denglab/data/RNA-Seq-200819/cleanData/CD8-_FRAS202381493-1r_1.clean.fq.gz \
       /lustre1/lch3000_pkuhpc/sunym/denglab/data/RNA-Seq-200819/cleanData/CD8-_FRAS202381493-1r_2.clean.fq.gz

PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。-p参数表示线程数,-o参数表示输出目录。

TopHat错误

今天在运行TopHat的时候遇到了下面的报错。

(base) [email protected]:tophat-2.1.1.Linux_x86_64$tophat
  File "/lustre1/lch3000_pkuhpc/liuyf/app/tophat-2.1.1.Linux_x86_64/tophat", line 1003
    except getopt.error, msg:
                       ^
SyntaxError: invalid syntax

显示python语法错误,可以看下当前默认的python版本。

(base) [email protected]:tophat-2.1.1.Linux_x86_64$python
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到默认python为3.7.3的版本,python的新版往往存在不支持旧版或者不兼容旧版语法的情况。切换到我自己配置的环境中看一下。

(base) [email protected]:tophat-2.1.1.Linux_x86_64$source activate /lustre1/lch3000_pkuhpc/sunym/envs/analyse/
(analyse) [email protected]:tophat-2.1.1.Linux_x86_64$python
Python 2.7.15 | packaged by conda-forge | (default, Jul  2 2019, 00:39:44) 
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
(analyse) [email protected]gin05:tophat-2.1.1.Linux_x86_64$tophat --help
tophat: 
TopHat maps short sequences from spliced transcripts to whole genomes.

Usage:
    tophat [options] <bowtie_index> <reads1[,reads2,...]> [reads1[,reads2,...]] \
                                    [quals1,[quals2,...]] [quals1[,quals2,...]]

这样就解决了这个问题,TopHat需要在特定的python版本下运行,而在高版本的python环境中则会出现语法错误。当然,我们也可以直接修改TopHat程序内的python解释器。

vi tophat

可以看到tophat默认使用当前环境中的python。

#!/usr/bin/env python

# encoding: utf-8
"""
tophat.py

Created by Cole Trapnell on 2008-12-25.
Copyright (c) 2008 Cole Trapnell. All rights reserved.
Updated and maintained by Daehwan Kim and Geo Pertea since Jul 2010.
"""

我们指定新的python路径。

#!/lustre1/lch3000_pkuhpc/sunym/envs/analyse/bin/python

# encoding: utf-8
"""
tophat.py

Created by Cole Trapnell on 2008-12-25.
Copyright (c) 2008 Cole Trapnell. All rights reserved.
Updated and maintained by Daehwan Kim and Geo Pertea since Jul 2010.
"""

指定了我conda环境中的python,接下来退出conda环境,在默认环境中运行tophat试试。

(base) [email protected]:tophat-2.1.1.Linux_x86_64$tophat
tophat: 
TopHat maps short sequences from spliced transcripts to whole genomes.

Usage:
    tophat [options] <bowtie_index> <reads1[,reads2,...]> [reads1[,reads2,...]] \
                                    [quals1,[quals2,...]] [quals1[,quals2,...]]

同样也能正常使用。OK,今天的分享和记录就到这里。

参考链接

http://blog.sina.com.cn/s/blog_6c9eaa1501014x4z.html

点赞

发表评论