‘壹’ 生物信息学习题,如何回答~
建议你找本书看看,这都是基本的东西
‘贰’ 生物信息学有哪些经典的应用实例
1,测序与序列比对(Sequence Alignment)
测序是生物信息学的基础和主要数据来源,可以是人类数据也可以是其他的数据。序列比对的基本问题是比较两个或两个以上符号序列的相似性或不相似性.从生物学的初衷来看,这一问题包含了以下几个意义:从相互重叠的序列片断中重构DNA的完整序列.在各种试验条件下从探测数据(probe data)中决定物理和基因图存贮,遍历和比较数据库中的DNA序列比较两个或多个序列的相似性在数据库中搜索相关序列和子序列寻找核苷酸(nucleotides)的连续产生模式找出蛋白质和DNA序列中的信息成分序列比对考虑了DNA序列的生物学特性,如序列局部发生的插入,删除(前两种简称为indel)和替代,序列的目标函数获得序列之间突变集最小距离加权和或最大相似性和,对齐的方法包括全局对齐,局部对齐,代沟惩罚等.两个序列比对常采用动态规划算法,这种算法在序列长度较小时适用,然而对于海量基因序列(如人的DNA序列高达109bp),这一方法就不太适用,甚至采用算法复杂性为线性的也难以奏效.因此,启发式方法的引入势在必然,着名的BALST和FASTA算法及相应的改进方法均是从此前提出发的.
2, 蛋白质结构比对和预测
基本问题是比较两个或两个以上蛋白质分子空间结构的相似性或不相似性.蛋白质的结构与功能是密切相关的,一般认为,具有相似功能的蛋白质结构一般相似.蛋白质是由氨基酸组成的长链,长度从50到1000~3000AA(Amino Acids),蛋白质具有多种功能,如酶,物质的存贮和运输,信号传递,抗体等等.氨基酸的序列内在的决定了蛋白质的3维结构.一般认为,蛋白质有四级不同的结构.研究蛋白质结构和预测的理由是:医药上可以理解生物的功能,寻找dockingdrugs的目标,农业上获得更好的农作物的基因工程,工业上有利用酶的合成.直接对蛋白质结构进行比对的原因是由于蛋白质的3维结构比其一级结构在进化中更稳定的保留,同时也包含了较AA序列更多的信息.蛋白质3维结构研究的前提假设是内在的氨基酸序列与3维结构一一对应(不一定全真),物理上可用最小能量来解释.从观察和总结已知结构的蛋白质结构规律出发来预测未知蛋白质的结构.同源建模(homology modeling)和指认(Threading)方法属于这一范畴.同源建模用于寻找具有高度相似性的蛋白质结构(超过30%氨基酸相同),后者则用于比较进化族中不同的蛋白质结构.然而,蛋白结构预测研究现状还远远不能满足实际需要.
3, 基因识别,非编码区分析研究.
基因识别的基本问题是给定基因组序列后,正确识别基因的范围和在基因组序列中的精确位置.非编码区由内含子组成(introns),一般在形成蛋白质后被丢弃,但从实验中,如果去除非编码区,又不能完成基因的复制.显然,DNA序列作为一种遗传语言,既包含在编码区,又隐含在非编码序列中.分析非编码区DNA序列目前没有一般性的指导方法.在人类基因组中,并非所有的序列均被编码,即是某种蛋白质的模板,已完成编码部分仅占人类基因总序列的3~5%,显然,手工的搜索如此大的基因序列是难以想象的.侦测密码区的方法包括测量密码区密码子(codon)的频率,一阶和二阶马尔可夫链,ORF(Open Reading Frames),启动子(promoter)识别,HMM(Hidden Markov Model)和GENSCAN,Splice Alignment等等.
‘叁’ smith waterman算法中的动态规划中怎么将所有的路径显示出来
function fib(n)
var previousFib := 0, currentFib := 1
if n = 0
return 0
else if n = 1
return 1
repeat n-1 times
var newFib := previousFib + currentFib
previousFib := currentFib
currentFib := newFib
return currentFib
在这两个例子,我们都只计算fib(2)一次,然后用它来计算fib(3)和fib(4),而不是每次都重新计算。
2. 一种平衡的0-1矩阵
考虑n*n矩阵的赋值问题:只能赋0和1,n为偶数,使每一行和列均含n/2个0及n/2个1。例如,当n=4时,两种可能的方案是:
+ - - - - + + - - - - +
| 0 1 0 1 | | 0 0 1 1 |
| 1 0 1 0 | | 0 0 1 1 |
| 0 1 0 1 | | 1 1 0 0 |
| 1 0 1 0 | | 1 1 0 0 |
+ - - - - + + - - - - +
问:对于给定n,共有多少种不同的赋值方案。
至少有三种可能的算法来解决这一问题:穷举法(brute force)、回溯法(backtracking)及动态规划(dynamic programming)。穷举法列举所有赋值方案,并逐一找出满足平衡条件的方案。由于共有C(n, n/2)^n种方案(在一行中,含n/2个0及n/2个1的组合数为C(n,n/2),相当于从n个位置中选取n/2个位置置0,剩下的自然是1),当n=6时,穷举法就已经几乎不可行了。回溯法先将矩阵中部分元素置为0或1,然后检查每一行和列中未被赋值的元素并赋值,使其满足每一行和列中0和1的数量均为n/2。回溯法比穷举法更加巧妙一些,但仍需遍历所有解才能确定解的数目,可以看到,当n=8时,该题解的数目已经高达116963796250。动态规划则无需遍历所有解便可确定解的数目(意思是划分子问题后,可有效避免若干子问题的重复计算)。
通过动态规划求解该问题出乎意料的简单。考虑每一行恰含n/2个0和n/2个1的k*n(1<=k<=n)的子矩阵,函数f根据每一行的可能的赋值映射为一个向量,每个向量由n个整数对构成。向量每一列对应的一个整数对中的两个整数分别表示该列上该行以下已经放置的0和1的数量。该问题即转化为寻找f((n/2,n/2),(n/2,n/2),...,(n/2,n/2))(具有n个参数或者说是一个含n个元素的向量)的值。其子问题的构造过程如下:
1) 最上面一行(第k行)具有C(n, n/2)种赋值;
2) 根据最上面一行中每一列的赋值情况(为0或1),将其对应整数对中相应的元素值减1;
3) 如果任一整数对中的任一元素为负,则该赋值非法,不能成为正确解;
4) 否则,完成对k*n的子矩阵中最上面一行的赋值,取k=k-1,计算剩余的(k-1)*n的子矩阵的赋值;
5) 基本情况是一个1*n的细小的子问题,此时,该子问题的解的数量为0或1,取决于其向量是否是n/2个(0, 1)和n/2个(1, 0)的排列。
例如,在上面给出的两种方案中,向量序列为:
((2, 2) (2, 2) (2, 2) (2, 2)) ((2, 2) (2, 2) (2, 2) (2, 2)) k = 4
0 1 0 1 0 0 1 1
((1, 2) (2, 1) (1, 2) (2, 1)) ((1, 2) (1, 2) (2, 1) (2, 1)) k = 3
1 0 1 0 0 0 1 1
((1, 1) (1, 1) (1, 1) (1, 1)) ((0, 2) (0, 2) (2, 0) (2, 0)) k = 2
0 1 0 1 1 1 0 0
((0, 1) (1, 0) (0, 1) (1, 0)) ((0, 1) (0, 1) (1, 0) (1, 0)) k = 1
1 0 1 0 1 1 0 0
((0, 0) (0, 0) (0, 0) (0, 0)) ((0, 0) (0, 0), (0, 0) (0, 0))
动态规划在此的意义在于避免了相同f的重复计算,更进一步的,上面着色的两个f,虽然对应向量不同,但f的值是相同的,想想为什么吧:D。
该问题解的数量(序列a058527在OEIS)是1, 2, 90, 297200, 116963796250, 6736218287430460752, ...
下面的外部链接中包含回溯法的Perl源代码实现,以及动态规划法的MAPLE和C语言的实现。
3. 棋盘
考虑n*n的棋盘及成本函数C(i,j),该函数返回方格(i,j)相关的成本。以5*5的棋盘为例:
5 | 6 7 4 7 8
4 | 7 6 1 1 4
3 | 3 5 7 8 2
2 | 2 6 7 0 2
1 | 7 3 5 6 1
- + - - - - -
| 1 2 3 4 5
可以看到:C(1,3)=5
从棋盘的任一方格的第一阶(即行)开始,寻找到达最后一阶的最短路径(使所有经过的方格的成本之和最小),假定只允许向左对角、右对角或垂直移动一格。
5 |
4 |
3 |
2 | x x x
1 | o
- + - - - - -
| 1 2 3 4 5
该问题展示了最优子结构。即整个问题的全局解依赖于子问题的解。定义函数q(i,j),令:q(i,j)表示到达方格(i,j)的最低成本。
如果我们可以求出第n阶所有方格的q(i,j)值,取其最小值并逆向该路径即可得到最短路径。
记q(i,j)为方格(i,j)至其下三个方格((i-1,j-1)、(i-1,j)、(i-1,j+1))最低成本与c(i,j)之和,例如:
5 |
4 | A
3 | B C D
2 |
1 |
- + - - - - -
| 1 2 3 4 5
q(A) = min(q(B),q(C),q(D)) + c(A)
定义q(i,j)的一般形式:
|- inf. j<1 or j>n
q(i,j) = -+- c(i,j) i=1
|- min(q(i-1,j-1),q(i-1,j),q(i-1,j+1))+c(i,j) otherwise.
方程的第一行是为了保证递归可以退出(处理边界时只需调用一次递归函数)。第二行是第一阶的取值,作为计算的起点。第三行的递归是算法的重要组成部分,与例子A、B、C、D类似。从该定义我们可以直接给出计算q(i,j)的简单的递归代码。在下面的伪代码中,n表示棋盘的维数,C(i,j)是成本函数,min()返回一组数的最小值:
function minCost(i, j)
if j < 1 or j > n
return infinity
else if i = 1
return c(i,j)
else
return min(minCost(i-1,j-1),minCost(i-1,j),minCost(i-1,j+1))+c(i,j)
需要指出的是,minCost只计算路径成本,并不是最终的实际路径,二者相去不远。与Fibonacci数相似,由于花费大量时间重复计算相同的最短路径,这一方式慢的恐怖。不过,如果采用自下而上法,使用二维数组q[i,j]代替函数minCost,将使计算过程快得多。我们为什么要这样做呢?选择保存值显然比使用函数重复计算相同路径要简单的多。
我们还需要知道实际路径。路径问题,我们可以通过另一个前任数组p[i,j]解决。这个数组用于描述路径,代码如下:
function computeShortestPathArrays()
for x from 1 to n
q[1, x] := c(1, x)
for y from 1 to n
q[y, 0] := infinity
q[y, n + 1] := infinity
for y from 2 to n
for x from 1 to n
m := min(q[y-1, x-1], q[y-1, x], q[y-1, x+1])
q[y, x] := m + c(y, x)
if m = q[y-1, x-1]
p[y, x] := -1
else if m = q[y-1, x]
p[y, x] := 0
else
p[y, x] := 1
剩下的求最小值和输出就比较简单了:
function computeShortestPath()
computeShortestPathArrays()
minIndex := 1
min := q[n, 1]
for i from 2 to n
if q[n, i] < min
minIndex := i
min := q[n, i]
printPath(n, minIndex)
function printPath(y, x)
print(x)
print("<-")
if y = 2
print(x + p[y, x])
else
printPath(y-1, x + p[y, x])
‘肆’ 序列比对的分类
把两个以上字符序列对齐,逐列比较其字符的异同,使得每一列字符尽可能一致,以发现其共同的结构特征的方法称为多序列比对 。多序列比对问题其实是双序列比对问题的推广。
多序列比对的目标是使得参与比对的序列中有尽可能多的列具有相同的字符,即,使得相同残基的位点位于同一列,这样以便于发现不同的序列之间的相似部分,从而推断它们在结构和功能上的相似关系,主要用于分子进化关系,预测蛋白质的二级结构和三级结构、估计蛋白质折叠类型的总数,基因组序列分析等。
由于多序列比对能够揭示双序列比对所不能发现的序列微弱相似性、序列模式和功能位点,因而对蛋白质和核酸序列的结构、功能和进化研究更加有用。 1981年,由F. Smith 和 M.Waterman首次提出局部比对算法,动态规划方法通过较少的改动便可以用来识别匹配的子序列, 并且忽略匹配区域之前或之后的失配和空位;局部比对时,表中小于零的位置用零代替。主要用来考察两序列的某些特殊片段。
‘伍’ 在WGS检验程序,列出至少五个在抽箱过程中应遵循的关键点是什么
人类基因组中的变异和人类的演化、疾病风险等方面都有着密切的联系。当前二代短读长高通量测序技术(NGS),虽然能够让测序成本大大降低,但这种短读长的测序方法也给基因组的变异检测(特别是结构性变异检测)带来了不小的挑战。SNP和Indel大家应该都见得比较多了,因此在这篇文章里我将主要讨论常见结构性变异的检测方法和有关软件以及它们的一些优缺点。
变异的分类
在开始之前,有必要先梳理一下人类基因组上的变异种类,按照目前业界的看法可以分为如下三个大类:
单碱基变异,即单核苷酸多态性(SNP),最常见也最简单的一种基因组变异形式;
很短的Insertion 和 Deletion,也常被我们合并起来称为Indel。主要指在基因组某个位置上发生较短长度的线性片段插入或者删除的现象。强调线性的原因是,这里的插入和删除是有前后顺序的与下述的结构性变异不同。Indel长度通常在50bp以下,更多时候甚至是不超过10bp,这个长度范围内的序列变化可以通过Smith-Waterman 的局部比对算法来准确获得,并且也能够在目前短读长的测序数据中较好地检测出来;
基因组结构性变异(Structure Variantions,简称SVs),这篇文章的重点,通常就是指基因组上大长度的序列变化和位置关系变化。类型很多,包括长度在50bp以上的长片段序列插入或者删除(Big Indel)、串联重复(Tandem repeate)、染色体倒位(Inversion)、染色体内部或染色体之间的序列易位(Translocation)、拷贝数变异(CNV)以及形式更为复杂的嵌合性变异。
值得一提的是,研究人员对基因组的结构性变异发生兴趣,主要还是由于在研究中发现:
SVs对基因组的影响比起SNP更大,一旦发生往往会给生命体带来重大影响,比如导致出生缺陷、癌症等;
有研究发现,基因组上的SVs比起SNP而言,更能代表人类群体的多样性特征;
稀有且相同的一些结构性变异往往和疾病(包括癌症)的发生相互关联甚至还是其直接的致病诱因。比如,《我不是药神》电影中提到的慢粒白血病,它就和基因组的结构性变异直接相关。它是由于细胞中的9号染色体长臂与22号染色体长臂相互易位,导致ABL基因和BCR基因融合,形成了一个会导致ABL异常表达的小型染色体(称为费城染色体)发生的。这是一个典型的结构性变异致癌的例子。
‘陆’ 序列比对结果的一根线是啥意思
这是一种序列比对在线工具。
从早期序列比对工具Needleman-Wunsch、Smith-Waterman到后来的Clustal算法,以及近几年的Muscle、MAFFT序列比对算法。算法在向更快、更精确。
为确定两个或多个序列之间的相似性以至于同源性,而将它们按照一定的规律排列。将两个或多个序列排列在一起,标明其相似之处。序列中可以插入间隔(通常用短横线“-”表示)。
‘柒’ 基于动态规划思想的双序列比对算法的全部可执行代码将不胜感激!
你可以到google上面查一下,第一页就有.
‘捌’ smith waterman算法中的动态规划怎么实现
下载软件解决
‘玖’ 高中生物短序列是什么
基因组中由寡核苷酸串联,重复排列的DNA序列,构成数量可变的串联重复序列,其中,微卫星DNA又称为短串联重复片列,是一种可遗传的不稳定的且具有高度多态性的短核苷酸重复序列,具有种类多,分布广,高度多态性等特点,这种多态性标志已广泛用于遗传病及亲子鉴定等.
短序列比对中,一般常用的算法主要有三个:
(1) 空位种子片段索引法,如MAQ、ELAND等,首先将读段切分,并选取其中一段或几段作为种子建立搜索索引,再通过查找索引、延展匹配来实现读段定位,通过轮换种子考虑允许出现错配(mismatch)的各种可能的位置组合;
(2) Burrows Wheeler转换法,如Bowtie、BWA、SOAP2等,通过B-W转换将基因组序列按一定规则压缩并建立索引,再通过查找和回溯来定位读段,在查找时可通过碱基替代来实现允许的错配;
(3) Smith-Waterman动态规划算法,如BFAST,SHRiMP等,利用初始条件和迭代关系式计算两个序列的所有可能的比对分值,并将结果存放于一个矩阵中,利用动态规划的方法回溯寻找最优的比对结果。