Nobel Data Intelligence

Physics-informed deep learning for protein stability and enzyme kinetics. A tri-modal architecture fuses ProtT5 sequence embeddings, a VDOS vibrational spectrum from normal mode analysis, and ChemBERTa chemistry through learned gated attention.

ROLE
Researcher
PERIOD
2024
DOMAIN
Research

OVERVIEW

Nobel Data Intelligence is a physics-informed deep learning framework for protein stability and enzyme kinetics. It encodes a protein through three branches (ProtT5 over the sequence, a SpectralCNN over a VDOS vibrational spectrum derived from normal mode analysis, and ChemBERTa plus reaction fingerprints over substrate chemistry), then combines them with a learned gating layer to predict properties such as catalytic turnover (k_cat). It ships with unit-tested subsystems, eight notebooks, and an interactive demo that renders the VDOS spectrum live.

ARRIVED AS

“Most protein-property models treat a protein as a static sequence or a single frozen structure, ignoring that a protein is a moving object whose vibrations carry information about how it behaves. I wanted a prediction framework for protein stability and enzyme kinetics that adds a physics-based dynamics signal to sequence and chemistry, and that keeps working when one of those inputs is missing.”

Whether a protein is stable, and how fast an enzyme turns over its substrate, depends partly on how the protein moves, not only on its amino-acid sequence or a single static structure. Conformational dynamics are awkward to express as a feature, so most models leave them out. This project tests whether a vibrational signal, derived from normal mode analysis and written as a density-of-states spectrum, adds predictive value when fused with sequence and chemistry. The Quantum Data Decoder core holds normal mode analysis, spectral generation, the encoders, fusion, and training; VibroPredict, an enzyme-kinetics model, assembles those pieces for log(k_cat) regression.

WHAT I BUILT

  1. 01A tri-modal architecture that encodes three views of a protein: ProtT5 for sequence, a 1D SpectralCNN over a vibrational density-of-states (VDOS) spectrum for dynamics, and ChemBERTa plus differential reaction fingerprints for substrate chemistry.
  2. 02A VDOS spectrum is computed per structure from normal mode analysis (ANM/GNM via ProDy), turning protein vibrations into a 1000-point spectral feature that sequence and chemistry models never see.
  3. 03A learned gating network emits softmax attention weights over the three branches, so the model decides how much to trust each modality per prediction instead of concatenating them blindly.
  4. 04MM-Drop training randomly masks the spectral branch during training, so the model still works at inference when no structure (and therefore no VDOS) is available.

WHAT CHANGED

  • Two-phase codebase: a Quantum Data Decoder core for general molecular property prediction, and VibroPredict on top of it for enzyme catalytic-turnover (k_cat) prediction.
  • Unit-tested across both subsystems, with eight Jupyter notebooks from quickstart through ablation and SOTA comparison, plus Colab training notebooks.
  • CLI entry points and a batch inference pipeline, and an interactive deployed demo that renders the VDOS spectrum live.

ARCHITECTURE

Three encoder branches feed one fusion layer. ProtT5 encodes the amino-acid sequence, a 1D SpectralCNN encodes the VDOS spectrum, and a ChemBERTa-plus-fingerprint encoder handles substrate SMILES. The VDOS spectrum is produced upstream: a structure goes through ANM or GNM normal mode analysis with ProDy, the eigenvalues are converted to vibrational frequencies, and Lorentzian broadening turns the discrete modes into a continuous 1000-point spectrum. TriModalFusion projects all three branches to a shared dimension and combines them with softmax gate weights from a small gating network, so each modality's contribution is learned per sample. A regression head maps the fused vector to log(k_cat), and the gate weights are returned alongside for inspection. The Quantum Data Decoder core also carries graph (GATv2) and CNN encoders and Novozymes/CAFA5 dataset loaders for the stability and function tasks.

Data flow

click a stage

ANM/GNM (ProDy) coarse-grains the protein to a C-alpha spring network and solves for the lowest normal modes.

COMPONENT

ANMAnalyzer / GNMCalculator

Normal mode analysis via ProDy: builds the C-alpha spring network and computes the lowest ~100 modes, the source of the dynamics signal.

ALSO IN THE BUILD

  • ProtT5Encoder

    Sequence branch: embeds the amino-acid sequence with the ProtT5 protein language model.

  • SpectralCNN

    Spectral branch: a 1D CNN that encodes the VDOS spectrum into a fixed-length embedding.

  • ChemicalEncoder

    Chemistry branch: ChemBERTa embeddings of substrate SMILES concatenated with differential reaction fingerprints (DRFP).

  • TrainerWithMMDrop

    Training loop that randomly masks the spectral modality (MM-Drop) so the model stays usable when VDOS is absent.

