3

我是 Python 和一般编程的新手。我已经安装了 BioPython,希望它的一些组件可以帮助我编写一个脚本。该脚本需要处理许多 xread 文件,每个文件都包含一个矩阵,我需要以多种方式对其进行切片。我希望已经存在一个序列数据类型或类(有区别吗?),它允许以非 IUPAC 格式编码的不明确字符的序列所需的奇怪方式进行索引。例如,在序列中。

2-123[01]3-22

字符串文字中的字符表示所表示的 DNA 序列中[01]的单个模棱两可的字符,或者0或。1所以切片[-6:]应该返回3[01]3-22。我在 BioPython 文档中找不到任何关于此的内容,尽管我可能忽略了它。如果 BioPython 中有一些东西可以做到这一点,你能指点我看相关的文档吗?

谢谢。

4

1 回答 1

2

我不是 BioPython 专家,但您可以定义自己的类以按照您需要的方式工作。您需要先解析它,也许使用正则表达式。例如:

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

也许您需要定义一些其他方法来获得所需的行为。

于 2012-06-21T17:49:38.280 回答