序列与算法
① 求序列号生成算法
随机序列的算法
作者:unknown 更新时间:2005-03-17
找到了两个算法, 第一个很简单, 但可惜不是随机的, 第二个是典型的伪随机数算法, 可惜要用到2的几百万次方这样巨大的整数, 真痛苦
要是有UNIX上计算密码的源代码就好了
第一种做法:
f(k) = (k*F(N-1)) mod F(N)
其中,
k是一个序列号, 就是要取的那个数的顺序号
F(N)是这样一个序列 F(0) = 0, F(1) = 1, F(N+2) = F(N+1)+F(N) (for N>=0)
第二种做法
V = ( ( V * 2 ) + B .xor. B ... )(Mod 2^n)
N+1 N 0 2
V是要取的随机数, B是个种子, n是随机数的最大个数
原来这个问题, 很高难, 不少数学高手都为解决这个问题写了论文, 咳咳, 偶真是个白痴
呵呵, 效果肯定是不错啦, 因为用不到很大的表.
至于应用是这样的, 比如, 你要给每个用户在注册的时候一个ID但有不希望用户在看到自己的ID的时候能知道其他用户的ID, 如果用SEQUENCE来生成ID的话, 一个用户只要把自己的ID减1就能得到其它用户的ID了. 所以要用随机数来做ID, 这样用户很难猜到其他用户的ID了.
当然主要的问题是, 随机数可能重复. 因此希望使用一个随机数做种子用它来确定一组"无规律"的自然数序列, 并且在这个序列中不会出现重复的自然数. 在这里使用的方法生成的序列并不是没有规律的, 只不过这个轨律很难被发现就是了.
Xn+1 = (aXn + b) mod c (其中, abc通常是质数)是一种被广泛使用的最简单的随机数发生算法, 有研究表表明这个算法生成的随机数基本上符合统计规律, JAVA, BORLAND C等用的都是这个方法, 一般只要保证第一个种子是真正的随机数就行了,
下面来说一下重复的问题,
上述方法会有可能出现重复, 因为当(aXn + b)有可能是同样的数或者说余数相同的数, 因此要想不重复就得变形
偶想到的方法是
Xn=(a*n + b) mod c n是一个在1到c之间的整数, a*n + b就是一个线性公式了, 且若n不同则a*n + b也不同, 它们除上质数c得到的余数也肯定不同, 因为 若不考虑a和b而只有n的时候, 每次的结果都是n,而线性公式, 只不过移动了这条直线的位置和斜率而已, 每个结果仍然不会相同的,
为了增加不可预计性, 偶又为上面那个公式设计了, 随机数种子, 于是就变成了这个样子
F(N)=(随机数*(N+随机数))MOD 一个质数
这样就能够产生 1到选定质数之间的一个"无规律"的自然数序列了, 只要改变随机数就能改变序列的次序
在应用的时候, 要把随机数种子和最后用到的序列号保存到一个表里, 每此使用的时候取出来算好, 再把序列号更新一下就可以了
具体地说, 就是可以建一个表来保存每个序列的随机数种子, 然后再为这个序列建一个SEQUENCE就行了
然后就
SELECT MOD(序列控制表.随机数*(SEQ.NEXTVAL+序列控制表.随机数)),序列控制表.质数)
FROM 序列控制表
WHERE 序列控制表.序列ID=XX
就OK了
注意 序列控制表.质数 决定了序列的范围
http://www.ddvip.net/database/mssql/index2/81.htm /* CopyRight */
当然,我以前也见过那种类型的,就是“真随机”,大概是根据随机按键的键位和鼠标在CRT上任意的“随机”位置以及当时的系统时间(或相对间隔,一般至少毫秒级)来适应某种较复杂的算法来产生的。...其实,可以产生随机效应的自变量的确是很多的,就看你怎么用好了。
去看看系统论和混沌学吧,还有高等数学中的分形理论和物理热学中的耗散结构理论,可能会有所帮助,呵呵。
最后,倒有兴趣问问你要的随机数是做什么用呢,是个子问题吗?
② 基因组序列比对算法介绍(一)
基因组重测序中序列比对介绍
重测序基因组数据比对,是指将测序仪下机fastq数据(NGS read序列,通常100-150bp),与人类参考基因组(reference)进行匹配,允许错配(mismatch),插入缺失(indel),目的是在参考基因组找到序列最相似的位置,通常是基因组分析(包括 variation calling,ChIP-seq,RNA-seq,BS-seq)流程的第一步。
常用算法
图一
汉明距离(Hamming distance)表示两个(相同长度)字对应位置不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。图中read1最佳位置的方法,就是通过查找最小汉明距离的实现的。
编辑距离(Edit distance)是针对二个字符串(例如英文字)的差异程度的量化量测,量测方式是看至少需要多少次的处理才能将一个字符串变成另一个字符串。图中read3最佳位置,通过查找最我辑距离的方法实现。
图二
全局比对(Global alignment):全局比对是指将参与比对的两条序列里面的所有字符进行比对。全局比对在全局范围内对两条序列进行比对打分,找出最佳比对,主要被用来寻找关系密切的序列。其可以用来鉴别或证明新序列与已知序列家族的同源性,是进行分子进化分析的重要前提。其代表是Needleman-Wunsch算法。图一中,read3使用全部比对。
局部比对(Local alignment):与全局比对不同,局部比对不必对两个完整的序列进行比对,而是在每个序列中使用某些局部区域片段进行比对。其产生的需求在于、人们发现有的蛋白序列虽然在序列整体上表现出较大的差异性,但是在某些局部区域能独立的发挥相同的功能,序列相当保守。这时候依靠全局比对明显不能得到这些局部相似序列的。其次,在真核生物的基因中,内含子片段表现出了极大变异性,外显子区域却较为保守,这时候全局比对表现出了其局限性,无法找出这些局部相似性序列。其代表是Smith-Waterman局部比对算法。图一中,read2使用局部比对。
图三
Smith-Waterman算法介绍
Smith-Waterman是由Temple F. Smith和Michael S. Waterman于1981年提出的一种进行局部序列比对(相对于全局比对)的算法,用于找出两个核苷酸序列或蛋白质序列之间的相似区域。该算法的目的不是进行全序列的比对,而是找出两个序列中具有高相似度的片段。S-W算法基于动态规划,它接受任意长度、任意位置、任意序列的对齐,并确定是否能找到最优的比对。
简单地说就是,动态规划找到问题中较小部分的解,然后把它们放在一起,形成整个问题的一个完整的最优最终解。
它优于BLAST和FASTA算法,因为它搜索了更大的可能性,具有更高的敏感性。
S-W算法不是一次查看整个序列,而是对多个长度的片段进行比较,寻找能够最大化得分的片段。算法本身本质上是递归的:
图四
算法步骤如下:
基因组分析***** 微信 公众号推出 《50篇文章深入理解NGS》系列文章, 第三篇文章 《基因组序列比对算法介绍(一)》,争取每周更新一篇高质量生信干货帖子。
关注 "基因组分析" 微信公众号,了解最新最全生信分析知识。
③ 序列比对的算法过程
实际操作中利用计算机程序实现序列比对的基本算法。序列比对不仅需要考虑子序列之间的匹配,而且需要对整个序列进行比较。也就是说,必须考虑两个序列中所有残基的匹配。这就意味着,不可能使所有残基都能严格匹配。在这种情况下,序列比对中确定空位的过程变得十分复杂。
在进行序列两两比对时,有两方面问题直接影响相似性分值:取代矩阵和空位罚分。 空位罚分是为了补偿插入和缺失对序列相似性的影响,由于没有什么合适的理论模型能很好地描述空位 问题,因此空位罚分缺乏理论依据而更多的带有主观特色。一般的处理方法是用两个罚分值,一个对插入的第一个空位罚分,如10-15;另一个对空位的延伸罚分,如1-2。对于具体的比对问题,采用不同的罚分方法会取得不同的效果。
对于比对计算产生的分值,到底多大才能说明两个序列是同源的,对此有统计学方法加以说明,主要的思想是把具有相同长度的随机序列进行比对,把分值与最初的比对分值相比,看看比对结果是否具有显着性。相关的参数E代表随机比对分值不低于实际比对分值的概率。对于严格的比对,必须E值低于一定阈值才能说明比对的结果具有足够的统计学显着性,这样就排除了由于偶然的因素产生高比对得分的可能。
④ 优必杰最近推出了不插电编程课,什么叫不插电编程课
不插电编程课是用不插电形式学习编程,学生自己用笔在白板纸设计。如需学习少儿编程推荐选择童程童美,该机构提供更高标准的科技素质教育,更利于编程底层逻辑和思维的养成,更能激发孩子自主学习的热情。学少儿编程可以提高孩子逻辑思维、专注力!
童程童美不插电编程课步骤如下:
1、序列与算法:序列,就是做事的顺序。而算法,就是一种特殊的,专门用于解决某个问题的序列。
2、认识模式:孩子们将学习如何寻找模式,用物品分类的方式强化对模式的认识。
3、逻辑判断:一些复杂的情况是这些基础结构无法描述的,这个时候就要引入一个新的概念,判断。
4、流程图:如果判断的条件很多,判断的顺序又分先后的话,就很容易让人混乱,为了便于表达算法逻辑,会在这里引入一个新的概念,流程图。
5、处理错误:出了错误不可怕,如何分析,解决,改良这些错误,才最重要。童程童美少儿编程体验课,点击可免费报名试听
想了解更多关于不插电编程的相关内容,推荐咨询童程童美。童程童美专注于中国6-18岁青少儿编程教育,经过多年,研发出针对中国儿童的编程教育体系,在140多所中小学院校开展了编程课程。实行“严选拔、强实力、常培训”的教师管理标准,真人老师全部全职,坚持为学生提供高品质编程素质教育。
⑤ 实序列的FFT算法
在以上讨论FFT算法中,均假定序列x(l)为复的,但实际问题中的序列大多为实的。当然,我们可以把实序列处理成虚部为零的复序列。因此,就要引进许多零参加运算。这样一来,在机器运算时间和存储单元方面都将造成很大的浪费。在本段中,我们介绍对实序列x(l)应用FFT算法的一个有效方法。
1.同时计算两个实序列的FFT算法
设有N=4的两个实序列x1(l)与x2(l)。为了求得它们的谱X1(m)与X2(m),我们用此二实序列构造成如下复序列
物探数字信号分析与处理技术
利用上一段的方法,可以求得复序列x(l)的谱X(m)。根据(7-3-1)得到
物探数字信号分析与处理技术
上式中的m用N-m代替,则得
物探数字信号分析与处理技术
将上式两端取共轭,根据对称性有
物探数字信号分析与处理技术
根据DFT的复共轭性质,对于实序列x1(l)与x2(l),有
物探数字信号分析与处理技术
于是从(7-3-4)得到
物探数字信号分析与处理技术
联立求解(7-3-2)和(7-3-6)便得到
物探数字信号分析与处理技术
例如设有两个N=4点的实序列,
物探数字信号分析与处理技术
我们用它们构造一个N=4点的复序列
物探数字信号分析与处理技术
利用FFT算法求X(m),m=0,1,2,3(图7-3-1),
图7-3-1 N=4点的FFT算法流程图
于是得到
物探数字信号分析与处理技术
因此从式(7-3-7)得到
物探数字信号分析与处理技术
物探数字信号分析与处理技术
2.实序列的FFT算法
设有N点的实序列x(l),l=0,1,2,…,N-1。按照点的奇偶编号,将它们分成N/2个点的两个子序列
物探数字信号分析与处理技术
设x1(l)的谱与x2(l)的谱分别为X1(m)与X2(m)
物探数字信号分析与处理技术
其中
于是可以将实序列x(l)的谱X(m),用两个子序列x1(l),x2(l)的谱X1(m),X2(m)来表示
物探数字信号分析与处理技术
其中
物探数字信号分析与处理技术
注意,x1(l),x2(l)与X1(m),X2(m)均以N/2为周期,
利用x1(l)、x2(l)构成如下复序列
物探数字信号分析与处理技术
利用FFT算法可以求得复序列 的谱 。根据(7-3-7)就求得两个实子序列的谱X1(m)与X2(m)
物探数字信号分析与处理技术
有了X1(m),X2(m),根据(7-3-10)就可求得X(m)。以上就是用FFT算法求实序列x(l)的谱X(m)的方法。必须指出,用公式(7-3-10)求X(m)时,第一,两个实子序列的谱X1(m),X2(m)及复序列x珓(l)的谱珘X(m)均是以N/2为周期的周期序列;第二,由于x
(l)是实序列,根据DFT的复共轭性质有X(m)=X*(N-m),m=0,1,…,N/2,故只需求得前(N/2)+1个点的X(m),就得到全部N个点的X(m)了
例如,有N=8点的实序列,
物探数字信号分析与处理技术
首先,按点的奇偶编号分成两个实子序列,
物探数字信号分析与处理技术
其次用它们构造如下复序列,
物探数字信号分析与处理技术
用FFT算法求此复序列的谱 (图7-3-2)
图7-3-2 N=4点的FFT算法流程图
于是得到:
根据周期性,有
物探数字信号分析与处理技术
根据(7-3-12)式,
物探数字信号分析与处理技术
根据周期性,有
物探数字信号分析与处理技术
故最终由(7-3-10)得到
物探数字信号分析与处理技术
⑥ 序列比对及算法模式的选择
选择序列比对的方法:Muscle或者ClustalW。 ClustalW 的基本原理是首先做序列的两两比对,根据该两两比对计算两两距离矩阵,是一种经典的比对方法,使用范围也比较广泛。 Muscle 的功能仅限于多序列比对,它的最大优势是速度,比ClustalW的速度快几个数量级,而且序列数越多速度的差别越大。方法可以通过点击图中上方Alignment或者下方的图标“W”和“Muscle”来选择。如果你的序列是 DNA编码序列 ,就一定要选择 Align Codons ,因为序列通过密码子比对比DNA序列的比对会更加真实,避免间隙对比对结果产生的影响。
(但是该选项会因为序列中含有终止密码而报错。)
比对之后要去检查一下比对的情况,有的差异很大的或许是因为序列方向反了,这个时候要把它反转回来,右击这条序列,点击Reverse Complement,反转后一定要再次点击比对,检查是否大部分都对齐了。
分析后返回主页面,接下来我们要选择一个最优的模型,提高建树的精确度。点击 MODELS 中的 Find Best DNA/Protein Models(ML) 软件就会根据你的数据帮你计算寻找最适合的模型。
分析计算结果。具有 最低BIC分数 (BayesianInformation Criterion)的模型被认为 是最好地描述替代模式 。对于每个模型,还给出了AICc值(Akaike Information Criterion, corrected,值越低拟合程度越好),以及用来计算上述两个分值的最大似然值(lnL)和参数数量(包括分支长度)。在这里就可以看到,BIC分数最低的模型是K2+G+I,K2+G+I在这里就是最好的模型。
但因为实际在后面的模型选择中, 软件有时没有提供组合的模型来选择 ,所以我们继续看下面的BIC分数,可以找到 单个模型 中得分 最小的 ,就是我们在这里要选择的最优模型。