Scalar J-Couplings API
j_coupling
Scalar Coupling (J-coupling) calculations.
Functions
calculate_hn_ha_coupling_from_phi(phi_degrees)
Calculate the 3J(HN-HA) coupling constant from Phi angles in degrees.
EDUCATIONAL NOTE - The Karplus Equation
========================================
The magnitude of the 3-bond coupling (^3J) depends heavily on the torsion
angle between the atoms. The physical origin lies in the Fermi contact
interaction, where electron spins transmit magnetic information between nuclei.
Formula: ^3J = A * cos^2(theta) + B * cos(theta) + C
For HN-HA coupling, the relationship theta = phi - 60 is a geometric
consequence of how the phi angle and the Karplus angle are defined.
- Phi (C'-N-Ca-C') measures the rotation around the N-Ca bond.
- Theta for 3J(HN-HA) is the dihedral H-N-Ca-HA.
Alpha Helix (Phi ~ -60): theta ~ -120 -> J is small (~4 Hz)
Beta Sheet (Phi ~ -120): theta ~ -180 -> J is large (~9 Hz)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
phi_degrees
|
ndarray
|
Backbone Phi angle in degrees (NumPy array). |
required |
Returns:
| Type | Description |
|---|---|
ndarray
|
Predicted J-coupling in Hz (NumPy array). |
Source code in synth_nmr/j_coupling.py
predict_couplings_from_phi_map(phi_map)
Predict HN-HA couplings for a set of residues from a Phi map.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
phi_map
|
Dict[int, float]
|
Dictionary mapping Residue ID -> Phi angle (degrees). |
required |
Returns:
| Type | Description |
|---|---|
Dict[int, float]
|
Dictionary mapping Residue ID -> J-coupling (Hz). |
Source code in synth_nmr/j_coupling.py
calculate_hn_ha_coupling(structure)
Calculate 3J_HNHa coupling constants for the protein backbone.
── J-Coupling Physics and Structural Biology ────────────────────────
The 3J_HNHa coupling constant is a measure of the scalar (through-bond)
magnetic interaction between the amide proton (HN) and the alpha
proton (Ha). This interaction is mediated by the intervening bonds
(HN-N, N-CA, CA-Ha).
Crucially, the magnitude of this coupling depends on the dihedral
angle Phi (φ) according to the Karplus equation:
J(φ) = A cos²(θ) + B cos(θ) + C
where θ is the H-N-C-H dihedral angle (related to Phi).
Scalar couplings are mediated by electrons in the chemical bonds.
The interaction is sensitive to the overlap of the electron wavefunctions,
which in turn is a function of the dihedral angle. In structural biology,
J-couplings are one of the most direct ways to measure torsion angles.
Proteins are dynamic, and the measured J-coupling is actually a
time-average over the conformational ensemble. Here we predict the
value based on a single static structure or a single frame.
Large 3J_HNHa values (~8-10 Hz) typically indicate beta-sheet regions,
where the Phi angle is around -120 to -150 degrees.
Small 3J_HNHa values (~3-5 Hz) indicate alpha-helical regions,
where the Phi angle is around -60 degrees.
─────────────────────────────────────────────────────────────────────
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
structure
|
AtomArray
|
biotite.structure.AtomArray containing the protein. |
required |
Returns:
| Type | Description |
|---|---|
Dict[str, Dict[int, float]]
|
Dict keyed by Chain ID -> Residue ID -> J-coupling value (Hz). |
Source code in synth_nmr/j_coupling.py
calculate_ha_hb_coupling(structure)
Calculate 3J_HaHb coupling constants dependent on the chi1 angle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
structure
|
AtomArray
|
biotite.structure.AtomArray containing the protein. |
required |
Returns:
| Type | Description |
|---|---|
Dict[str, Dict[int, float]]
|
Dict keyed by Chain ID -> Residue ID -> J-coupling value (Hz). |
Source code in synth_nmr/j_coupling.py
calculate_c_cg_coupling(structure)
Calculate 3J(C', Cg) coupling constants dependent on the chi1 angle.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
structure
|
AtomArray
|
biotite.structure.AtomArray containing the protein. |
required |
Returns:
| Type | Description |
|---|---|
Dict[str, Dict[int, float]]
|
Dict keyed by Chain ID -> Residue ID -> J-coupling value (Hz). |