Cufllinks的安装与使用

一. 简介

Cufflinks下主要包含cufflinks,cuffmerge,cuffcompare和cuffdiff等几支主要的程序。主要用于基因表达量的计算和差异表达基因的寻找。

二. 安装

Cufflinks下载网页
1. 为了安装Cufflinks,必须有Boost C++ libraries。下载Boost并安装。默认安装在/usr/local。

$ tar jxvf boost_1_53_0.tar.bz2
$ cd boost_1_53_0
$ ./bootstrap.sh
$ sudo ./b2 install

2.安装SAM tools。

下载SAM tools。
$ tar jxvf samtools-0.1.18.tar.bz2
$ cd samtools-0.1.18
$ make
$ sudo su 
# mkdir /usr/local/include/bam
# cp libbam.a /usr/local/lib
# cp *.h /usr/local/include/bam/
# cp samtools /usr/bin/

3. 安装 Eigen libraries。

下载Eigen
$ tar jxvf 3.1.2.tar.bz2
$ cd eigen-eigen-5097c01bcdc4
$ sudo cp -r Eigen/ /usr/local/include/

4. 安装Cufflinks。

$ tar zxvf cufflinks-2.0.2.tar.gz
$ cd cufflinks-2.0.2
$ ./configure --prefix=/path/to/cufflinks/install --with-boost=/usr/local/ --with-eigen=/usr/local/include//Eigen/
$ make
$ make install

5. 可以直接下载Linux x86_64 binary。不需要上述繁琐步骤,解压后的程序直接可用。

三. Cufflinks的使用

1. Cufflinks简介

Cufflinks程序主要根据Tophat的比对结果,依托或不依托于参考基因组的GTF注释文件,计算出(各个gene的)isoform的FPKM值,并给出trascripts.gtf注释结果(组装出转录组)。

2. 使用方法

$ cufflinks [options]* <aligned_reads.(sam/bam)>

一个常用的例子:
$ cufflinks -p 8 -G transcript.gtf --library-type fr-unstranded -o cufflinks_output tophat_out/accepted_hits.bam

3. 普通参数

-h | --help
-o | --output-dir <sting>  default: ./
    设置输出的文件夹名称

-p | --num-threads  default: 1
    用于比对reads的CPU线程数

-G | --GTF <reference_annotation.(gtf/gff)>
    提供一个GFF文件,以此来计算isoform的表达。此时,将不会组装新的transcripts,
程序会忽略和reference transcript不兼容的比对结果

-g | --GTF-guide <reference_annotation.(gtf/gff)>
    提供GFF文件,以此来指导转录子组装(RABT assembly)。此时,输出结果会包含ref
erence transcripts和novel genes and isforms。

-M | --mask-file <mask.(gtf/gff)>
    提供GFF文件。Cufflinks将忽略比对到该GTF文件的transcripts中的reads。该
文件中常常是rRNA的注释,也可以包含线立体和其它希望忽略的transcripts的注释。将这
些不需要的RNA去除后,对计算mRNA的表达量是有利的。

-b | --frag-bias-correct <genome.fa>
    提供一个fasta文件来指导Cufflinks运行新的bias detection and correct
ion algorithm。这样能明显提高转录子丰度计算的精确性。

-u | --multi-read-correct
    让Cufflinks来做initial estimation步骤,从而更精确衡量比对到genome多个
位点的reads。

--library-type  default:fr-unstranded
    处理的reads具有链特异性。比对结果中将会有个XS标签。一般Illumina数据的lib
rary-type为 fr-unstranded。

4. 丰度评估参数

-m | --frag-len-mean default: 200
插入片段的平均长度。不过现在Cufflinks能learns插入片段的平均长度,因此不推荐自主
设置此值。

-s | --frag-len-std-dev default: 80
插入片段长度的标准差。不过现在Cufflinks能learns插入片段的平均长度,因此不推荐自
主设置此值。

-N | --upper-quartile-form
使用75%分为数的值来代替总的值(比对到单一位点的fragments的数值),作normal
ize。这样有利于在低丰度基因和转录子中寻找差异基因。

--total-hits-norm default: TRUE
Cufflinks在计算FPKM时,算入所有的fragments和比对上的reads。和下一个参数
对立。默认激活该参数。

--compatible-hits-norm 
Cufflinks在计算FPKM时,只针对和reference transcripts兼容的fragmen
ts以及比对上的reads。该参数默认不激活,只能在有 --GTF 参数下有效,并且作 RABT
或 ab initio 的时候无效。

5. 组装常用参数

-L | --label  default: CUFF
    Cufflink以GTF格式来报告转录子片段(transfrags),该参数是GTF文件的前缀

