Skip to content

Repository files navigation

trna-lifecycle-figure

A publication-grade figure of the bacterial tRNA life cycle, built from PDB structures with UCSF ChimeraX: the folded tRNA, its charging by an aminoacyl-tRNA synthetase, delivery by EF-Tu, and decoding on the 70S ribosome with tRNAs in all three sites.

the figure

Pipeline

python stage_structures.py     # fetch PDB entries, orient them, write staged/*.cif
./render_panels.sh             # ChimeraX offscreen -> renders/*.png
python compose_figure.py       # -> figures/trna_lifecycle.{png,pdf} + panel_*.png

stage_structures.py needs gemmi and numpy; compose_figure.py needs matplotlib and pillow. Rendering needs ChimeraX 1.12 (any platform with a working GL context; see the offscreen notes below for headless Linux).

Panels and structures

panel script PDB contents
a scripts/panel1_trna.cxc 6UGG (1.95 Å) E. coli tRNAAsp, free
b scripts/panel1_side.cxc 6UGG same molecule, rotated 90° about the vertical axis
c scripts/panel2_synthetase.cxc 1C0A (2.4 Å) E. coli AspRS · tRNAAsp · Asp-AMP
d scripts/panel3_eftu.cxc 1B23 (2.6 Å) EF-Tu · GDPNP · Cys-tRNACys
e scripts/panel4_epa_gold.cxc 1VY5 (2.55 Å) 70S with tRNAs in the E, P and A sites + mRNA

Species caveats, stated on the figure itself: the tRNAs are E. coli in every panel, but EF-Tu in 1B23 is T. aquaticus and the 70S in 1VY5 is T. thermophilus. No E. coli 70S entry models a complete E-site tRNA — in 7K00, the 2 Å E. coli ribosome, the E-site chain is two nucleotides — which is why the three-site panel is not E. coli.

Orientation

Panels a–d share one tRNA reference frame so the molecule reads as the same object across the cycle:

  1. 6UGG chain A is placed in the textbook L orientation by a frame built from three landmark centroids (elbow, acceptor end, anticodon loop).
  2. Each complex is then superposed onto it by least squares on the P atoms of the four conserved helical stems (acceptor 1–7/66–72, D 10–13/22–25, anticodon 27–31/39–43, T 49–53/61–65). Fit residuals: 1C0A 3.4 Å, 1B23 4.8 Å over 42 atoms — species and conformational differences, not a numbering error (the numbering offset per entry was checked by scanning candidate shifts).

Panel e gets its own frame: the plane through its three tRNA centroids, E→A along +x, with the 30S forced to the bottom of the image. The second 70S copy in the asymmetric unit is discarded, and ribosome residues whose centroid lies in front of z = +8 Å are deleted, which opens the intersubunit space without the artefacts a clip plane produces.

Colours

CU palette. tRNA #CFB87C (gold) in every panel; partner protein and ribosome surfaces in light greys (#d3d3d3, #d4d4d4, #ebebeb); amino-acid cargo and adenylate #ee8d3e; mRNA #565A5C. The three tRNAs in panel e are the same gold — their identity is carried by the E/P/A labels, not by a colour ramp.

Styling follows the publication-silhouette look of meganstumpf/chimeraX-PDB-domains: preset "overall look" "publication 1 (silhouettes)", soft lighting, no shadows, thin black silhouettes, 1400 px square, supersample 3, transparent background.

Offscreen notes (ChimeraX 1.12, headless Linux)

  • camera ortho — and camera generally — crashes the offscreen rendering context. Frame with view <spec> followed by zoom <factor> instead.
  • nucleotides ... ladder draws nothing unless the residues' atoms are displayed. show <spec> atoms first, then apply the style.
  • view <spec> requires displayed atoms in the spec; a spec with only ribbon shown raises No displayed objects specified.
  • On the CU AMC cluster: OSMesa is not installed, so mesa-libOSMesa-24.2.8-2.el9_6 (versioned vault path, matching the nodes' mesa build) is unpacked under $CXDIR/mesa; ChimeraX's bundled _ssl needs OPENSSL_3.3.0, so openssl-libs-3.5.5 is unpacked under $CXDIR/ssl. Both go on LD_LIBRARY_PATH (render_panels.sh does this). The login node lacks libGLU.so.1 and is not a valid smoke test.

Citing the structures

If the figure is used in a publication, cite the original PDB entries: 6UGG, 1C0A, 1B23, 1VY5.

Row layout (left to right)

A second composite runs the cycle straight across: tRNA → aaRS → EF-Tu → ribosome (figures/trna_row.png).

the row

Two things differ from the 2×3 version. First, panels a–c hold one tRNA orientation: the 150° turn used in the stacked layout is removed from the EF-Tu panel (scripts/row_eftu58.cxc), so EF-Tu now sits in front of the acceptor end, and its surface plus AspRS's are at 58% transparency (up from 20% and 30%) so the tRNA reads through them. Second, a–c are resampled to a common scale: row_figure.py calibrates px/Å per render from the content bbox against the model's own extent (12.8, 10.4 and 9.0 px/Å as rendered), downsamples each to the smallest, and aligns the panels on the tRNA's gold-mask centroid. The ribosome cannot share that scale — at 4.6 px/Å it is half the size — so it carries its own scale bar and the ratio is stated in the caption.

./render_panels.sh                 # then, for the row panels:
python -c "import row_figure as rf; rf.build(paths, px_per_A, 'figures/trna_row.png')"

row_figure.build() takes the four render paths and their measured px/Å (keys a,b,c,d = tRNA, aaRS, EF-Tu, ribosome).

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages