RNA.
concat
(sequences, how='strict')[source]¶Concatenate an iterable of Sequence
objects.
State: Experimental as of 0.4.1.
sequences (iterable (Sequence)) – An iterable of Sequence
objects or appropriate subclasses.
how ({'strict', 'inner', 'outer'}, optional) – How to intersect the positional_metadata of the sequences. If ‘strict’: the positional_metadata must have the exact same columns; ‘inner’: an inner-join of the columns (only the shared set of columns are used); ‘outer’: an outer-join of the columns (all columns are used: missing values will be padded with NaN).
The returned sequence will be an instance of the class which called this class-method.
ValueError – If how is not one of: ‘strict’, ‘inner’, or ‘outer’.
ValueError – If how is ‘strict’ and the positional_metadata of each sequence does not have the same columns.
TypeError – If the sequences cannot be cast as the calling class.
Notes
The sequence-wide metadata (Sequence.metadata
) is not retained
during concatenation.
Sequence objects can be cast to a different type only when the new
type is an ancestor or child of the original type. Casting between
sibling types is not allowed, e.g. DNA
-> RNA
is not
allowed, but DNA
-> Sequence
or Sequence
-> DNA
would be.
Examples
Concatenate two DNA sequences into a new DNA object:
>>> 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
Concatenate DNA sequences into a Sequence object (type coercion):
>>> Sequence.concat([s1, s2])
Sequence
-------------
Stats:
length: 8
-------------
0 ACGTGGAA
Positional metadata is conserved:
>>> 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