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.
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 is built in two phases: a Quantum Data Decoder core for general molecular property prediction and VibroPredict on top for enzyme kinetics, 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. The goal was 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. It is built in two phases: the Quantum Data Decoder core (normal mode analysis, spectral generation, the encoders, fusion, and training) and VibroPredict, an enzyme-kinetics model that assembles those pieces for log(k_cat) regression.
WHAT I BUILT
- 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.
- 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.
- 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.
- 04MM-Drop training randomly masks the spectral branch during training, so the model degrades gracefully 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.
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 / GNMCalculatorNormal mode analysis via ProDy: builds the C-alpha spring network and computes the lowest ~100 modes, the source of the dynamics signal.
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.
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.
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.
Require all three modalities (brittle in deployment), or train separate single-modality models (loses the benefit of fusion).
The part that mattered.
The numbers behind the work, and the code that produced them.
- tri-modal fusion
- 3-branch
- ProtT5 · VDOS-CNN · ChemBERTa+DRFP, gated
- point VDOS spectrum
- 1000
- GNM modes + Lorentzian broadening
- both subsystems
- unit-tested
- QDD core + VibroPredict
- QDD then VibroPredict
- 2 phases
- property prediction to enzyme kinetics
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.
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.
# 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
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.
Gated fusion is worth the small extra network: it improves robustness to a missing modality and makes each prediction partly interpretable through its gate weights.
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.