我是Python新手和一般编程人员。我已经安装了BioPython,希望它的一些组件可以帮助我正在处理的脚本。该脚本需要处理许多xread文件,每个文件都包含一个我需要以多种方式切片的矩阵。我希望已经存在一个序列数据类型或类(有区别吗?),它允许以不同于IUPAC格式编码的模糊字符的序列所需的奇数方式进行索引。例如,在序列中。
2-123[01]3-22
字符串文字[01]
中的字符代表所表示的DNA序列中的单个模糊字符0
或1
。因此切片[-6:]
应返回3[01]3-22
。我在BioPython文档中找不到任何相关内容,但我可能忽略了它。如果BioPython中有什么内容可以做到这一点,请您指点相关文档吗?
感谢。
答案 0 :(得分:2)
我不是BioPython专家,但你可以定义自己的类来按照你需要的方式工作。您需要先解析它,也许使用regular expressions。例如:
import re
class Sequence(list):
def __init__(self, s):
if isinstance(s, str):
self.extend(re.findall(r'[^\[\]]|\[\d+\]', s))
else:
list.__init__(self, s)
def __str__(self):
return ''.join(self)
def __getslice__(self, i, j):
l = list(self)
return Sequence(l[i:j])
测试它:
In [1]: seq = Sequence('2-123[01]3-22')
这是里面的一个清单......
In [2]: seq
Out[2]: ['2', '-', '1', '2', '3', '[01]', '3', '-', '2', '2']
但表现得像一个字符串!
In [3]: print seq
2-123[01]3-22
In [4]: print seq[-6:]
3[01]3-22
也许您需要定义其他methods来获得所需的行为。