--min-frags-per-transfrag <int>  default: 10
    组装出的transfrags被支持的RNA-seq的fragments数少于该值则不被报道。

--min-intron-length <int>  default: 50
    最小的intron大小。

--overlap-radius <int>  default: 50
    Transfrags之间的距离少于该值,则将其连到一起。

6. Cufflinks输出结果

1. transcripts.gtf
该文件包含Cufflinks的组装结果isoforms。前7列为标准的GTF格式,最后一列为attributes。其每一列的意义:

列数   列的名称  例子         描述
1     序列名    chrX        染色体或contig名
2     来源      Cufflinks   产生该文件的程序名
3     类型      exon        记录的类型,一般是transcript或exon
4     起始      1           1-base的值
5     结束      1000        结束位置
6     得分      1000        
7     链        +          Cufflinks猜测isoform来自参考序列的那一条链,
一般是'+','-'或'.'
8     frame    .           Cufflinks不去预测起始或终止密码子框的位置
9     attributes  ...      详见下

每一个GTF记录包含如下attributes:

Attribute      例子       描述
gene_id        CUFF.1    Cufflinks的gene id
transcript_id  CUFF.1.1  Cufflinks的转录子 id
FPKM           101.267   isoform水平上的丰度, Fragments Per Kilobase
 of exon model per Million mapped fragments
frac           0.7647    保留着的一项,忽略即可,以后可能会取消这个
conf_lo        0.07      isoform丰度的95%置信区间的下边界,即 下边界值 =
 FPKM * ( 1.0 - conf_lo )
conf_hi        0.1102    isoform丰度的95%置信区间的上边界,即 上边界值 =
 FPKM * ( 1.0 + conf_hi )
cov            100.765   计算整个transcript上read的覆盖度
full_read_support   yes  当使用 RABT assembly 时,该选项报告所有的intr
ons和exons是否完全被reads所覆盖

2. ispforms.fpkm_tracking
isoforms(可以理解为gene的各个外显子)的fpkm计算结果
3. genes.fpkm_tracking
gene的fpkm计算结果

四. Cuffmerge的使用

1. Cuffmerge简介

Cuffmerge将各个Cufflinks生成的transcripts.gtf文件融合称为一个更加全面的transcripts注释结果文件merged.gtf。以利于用Cuffdiff来分析基因差异表达。

2. 使用方法

$ cuffmerge [options]* <assembly_GTF_list.txt>
输入文件为一个文本文件,是包含着GTF文件路径的list。常用例子:
$ cuffmerge -o ./merged_asm -p 8 assembly_list.txt

3. 使用参数

-h | --help
-o <output_dir> default: ./merged_asm
将结果输出至该文件夹。

-g | --ref-gtf
将该reference GTF一起融合到最终结果中。

-p | --num-threads <int> defautl: 1
使用的CPU线程数

-s | --ref-sequence <seq_dir>/<seq_fastq>
该参数指向基因组DNA序列。如果是一个文件夹,则每个contig则是一个fasta文件;如果是
一个fasta文件,则所有的contigs都需要在里面。Cuffmerge将使用该ref-sequence来
帮助对transfrags分类,并排除repeats。比如transcripts包含一些小写碱基的将归类
到repeats.

4. Cuffmerge输出结果

输出的结果文件默认为 <output_dir>/merged.gtf

五. Cuffcompare的使用

1. Cuffcompare简介

Cuffcompare使用Cufflinks的GTF结果,对GTF结果进行比较。和reference gtf比较寻找novel转录子等。

2. Cuffcompare的使用方法

$ cuffcompare [options]* <cuff1.gtf> [cuff2.gtf] ... [cuffN.gtf]

使用例子:
$ cuffcompare -o cuffcmp cuff1.gtf cuff2.gtf

3. 使用参数

-h
-V
-o <outprefix> default: cuffcmp
输出文件的前缀

-r <reference_mrna.gtf>
参考的GFF文件。用来评估输入的gtf文件中gene models的精确性。每一个输入的gtf的is
oforms将和该参考文件进行比较,并被标注为 overlapping, matching 或 novel。

-R
当有了 -r 参数时,指定该参数时,将忽略参考GFF文件中的一些transcripts。这些tran
scripts不和任何输入的GTF文件overlapped。

-s <seq_dir>/<seq_fastq>
该参数指向基因组DNA序列。如果是一个文件夹,则每个contig则是一个fasta文件;如果是
一个fasta文件,则所有的contigs都需要在里面。小写字母的碱基用来将相应的transcri
pts作为repeats处理。

