Skip to main content
TSR Research Group

Nucleotide TSR

Applies the TSR representation to nucleotide residues, filtering the eight RNA and DNA residue types by their expected length before generating keys.

Read the paper: Development of a Novel Method for Representing 3D Structures of Nucleotides Using the Concept of the TSR Algorithm and Evaluation of the Method Through Studying Specific Interactions Between DNAs and p53 (opens in a new tab)Proteins: Structure, Function, and Bioinformatics, 2025, 93(11), 1988–2004

Overview

Nucleotides are the building blocks of DNA and RNA, each consisting of a sugar, a phosphate group and a nitrogenous base. Nucleotide TSR applies the Triangular Spatial Relationship representation to nucleotide residues, so that the same alignment-free key comparison used for proteins can be applied to nucleic acid structures.

The workflow filters residues so that only those matching the expected length for their type are processed. Each of the eight supported residue types has its own expected length, which is used as the filtering criterion:

CodeResidueFound inExpected length
GGuanineRNA and DNA23
AAdenineRNA and DNA22
CCytosineRNA and DNA20
UUracilRNA only20
DGDeoxyguanosineDNA22
DADeoxyadenosineDNA21
DCDeoxycytosineDNA19
DTDeoxythymidineDNA20

Guanine and adenine are purine bases; cytosine, uracil and thymine are pyrimidines. The deoxy- forms distinguish DNA from RNA during filtering.

Keys and triplets are generated for all eight residue types, and mirror-image keys can be produced as well.

Run it with BioTSR

BioTSR's nucleotide method computes TSR keys from the heavy atoms of one nucleotide residue, each atom labelled by its element. For the deoxycytidine DC 3 of the Dickerson–Drew dodecamer, PDB entry 1BNA:

bash
python -m pip install "biotsr==1.0.0"
biotsr fetch 1BNA --pdb-dir structures
biotsr run --method nucleotide --pdb structures/1BNA.pdb --chain A --entity-name DC --entity-id 3 --output results

Its 19 heavy atoms form 969 triangles, with 654 distinct keys, written under the prefix results/1BNA_A_nucleotide_DC_3.

  • The expected lengths: BioTSR keeps this method's rule, with the counts in the table above. A residue whose heavy-atom count does not match is refused with the reason; in 1BNA, the 5′ DC 1 has no phosphate group and is refused with "expected exactly 19 atoms, got 16".
  • One copy or every copy: with --entity-id the calculation is that one residue. With --entity-name alone it is every residue of that name on the chain, taken together as one set of points, so triangles may join atoms of different residues; the prefix then ends in _allcopies.
  • A whole strand: nucleotide_chain pools the nucleotides of one chain into one calculation. It has no expected-length rule, and names each nucleotide whose atoms differ from the standard set in a warning.
  • Nucleotides in contact with a protein: the two-molecule method Nucleotide–Protein TSR forms cross triangles from the atoms where a nucleic acid and a protein are in contact.
  • Options: mirror images and size filtering.
  • From Python: biotsr.analyze(..., method="nucleotide", entity_name="DC", entity_id="3").

The user guide, §9 covers the nucleotide methods, and tutorial 02 compares one copy with every copy. For many structures, biotsr batch runs a CSV manifest (tutorial 05), and the command-line guide, §12 has example Slurm job scripts for an HPC cluster.

Comparing with the earlier package

BioTSR's expected lengths are the earlier package's own. It reads alternate location blank or A only, where the earlier analyser applied no alternate-location test, and the whole-strand method has no earlier counterpart. BioTSR has no option to reproduce the earlier package's output files.

Source code

  • BioTSR (opens on GitHub)

    Current software

    Used by the examples on this page.

    Language: Python

    Licence Apache License 2.0

  • TSR_NUCLEOTIDE_PACKAGE (opens on GitHub)

    Earlier implementation

    The method's first implementation. It is kept unchanged for provenance and for work that depends on it; its README has its own installation instructions.

    Language: Python

    Licence No licence stated