Blast是一个继承的程序包,通过调用不同的比对模块,blast实现了物种可能的序列比对方式:
blastp:蛋白序列与蛋白库做比对。
blastx:核酸序列对蛋白库的比对,先将核酸序列翻译成蛋白序列(根据相位可以翻译成6种可能的蛋白序列),然后再与蛋白库作比对。
blastn:核酸序列对核算库的比对。
tblastn:蛋白序列对核算库的比对,将库中的核酸序列翻译成蛋白序列,然后进行比对。
tblastx:核酸唤神序列对核算库在蛋白级别的比对,将库和待查序列都翻译成蛋白序列,然后对蛋白序列进行比对。
Blast提供了核酸和蛋白序列之间所有可能的比对方式,同时具有较快的比对速度和较高的比对精度,因此在常规双序列比对分析中应用最为广泛,可以毫不夸张的说,blast是做比对基因组学乃至整个生物信息学研究所必须掌握的一种比对工具。
使用:
blast的运行分为两个步骤:第一,建立目标序列的数据库;第二,做blast比对。
1、运行建库程序formatdb:
建库的工程是建立目标序列的索引文件,所以程序是formatdb。程序允许的输入格式是FASTA或者ASN.1格式,通常我们使用的FASTA格式的序列作为输入。用于建库的FAST序列是db.seq, formatdb的基本命令是:
formatdb –i db.seq [-options]
常用参数:
-p (T/F): -p参数的意义是选择建库的类型,“T”表示液链拍蛋白库,“F”表示核算库,缺省值为“T”
-o(T/F): -o参数的意义是判断是否分析序列名并建立序列名索引。“T”表示建立序列名索引,“F”表闹羡示不建立序列索引。缺省值为“F”。
程序输出:
如果建立的是核算库,输出为db.seq.nhr、db.seq.nin、db.seq.nsq,三个文件,如果选择了“-o T”,还会同时输出db.seq.nsd、db.seq.nsi、db.seq.nni、db.seq.nnd四个文件,一共七个。
蛋白库和核算库的输出类似,相应的输出文件为:db.seq.nhr、db.seq.nin、db.seq.nsq和db.seq.nsd、db.seq.nsi、db.seq.nni、db.seq.nnd七个文件。
除了这个结果,程序还会输出LOG文件(默认为formatdb.log),里面记录了运行时间、版本号、序列数量等信息。
几点需要注意的问题:
1)、建库以后,做blast比对的输入文件就是建库所得的文件db.seq.n**或者db.seq.p**,而不是原始的FASTA序列,也就是说,建库以后,原始序列文件是可以删除的。
2)、如果命令行中选择了“-o T”,并且目标序列中好友gi号重复的序列名时,程序会停止建库并报错。
就是说库文件中不能出现重复的序列(标志是序列号,跟具体的序列没有关系)。
3)、如果输入序列不符合FASTA格式或者ASN.1格式,程序会自动退出,并报错。
[formatdb] ERROR: Could not open db.
4)、核酸序列可以用于建核算库和蛋白库,但是蛋白序列不能用于建核算库,这个是显然的,密码子的问题哦!
其他参数介绍:
-l : “-l 文件名”用来改变LOG文件的命名
-n : “-n 文件名”可以自定义生成的库文件命名
-a : 输入文件为ASN.1格式
2、运行比对程序blastall:
Blast的主程序是blastall。程序的输入文件是query序列(- i参数)而和库文件(-d 参数),比对类型的选择(- p参数)和输出文件(- o 参数)由用户指定。其中“-p”参数有5中取值:
-p blastp:蛋白序列与蛋白库做比对。
-p blastx:核酸序列对蛋白库的比对。
-p blastn:核酸序列对核酸库的比对。
-p tblastn:蛋白序列对核酸库的比对。
-p tblastx:核酸序列对核酸库在蛋白级别的比对。
这些元素就构成了 blast 的基本运行命令(以 blastn 为例):
blastall -i query.fa -d database -o blast.out -p blastn
其中如果"-o"参数缺省,则结果输出方式为屏幕输出。
参数:
仅仅运行blast的基本运行命令,得到的结果往往不能清晰准确的表示出有用的信息。最大的问题就是有太多的冗余,很多很短的比对都会出现在输出结果中,导致结果杂乱无章。为了处理杂乱无章的比对结果,满足各种比对需求,blast设置了很多参数来限制比对的范围和输出的形式。一下多数结果以blastn距离,如不做特殊说明,这些参数适合于所有比对方式。
-e 参数
-e(value)参数是用来过滤比对较差的结果的,用“-e”参数指定一个实数,blast会过滤掉期望值大于这个数的比对结果(就是说这个值越小比对结果就越好)。
blastall -i query.fa -d database -o blast.out -p blastn -e 1e-10
通常情况下,对于不同物种之间的比对,期望值设在1e-5左右即可;而对于同源性较高的物种或者同种的比对,可以适度将期望值调的更小来过滤垃圾结果。比对同一物种cDNA和染色体的比对,参数可用1e-10或更高。
-F 参数
-F(T/F)参数是用来屏蔽简单重复和低复杂度序列的。如果选“T”,程序在比对过程中会屏蔽掉query中的简单重复和低复杂度序列;选“F”则不会屏蔽。缺省值为“T”。
比较两个结果,我们看出使用缺省参数的比对结果损失了一部分信息,得到的统计结果也
出现失真,期望值和 identity 都没有反映出真实情况。有时较长的重复序列甚至会导致比对终止。加了"-F F"就保证了比对结果的完整性。通常在大规模、低精度的比对中,往往用缺省参数,这样能避免程序把过多的时间浪费在无意义的简单重复上,提高运行速度;而在小规模、高精度的比对中,需要加上参数"-F F",保证比对的精确度和完整性。
-m 参数:
“-e”参数能够做到筛选适当的比对结果,但是即使如此,blast的输出结果仍然非常庞大并且难以处理。为了精简输出、节省存储空间、实现更多功能并使结果易于处理,blast 提供了参数“-m (integer)”来设定输出格式,可供选择的值为 0~11 之间的整数,缺省为 0。下面就通过实例逐个解析“-m”参数能够实现的输出功能。
-m 8 : 列表格式的比对结果。从做导游割裂的意义一次是:query名/subject名/identify/比对长度/错配数/空位数/query比对起始坐标/query比对终止坐标/subject比对起始坐标/subject比对终止坐标/期望值/比对得分
在 m8 格式中通过 subject 的比对起止位置可以判断出序列的比对方向。判断方法就是:query和subject的起始和终止坐标是否一致增减。
github链接: harvardinformatics/ATAC-seq
参考文献: ATAC-seq: A Method for Assaying Chromatin Accessibility Genome-Wide
推荐使用bowtie2进行序列比对(alignment)。常用的参数有以下几个:
默认输出格式问SAM文件,包含了每个序列的比对信息。SAM文件可以压缩为BAM文件,并使用SAMtools进蚂碧行排序。最佳的分析流程为:
ATAC-seq数据一般含有相当比例的线粒体DNA,详见 该讨论 。可以 使用CRISPR技术去除线粒体基因组污染 。也可以参考最近发表的 Omni-ATAC方法 用去污剂去除线粒体DNA,这种方法对于多数研究人员可能更易于 *** 作,但是不要按照他们的分析流程来分析数据。
不管使用何种实验方启毁案,得到的测序数据中多多少少都会有线粒体DNA。因为线粒体基因组中没有ATAC-seq感兴趣的峰,这些数据会使后续分析变得复杂,因此,推荐在下一步分析之前去除线粒体DNA序列。可以通过下面两种方法中任一种实现:
PCR重复序列是完全一致的reads。
二代测序得到的短序列中,有一些序列会匹配到基因组的多个区域。一些学者在分析数据时会通过samtools view中的-q参数将这些非特异性的序列去除。对于这种非特异性的序列,bowtie2或bwa只会报告一个比对的结果,同时会给一个低匹配质量的(mapping quality, MAPQ)评分,匹配质量定义为: -10 * log10Pr{mapping position is wrong}。可以通过下面命令来去除MAPQ<10的序列。
Model-based Analysis of ChIP-Seq (MACS2)是一款用于检测基因富集区域的软件。尽管是为ChIP-seq设计的,但也适用于ATAC-seq测序及其他有小峰的基因组富集分析。MACS2软件的主程序是callpeak。
可以将前期处理好的比对序列文件作为MACS2的输入文件。然而,一定要记住:比对上的序列只是ATAC技术产生的DNA片段的一部分。因此,必须考虑如何用MACS2来解读这些比对序列。
对于双端测序书来说,比对序列主要分两种类型:成对匹配的和单一匹配的序列。当使用MACS2分析数据时,应事先决定哪种比对序列可用于后续分析。主要有以下三个选择:
输出为BED文件,可以用 MACS2 -f BEDPE 命令处理。
除了前文中描述的一些参数,MACS2还有一些其他参数可以设置。下面是一些可以考虑的参数:
标准的 macs2 callpeak 程序有3个输出文件。如果有 -n NAME 参数,输出文件分布为:NAME_peaks.xls,NAME_peaks.narrowPeak,和NAME_summits.bed。最有用的文件是NAME_peaks.narrowPeak,它是一个bed文档,包含了所有峰的基因组坐标和不同的统计值(闷旁举倍数改变、p值和q值等)。
一旦完成一组样本的MACS2分析之后,可根据实验设计进行一些后续分析。
可以将peak文件在基因组中可视化。模式生物的ATAC-seq数据,peak文件(NAME_peaks.narrowPeak)可以直接上传到 UCSC genome browser 中进行查看。如果peak文件没有表头的话,可以将下面的内容添加至首行: track type=narrowPeak 。
另外,可以使用IGV进行可视化。peak文件可以直接通过File -->Load from File选项上传。如果要对BAM文件可视化,需要用samtools对BAM文件进行排序并构建索引。
可以使用BEDTools来比较一组peak文件的异同。例如: bedtools intersect 可以比较两个peak文件中相同的峰;寻找两个峰文件中差异的峰,如实验组和对照组,可以通过 bedtools subtract 命令实现。
ChIPseeker 最早是用于注释ChIP-seq数据的,但是也适用于ATAC-seq数据的注释。ChIPseeker可以对基因的位置和其他特征进行注释,详细使用方法见 ChIPseeker的使用指南 。
HOMER可用于寻找motif。可以将peak文件作为HOMER文件的输入,来检测已知的motif和新的motif。
Andrews S. (2010). FastQC: a quality control tool for high throughput sequence data. Available online at: http://www.bioinformatics.babraham.ac.uk/projects/fastqc
Buenrostro JD, Giresi PG, Zaba LC, Chang HY, Greenleaf WJ. Transposition of native chromatin for fast and sensitive epigenomic profiling of open chromatin, DNA-binding proteins and nucleosome position. Nat Methods. 2013 Dec10(12):1213-8.
Buenrostro JD, Wu B, Chang HY, Greenleaf WJ. ATAC-seq: A Method for Assaying Chromatin Accessibility Genome-Wide. Curr Protoc Mol Biol. 2015 Jan 5109:21.29.1-9.
Corces MR, Trevino AE, Hamilton EG, Greenside PG, Sinnott-Armstrong NA, Vesuna S, Satpathy AT, Rubin AJ, Montine KS, Wu B, Kathiria A, Cho SW, Mumbach MR, Carter AC, Kasowski M, Orloff LA, Risca VI, Kundaje A, Khavari PA, Montine TJ, Greenleaf WJ, Chang HY. An improved ATAC-seq protocol reduces background and enables interrogation of frozen tissues. Nat Methods. 2017 Oct14(10):959-962.
Heinz S, Benner C, Spann N, Bertolino E, Lin YC, Laslo P, Cheng JX, Murre C, Singh H, Glass CK. Simple combinations of lineage-determining transcription factors prime cis-regulatory elements required for macrophage and B cell identities. Mol Cell. 2010 May 2838(4):576-89.
Langmead B, Salzberg SL. Fast gapped-read alignment with Bowtie 2. Nat Methods. 2012 Mar 49(4):357-9.
Li H, Handsaker B, Wysoker A, Fennell T, Ruan J, Homer N, Marth G, Abecasis G, Durbin R1000 Genome Project Data Processing Subgroup. The Sequence Alignment/Map format and SAMtools. Bioinformatics. 2009 Aug 1525(16):2078-9.
Martin M. Cutadapt removes adapter sequences from high-throughput sequencing reads. EMBnet.journal. 201117:10-2.
Montefiori L, Hernandez L, Zhang Z, Gilad Y, Ober C, Crawford G, Nobrega M, Jo Sakabe N. Reducing mitochondrial reads in ATAC-seq using CRISPR/Cas9. Sci Rep. 2017 May 267(1):2451.
Quinlan AR. BEDTools: The Swiss-Army Tool for Genome Feature Analysis. Curr Protoc Bioinformatics. 2014 Sep 847:11.12.1-34.
Yu G, Wang LG, He QY. ChIPseeker: an R/Bioconductor package for ChIP peak annotation, comparison and visualization. Bioinformatics. 2015 Jul 1531(14):2382-3.
DR模式,即(Direct Routing)直接路由模式
DR模式的网络拓扑:
1) 工作过程: 当一个client发送一个WEB请求到VIP,LVS服务器根据VIP选择对应的real-server的Pool,根据算法,在Pool中选择一台Real-server,LVS在hash表中记录该次连接,然后将client的请求包发给选择的Real-server,最后选择的Real-server把应答包直接传给client;当client继续发包过来时,LVS根据更才记录的hash表的信息,将属于此次连接的请求直接发到刚才选择的Real-server上;当连接中止或者超时,hash表中的记录将被删除。
2) DR模式的几个细节:
1>LVS和Real-server必须在相同的网段:(相同的广播域内)姿瞎
DR模式在转发client的包时,只修改了包目的MAC地址为选定的Real-server的mac地址,所以如果LVS和Real-server在不通的广播域内,那么Real-server就没办法接收到转发的包。下面是mac地址的修改过程:
2>LVS不需要开启路由转发:
LVS的DR模式不需要开启路由转发功能,就可以正常的工作,出于安全考虑,如果不需要转发功能,最好关闭。
3>ARP问题:
通常,DR模式需要在Real-server上配置VIP,配置的方式为:
/sbin/ifconfig lo:0 inet VIP netmask 255.255.255.255
i) 原因在于,当LVS把client的包转发给Real-server时,因为包的目的IP地址是VIP,那么如果Real-server收到这个包后,发现包的目的IP不是自己的系统IP,那么就会认为这个包不是发给自己的,就会丢弃这个包,所以需要将这个IP地址绑到网卡上;当发送应答包给client时,Real-server就会把包的源和目的地址调换,直接回迹滚空复给client。
ii) 关于ARP广播:
* 上面绑定VIP的掩码是”255.255.255.255″,说明广播地址是其本身,那么他就不会将ARP发送到实际的自己该属于的广播域了,这样防止与LVS上VIP冲突,而导备核致IP冲突。
* 另外在Linux的Real-server上,需要设置ARP的sysctl选项:(下面是举例说明设置项的)
假设服务器上ip地址如下所示:
System Interface MAC Address IP Address
HN eth0 00:0c:29:b3:a2:54 192.168.18.10
HN eth3 00:0c:29:b3:a2:68 192.168.18.11
HN eth4 00:0c:29:b3:a2:5e 192.168.18.12
client eth0 00:0c:29:d2:c7:aa 192.168.18.129
当我从192.168.18.129 ping 192.168.18.10时,tcpdump抓包发现:
00:0c:29:d2:c7:aa >ff:ff:ff:ff:ff:ff, ARP, length 60: arp who-has 192.168.18.10 tell 192.168.18.12900:0c:29:b3:a2:5e >00:0c:29:d2:c7:aa, ARP, length 60: arp reply 192.168.18.10 is-at 00:0c:29:b3:a2:5e00:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, ARP, length 60: arp reply 192.168.18.10 is-at 00:0c:29:b3:a2:5400:0c:29:b3:a2:68 >00:0c:29:d2:c7:aa, ARP, length 60: arp reply 192.168.18.10 is-at 00:0c:29:b3:a2:6800:0c:29:d2:c7:aa >00:0c:29:b3:a2:5e, IPv4, length 98: 192.168.18.129 >192.168.18.10: ICMP echo request, id 32313, seq 1, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, IPv4, length 98: 192.168.18.10 >192.168.18.129: ICMP echo reply, id 32313, seq 1, length 6400:0c:29:d2:c7:aa >00:0c:29:b3:a2:5e, IPv4, length 98: 192.168.18.129 >192.168.18.10: ICMP echo request, id 32313, seq 2, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, IPv4, length 98: 192.168.18.10 >192.168.18.129: ICMP echo reply, id 32313, seq 2, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, ARP, length 60: arp who-has 192.168.18.129 tell 192.168.18.1000:0c:29:d2:c7:aa >00:0c:29:b3:a2:54, ARP, length 60: arp reply 192.168.18.129 is-at 00:0c:29:d2:c7:aa三个端口都发送了arp的reply包,但是192.168.18.129使用的第一个回应的eth4的mac地址作为ping请求的端口,由于192.168.18.10是icmp包中的目的地址,那么ping的应答包,会从eth0端口发出。
如果Real-server有个多个网卡,每个网卡在不同的网段,那么可以过滤掉非本网卡ARP请求的回应;但是如果多个网卡的ip在一个网段,那么就不行了。
sysctl -w net.ipv4.conf.all.arp_filter=1
对于多个接口在相同网段可以设置下面的来防止:
sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2
还是从192.168.18.129 ping 192.168.18.10时,tcpdump抓包发现:
00:0c:29:d2:c7:aa >ff:ff:ff:ff:ff:ff, ARP, length 60: arp who-has 192.168.18.10 tell 192.168.18.12900:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, ARP, length 60: arp reply 192.168.18.10 is-at 00:0c:29:b3:a2:5400:0c:29:d2:c7:aa >00:0c:29:b3:a2:54, IPv4, length 98: 192.168.18.129 >192.168.18.10: ICMP echo request, id 32066, seq 1, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, IPv4, length 98: 192.168.18.10 >192.168.18.129: ICMP echo reply, id 32066, seq 1, length 6400:0c:29:d2:c7:aa >00:0c:29:b3:a2:54, IPv4, length 98: 192.168.18.129 >192.168.18.10: ICMP echo request, id 32066, seq 2, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, IPv4, length 98: 192.168.18.10 >192.168.18.129: ICMP echo reply, id 32066, seq 2, length 6400:0c:29:b3:a2:54 >00:0c:29:d2:c7:aa, ARP, length 60: arp who-has 192.168.18.129 tell 192.168.18.1000:0c:29:d2:c7:aa >00:0c:29:b3:a2:54, ARP, length 60: arp reply 192.168.18.129 is-at 00:0c:29:d2:c7:aa看到了么,现在只有eth0会回应arp请求了。
arp报文格式:
请求报文:MAC地址字段是空的。
应答报文:所有字段都又内容。
The arp_announce/arp_ignore reference:
arp_announce – INTEGERDefine different restriction levels for announcing the localsource IP address from IP packets in ARP requests sent oninterface:0 – (default) Use any local address, configured on any interface1 – Try to avoid local addresses that are not in the target’ssubnet for this interface. This mode is useful when targethosts reachable via this interface require the source IPaddress in ARP requests to be part of their logical networkconfigured on the receiving interface. When we generate therequest we will check all our subnets that include thetarget IP and will preserve the source address if it is fromsuch subnet. If there is no such subnet we select sourceaddress according to the rules for level 2.2 – Always use the best local address for this target.In this mode we ignore the source address in the IP packetand try to select local address that we prefer for talks withthe target host. Such local address is selected by lookingfor primary IP addresses on all our subnets on the outgoinginterface that include the target IP address. If no suitablelocal address is found we select the first local addresswe have on the outgoing interface or on all other interfaces,with the hope we will receive reply for our request andeven sometimes no matter the source IP address we announce.The max value from conf/{all,interface}/arp_announce is used.Increasing the restriction level gives more chance forreceiving answer from the resolved target while decreasingthe level announces more valid sender’s information.
arp_announce用来限制,是否使用发送的端口的ip地址来设置ARP的源地址:* “0″代表是用ip包的源地址来设置ARP请求的源地址。* “1″代表不使用ip包的源地址来设置ARP请求的源地址,如果ip包的源地址是和该端口的IP地址相同的子网,那么用ip包的源地址,来设置ARP请求的源地址,否则使用”2″的设置。* “2″代表不使用ip包的源地址来设置ARP请求的源地址,而由系统来选择最好的接口来发送。当内网的机器要发送一个到外部的ip包,那么它就会请求路由器的Mac地址,发送一个arp请求,这个arp请求里面包括了自己的ip地址和Mac地址,而linux默认是使用ip的源ip地址作为arp里面的源ip地址,而不是使用发送设备上面的 ,这样在lvs这样的架构下,所有发送包都是同一个VIP地址,那么arp请求就会包括VIP地址和设备 Mac,而路由器收到这个arp请求就会更新自己的arp缓存,这样就会造成ip欺骗了,VIP被抢夺,所以就会有问题。现在假设一个场景来解释arp_announce:Real-server的ip地址: 202.106.1.100(public local address),172.16.1.100(private local address),202.106.1.254(VIP)如果发送到client的ip包产生的arp请求的源地址是202.106.1.254(VIP),那么LVS上的VIP就会被冲掉,因为交换机上现在的arp对应关系是Real-server上的VIP对应自己的一个MAC,那么LVS上的VIP就失效了。arp_ignore – INTEGERDefine different modes for sending replies in response toreceived ARP requests that resolve local target IP addresses:0 – (default): reply for any local target IP address, configuredon any interface1 – reply only if the target IP address is local addressconfigured on the incoming interface2 – reply only if the target IP address is local addressconfigured on the incoming interface and both with thesender’s IP address are part from same subnet on this interface3 – do not reply for local addresses configured with scope host,only resolutions for global and link addresses are replied4-7 – reserved8 – do not reply for all local addressesThe max value from conf/{all,interface}/arp_ignore is usedwhen ARP request is received on the {interface}
“0″,代表对于arp请求,任何配置在本地的目的ip地址都会回应,不管该arp请求的目的地址是不是接口的ip;如果有多个网卡,并且网卡的ip都是一个子网,那么从一个端口进来的arp请求,别的端口也会发送回应。“1″,代表如果arp请求的目的地址,不是该arp请求包进入的接口的ip地址,那么不回应。“2″,要求的更苛刻,除了”1″的条件外,还必须要求arp发送者的ip地址和arp请求进入的接口的ip地址是一个网段的。(后面略)
本文来自网学网(http://www.myeducs.cn),转载请注明出处:http://www.myeducs.cn/sys/yunwei/LVS-desanzhongmoshiqubiexiangjie.htm
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)