4. 输出结果

在当前目录下输出3个文件:<coutprefix>.stats,<coutprefix>.combined.gtf 和 <coutprefix>.tracking; 在输入的GTF的同目录下输出<cuff_in>.refmap 和 <cuff_in>.tmap 文件。

六. Cuffdiff的使用

1. Cuffdiff简介

用于寻找转录子表达的显著性差异。

2. Cuffdiff使用方法

$ cuffdiff [options]* <transcripts.gtf> <sample1_1.sam[,...,sample1_M.sam]> <sample2_1.sam[,...,sample2_M.sam]>...[sampleN_1.sam[,...,sampleN_M.sam]]
其中transcripts.gtf是由cufflinks,cuffcompare,cuffmerge所生成的文件,或是由其它程序生成的。

一个常用例子:
$ cuffdiff --lables lable1,lable2 -p 8 --time-series --multi-read-correct --library-type fr-unstranded --poisson-dispersion transcripts.gtf sample1.sam sample2.sam

3. 使用参数

-h | --help
-o | --output-dir <sting> default: ./
输出的文件夹目录。
-L | --lables <lable1,lable2,...,lableN>  default: q1,q2,...qN
给每个sample一个样品名

-p | --num-threads <int> default: 1
使用的CPU线程数

-T | --time-series
让Cuffdiff来按样品顺序来比对样品,而不是对所有的samples都进行两两比对。即第二个
SAM和第一个SAM比;第三个SAM和第二个SAM比;第四个SAM和第三个SAM比...

-N | --upper-quartile-form
使用75%分为数的值来代替总的值(比对到单一位点的fragments的数值),作normalize。
这样有利于在低丰度基因和转录子中寻找差异基因。

--total-hits-norm default: TRUE
Cufflinks在计算FPKM时,算入所有的fragments和比对上的reads。和下一个参数对立。
默认激活该参数。

--compatible-hits-norm
Cufflinks在计算FPKM时,只针对和reference transcripts兼容的fragments以及
比对上的reads。该参数默认不激活,只能在有 --GTF 参数下有效,并且作 RABT 或 ab
 initio 的时候无效。

-b | --frag-bias-correct
提供一个fasta文件来指导Cufflinks运行新的bias detection and correction 
algorithm。这样能明显提高转录子丰度计算的精确性。

-u | --multi-read-correct
让Cufflinks来做initial estimation步骤,从而更精确衡量比对到genome多个位点
的reads。

-c | --min-alignment-count <int>  default: 10
如果比对到某一个位点的fragments数目少于该值,则不做该位点的显著性分析。认为该位点
的表达量没有显著性差异。

-M | --mask-file <mask.(gtf/gff)>
提供GFF文件。Cufflinks将忽略比对到该GTF文件的transcripts中的reads。该文件中
常常是rRNA的注释,也可以包含线立体和其它希望忽略的transcripts的注释。将这些不需
要的RNA去除后,对计算mRNA的表达量是有利的。

-FDR <float> default: 0.05
允许的false discovery rate.

--library-type default:fr-unstranded
处理的reads具有链特异性。比对结果中将会有个XS标签。一般Illumina数据的library-
type为 fr-unstranded。

-m | --frag-len-mean default: 200
插入片段的平均长度。不过现在Cufflinks能learns插入片段的平均长度,因此不推荐自主
设置此值。

-s | --frag-len-std-dev default: 80
插入片段长度的标准差。不过现在Cufflinks能learns插入片段的平均长度,因此不推荐自
主设置此值。

--poisson-dispersion
Use the Poisson fragment dispersion model instead of learning one 
in each condition.

4. Cuffdiff输出

1. FPKM tracking files
2. Count tracking files
3. Read group tracking files
4. Differential expression test
5. Differential splicing tests – splicing.diff
6. Differential coding output – cds.diff
7. Differential promoter use – promoters.diff
8. Read group info – read_groups.info
9. Run info – run.info

七. cufflinks使用中遇到的问题

1. 使用cuffdiff时候,在最新版本下,无重复的RNA-seq样作比较,结果中没有差异表达基因?
在v2.0.1及之后的版本中cuffdiff貌似不支持无重复的RNA-seq数据了。使用之前的版本即可。

