prolint.core.contact_provider

Contact provider module.

This module provides classes for computing and managing contact data between molecular groups.

Attributes

Classes

ComputedContacts

Container for computed contact data with analysis methods.

ContactsProvider

Orchestrates contact computation between atom groups.

Module Contents

prolint.core.contact_provider.logger[source]
class prolint.core.contact_provider.ComputedContacts(contact_strategy_instance: prolint.contacts.base.BaseContactStore, provider: ContactsProvider)[source]

Container for computed contact data with analysis methods.

This class wraps contact computation results and provides methods for analyzing contacts, computing metrics, and performing set operations.

Parameters:
  • contact_strategy_instance (BaseContactStore) – Contact storage instance containing computed contacts.

  • provider (ContactsProvider) – The provider that created this instance.

Examples

>>> contacts = universe.compute_contacts(cutoff=7.0)
>>> result = contacts.analyze("timeseries", database_type="CHOL")

Compute metrics:

>>> occupancy = contacts.compute_metric("occupancy", target_resname="CHOL")

Set operations:

>>> common = contacts1 + contacts2  # Intersection
>>> unique = contacts1 - contacts2  # Difference

See also

Universe.compute_contacts

Method that creates ComputedContacts

AnalysisRegistry

Registry of available analysis types

provider[source]
compute_metric(metric: str, target_resname=None)[source]

Compute a metric for contacts.

Parameters:
  • metric (str) – Metric to compute. Options: “occupancy”, “mean”, “max”, “sum”.

  • target_resname (str, optional) – Filter by residue name (e.g., “CHOL”, “POPC”).

Returns:

Metric values organized by residue ID.

Return type:

dict

Examples

>>> occupancy = contacts.compute_metric("occupancy", target_resname="CHOL")
>>> mean_duration = contacts.compute_metric("mean")
apply_function(func: Callable, target_resname=None)[source]

Apply a custom function to contact data.

Parameters:
  • func (callable) – Function to apply to contact durations.

  • target_resname (str, optional) – Filter by residue name.

Returns:

Function results organized by residue ID.

Return type:

dict

property contacts[source]

Raw contact data.

Returns:

Contact data organized by residue and database molecule.

Return type:

dict

property contact_frames[source]

Frame indices where contacts occur.

Returns:

Nested dict mapping residue_id -> database_id -> list of frame indices.

Return type:

dict

property norm_factor: float[source]

Normalization factor for duration calculations.

Returns:

Factor used to normalize contact durations.

Return type:

float

intersection(other: ComputedContacts) ComputedContacts[source]

Find contacts common to both ComputedContacts objects.

Parameters:

other (ComputedContacts) – Another computed contacts object.

Returns:

New object containing only contacts present in both.

Return type:

ComputedContacts

Examples

>>> common = contacts1.intersection(contacts2)
>>> # Or using operator
>>> common = contacts1 + contacts2
difference(other: ComputedContacts) ComputedContacts[source]

Find contacts in self but not in other.

Parameters:

other (ComputedContacts) – Another computed contacts object.

Returns:

New object containing contacts unique to self.

Return type:

ComputedContacts

Examples

>>> unique = contacts1.difference(contacts2)
>>> # Or using operator
>>> unique = contacts1 - contacts2
analyze(analysis_type: str, **kwargs) prolint.analysis.base.AnalysisResult[source]

Run an analysis on computed contacts.

Parameters:
  • analysis_type (str) – Type of analysis to run. Options: - “timeseries”: Contact counts over time - “database_contacts”: Per-molecule contact timeline - “kinetics”: Binding kinetics and residence times - “density_map”: 2D spatial density - “radial_density”: Radial density profile - “shared_contacts”: Residue contact correlations - “distances”: Distance distributions - “atom_distances”: Atom-level distances - “metrics”: Per-residue metrics

  • **kwargs (dict) – Analysis-specific parameters.

Returns:

Result object containing analysis data.

Return type:

AnalysisResult

Examples

>>> result = contacts.analyze("timeseries", database_type="CHOL")
>>> result = contacts.analyze("kinetics", query_residue=42, mode="accumulated")
>>> result = contacts.analyze("metrics", metric="occupancy")

See also

AnalysisRegistry

Registry of available analysis types

class prolint.core.contact_provider.ContactsProvider(query, database, params=None, compute_strategy: Literal['default'] = 'default')[source]

Orchestrates contact computation between atom groups.

This class manages the contact detection process, coordinating between different computation strategies and contact storage methods.

Parameters:
  • query (ExtendedAtomGroup) – Query atoms (e.g., protein).

  • database (ExtendedAtomGroup) – Database atoms (e.g., lipids).

  • params (dict, optional) – Computation parameters including units and normalization.

  • compute_strategy ({"default"}, default="default") – Contact computation strategy to use.

See also

Universe.compute_contacts

High-level interface using this provider

ComputedContacts

Result container returned by compute()

query[source]
database[source]
params[source]
compute(strategy_or_computer=None, start=None, stop=None, step=1, **kwargs)[source]

Compute contacts between query and database.

Parameters:
  • strategy_or_computer (str, optional) – Computation strategy name. Default: “default”.

  • start (int, optional) – First frame to process.

  • stop (int, optional) – Last frame to process (exclusive).

  • step (int, default=1) – Frame step size.

  • **kwargs (dict) – Additional arguments passed to contact computer (e.g., cutoff).

Returns:

Container with contact data and analysis methods.

Return type:

ComputedContacts

Raises:

ValueError – If strategy_or_computer is not recognized.