Fourier-domain text watermarking for traceable biomolecular structures
Project description
StrucTrace: A Universal Fourier Watermark for Traceable Biomolecular Structures
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. 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. 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-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. 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. 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/andBit_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b6c333babf83722de8a8bd4a9891e8dbbef2b519757d3fe22fa9cc89fa07efc
|
|
| MD5 |
4007b61cd301cce77deaa213b7fa2639
|
|
| BLAKE2b-256 |
8709db1340eafbe30a5ffb303e92b87a7031d8f7cabf5ba93496d1cf5441a31d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
361567284c88efd7c6d65c744552561d68be9e23b47ad5789ff8cc766e73481a
|
|
| MD5 |
471fc4fea57b8378495790a0575b1f26
|
|
| BLAKE2b-256 |
ccbc57df176299abd69642f9bc0d24360255ac1ed322ef1ea8d619f64640c603
|