- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
如何制作正则表达式来评估以下字符串?
TGATGCCGTCCCCTCAACTTGAGTGCTCCTAATGCGTTGC
并提取模式CTCCT。
模式必须是 3 个 C 和 2 个 T,顺序不限。
我试过/[C | T]{5}/但它匹配 CCCCT 和 TCCCC
提前致谢。
最佳答案
计算“CTCCT”的所有排列并将它们连接到正则表达式:
CCCTT|CCTCT|CCTTC|CTCCT|CTCTC|CTTCC|TCCCT|TCCTC|TCTCC|TTCCC
这个模式可以是optimized :
C(?:C(?:T(?:CT|TC)|CTT)|T(?:C(?:CT|TC)|TCC))|T(?:C(?:C(?:CT|TC)|TCC)|TCCC)
var regex = new RegExp(/C(?:C(?:T(?:CT|TC)|CTT)|T(?:C(?:CT|TC)|TCC))|T(?:C(?:C(?:CT|TC)|TCC)|TCCC)/g);
var string = "TGATGCCGTCCCCTCAACTTGAGTGCTCCTAATGCGTTGC";
console.log(regex.exec(string));
此模式未找到重叠匹配项,例如。 G。 CCCTTCCC
中只有一个匹配项。
要查找重叠的匹配项,请使用前瞻:
C(?=C(?=T(?=CT|TC)|CTT)|T(?=C(?=CT|TC)|TCC))|T(?=C(?=C(?=CT|TC)|TCC)|TCCC)
var regex = new RegExp(/C(?=C(?=T(?=CT|TC)|CTT)|T(?=C(?=CT|TC)|TCC))|T(?=C(?=C(?=CT|TC)|TCC)|TCCC)/g);
var string = "CCCTTCCC";
while ((match = regex.exec(string)) != null) {
console.log(match.index, string.substring(match.index, match.index + 5));
}
正则表达式只能处理数量相当有限的排列。如果您想匹配可能任意大小的段,请使用非正则表达式解决方案:
function c3t2_optimized(str) {
var c = 0, t = 0;
for (var i = 0; i < str.length; ++i) {
var last = str.charAt(i);
if (last == 'C') ++c;
else if (last == 'T') ++t;
if (i > 4) {
var first = str.charAt(i - 5);
if (first == 'C') --c;
else if (first == 'T') --t;
}
if (c == 3 && t == 2) return i - 4;
}
return -1;
}
var string = "TGATGCCGTCCCCTCAACTTGAGTGCTCCTAATGCGTTGC";
console.log(c3t2_optimized(string));
或者和上面一样,就像一个生成器遍历所有可能重叠的匹配:
function* c3t2_optimized(str) {
var c = 0, t = 0;
for (var i = 0; i < str.length; ++i) {
var last = str.charAt(i);
if (last == 'C') ++c;
else if (last == 'T') ++t;
if (i > 4) {
var first = str.charAt(i - 5);
if (first == 'C') --c;
else if (first == 'T') --t;
}
if (c == 3 && t == 2) yield i - 4;
}
}
var string = "CCCTTCCC";
for (i of c3t2_optimized(string)) {
console.log(i, string.substring(i, i + 5));
}
性能比较: https://jsfiddle.net/24qguege/7/
火狐 47:
关于javascript - 正则表达式:匹配 DNA 序列的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37824193/
程序能实现什么 a.完成gap值的自定义输入以及两条需比对序列的输入 b.完成得分矩阵的计算及输出 c.输出序列比对结果 d.使用matplotlib对得分矩阵路径的绘制 1、实现步骤 1
我有一个DNA序列,我想在DNA序列读取列表中找到它的所有实例,或其任何可能的突变。我正在使用grepl来执行此操作,因为在我使用它的实例中,它比matchPattern快。我使用parLapply将
我正在尝试评估Excel DNA在我的 Excel 插件之一中使用它。我使用 C# 函数 (.NET 4.0),并希望从 Excel 调用这些函数。我感兴趣的原因是,我的插件的用户是非管理员,因此如果
有没有办法访问包含我的 UDF 的单元格?当从不同单元运行具有相同参数的函数时,我需要重置一些缓存。在 exceldna utils 中没有找到合适的东西。 谢谢,亚历克斯 最佳答案 你可以调用 Ex
我有以下 t=5 DNA 字符串: DNA = '''CGCCCCTCTCGGGGGTGTTCAGTAAACGGCCA GGGCGAGGTATGTGTAAGTGCCAAGGTGCCAG TAGTACC
我编写了这个野蛮的脚本来创建字符串的排列,其中在字符串中所有可能的位置组合中包含 n 个(最多 n=4)个 $。我最终将 .replace('$','(\\w)') 用于 dna 搜索序列中的不匹配。
我正在用 Scala 构建一个程序,该程序将使用每个字符 8 位的 txt 文件中存储的 DNA 数据转换为使用每个字符 2 位的文件。 DNA 使用的唯一字符是 T、C、A、G。我想为每个字符使用
我目前正在编写一个脚本来在给定两个序列时创建点图。到目前为止,我可以得到一个可爱的 lil 点图。 The X axis is: >HeaderOfSeq1 X = ATCGTAGCTACGTACGT
所以我对编程非常陌生,并且对任何编程语言都不是很了解。我买了一本关于生物学家编程的书,我摸索出了一些东西。我想:从文件中获取序列并从中查找并提取可变区域。我的代码如下: ** #!/usr/bin/p
我正在尝试创建一个程序,使用以下字典将用户输入的 DNA 序列翻译为 3 个替代蛋白质序列(密码子是键,氨基酸是值): {'TGA': '*', 'GCG': 'A', 'CGA': 'R', 'AT
我必须编写一个函数来打印一段 DNA 的最长回文子串。我已经写了一个函数来检查一段 DNA 本身是否是回文。请参阅下面的函数。 def make_complement_strand(DNA):
我想为一组 DNA 序列生成一个热编码。例如,序列 AGCTCCA 可以以转置方式表示如下。但是下面的代码将以水平方式生成一种热编码,我更喜欢以垂直形式进行编码。谁能帮我? ACGTCCA 10000
错误是: 您尝试打开的文件“ExcelDna.xll”与指定的格式不同 文件扩展名。在打开文件之前确认文件没有损坏并且来自受信任的来源。 最佳答案 是的 - 这正是当 .xll 加载项对 Excel
假设我有一个 DNA 序列。我想得到它的补充。我使用了以下代码,但我没有得到它。我究竟做错了什么 ? s=readline() ATCTCGGCGCGCATCGCGTACGCTACTAGC p=unl
问题可以在这里找到: http://rosalind.info/problems/subs/ 我的问题与下面提供的两个解决方案的性能有关。 1. def indexOfAppearances(st
我一直在尝试为大学做动态规划作业,但到目前为止还没有成功。 问题: 给定一个 DNA 字符串和一个突变位置列表(例如,片段 0 和 2 是突变),找到包含最多突变的最长回文子序列。 输入:0到2000
我正在使用 Excel-DNA 将公式插入大约 40k 行 * 10 列,而且速度非常慢。 XlCall.Excel(XlCall.xlcFormula, myFormula, new ExcelR
我正在使用 Excel-DNA 将公式插入大约 40k 行 * 10 列,而且速度非常慢。 XlCall.Excel(XlCall.xlcFormula, myFormula, new ExcelR
如果函数的 ExcelFunction 属性指定 IsMacroType=true ,则只有 Excel-DNA 才允许对 Excel 的 XLL API 进行多次调用。我不清楚的是为什么简单地将它添
我想编写一个代码来计算序列中的所有三元组。到目前为止,我读了很多帖子,但没有一个对我有帮助。 这是我的代码: def cnt(seq): mydict = {} if len(seq)
我是一名优秀的程序员,十分优秀!