molstar
Version:
A comprehensive macromolecular library.
59 lines (58 loc) • 2.15 kB
TypeScript
/**
* Copyright (c) 2025-2026 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author Diego del Alamo <diego.delalamo@gmail.com>
* @author Paul Pillot <paul.pillot@tandemai.com>
*
* TM-align: Structure-based protein alignment algorithm
*
* References:
* Y Zhang, J Skolnick. Nucl Acids Res 33, 2302-9 (2005)
* "TM-align: a protein structure alignment algorithm based on the TM-score"
*/
import { Mat4 } from './mat4.js';
import { MinimizeRmsd } from './minimize-rmsd.js';
import type { NumberArray } from '../../../mol-util/type-helpers.js';
export { TMAlign };
declare namespace TMAlign {
interface Result {
/** Transformation matrix for structure B to superpose onto A */
bTransform: Mat4;
/** TM-score normalized by length of structure A */
tmScoreA: number;
/** TM-score normalized by length of structure B */
tmScoreB: number;
/** RMSD of aligned residues */
rmsd: number;
/** Number of aligned residue pairs */
alignedLength: number;
/** Sequence identity of aligned residues (if sequences provided) */
sequenceIdentity: number;
/** Alignment mapping: alignmentA[i] aligns with alignmentB[i] */
alignmentA: NumberArray;
alignmentB: NumberArray;
}
/** Reuse MinimizeRmsd.Positions type for consistency */
type Positions = MinimizeRmsd.Positions;
const Positions: typeof MinimizeRmsd.Positions;
interface Input {
/** Coordinates of structure A (reference) */
a: Positions;
/** Coordinates of structure B (mobile) */
b: Positions;
/** Optional: sequence of structure A for identity calculation */
seqA?: string;
/** Optional: sequence of structure B for identity calculation */
seqB?: string;
}
/**
* Compute TM-align between two structures
*/
function compute(input: Input): Result;
/**
* Calculate the d0 normalization parameter
* d0 = 1.24 * (L - 15)^(1/3) - 1.8 for L > 21
* d0 = 0.5 for L <= 21
*/
function calculateD0(length: number): number;
}