SSE-TSR
Adds secondary structure information to TSR keys, sorting them into 18 groups according to the helix, strand and coil arrangement of each triangle.
Read the paper: SSE-TSR: An Approach to Integrate Secondary Structure Elements into Triangular Spatial Relationships for Protein Classification (opens in a new tab)IEEE Transactions on Computational Biology and Bioinformatics, 2026, 23(2), 694–703

On this page
Overview
SSE-TSR integrates secondary structure information with the Triangular Spatial Relationship (TSR) framework. Traditional TSR creates triangles between Cα atoms in protein structures and assigns each triangle an integer key based on its residue labels and geometric features such as distance and angle; triangles alike in those respects share a key. SSE-TSR builds on this by categorising TSR keys into 18 distinct groups based on secondary structural elements — alpha helices, beta sheets and coils.
This offers a more detailed representation of protein structures and improves classification accuracy. By considering not only the geometric arrangement of Cα atoms but also secondary structure, SSE-TSR gives a richer characterisation of proteins. This dual-level representation supports efficient, alignment-free comparison, capturing both high-level structural features and subtle substructural variation.
The method has been tested on two major protein datasets, showing strong performance in classifying proteins by structure.
Run it with BioTSR
SSE-TSR is an option of BioTSR's protein Cα methods, --sse. To compute it for
chain A of ubiquitin:
python -m pip install "biotsr==1.0.0"
biotsr fetch 1UBQ --pdb-dir structures
biotsr run --method protein --pdb structures/1UBQ.pdb --chain A --sse --output resultsThe option changes no key. Ubiquitin chain A gives the same 70,300 triangles
and 45,349 distinct keys as a run without it; what is added is the
secondary-structure category of every triangle, so each key's count is split
over the 18 categories. The keys file's category column, which in a plain run
reads regular, names the category, with one row for each key and category it
occurs in. The files are written under the prefix
results/1UBQ_A_protein_sse.
- Where the secondary structure comes from: the structure file's own
HELIXandSHEETrecords. BioTSR does not run DSSP or assign secondary structure itself, so a file without those records has every residue in coil. - Which methods take it: the two protein Cα methods,
proteinandaa_selection. It combines with amino acid grouping, mirror images and size filtering on the same command. - From Python:
biotsr.analyze(..., sse=True); the result'scategory_totals()gives the count per category.
| Option | Protein Cα2 methods | Atomic: amino acids5 methods | Atomic: ligands, carbohydrates, nucleotides8 methods | Cross TSR5 methods | Effect on keys |
|---|---|---|---|---|---|
Amino acid grouping--aa-grouping | all methods | not available | not available | not available | Grouped residue labels: a different key space. |
Secondary structure (SSE-TSR)--ssethis page | all methods | not available | not available | not available | Keys unchanged; each key’s count is split over 18 categories. |
Mirror images--mirror | all methods | all methods | all methods | not available | A key is negated when its angle before folding exceeds 90°: a different key space. |
Size filtering--size-filter | all methods | all methods | all methods | all methods | Same keys; triangles whose longest edge is at or above the cutoff are left out. |
Contact cutoff--contact-cutoff | not available | not available | not available | all methods | Chooses which atoms on each side take part; not a key change. |
Tutorial 03 walks through one run, and the SSE-TSR method record, §4 defines the 18 categories.
How BioTSR differs from the earlier program
Besides the protein Cα conventions listed on the TSR method page, the SSE-TSR method record, §7 describes three differences specific to the earlier SSE program:
- β-strand identity. The earlier program identified a strand by its serial number alone, which restarts in each sheet, so strands of different sheets could be counted as one. BioTSR names a strand by its sheet and serial number. This changes no key, only the category of some triangles, and only on chains with more than one sheet.
- Insertion codes. The earlier program left out residues with an insertion code; BioTSR keeps them.
- The per-key category file. The record describes a defect in the earlier program's per-key category file; its per-triangle category assignments are unaffected.
Source code
BioTSR (opens on GitHub)
Current software
Used by the examples on this page.
Licence Apache License 2.0
TSR-Package (opens on GitHub)
Earlier implementation
SSE-TSR was first implemented here, as the SSETSR() function. It is kept unchanged for provenance and for work that depends on it; its README has its own installation instructions.
Licence MIT License