我想知道python或biopython中是否有任何方法可以在html中标记序列。
我想根据该位置是否为已知的snp / indel等来标记序列上的位置(即颜色基础不同)
在数组中有一个突变位置列表(从数据库中读取),例如
mutation_position = [10,20,30,40]
我可以使用以下内容更改受影响基地的案例: seq = seq [0:b] + mutation_positions [b] .lower()+ seq [(b + 1):len(seq)]
但是可以添加一些HTML代码,例如为每个突变位置添加标签pos。 (当html标记添加到序列中时,序列的长度会发生变化,因此在循环的每次迭代期间,变异位置与新标记的序列不匹配!)
我希望这是有道理的!
感谢。
答案 0 :(得分: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左右的标签可以合并。
答案 1 :(得分: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
&gt;和</b
&gt;)的范围:
A C GTA C GT