Zcat
Zcat是一个命令行实用程序,用于查看压缩文件的内容,而无需对其进行解压缩。
它将压缩文件扩展为标准输出,使您可以查看其内容。另外,zcat与运行gunzip -c命令完全相同。
-f:要查看普通文件的内容,请使用-f标志,例如,类似于cat命令 。 zcat -f users.list
-l:要获取压缩文件的属性(压缩大小,未压缩大小,比率 - 压缩率(0.0%,如果未知),uncompressed_name(未压缩文件的名称),请使用-l标志。 zcat -l users.list.gz
-V:显示指令的版本信息 。zcat -V
-L:显示软件许可信息。zcat -L
-q:要禁止所有警告,请使用-q标志,如图所示。zcat -q users.list.gz
man zcat:查看zcat的相关信息。man zcat
zcat file1.gz file2.gz:要查看多个压缩文件,请使用带有文件名的以下命令。zcat users.list.gz apps.list.gz
Trimmomatic
- Download:
wget http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.39.zip
http://www.usadellab.org/cms/?page=trimmomatic - Unzip:
unzip Trimmomatic-0.39.zip
- Enter:
cd Trimmomatic-0.39
- Add to environment:
sudo gedit ~/.bashrc
export PATH=/home/wushsh/Software/Package/7_trimmomatic/Trimmomatic-0.39:$PATH
source ~/.bashrc
PE/SE 设定对Paired-End或Single-End的reads进行处理,其输入和输出参数稍有不一样。
-threads 设置多线程运行数
-phred33 设置碱基的质量格式,可选pred64
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 切除adapter序列。参数后面分别接adapter序列的fasta文件:允许的最大mismatch数:palindrome(回文)模式下匹配碱基数阈值:simple模式下的匹配碱基数阈值。
LEADING:3 切除首端碱基质量小于3的碱基
TRAILING:3 切除尾端碱基质量小于3的碱基
SLIDINGWINDOW:4:15 从5'端开始进行滑动,当滑动位点周围一段序列(window)的平均碱基低于阈值,则从该处进行切除。Windows的size是4个碱基,其平均碱基质量小于15,则切除。
MINLEN:50 最小的reads长度
CROP:保留reads到指定的长度
HEADCROP:在reads的首端切除指定的长度
TOPHRED33 将碱基质量转换为pred33格式
TOPHRED64 将碱基质量转换为pred64格式
Split
命令行输入man split或者split --help可以查看split参数的英文说明
-a, --suffix-length=N use suffixes of length N (default 2) 输出文件后缀长度,默认为:2
-b, --bytes=SIZE put SIZE bytes per output file 按照文件大小分割文件,单位:字节
-d, --numeric-suffixes use numeric suffixes instead of alphabetic 添加数字后缀(因为默认添加的是字母后缀,所有要想加数字需要自己添加)
-l, --lines=NUMBER put NUMBER lines per output file 按照行数分割文件,默认1000行一个文件
-C, --line-bytes 大小 指定每个输出文件里最大行字节大小
--verbose print a diagnostic just before each output file is opened 打印运行状态信息
--help display this help and exit 查看说明文档
--version output version information and exit 查看版本信息
- Example
zcat MOS18020001_R2.fastq.gz | split -l 8000000 -d -a 2 - MOS18020001_R2.fastq
-l 表示输出文件行数,-d 表示添加数字后缀,-a 表示添加后缀长度,为2时数字为:01, 02, 03, ..., - 表示标准输入,MOS18020001_R2.fastq 为自定义的前缀
split -b 500m log.txt newfile
每个文件大小500m,生成的新文件的文件名是newfile后面加上按照aa,ab,ac……来排序的
Samtools
Samtools是一系列处理BAM格式序列的应用。它从SAM(Sequence Alignment/Map)格式输入或者输出为SAM格式,可以进行排序,合并和建立索引,并且允许快速地检索任意区域的读段(reads)。
https://www.plob.org/article/7112.html; http://www.chenlianfu.com/?p=1399
- Download:
wget https://github.com/samtools/samtools/releases/download/1.9/samtools-1.9.tar.bz2
http://www.htslib.org/download/ - Decompression:
tar -xjf samtools-1.9.tar.bz2
- Enter:
cd samtools-1.9
- Configure:
./configure --prefix=/pnas/liujiang_group/wushsh/Software/install/samtools-1.9
- Make:
make
- Install:
make install
- Add to environment:
vi ~/.bashrc
export PATH=/pnas/liujiang_group/wushsh/Software/install/samtools-1.9/bin:$PATH
source ~/.bashrc
参数View:view命令的主要功能是:将sam文件转换成bam文件;然后对bam文件进行各种操作,比如数据的排序(不属于本命令的功能)和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作);最后将排序或提取得到的数据输出为bam或sam(默认的)格式。
bam文件优点:bam文件为二进制文件,占用的磁盘空间比sam文本文件小;利用bam二进制文件的运算速度快。
view命令中,对sam文件头部的输入(-t或-T)和输出(-h)是单独的一些参数来控制的。
Usage: samtools view [options]
默认情况下不加 region,则是输出所有的 region| [region1 [...]]
-b output BAM 默认下输出是 SAM 格式文件,该参数设置输出 BAM 格式
-h print header for the SAM output,默认下输出的 sam 格式文件不带 header,该参数设定输出sam文件时带 header 信息
-H print header only (no alignments),只输出header
-S input is SAM,默认下输入是 BAM 文件,若是输入是 SAM 文件,则最好加该参数,否则有时候会报错。输入文件为SAM格式,如果确实@SQ头,则需要-t选项
-u uncompressed BAM output (force -b),输出未压缩的bam文件,该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。
-c Instead of printing the alignments, only count them and print the total number. All filter options, such as ‘-f’, ‘-F’ and ‘-q’ ,are taken into account. 只做计数
-1 fast compression (force -b),快速压缩
-x output FLAG in HEX (samtools-C specific),flag以十六进制输出
-X output FLAG in string (samtools-C specific),flag以字符串输出
-c print only the count of matching records,仅打印匹配记录的计数
-L FILE output alignments overlapping the input BED FILE [null],输出文件与输入的bed文件比对重叠
-t FILE list of reference names and lengths (force -S) [null],使用一个list文件来作为header的输入
-T FILE reference sequence file (force -S) [null],使用序列fasta文件作为header的输入
-o FILE output file name [stdout] 输出文件的名字
-R FILE list of read groups to be outputted [null] 输出读取组的文件列表
-f INT required flag, 0 for unset [0] 必须标志,0表示未设置,只输出在FLAG中含有整个INT的序列,INT可以使用十六进制的
-F NT filtering flag, 0 for unset [0]Skip alignments with bits present in INT [0],跳过含有INT的序列,数字4代表该序列没有比对到参考序列上,数字8代表该序列的mate序列没有比对到参考序列上
-q INT minimum mapping quality [0] ,跳过MAPQ(定位的质量)比INT小的序列[默认0]
-l STR only output reads in library STR [null],只输出STR库中的序列
-r STR only output reads in read group STR [null],只输出在STR读段组中的序列
- Example
将sam文件转换成bam文件
samtools view -bS abc.sam > abc.bam
samtools view -b -S abc.sam -o abc.bam
提取比对到参考序列上的比对结果
samtools view -bF 4 abc.bam > abc.F.bam
提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可
samtools view -bF 12 abc.bam > abc.F12.bam
提取没有比对到参考序列上的比对结果
samtools view -bf 4 abc.bam > abc.f.bam
提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式
samtools view abc.bam scaffold1 > scaffold1.sam
提取scaffold1上能比对到30k到100k区域的比对结果
samtools view abc.bam scaffold1:30000-100000 $gt; scaffold1_30k-100k.sam
根据fasta文件,将 header 加入到 sam 或 bam 文件中
samtools view -T genome.fasta -h scaffold1.sam > scaffold1.h.sam
sort:sort对bam文件进行排序。
Usage: samtools sort [-n] [-m
]
-m 参数默认下是 500,000,000 即500M(不支持K,M,G等缩写)。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。
-n 设定排序方式按short reads的ID排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。
排序
samtools sort abc.bam abc.sort
merge:将2个或2个以上的已经sort了的bam文件融合成一个bam文件。融合后的文件不需要则是已经sort过了的。
Usage: samtools merge [-nr] [-h inh.sam]
[...]
-n sort by read names 输入文件是以读段名称排序的,而非染色体定位(当sort中使用-n选项时,此处应该选-n)
-r attach RG tag (inferred from file names)
-u uncompressed BAM output
-f overwrite the output BAM if exist
-1 compress level 1
-R STR merge file in the specified region STR [all]
-hFILE copy the header in FILE to[in1.bam],FILE 使用FILE中的行作为@头拷贝到out.bam中,代替从in1.bam中拷贝的头。(FILE实际上是BAM格式的。但是其中的任何序列信息都会被忽略)。
*Note:Samtools' merge does not reconstruct the @RG dictionary in the header. Users must provide the correct header with -h, or uses Picard which properly maintain the header dictionary in merging.
Find
https://blog.csdn.net/l_liangkk/article/details/81294260
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部进行显示。
语法:find path -option【 -print 】【 -exec -ok|xargs |grep】【command {} \; 】
path: 要查找的目录路径。
options: 表示查找方式
print: 表示将结果输出到标准输出。
exec: 对匹配的文件执行该参数所给出的shell命令。 形式为command {} ;,注意{}与;之间有空格
ok: 与exec作用相同,区别在于,在执行命令之前,都会给出提示,让用户确认是否执。
|xargs: 与exec作用相同 ,起承接作用区别在于 |xargs 主要用于承接删除操作 ,而 -exec 都可用如复制
-name filename 查找名为filename的文件
-perm 按执行权限来查找
-user username 按文件属主来查找
-group groupname 按组来查找
-mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n 按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime -n +n 按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup 查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser 查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] 查长度为n块[或n字节]的文件
-mount 查文件时不跨越文件系统mount点
-follow 如果遇到符号链接文件,就跟踪链接所指的文件
-prune 忽略某个目录
Bwa
BWA是一款基于BWT的快速比对工具,其由三个算法组成。这三个算法分别是:BWA backtrack, BWA SW and BWA MEM。
其中,BWA MEM是最新的,其更快更准确,更适合用于人重数据分析
https://blog.csdn.net/herokoking/article/details/79445281
Bwa
- Download:
wget https://sourceforge.net/projects/bio-bwa/files/bwa-0.7.17.tar.bz2
https://sourceforge.net/projects/bio-bwa - Decompression:
tar -xvjf bwa-0.7.17.tar.bz2
- Enter:
cd bwa-0.7.17
- Make:
make
- Add to environment:
vi ~/.bashrc
export PATH=/pnas/liujiang_group/wushsh/Software/install/bwa-0.7.17:$PATH
source ~/.bashrc
Index参数:
-p STR 输出数据库的前缀[与db 文件名相同]
-a STR 算法用于构建BWT index。可以使用的选项:is IS线性时间算法用于构建suffix array。需要5.37N内存,N是数据库的大小。IS算法相对较快,但是无法处理数据库大于2GB的数据。因为IS算法比较简单,作为默认值。目前IS算法的脚本由Yuta Mori从新植入。
mem参数:
-t INT 线程数目
-A INT 匹配得分,默认为1
-B INT 错配得分,序列的错误率估计方法:{0.75exp[-log(4)B/A]},默认为4
-E INT 空值延伸罚分。一个长度为K的罚分为O+KE
-L INT 裁剪罚分。
-k INT 最小种子长度。少于INT的匹配将会被忽略。匹配的速度通常对于这个值不敏感,除非明显偏离20. [19]
-w INT 空值宽度。必要的说,gaps长于INT将不会被发现。需要注意最大gap长度同时受到评分矩阵和hit长度所影响。并不只由这个选项确定。[100]
-d INT off-diagonal-X-dropoff (z-dropoff)。如果最好和目前的延伸分数差距大于 |i-j|A+INT,将停止延伸,其中i和j是被比对和参考基因组中的位置。A是匹配得分。Z-dropoff 类似于BLAST 中的X-dropoff,除了该算法中并没有空格罚分。Z-dropoff不仅避免了不必要的延伸,同时减少了在较差的延伸比对中的比对。 [100]
-r FLOAT 引发长度大于minSeedLen FLOAT的重新搜索。这是启发式算法调节算法性能的关键参数。更大的值产生更少的seeds,导致更快的比对速度但是更低的准确性。[1.5]
-c INT 丢弃大于INT出现次数的MEM。这是一个不敏感参数。
-p 在paired-end 模式中,运行SW搜索得到缺失的命中。
-o INT 空值罚分。 [-6]
-U INT 对于未配对read对罚分。对于未配对的read对BWA—MEM以scoreRead1+scoreRead2-INT进行评分。评分scoreRead1+scoreRead2-insertPenalty。比较这两种评分从而确定是否应该强制配对。 [9]
-R STR 完成read group header行 ’\t‘可以在字符串中使用,将会在SAM文件中转换成SAM文件。read group ID也会附在输出文件每一个reads中。 【null】
-T INT 不要输出比对分数低于INT的比对。这个结果只影响最终结果。 【30】
-a 输出所有的比对以单端或未配对双端测序方式。
-c 将FASTA/Q的comment 追加到SAM输出中。选项可以将reads meta信息转移到SAM输出。注意FASTA/Q comment必须符合SAM特定要求。不正确的格式将导致不争取的SAM输出。
-H 使用大写H在SAM输出文件中,这个选项可以显著的减少输出文件的复杂度。当比对长或Bac序列时。
-M 标记短split hit为第二个。
-v IN 控制输出的冗长程度。这个选项并未在BWA完全被支持。理想的,值0 表示不输出到stderr。1表示只输出error。2表示warning和errror。3表示所有信息。4表示对于debug的更高信息。当选项是4时候,输出并不是SAM。 [3]
Hicup
http://blog.sciencenet.cn/blog-2970729-1159899.html
HiCUP由6个Perl脚本组成,分别如下:
(1) HiCUP Digester:确定reference上的酶切位点
(2) HiCUP:为主程序,依次执行以下步骤
(3) HiCUP Truncater:在reads上寻找酶切位点,并将reads切开
(4) HiCUP Mapper:将reads比对到参考基因组上,如果输入的是PEreads,则R1和R2分开单独比对到reference上。比对内部调用bowtie或bowtie2比对。这一步会利用到事先建好的bowtie2 index
(5) HiCUP Filter:结合HiCUP Digester生成的酶切位点文件,过滤掉常见的Hi-C artefacts,例如Dangling Ends等
(6) HiCUP Deduplicator:移除(仅保留一处最佳比对) PCR重复
HiCUP的使用:
3.1 先采用bowtie2-build对reference建立索引
/path/to/bowtie2-build reference.fasta reference
3.2 采用hicup目录下的hicup_digester在reference上寻找酶切位点,生成酶切信息文件
/path/to/hicup_v0.6.1/hicup_digester \
--re1 ^GATC,MboI \
--genome reference \
--outdir /path/to/output/dir \
reference.fast
3.3 再采用hicup主程序进行分析
有两种方式运行hicup,其一是将所有参数写到config文件中,可以先运行
hicup --example 生成样例config文件,修改其中的参数,并运行
或者直接用命令行运行,如下:
/path/to/hicup_v0.6.1/hicup \
--bowtie2 /path/to/bowtie2 \
--digest Digest_reference_MboI_None_18-36-52_07-08-2018.txt \
--format Sanger \
--index /path/to/reference/index \
--keep \
--outdir /path/to/output/dir \
--threads 40 \
/path/to/reads*.fastq.gz
4. 结果解读
最重要的两个文件是:
Ø xx_R1_2.hicup.sam
Ø xx_ R1_2.HiCUP_summary_report.html
前者是最终的sam文件,后者是全程汇总报告
每步结果具体如下:
- HiCUP运行后hicup_truncater先生成
xx.R1.trunc.fastq
和xx.R2.trunc.fastq
文件,它是按照酶切位点对Reads进行切除,因此得到的reads长短不一。完成后会统计Truncated reads数,Not Truncated reads数,以两者的占比,总的reads数,平均reads长度,并记录在hicup_truncater_summary_xx.txt
文件中。两个fastq对应的svg图像中仅绘制了前两项的条形图。 - hicup_mapper调用bowtie2-align-s进行比对处理,生成
xx_ R1_2.pair.sam
文件,同时也统计了太短而无法比对的reads数,唯一比对的reads数,多处比对的reads数,比对不上的reads数,成对的reads数,以及以上各项的占比,记录在hicup_mapper_summary_xx.txt
文件中,顺带还画了R1和R2的比对结果条形图(xx_R*_trunc.fastq.mapper_barchart.svg) - hicup_filter对上步生成的sam文件进行过滤,分别将每种invalid ditag类型(包括same internal,same dangling ends,same circularised,re_ligation及其它)过滤掉的比对结果写入到
hicup_filter_ditag_rejects_xx/
目录下,过滤后可用于下步分析的sam文件为xx_R1_2.filt.sam
当然,对结果ditag结果也进行了统计,包括valid pairs,invalid pairs,same circularised,same fragment dangling ends,same fragment internal, re-ligation, contiguous sequence, wrong size以及total pairs等类型,记录在hicup_filter_summary_xx.txt
文件中。同时也画了Di-tag长度分布svg图和各种类型的svg piechart图。
- hicup_deduplicator去重,并且计算了序列内的unique reads(<10kb和>10kb分别统计)以及序列间的unique reads,并画了相应的svg图,最终的结果为
xx_R1_2.hicup.sam
注意,这个最终的sam文件中仅存放De-duplication后Unique Di-Tags的Read Pairs,即如下图中的read pairs(强调:是read pairs!)
最后不仅给出了所有步骤reads数据变化的汇总(HiCUP_summary_report_xx.txt
),同时还给给出了非常美观的html报告(xx_ R1_2.HiCUP_summary_report.html
)!
另外,需要强调一点,hicup的结果如果想接到Lachesis做组装。在hicup生成的sam转bam的时候一定要用sort -n,按名字排序!如果用默认的参考序列位置排序,则Lacheis中会生成Cluster信息,但是没有Order信息!