skbio.sequence.DNA.concat

classmethod DNA.concat(sequences, how='strict')[源代码]

连接的iterable Sequence 物体。

状态:从0.4.1开始试验。

参数:
  • sequences (iterable (Sequence)) -- 相当于 Sequence 对象或适当的子类。

  • how ({'strict', 'inner', 'outer'}, optional) -- 如何与 positional_metadata 顺序的。如果“严格”:则 positional_metadata 必须具有完全相同的列;“inner”:列的内部联接(只使用共享的一组列);“outer”:列的外部联接(使用所有列:缺少的值将用NaN填充)。

返回:

返回的序列将是调用此类方法的类的实例。

返回类型:

Sequence

抛出:
  • ValueError -- 如果 how 不是“strict”、“inner”或“outer”之一。

  • ValueError -- 如果 how 是“严格”和 positional_metadata 每个序列的列不相同。

  • TypeError -- 如果序列不能转换为调用类。

备注

序列范围元数据 (Sequence.metadata )在连接期间不保留。

只有当新类型是原始类型的祖先或子类型时,序列对象才能强制转换为其他类型。不允许在兄弟类型之间进行转换,例如。 DNA > RNA 不允许,但是 DNA > SequenceSequence > DNA 会的。

示例

将两个DNA序列连接成一个新的DNA对象:

>>> from skbio import DNA, Sequence
>>> s1 = DNA("ACGT")
>>> s2 = DNA("GGAA")
>>> DNA.concat([s1, s2])
DNA
--------------------------
Stats:
    length: 8
    has gaps: False
    has degenerates: False
    has definites: True
    GC-content: 50.00%
--------------------------
0 ACGTGGAA

将DNA序列连接到序列对象中(类型强制):

>>> Sequence.concat([s1, s2])
Sequence
-------------
Stats:
    length: 8
-------------
0 ACGTGGAA

保存位置元数据:

>>> s1 = DNA('AcgT', lowercase='one')
>>> s2 = DNA('GGaA', lowercase='one',
...          positional_metadata={'two': [1, 2, 3, 4]})
>>> result = DNA.concat([s1, s2], how='outer')
>>> result
DNA
---------------------------
Positional metadata:
    'one': <dtype: bool>
    'two': <dtype: float64>
Stats:
    length: 8
    has gaps: False
    has degenerates: False
    has definites: True
    GC-content: 50.00%
---------------------------
0 ACGTGGAA
>>> result.positional_metadata
     one  two
0  False  NaN
1   True  NaN
2   True  NaN
3  False  NaN
4  False  1.0
5  False  2.0
6   True  3.0
7  False  4.0