biotite.structure.annotate_sse(atom_array, chain_id=None)[source]

Calculate the secondary structure elements (SSEs) of a peptide chain based on the P-SEA algorithm. 1

The annotation is based CA coordinates only, specifically distances and dihedral angles. Discontinuities between chains are detected by residue ID.


The atom array to annotate for. Non-peptide residues are also allowed and obtain a '' SSE.

chain_idstr, optional

The peptide atoms belonging to this chain are filtered and annotated. DEPRECATED: By now multiple chains can be annotated at once. To annotate only a certain chain, filter the atom_array before giving it as input to this function.


An array containing the secondary structure elements, where the index corresponds to a residue of atom_array (see e.g. get_residues()). 'a' means \({\alpha}\)-helix, 'b' means \({\beta}\)-strand/sheet, 'c' means coil. '' indicates that a residue is not an amino acid or it comprises no CA atom.


Although this function is based on the original P-SEA algorithm, there are deviations compared to the official P-SEA software in some cases. Do not rely on getting the exact same results.



G. Labesse, N. Colloc’h, J. Pothier, J. Mornon, “P-SEA: a new efficient assignment of secondary structure from Cα trace of proteins,” Bioinformatics, vol. 13, pp. 291–295, June 1997. doi: 10.1093/bioinformatics/13.3.291


SSE of PDB 1L2Y:

>>> sse = annotate_sse(atom_array, "A")
>>> print(sse)
['c' 'a' 'a' 'a' 'a' 'a' 'a' 'a' 'a' 'c' 'c' 'c' 'c' 'c' 'c' 'c' 'c' 'c'
 'c' 'c']