skbio.metadata.IntervalMetadata

class skbio.metadata.IntervalMetadata(upper_bound, copy_from=None)[源代码]

存储间隔功能。

IntervalMetadata 对象允许存储、修改和查询覆盖单个坐标系区域的间隔要素。例如,这可以用来存储基因在整个基因组中的功能注释。此对象也应用于序列对齐。

此对象通常与另一个对象耦合,例如 Sequence 对象(或其子类),或 TabularMSA 对象。

参数:
  • upper_bound (int or None) -- 定义间隔特征的独占上限。坐标不能大于它。 None 意味着坐标空间是无界的。

  • copy_from (IntervalMetadata or None, optional) -- 从输入创建新对象 IntervalMetadata 如果不是,则通过浅层复制 None . 新对象的上限将更新为 upper_bound 指定了参数。

备注

此类将所有特征边界的坐标存储到一个间隔树中。它允许按边界加速查询。为了节省计算量,区间树的建立被推迟到必要的时候。只有当您需要从间隔树中获取信息时,它才会从所有坐标更新。

当您向这个类中添加一个方法,并且您的方法需要从 IntervalMetadata._interval_tree ,你应该用 _rebuild_tree . 这个修饰符将检查当前的间隔树是否过时,如果过时,它将更新它。此外,如果您的方法添加、删除或更改任何间隔要素的坐标,则应设置 self._is_stale_treeTrue 在方法的末尾,指示间隔树变得过时。

示例

假设我们有一个长度为10的序列,并希望向其添加注释。创建 IntervalMetadata 对象:

>>> from skbio.metadata import Interval, IntervalMetadata
>>> im = IntervalMetadata(10)

让我们添加3个基因的注释:

>>> im.add(bounds=[(3, 9)],
...        metadata={'gene': 'sagB'})  
Interval(interval_metadata=..., bounds=[(3, 9)], fuzzy=[(False, False)], metadata={'gene': 'sagB'})
>>> im.add(bounds=[(3, 7)],
...        metadata={'gene': 'sagC'})  
Interval(interval_metadata=..., bounds=[(3, 7)], fuzzy=[(False, False)], metadata={'gene': 'sagC'})
>>> im.add(bounds=[(1, 2), (4, 7)],
...        metadata={'gene': 'sagA'})  
Interval(interval_metadata=..., bounds=[(1, 2), (4, 7)], fuzzy=[(False, False), (False, False)], metadata={'gene': 'sagA'})

显示对象表示:

>>> im    
3 interval features
-------------------
Interval(interval_metadata=..., bounds=[(3, 9)], fuzzy=[(False, False)], metadata={'gene': 'sagB'})
Interval(interval_metadata=..., bounds=[(3, 7)], fuzzy=[(False, False)], metadata={'gene': 'sagC'})
Interval(interval_metadata=..., bounds=[(1, 2), (4, 7)], fuzzy=[(False, False), (False, False)], metadata={'gene': 'sagA'})

我们可以根据它们的界限对基因进行分类:

>>> im.sort()
>>> im    
3 interval features
-------------------
Interval(interval_metadata=..., bounds=[(1, 2), (4, 7)], fuzzy=[(False, False), (False, False)], metadata={'gene': 'sagA'})
Interval(interval_metadata=..., bounds=[(3, 7)], fuzzy=[(False, False)], metadata={'gene': 'sagC'})
Interval(interval_metadata=..., bounds=[(3, 9)], fuzzy=[(False, False)], metadata={'gene': 'sagB'})

按绑定和/或元数据查询基因:

>>> intvls = im.query([(1, 2)], metadata={'gene': 'foo'})
>>> list(intvls)
[]
>>> intvls = im.query([(7, 9)])
>>> list(intvls)  
[Interval(interval_metadata=..., bounds=[(3, 9)], fuzzy=[(False, False)], metadata={'gene': 'sagB'})]
>>> intvls = im.query(metadata={'gene': 'sagA'})
>>> intvls = list(intvls)
>>> intvls  
[Interval(interval_metadata=..., bounds=[(1, 2), (4, 7)], fuzzy=[(False, False), (False, False)], metadata={'gene': 'sagA'})]

删除我们从查询中获得的基因:

>>> im.drop(intvls)
>>> im.sort()
>>> im   
2 interval features
-------------------
Interval(interval_metadata=..., bounds=[(3, 7)], fuzzy=[(False, False)], metadata={'gene': 'sagC'})
Interval(interval_metadata=..., bounds=[(3, 9)], fuzzy=[(False, False)], metadata={'gene': 'sagB'})

属性

default_write_format 

lower_bound 

区间特征的包含下界。

num_interval_features 

间隔功能的总数。

upper_bound 

区间特征的唯一上界。

内嵌函数

__copy__ \()

返回一个浅拷贝。

__deepcopy__ \(备忘录)

返回一份深度副本。

__eq__ (其他)

测试此对象是否与另一个对象相等。

__ge__(value, /)

返回self>=值。

__getstate__ \()

泡菜的帮手。

__gt__(value, /)

返回self>值。

__le__(value, /)

返回self<=value。

__lt__(value, /)

返回self<value。

__ne__ (其他)

测试此对象是否与另一个对象不相等。

__str__ \()

返回str(self)。

方法

add(bounds[, fuzzy, metadata])

创建并添加 Interval 对此 IntervalMetadata .

concat(interval_metadata)

连接的iterable IntervalMetadata 物体。

drop(intervals[, negate])

删除间隔对象。

merge (其他)

合并另一个的间隔特征 IntervalMetadata 对象。

query([bounds, metadata])

Interval 具有边界和属性的对象。

read(file[, format])

创建新的 IntervalMetadata 实例。

sort([ascending])

按坐标对区间特征进行排序。

write(file[, format])

写一个实例 IntervalMetadata 一个文件。