可以通过反转该串然后用其补体替换每个碱基(A-> T,T-> A,C-> G,G-> C)来找到对典型DNA碱基串的补充。例如,CTTAACCAGCGGACACGGGCTTGGC的互补序列是GCCAAGCCCGTGTCCGCTGGTTAAG。这些JavaScript DNA补充算法是否等效和最优?
我写了几个算法来做到这一点在JavaScript中,我想知道它们是否是等价的,即例如等效的时间复杂性,但也等同于在浏览器中找到补充和更新HTML文档与输出。我想了解正则表达式以及javacript如何被解释,编译和执行。
首先,脚本使用此正则表达式验证输入字符串s
:/[^CGAT]/
。如果输入字符串除了C,G,A或T之外还有一个字符,脚本将停止并提醒用户原因。接下来,该脚本将生成与var reverseSeq=s.split('').reverse().join('')
(which I found here)相反的字符串。
然后这些javascript中的任何一个将反转的字符串转换为原始的补码。
1)
var complementSeq='';
for (i in reverseSeq){complementSeq=complementSeq+COMPLEMENT_BASES[reverseSeq[i]]};
2.)
complementSeq=reverseSeq.replace(/(A)|(C)|(T)|(G)/g, function (match) {return COMPLEMENT_BASES[match]})
2)取决于该对象上:COMPLEMENT_BASES={'A':'T','T':'A','G':'C','C':'G'};
。
这些方法是否具有相同的效率,并且基本上是等价的?有没有其他的方法可以提高效率?
最快的方式可能是直接替换所有的正则表达式的功能。直到所有的替换都完成后,引擎才会返回。一些引擎提供在线更换。不知道JS虽然。 – sln