IFACE (Intrinsic Field–Aligned Coupled Embedding) is a framework for computing geometry-chemical-aware soft correspondences and distances between protein surfaces.
It combines intrinsic geometry, mean-curvature information, and physicochemical surface fields to quantify protein-surface similarity while also providing an explicit soft correspondence between surface vertices.
IFACE enables:
- protein surface comparison
- vertex correspondence estimation between surfaces
- computation of surface feature-fields, geometry, chemical and IFACE distances
Input protein surfaces with geometry-physicochemical fields
↓
Optimize a soft coupling matrix between surfaces
↓
Construct bidirectional surface maps
↓
Compute structural, mean-curvature, and physicochemical field distances
↓
Aggregate the components into geometry, chemical, and overall IFACE distances
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 geometry-physicochemical feature fields.
The comparison pipeline:
- Represent protein surfaces as meshes.
- Attach per-vertex geometry-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 geometric, feature-field-specific, and combined distances (IFACE, geometry and chemical) between the surfaces.
Outputs include:
- coupling matrix (vertex soft correspondences)
- 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
Place the protein folders in data/raw/.
Choose the mesh resolution by setting TARGET_VERTEX_COUNT in config.py.
python data/preprocessing/preprocess.py
python run_iface.py --surf1 all --surf2 allThen assemble the final pairwise distances using the utility notebook:
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.
To use a different mesh resolution, set TARGET_VERTEX_COUNT in config.py.
Place the protein folders in data/raw/, then 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/
│ ├── iface/
│ ├── geometry/
│ ├── chemical/
│ ├── charge/
│ ├── hbond/
│ ├── hphob/
│ ├── mean_curvature/
│ └── 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.
- iface/ — Combined IFACE distance.
- geometry/ — Combined structural and mean-curvature distance.
- chemical/ — Combined charge, hydrophobicity, and hydrogen-bonding distance.
- structural/ — Intrinsic geometric (surface structure) distance.
- mean_curvature/ — Mean-curvature scalar field distance.
- charge/ — Electrostatic field distance.
- hphob/ — Hydrophobicity field distance.
- hbond/ — Hydrogen-bonding propensity field distance.
analysis.ipynb is a utility for assembling and analyzing pairwise distances; individual .npy files are available in results/distances/.
analysis.ipynb
This notebook:
- reads pairwise results from
results/distances/ - assembles a structured dataframe
- exports the final distances used for analysis
The resulting DataFrame contains the following columns:
ID1,ID2: Identifiers of the two protein surfaces being compared. These correspond to folder names underdata/processed/.- Columns ending in
_norm: Range-normalized distances. Columns without the_normsuffix contain the corresponding raw distances computed by IFACE. chemical: Aggregated chemical distance computed from the normalized electrostatic, hydrogen-bonding propensity, and hydrophobicity distances (charge_norm,hbond_norm, andhphob_norm).geometry: Aggregated geometric distance computed from the normalized intrinsic structural and mean-curvature distances (structural_normandmean_curvature_norm).iface: Overall IFACE distance obtained by combining thegeometryandchemicaldistances.
Columns:
- ID1
- ID2
- iface
- geomtery
- chemical
- structural_norm
- mean_curvature_norm
- charge_norm
- hbond_norm
- hphob_norm
- structural
- mean_curvature
- charge
- hbond
- hphob
Example output:
results/csv/distances.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.