Skip to content

E8: Semidefinite Relaxation Embedding (SDR) ​

Module: sci_form::experimental::sdrFeature flag: experimental-sdr


Overview ​

Reformulates the conformer embedding problem as a convex semidefinite program (SDP), mathematically guaranteeing that the distance matrix is positive semidefinite before extracting coordinates. This eliminates the retry loop caused by negative eigenvalues in the metric matrix — the most common failure mode in distance geometry embedding.


Theory ​

Distance Constraints as Convex Set ​

The decision variable is a PSD Gram matrix X∈S+N. Distances relate to entries via:

dij2=Xii+Xjj−2Xij

Alternating Projections ​

The algorithm alternates between two convex projections:

  1. PSD Projection P+(X): Eigendecompose, zero out negative eigenvalues
  2. Distance Projection PΩ(X): Enforce Xii+Xjj−2Xij=dij2 for known pairs

Convergence criterion: ∥Xk+1−Xk∥F/∥Xk∥F<10−6

SVT (Singular Value Thresholding) ​

Optionally, a nuclear norm penalty promotes low-rank solutions:

min∥X∥∗+λ∥PΩ(X)−D∥F2

via SVTτ(X)=Umax(Σ−τ,0)VT.

Coordinate Extraction ​

From the converged Gram matrix X∗, 3D coordinates are extracted via:

C=V3Σ31/2

where V3,Σ3 are the top-3 eigenvectors/values of X∗.


API ​

rust
use sci_form::experimental::sdr::*;

// PSD projection
let (projected, n_negative) = project_psd(&matrix);

// Distance projection
let projected = project_distances(&gram, &distance_pairs);

// Alternating projections
let config = SdrConfig { max_iter: 200, tol: 1e-6, ..Default::default() };
let (result, convergence) = alternating_projections(&x0, &pairs, &config);
// convergence.iterations, convergence.converged, convergence.final_residual

// Warm start from distance matrix
let gram = warm_start_gram(n_atoms, &distance_pairs);

// Extract 3D coordinates from Gram matrix
let coords = extract_coordinates(&gram); // flat Vec<f64>

// Full SDR embedding pipeline
let result = sdr_embed(n_atoms, &distance_pairs, &config);
// result.coords: Vec<f64>
// result.num_atoms: usize
// result.convergence: SdrConvergence

Advantages Over Standard Embedding ​

IssueStandard ETKDGSDR
Negative eigenvaluesRetry loopImpossible by construction
PSD guaranteeNoYes
Failure rate~5-10%0%
Warm startNoFrom Cayley-Menger

Tests ​

bash
cargo test --features experimental-sdr --test regression -- test_sdr

8 integration tests covering: PSD projection, negative eigenvalue removal, warm start Gram matrix, coordinate extraction with distance preservation, equilateral triangle and tetrahedron embedding, convergence tracking, and alternating projection improvement.

Released under the MIT License.