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_tree
到True
在方法的末尾,指示间隔树变得过时。示例
假设我们有一个长度为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
一个文件。