AnnotatedSequence#

class biotite.sequence.AnnotatedSequence(annotation, sequence, sequence_start=1)[source]#

Bases: Copyable

An AnnotatedSequence is a combination of a Sequence and an Annotation.

Indexing an AnnotatedSequence with a slice returns another AnnotatedSequence with the corresponding subannotation and a sequence start corrected subsequence, i.e. indexing starts at 1 with the default sequence start 1. The sequence start in the newly created AnnotatedSequence is the start of the slice. Furthermore, integer indices are allowed in which case the corresponding symbol of the sequence is returned (also sequence start corrected). In both cases the index must be in range of the sequence, e.g. if sequence start is 1, index 0 is not allowed. Negative indices do not mean indexing from the end of the sequence, in contrast to the behavior in Sequence objects. Both index types can also be used to modify the sequence.

Another option is indexing with a Feature (preferably from the Annotation in the same AnnotatedSequence). In this case a sequence, described by the location(s) of the Feature, is returned. When using a Feature for setting an AnnotatedSequence with a sequence, the new sequence is replacing the locations of the Feature. Note the the replacing sequence must have the same length as the sequence of the Feature index.

Parameters:
sequenceSequence

The sequence. Usually a NucleotideSequence or ProteinSequence.

annotationAnnotation

The annotation corresponding to sequence.

sequence_startint, optional

By default, the first symbol of the sequence is corresponding to location 1 of the features in the annotation. The location of the first symbol can be changed by setting this parameter. Negative values are not supported yet.

See also

Annotation, Sequence

Examples

Creating an annotated sequence

>>> sequence = NucleotideSequence("ATGGCGTACGATTAGAAAAAAA")
>>> feature1 = Feature("misc_feature", [Location(1,2), Location(11,12)],
...                    {"note" : "walker"})
>>> feature2 = Feature("misc_feature", [Location(16,22)], {"note" : "poly-A"})
>>> annotation = Annotation([feature1, feature2])
>>> annot_seq = AnnotatedSequence(annotation, sequence)
>>> print(annot_seq.sequence)
ATGGCGTACGATTAGAAAAAAA
>>> for f in sorted(list(annot_seq.annotation)):
...     print(f.qual["note"])
walker
poly-A

Indexing with integers, note the sequence start correction

>>> print(annot_seq[2])
T
>>> print(annot_seq.sequence[2])
G

indexing with slices

>>> annot_seq2 = annot_seq[:16]
>>> print(annot_seq2.sequence)
ATGGCGTACGATTAG
>>> for f in annot_seq2.annotation:
...     print(f.qual["note"])
walker

Indexing with features

>>> print(annot_seq[feature1])
ATAT
>>> print(annot_seq[feature2])
AAAAAAA
>>> print(annot_seq.sequence)
ATGGCGTACGATTAGAAAAAAA
>>> annot_seq[feature1] = NucleotideSequence("CCCC")
>>> print(annot_seq.sequence)
CCGGCGTACGCCTAGAAAAAAA
Attributes:
sequenceSequence

The represented sequence.

annotationAnnotation

The annotation corresponding to sequence.

sequence_startint

The location of the first symbol in the sequence.

copy()#

Create a deep copy of this object.

Returns:
copy

A copy of this object.

reverse_complement(sequence_start=1)#

Create the reverse complement of the annotated sequence.

This method accurately converts the position and the strand of the annotation. The information on the sequence start is lost.

Parameters:
sequence_startint, optional

The location of the first symbol in the reverse complement sequence.

Returns:
The reverse complement of the annotated sequence.