11 thoughts on “Cufllinks的安装与使用

  1. Pingback引用通告: Quake的安装和使用 | 宠辱不惊,一心问学!

  2. 您好问一下我用cuffmerge -g genes.gtf -s genome.fa -p 8 assemblies.txt 时,报错
    Traceback (most recent call last):
    File “./../bin/cuffmerge”, line 580, in
    sys.exit(main())
    File “./../bin/cuffmerge”, line 509, in main
    args = params.parse_options(argv)
    File “./../bin/cuffmerge”, line 98, in parse_options
    self.system_params.parse_options(opts)
    File “./../bin/cuffmerge”, line 66, in parse_options
    self.threads = int(value)
    ValueError: invalid literal for int() with base 10: ‘assemblies.txt’
    是哪里出错了? 谢谢

      • 楼主,你好!
        我在运行cuffmerge时也出现了这个问题,而且,我是批量处理了6对样本,其中2对报错,另外4对正常;请问这会是什么原因呢?该如何去解决?

  3. 你好,cufflinks可以对以sam格式储存比对结果进行组装,你的博客也提及到cufflinks可以组装tophat的输出结果,通过cufflinks说明,我们可以知道它支持别的比对软件的输出的结果,比如bwa。我目前不清楚的是不同软件输出的比对结果不是一致,尽管都是以sam格式储存,但是各个软件输出的结果在sam里面却是不一致的,比如,一个read能比对到多个位置上,在tophat输出的sam里包含着每个比对位置的信息,并且有NH:i:5类型的tag描述比对次数的,有的软件对于1个read比对到多处,只随机输出1次,另外还有的比对软件支持clip alignment,这个软件输出的sam里的‘CIGAR’对应列会有‘S’字符,据我所知tophat中的’CIGAR’是没有’S’字符的。我目前不太清楚cufflinks是否能正确处理各种软件输出与tophat不同编码比对信息形式sam文件吗,迫切的想了解清楚,因为这涉及到cufflinks能否正确对基因和转录本进行准确定量的问题?不知道你知道这方面的信息,希望不吝赐教,谢谢!

  4. 博主师兄您好, 我刚开始学习RNA-seq数据分析,楼主的文章给我收获很多,谢谢。 有几个问题想请教。
    我根据12年Nature Protocol 的文章,用Tophat和cufflinks处理数据。
    1. 我的数据是细菌,基因组是刚测序完的草图。自己根据网上的格式介绍尝试做了一个.gtf 的文件,做Tophat时,发现警告“Warning: TopHat did not find any junctions in GTF file”。不知是.gtf 弄错了,还是细菌本来就没有junction.
    我的gtf是这样的:
    scaffold1 major CDS 93 3254 . – 0 gene_id “orf00001”; transcript_id “transcript_orf00001”;
    scaffold1 major exon 93 3254 . – 0 gene_id “orf00001”; transcript_id “transcript_orf00001”;
    scaffold1 major CDS 93 3254 . – 0 gene_id “orf00001”; transcript_id “transcript_orf00001”;
    scaffold1 major start_codon 93 95 . – 0 gene_id “orf00001”; transcript_id “transcript_orf00001”;
    scaffold1 major stop_codon 3252 3254 . – 0 gene_id “orf00001”; transcript_id “transcript_orf00001”;

    2. Cufflinks的结果里只有FPKM,如果想要RPKM用什么软件做呢?还是cufflinks能算RPKM 只是我没找到。我看了manual,找不到北。

    3. 我每个条件只有一组RNAseq, 没做生物重复。cuffdiff 能做出结果,但是这样的结果能用吗? 有没有其他软件能做? (你文中说“结果中没有差异表达基因”)

    • 1.细菌本来就没有junction。junction是对于真核生物含有内含子的基因来说的。
      2.Cufflinks应该是不能用于计算RPKM的,现在公认的是FPKM,RPKM算是过时的。
      3.没有生物重复,则需要使用cufflinks 2.0版本的。高版本貌似必须有重复。

  5. 你好!刚接触RNA-seq,想问个cuffdiff的问题:如果我有8个样本,4个正常,4个疾病,应设置什么参数比较这两类样本获得差异基因的FPKM。结合您上面详细的说明和manual,只发现了依次与前一个样本比较的参数,设置-L参数(-L c1,c1,c1,c1,c2,c2,c2,c2)指明要做比较的两类样本对吗 ?我尝试了一下但是我运行的有错误,不知道该设成什么了。
    多谢指教!

  6. 您好,请问一下安装cufflinks 报错checking for bamlib… configure: error: We could not detect the bam libraries (version or higher). If you have a staged bam library (still not installed) please specify $BAM_ROOT in your environment and do not give a PATH to –with-bam option. If you are sure you have bam installed, then check your version number looking in . See http://randspringer.de/bam for more documentation. 该如何解决呢?

    • 下载二进制版本的cufflinks,解压缩文件后直接得到可执行的程序文件,直接运行即可。不需要编译,更加方便。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据