Skip to main content

Fourier-domain text watermarking for traceable biomolecular structures

Project description

StrucTrace: A Universal Fourier Watermark for Traceable Biomolecular Structures

Python 3.8+ GROMACS

Authors: Xu Wang, Chi Wang, Tin-Yeh Huang, Yiquan Wang, Siyuan Jiang, Yafei Yuan*
These authors contributed equally to this work.
*Corresponding authors.

StrucTrace is a reference-guided Fourier-domain watermarking framework for traceable biomolecular structures. It embeds provenance payloads into flexible C-alpha coordinate regions as a post-processing step, preserving atomic-scale structural fidelity while enabling public provenance verification, hardware-bound access control and auditable digital-rights management.

Key Results

  • Universal post-processing watermarking for deposited PDB files, cryo-EM structures and AI-designed proteins.
  • 100% bit recovery in fidelity benchmarks, with side-chain RMSD no greater than 0.0015 Angstrom.
  • High-capacity embedding of a 6,584-bit abstract into the human gamma-secretase cryo-EM structure.
  • Defined recovery boundaries under rigid-body transformations, coordinate rounding, all-atom noise and local C-alpha perturbation.
  • Three-tier safeguard model: public provenance, hardware-bound access and digital-rights management.

Figures

Figure 1: Universal Fourier-domain watermarking workflow

Figure 1. Universal Fourier-domain watermarking workflow. StrucTrace selects flexible C-alpha atoms, embeds payload bits by mid-frequency FFT amplitude modulation and reconstructs watermarked coordinates with minimal geometric perturbation.

Figure 2: Universality and structural integrity

Figure 2. Structural fidelity and universality. Large-scale RMSD and Rosetta-energy analyses show negligible perturbation, and 50 ns MD simulations preserve dynamic behaviour across natural, Rosetta-designed and RFdiffusion-generated proteins.

Figure 3: High-density information embedding

Figure 3. High-capacity embedding. A 6,584-bit abstract was embedded into the human gamma-secretase tetramer while retaining coordinate-level agreement with the original cryo-EM structure.

Figure 4: Watermark recovery under perturbation

Figure 4. Robustness and tamper boundary. Reference-guided decoding is invariant to rigid-body transformations and standard PDB precision, while all-atom noise, local distortion and selected C-alpha perturbation define the recovery boundary.

Figure 5: Multi-tiered security ecosystem

Figure 5. Three-tier safeguards. Tier 1 provides public provenance verification, Tier 2 provides hardware-bound encrypted access, and Tier 3 provides auditable digital-rights management.

Install

After PyPI publication, install StrucTrace with:

pip install structrace

For local development, clone and install the package in editable mode:

git clone https://github.com/JLU-WangXu/Structrace.git
cd Structrace
pip install -e .

The command-line interface is then available as:

python -m structrace --help

If your Python scripts directory is on PATH, you can also use:

structrace --help

External software used for manuscript validation includes DSSP, GROMACS 2024.6, Rosetta and Foldseek.

Publishing

Build and validate the package locally:

python -m pip install --upgrade build twine
python -m build
python -m twine check dist/*

Upload to TestPyPI first:

python -m twine upload --repository testpypi dist/*

If the TestPyPI package installs and imports correctly, upload the same version to PyPI:

python -m twine upload dist/*

Quick Start

CLI

Embed a text watermark into a structure:

python -m structrace embed Robustness/00_baseline_cases/6MRR/6MRR_original.pdb \
  --text "npj SB" \
  -o tmp/6MRR_watermarked.pdb

Decode the watermark from the original and watermarked structures:

python -m structrace decode Robustness/00_baseline_cases/6MRR/6MRR_original.pdb \
  tmp/6MRR_watermarked.pdb \
  --bits 56

The --bits option can be set explicitly. If it is omitted, the CLI decodes 4 bits by default.

Python API

from structrace.watermark import decode_text, embed_text

master = "Robustness/00_baseline_cases/6MRR/6MRR_original.pdb"
query = "tmp/6MRR_watermarked.pdb"

embed_result = embed_text(master, "npj SB", query)
decode_result = decode_text(master, query)

print(embed_result.global_ca_rmsd)
print(decode_result.decoded_text)

Package Functions

Watermarking

  • embed_text(input_pdb, text, output_pdb): encode UTF-8 text as bits and embed it.
  • decode_text(master_pdb, query_pdb): recover the embedded UTF-8 text watermark from the original and watermarked structures.

Repository Map

  • src/structrace/: installable Python package.
  • Robustness/: robustness and preliminary watermark-validation examples.
  • Security_Safeguards/: Tier 1, Tier 2 and Tier 3 safeguard demonstrations.
  • High-density_embedding_stress_test/: gamma-secretase high-capacity embedding case.
  • Molecular_Dynamics_Validation/: MD inputs, structures and analysis outputs.
  • Bit_RMSD/ and Bit_Rosetta_energy/: large-scale fidelity benchmark tables.
  • Figs/Figs/: revised manuscript figures.
  • docs/: package implementation log and extended API examples.

Citation

@article{Wang2026StrucTrace,
  title  = {StrucTrace: A Universal Fourier Watermark for Traceable Biomolecular Structures},
  author = {Wang, Xu and Wang, Chi and Huang, Tin-Yeh and Wang, Yiquan and Jiang, Siyuan and Yuan, Yafei},
  journal = {npj structural biology},
  year   = {2026},
  note   = {Accepted}
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

structrace-0.1.0.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

structrace-0.1.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file structrace-0.1.0.tar.gz.

File metadata

  • Download URL: structrace-0.1.0.tar.gz
  • Upload date:
  • Size: 11.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for structrace-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2b6c333babf83722de8a8bd4a9891e8dbbef2b519757d3fe22fa9cc89fa07efc
MD5 4007b61cd301cce77deaa213b7fa2639
BLAKE2b-256 8709db1340eafbe30a5ffb303e92b87a7031d8f7cabf5ba93496d1cf5441a31d

See more details on using hashes here.

File details

Details for the file structrace-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: structrace-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.8

File hashes

Hashes for structrace-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 361567284c88efd7c6d65c744552561d68be9e23b47ad5789ff8cc766e73481a
MD5 471fc4fea57b8378495790a0575b1f26
BLAKE2b-256 ccbc57df176299abd69642f9bc0d24360255ac1ed322ef1ea8d619f64640c603

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page