- 很接近bowtie2与bwa
1. 基本流程
1.1. 建立参考基因组
hisat2-build
可为UCSC、NCBI、Ensembl等来源的fasta文件,多个文件以逗号分隔
1.2. 比对样本reads
hisat2
输出为SAM文件
1.3. 下游SAMtools/BCFtools分析
samtools view将SAM转化为BAM
samtools sort将BAM转化为sorted BAM
sorted BAM方便长期储存
samtools mpileup,bcf view产生VCF文件
2. 安装搭建
下载链接:
HISAT2:Download | HISAT2 (daehwankimlab.github.io)
NCBI-NGS:https://github.com/ncbi/ngs/wiki/Downloads
- 下载后解压,转到当前目录后make
- HISTAT2可直接支持sra数据,需要安装NCBI-NGS,make并设置参数如下:
make USE_SRA=1 NCBI_NGS_DIR=/path/to/NCBI-NGS-directory NCBI_VDB_DIR=/path/to/NCBI-NGS-directory
- 将一下所有路径添加进PATH:hisat2, hisat2-align-s, hisat2-align-l, hisat2-build, hisat2-build-s, hisat2-build-l, hisat2-inspect, hisat2-inspect-s and hisat2-inspect-l
3. 函数的书写
一些选项的参数不是常数,而是输入一个函数。所以有特定的函数表达方式如下:
参数:F、常数:C、系数:A
函数类型:L线性、C常数、S平方根、G log
示例:L,-0.4,-0.6等同于f(x) = -0.4 + -0.6 * x、G,1,5.4等同于f(x) = 1.0 + 5.4 * ln(x)
4. indexer
短于4 billion nucleotides的参考序列,建立32-bit的small index,扩展名.ht2
较长时,建立64-bit的large index,扩展名.ht2l
wrapper scripts会自动区分处理两种index
running time 和 memory usage之间的平衡-p/--packed, --bmax/--bmaxdivn, 和 --dcv
hisat2-build会自动选择时间和内存的平衡点,-a/--noauto可取消
4.1. 主要参数
-f:<reference_in>:逗号分隔的fasta文件,-c输入序列
<ht2_base>:indexer输出文件
4.2. 其他参数
- 涉及很多比对原理
--large-index:强制作large index
-a/--noauto:自动选择下面两个参数
--bmax:一个格子里更多序列
--bmaxdivn:一个格子里更多参考组百分比
--dcv:difference-cover sample,越大,占内存越小,索引更慢
--nodc:difference-cover sample关闭
-r/--noref:不创建NAME.3.ht2 and NAME.4.ht2,bitpacked参考序列,主要用于双末端比对
-3/--justref:只创建NAME.3.ht2 and NAME.4.ht2
-o/--offrate:在不同的基因位置做标记,越大速度越快,内存占的越大。默认4
-t/--ftabchars:为基因位置作ftab,越大速度越快,内存越大。默认10
--localoffrate:为local index做标记
--localftabchars:为local index作ftab
-p:多线程,默认1
--snp:提供snp信息(HISAT2自建的格式) - 网站提供了脚本从dbSNP file和 VCF file提取
--haplotype:提供haplotype信息(HISAT2自建的格式),上述脚本也可用
--ss:提供splice site信息(HISAT2自建的格式) - 提供了脚本从GTF文件提取splice sites
--exon:提供exons信息(HISAT2自建的格式) - 提供了脚本从GTF文件提取exons
--seed
--cutoff:忽略参考组的前几个碱基
-q/--quiet:只报错
-h/--help:Print usage information and quit.
--version:Print version information and quit.
5. 比对
HISAT2默认会soft-clip,即将一些5端与3端的碱基惩罚降低。
--sp设置惩罚值,--no-softclip可取消soft-clip
5.1. 主要参数(输入与输出)
-x:index file 不需加后缀
-1:read1 需要后缀
-2:read2
-U:unpaired reads
--sra-acc:sra accession number
-S:SAM output
5.2. 输入参数
-q:输入是fastq
-qseq:输入是qseq文件
-f:fasta文件
-r:一个序列一个文件
-c:命令行直接输入,逗号分隔序列
-s/--skip:跳过一定reads
-u:仅比对一定reads
-5:5端切碱基
-3:3端切碱基
--phred33:碱基质量格式
--phred64:碱基质量格式
--solexa-quals:Solexa转为phred
--int-quals:数字格式质量分数
5.3. 比对参数
--n-ceil:输入函数,根据read长度设置N上限,默认L,0,0.15
--ignore-quals:计算mismatch惩罚时,默认忽视该碱基的质量分数
--nofw/--norc:
5.4. 评分参数
--mp MX,MN:惩罚分数,默认6,2
--sp MX,MN:soft-clip惩罚分数,默认2,1
--no-softclip:
--np:N惩罚,默认1
--rdg:read gap和extend惩罚,默认Default: 5, 3
--rfg:reference gap和extend惩罚,默认5, 3
--score-min: 输入函数,根据read长度设置valid比对的下限,默认L,0,-0.2
- bowtie2写的比较详细,建议去看一下
5.5. 剪切点(splice sites)惩罚
5.6. 报告参数
-k:报告k个比对序列,值得注意的是HISAT2的匹配并非匹配到最优匹配,仅仅是找到较合适的匹配
--max-seeds:seed-and-extend approaches,越大,运行越慢。默认值时maximum of 5 and -k为2
-a/--all:报告所有比对结果,等同于--max-seeds、-k均设置为最大值
5.7. 双末端
-I/--minins:最短匹配长度
-X/--maxins:最长匹配长度,与-X差别越大,运行越慢,因为需要更细致的比对
--fr/--rf/--ff:定义双末端匹配方式,--fr为默认,较适合Illumina
--no-mixed:默认若找不到paired匹配,则为单末端寻找匹配,该选项可取消
--no-discordant:默认为双末端各自寻找匹配,该选项可取消
5.8. 输出参数
-t/--time:输出wall-clock time
--un, --un-gz, --un-bz2:输出unpaired reads
--al, --al-gz, --al-bz2:输出unpaired reads that align at least once
--un-conc,--un-conc-gz,--un-conc-bz2:输出paired-end reads that fail to align concordantly
--al-conc,--al-conc-gz,--al-conc-bz2:输出paired-end reads that align concordantly at least once
--quiet:不输出
--summary-file:alignment summary
--new-summary:alignment summary in a new style, which is more machine-friendly
--met-file
--met-stderr
--met
5.9. SAM参数
--no-unal:不输出没比对上的序列
--no-hd:不输出header
--no-sq:不输出@SQ header
--rg-id:SAM添加@RG header
--rg:添加@RG header
--remove-chrname:去除‘chr’这三个字母
--add-chrname
--omit-sec-seq
5.10. 运行参数
-p:多线程
--reorder:SAM ordered,会导致跑得慢
--mm:Use memory-mapped I/O to load the index, rather than typical file I/O
--seed:pseudo-random number generator,默认0
--version:Print version information and quit.
-h/--help:Print usage information and quit.
6. index inspector
提取index的信息,以及参考组信息
-a/--across:每行多少个碱基
-n/--names:输出参考序列名
-s/--summary:输出参考序列信息
--snp:Print SNPs, and quit.
--ss:Print splice sites, and quit.
--ss-all:Print splice sites including those not in the global index, and quit.
--exon:Print exons, and quit.
-v/--verbose:Print verbose output (for debugging).
--version:Print version information and quit.
-h/--help:Print usage information and quit.