Decisions, with the cost of each.

A decision without its trade-off is marketing. Each row says what was chosen, why, and what it gave up.

Add a vibrational (VDOS) feature as a third modality

Sequence and chemistry are standard inputs; conformational dynamics are not. Normal mode analysis gives a cheap, structure-derived spectrum that captures flexibility and hinge motion, a signal that static representations cannot express.

INSTEAD OF

Sequence and chemistry only (simpler, but blind to dynamics); full molecular dynamics (far too expensive to run per protein at dataset scale).

Gated fusion instead of plain concatenation

The three modalities are not equally informative for every protein, and one may be missing entirely. A softmax gating network lets the model weight branches per sample and exposes those weights for interpretation.

INSTEAD OF

Concatenate-and-MLP (no per-sample weighting), bilinear fusion (more parameters, harder to read).

MM-Drop: randomly drop the spectral branch during training

VDOS needs a structure, which is not always available at inference time. Masking the spectral modality during training forces the sequence and chemistry branches to stay predictive on their own, so a structureless query still returns a prediction.

INSTEAD OF

Require all three modalities (brittle in deployment), or train separate single-modality models (loses the benefit of fusion).

The part that mattered.

The facts behind the work, and the code that produced them.

tri-modal fusion
3-branch
ProtT5 · VDOS-CNN · ChemBERTa+DRFP, gated
VDOS spectrum
1000 points
GNM modes + Lorentzian broadening
both subsystems
unit-tested
QDD core + VibroPredict
QDD then VibroPredict
2 phases
property prediction to enzyme kinetics
Gated tri-modal fusion: the model weights each branch per samplepython
concat = torch.cat([h_seq, h_spec, h_chem], dim=-1)
gates = torch.softmax(self.gate_net(concat), dim=-1)  # (batch, 3)

proj_seq = self.proj_seq(h_seq)
proj_spec = self.proj_spec(h_spec)
proj_chem = self.proj_chem(h_chem)

fused = (
    gates[:, 0:1] * proj_seq
    + gates[:, 1:2] * proj_spec
    + gates[:, 2:3] * proj_chem
)
return self.dropout(fused), gates

A small gating network reads all three embeddings and emits softmax weights over the sequence, spectral, and chemical branches. Each branch is projected to a shared dimension and summed by its gate, so the fusion is a learned per-sample weighting rather than a fixed concatenation. The gates are returned so a prediction can be read for which modality drove it.

VDOS engine: protein vibrations to a spectral featurepython
eigenvalues, _ = self.gnm_calculator.compute_from_pdb(pdb_path)

# GNM eigenvalues are proportional to omega^2 -> frequencies in cm^-1
conversion_factor = 1 / (2 * np.pi * 29979.2458)
frequencies = np.sqrt(np.maximum(eigenvalues, 0)) * conversion_factor

generator = SpectralGenerator(
    freq_min=0, freq_max=self.freq_max, n_points=self.n_points
)
vdos = generator.generate_dos(frequencies, broadening=self.broadening)
features = generator.extract_spectral_features(vdos)

The physics signal the other modalities cannot see. GNM normal modes from the structure become vibrational frequencies, and Lorentzian broadening turns those discrete modes into a continuous 1000-point density-of-states spectrum that the SpectralCNN then encodes.

MM-Drop: train so a missing structure does not break inferencepython
# Randomly decide whether to drop the spectral modality this batch
drop_spectral = bool(np.random.rand() < p_drop)

logkcat, gates = self.model(
    sequences, vdos, substrate_smiles, product_smiles, drop_spectral
)
# inside the model's forward:
#   if drop_spectral:
#       h_spec = torch.zeros_like(h_spec)

With probability p_drop (0.25 by default) the spectral embedding is zeroed for a training batch, forcing the sequence and chemistry branches to carry the prediction on their own. A protein with no available structure, and therefore no VDOS, still gets a usable answer at inference.

LEARNED

  1. A physics-derived feature can be cheap: normal mode analysis on a coarse-grained spring network gives a usable dynamics signal without running full molecular dynamics.

  2. Gated fusion is worth the small extra network: it copes better with a missing modality and makes each prediction partly interpretable through its gate weights.

  3. Designing for missing inputs from the start (MM-Drop) matters more than peak accuracy on paper, because at inference a structure is often unavailable and the model still has to answer.

NOT DONE YET

  1. Benchmark whether the VDOS branch improves accuracy over sequence and chemistry alone.