2

我想知道 python 或 biopython 中是否有任何方法允许在 html 中标记序列。

我想根据该位置是否是已知的 snp/indel 等来标记序列上的位置(即不同的颜色基数)

在数组中有一个突变位置列表(从数据库中读取),例如

突变位置 = [10,20,30,40]

我可以使用以下方法更改受影响基础的大小写: seq = seq[0:b] + mutation_positions[b].lower() + seq[(b+1):len(seq)]

但是是否可以添加一些 html 代码,例如为每个突变位置添加标签 pos。(当 html 标记添加到序列中时,序列的长度会改变,因此在循环的每次迭代中突变位置与新标记的序列不匹配!)

我希望这是有道理的!

谢谢。

4

2 回答 2

2

如果你想让你的突变变成绿色并且你有一个突变列表(0索引):

>>> seq = "ACGTACGT"
>>> muts = [0,1,5]
>>> mark_up = "<span style='color:green;'>%s</span>"

# use list comprehension to add mark up to muts
>>> marked_up_seq = [ mark_up % seq[x] if x in muts else seq[x] for x in range(0,len(seq)) ]

# rejoin marked up list
>>> "".join(marked_up_seq)
"<span style='color:green;'>A</span><span style='color:green;'>C</span>GTA<span style='color:green;'>C</span>GT"
>>> 

为了清楚起见,用数字表示:

>>> seq = "0123456789"
>>> muts = [1,3,4,9]
>>> marked_up_seq = [ mark_up % seq[x] if x in muts else seq[x] for x in range(0,len(seq)) ]
>>> "".join(marked_up_seq)
"0<span style='color:green;'>1</span>2<span style='color:green;'>3</span><span style='color:green;'>4</span>5678<span style='color:green;'>9</span>"

这不是最优雅的解决方案,请注意可以组合 3 和 4 周围的标签。

于 2011-03-22T11:25:08.683 回答
0

仅使用 DTing 的示例(和 HTML),也许这更干净一点:

seq = "ACGTACGT"
muts = [0,1,5]
marked_up = ""

for pos, nuc in enumerate(seq):
    if pos in muts:
        marked_up = marked_up + "<span class=\"mutated\">" + nuc + "</span>"
    else:
        marked_up = marked_up + nuc

print marked_up

然后你只需要为一些 CSS 添加一个样式,比如:

span#mutated
{
    color:red;
}

这给出了以下输出:

<span class="mutated">A</span><span class="mutated">C</span>GTA<span class="mutated">C</span>GT

看起来像这样(如果您将跨度交换为<b> 和</b>):

A C GTA C GT

于 2011-04-25T16:46:51.297 回答