Contacts Data
GitHub Link to Code.
Contact feature type implementation for molecular dynamics analysis.
Contact feature type implementation with distance-based contact detection for analyzing molecular dynamics trajectories.
- class mdxplain.feature.feature_type.contacts.contacts.Contacts(cutoff: float = 4.5)
Contact feature type for detecting atomic/residue contacts based on distance cutoffs.
Converts distance data into binary contact maps by applying distance cutoffs. A contact is defined as a pair being within the specified cutoff distance. Depends on distance features as input data.
This feature type enables analysis of contact formation/breaking patterns, contact frequencies, and structural stability through contact persistence.
Examples
>>> # Basic contact calculation with default cutoff >>> contacts = Contacts() >>> contacts.init_calculator() >>> contact_data, names = contacts.compute(distance_data, feature_names)
>>> # Contact calculation with custom cutoff >>> contacts = Contacts(cutoff=3.5) # 3.5 Angstrom cutoff >>> contacts.init_calculator() >>> contact_data, names = contacts.compute(distance_data, feature_names)
>>> # With memory mapping for large datasets >>> contacts = Contacts(cutoff=4.0) >>> contacts.init_calculator(use_memmap=True, cache_path='./cache/') >>> contact_data, names = contacts.compute(distance_data, feature_names)
- __init__(cutoff: float = 4.5) None
Initialize contact feature type with distance cutoff parameter.
Parameters
- cutofffloat, default=4.5
Distance cutoff in Angstrom for contact determination. Pairs with distances <= cutoff are considered in contact (1), others not (0).
Returns
None
Examples
>>> # Default cutoff (4.5 Angstrom) >>> contacts = Contacts()
>>> # Custom cutoff for closer contacts >>> contacts = Contacts(cutoff=3.5)
>>> # Longer range contacts >>> contacts = Contacts(cutoff=6.0)
- init_calculator(use_memmap: bool = False, cache_path: str = './cache', chunk_size: int = 2000) None
Initialize the contact calculator with specified configuration.
Parameters
- use_memmapbool, default=False
Whether to use memory mapping for large datasets
- cache_pathstr, optional
Directory path for storing cache files when using memory mapping
- chunk_sizeint, optional
Number of frames to process per chunk (None for automatic sizing)
Returns
None
Examples
>>> # Basic initialization >>> contacts.init_calculator()
>>> # With memory mapping for large datasets >>> contacts.init_calculator(use_memmap=True, cache_path='./cache/')
>>> # With custom chunk size >>> contacts.init_calculator(chunk_size=1000)
- compute(input_data: ndarray, feature_metadata: Dict[str, Any]) Tuple[ndarray, Dict[str, Any]]
Compute binary contact maps from distance data using distance cutoff.
Parameters
- input_datanumpy.ndarray
Distance matrix data from distance feature type (n_frames, n_pairs)
- feature_metadatadict
Feature metadata from distance calculations (structured metadata)
Returns
- tuple[numpy.ndarray, dict]
Tuple containing (contact_matrix, feature_metadata) where contact_matrix is binary (0/1) indicating contact presence and feature_metadata is the same structured metadata from input with features in same order as data columns
Examples
>>> # Compute contacts from distance data >>> contacts = Contacts(cutoff=4.0) >>> contacts.init_calculator() >>> contact_data, metadata = contacts.compute(distance_data, distance_metadata) >>> print(f"Contact matrix shape: {contact_data.shape}") >>> print(f"Contact frequency: {contact_data.mean():.3f}")
- get_dependencies() List[str]
Get list of feature type dependencies for contact calculations.
Parameters
None
Returns
- List[str]
List containing ‘distances’ as contacts require distance data
Examples
>>> contacts = Contacts() >>> print(contacts.get_dependencies()) ['distances']