IFACE (Intrinsic Field–Aligned Coupled Embedding) is a framework for computing feature-aware coupling (soft correspondence) matrices and distances between protein surfaces.
The method integrates intrinsic geometric structure and physicochemical surface fields to measure similarity between protein surfaces.
IFACE enables:
- protein surface comparison
- vertex correspondence estimation between surfaces
- computation of surface feature-fields, structural, chemical and IFACE distances
Input protein surfaces with physicochemical fields
↓
Optimize coupling matrix between surface vertices
↓
Construct bidirectional surface maps
↓
Compute structural and feature distances
↓
Aggregate structural and chemical feature-field distances to compute the IFACE and chemical distances across a dataset
Protein function is executed at the molecular surface, where shape and chemistry act together to govern interaction. Yet most comparison methods treat these aspects separately, privileging either global fold or local descriptors and missing their coupled organization.
Here we introduce IFACE (Intrinsic Field–Aligned Coupled Embedding), a correspondence-based framework that aligns protein surfaces through probabilistic coupling of intrinsic geometry with spatially distributed chemical fields. From this alignment, we derive a joint geometric–chemical distance that integrates structural and physicochemical discrepancies within a single formulation.
Across diverse proteins, this distance separates conformational variability from true structural divergence more effectively than fold-based similarity measures. Applied to the cytochrome P450 family, it reveals coherent family-level organization and identifies conserved buried catalytic pockets despite the complex topology.
By linking interpretable surface correspondences with a unified distance, IFACE establishes a principled basis for comparing protein interfaces and detecting functionally related interaction patches across proteins.
All experiments were conducted on a workstation with the following configuration:
- CPU: Intel Core i9-14900K (24 cores, 32 threads)
- Memory: 64 GB RAM
- Operating System: Ubuntu 24.04.3 LTS
- Method Overview
- Installation
- Quick Start
- Data Layout
- Input Requirements
- Preprocessing
- Running IFACE
- Feature Selection
- Outputs
- Coupling Matrices
- Feature Distances
- Analysis Notebook
- Run Analysis
- Visualization
- Project Structure
- Citation
- License
IFACE represents each protein surface as a triangular mesh equipped with multiple physicochemical feature fields.
The comparison pipeline:
- Represent protein surfaces as meshes.
- Attach per-vertex physicochemical features:
- charge (electrostatic)
- hphob (hydrophobicity)
- hbond (hydrogen bonding propensity)
- mean curvature
- Compute a coupling matrix (soft correspondence matrix) between vertices of the two surfaces.
- Compute structural (geometric), feature-field-specific, and combined distances (IFACE and chemical) between the surfaces.
Outputs include:
- coupling matrix (vertex soft correspondences)
- feature distances
conda create -n iface python=3.10.18 -y
conda activate iface
pip install -r requirements.txt
Verify installation:
python -c "import numpy, scipy, open3d, trimesh, halo, ot, pyvista, pymeshlab, cython, cycpd; print('IFACE ready')"
Expected output:
IFACE ready
Run the IFACE pipeline:
python data/preprocessing/preprocess.py
python run_iface.py --surf1 1JPZ --surf2 1TQNThen assemble the final dataset:
jupyter nbconvert --to notebook --execute analysis.ipynb --inplaceInput data must be placed in:
data/raw/
Each protein must have its own folder, named by the protein ID.
Example:
data/raw/
└── 1JPZ/
├── 1JPZ.ply
├── 1JPZ_charge.npy
├── 1JPZ_hbond.npy
├── 1JPZ_hphob.npy
└── 1JPZ_mean_curvature.npy
- Folder name and file basename must match exactly.
- Feature arrays must be per-vertex.
- Feature arrays must align with mesh vertex ordering.
- Each feature array must contain the same number of vertices as the mesh.
After placing protein folders in data/raw/, run:
python data/preprocessing/preprocess.pyThis step preprocesses the input data, computes the required geodesic information, and prepares it for IFACE.
Processed data is stored in:
data/processed/
Precomputed geodesic information is stored in:
precomputed_geodesics/
run_iface.py compares protein surfaces specified by folder name under data/processed/.
python run_iface.py --surf1 1JPZ --surf2 1TQNpython run_iface.py --surf1 all --surf2 allpython run_iface.py --surf1 all --surf2 1JPZpython run_iface.py --surf1 1JPZ --surf2 allDefault features used by IFACE:
- charge
- hphob
- hbond
- mean_curvature
Override the feature list:
python run_iface.py --surf1 1JPZ --surf2 1TQN \
--features_list charge hbond hphob mean_curvatureResults are written under:
results/
results/
├── coupling_matrix/
├── distances/
│ ├── charge/
│ ├── hbond/
│ ├── hphob/
│ └── structural/
└── csv/
results/coupling_matrix/
These matrices represent soft correspondences between vertices of the two surfaces.
results/distances/
Each directory contains pairwise distances computed for a specific surface feature.
- structural — geometric surface distance
- charge — electrostatic distance
- hphob — hydrophobicity distance
- hbond — hydrogen bonding propensity distance
The main analysis entry point is:
analysis.ipynb
This notebook:
- reads pairwise results from
results/distances/ - assembles a structured dataframe
- exports the final dataset used for analysis
The resulting dataframe contains the following columns.
ID1,ID2: identifiers (folder names underdata/processed/) of the two protein surfaces being compared.- Distances with the suffix
_normare min–max normalized distances, scaled to the range[0,1]using the minimum and maximum values across the dataset for each distance type. Columns without_normcorrespond to the raw distances computed by IFACE. chemical: aggregated chemical distance computed from the normalized chemical feature distances (charge_norm,hbond_norm,hphob_norm) and lies in the range[0,1].iface: overall IFACE distance combining the structural and chemical distances and lies in the range[0,1].
Columns:
- ID1
- ID2
- iface
- chemical
- structural_norm
- charge_norm
- hbond_norm
- hphob_norm
- structural
- charge
- hbond
- hphob
Example output:
results/csv/distance_on_dataset.csv
Headless execution:
jupyter nbconvert --to notebook --execute analysis.ipynb --inplaceInteractive execution:
jupyter notebook analysis.ipynbVisualization utilities are located in:
visualization/
Example notebook:
visualization/example.ipynb
These tools visualize surface correspondences using color mapping based on the coupling (soft correspondence) matrix.
iface/
├── source/
│ ├── __init__.py
│ ├── config.py
│ ├── distance.py
│ ├── geometry.py
│ ├── model.py
│ ├── optim.py
│ └── utils.py
│
├── run_iface.py
│
├── analysis.ipynb
│
├── visualization/
│ ├── color_mapping.py
│ └── example.ipynb
│
├── data/
│ ├── raw/
│ ├── processed/
│ └── preprocessing/
│ └── preprocess.py
│
├── precomputed_geodesics/
│
├── results/
│ ├── coupling_matrix/
│ ├── distances/
│ └── csv/
│
├── requirements.txt
├── README.md
└── LICENSE
If you use IFACE in your work, please cite the following paper:
@misc{swami2026jointgeometricchemicaldistanceprotein,
title={Joint Geometric-Chemical Distance for Protein Surfaces},
author={Himanshu Swami and John M. McBride and Jean-Pierre Eckmann and Tsvi Tlusty},
year={2026},
eprint={2603.09860},
archivePrefix={arXiv},
primaryClass={q-bio.BM},
url={https://arxiv.org/abs/2603.09860},
}This project is licensed under the Apache License 2.0.
See the LICENSE file for details.