prolint

Submodules

Classes

Universe

ProLint Universe for biomolecular interaction analysis.

Functions

setup_logging(→ logging.Logger)

Configure logging for ProLint.

get_logger(→ logging.Logger)

Get a child logger for a ProLint module.

Package Contents

class prolint.Universe(*args: Any, universe: MDAnalysis.Universe | None = None, query: MDAnalysis.AtomGroup | None = None, database: MDAnalysis.AtomGroup | None = None, normalize_by: prolint.config.enums.NormalizationMethod | NormalizationLiteral = 'counts', units: prolint.config.enums.TimeUnit | TimeUnitLiteral = 'us', **kwargs: Any)[source]

Bases: MDAnalysis.Universe

ProLint Universe for biomolecular interaction analysis.

Extends MDAnalysis Universe with specialized methods for computing and analyzing contacts between molecular groups (e.g., protein-lipid, protein-ligand interactions).

Parameters:
  • *args (tuple) – Positional arguments passed to MDAnalysis Universe (topology, trajectory).

  • universe (mda.Universe, optional) – Existing MDAnalysis Universe to wrap. If provided, topology and trajectory are extracted from this universe.

  • query (mda.AtomGroup, optional) – Atoms to analyze (e.g., protein). Default: "protein" selection.

  • database (mda.AtomGroup, optional) – Reference atoms for contact detection (e.g., lipids). Default: "not protein" selection.

  • normalize_by ({"counts", "actual_time"}, default="counts") – Normalization method for contact durations. - "counts": Duration in frame counts - "actual_time": Duration in time units

  • units ({"fs", "ps", "ns", "us", "ms", "s"}, default="us") – Time units for analysis results.

  • **kwargs (dict) – Additional keyword arguments passed to MDAnalysis Universe.

Examples

Basic usage with topology and trajectory files:

>>> from prolint import Universe
>>> u = Universe("topology.gro", "trajectory.xtc")
>>> print(f"Loaded {u.trajectory.n_frames} frames")

From an existing MDAnalysis Universe:

>>> import MDAnalysis as mda
>>> mda_u = mda.Universe("topology.gro", "trajectory.xtc")
>>> u = Universe(universe=mda_u)

With custom selections:

>>> u = Universe("topology.gro", "trajectory.xtc")
>>> u.query = u.select_atoms("protein and name CA")
>>> u.database = u.select_atoms("resname POPC POPE CHOL")

Compute contacts:

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

See also

ComputedContacts

Result object from compute_contacts

ExtendedAtomGroup

Enhanced atom group with additional properties

params
property query: prolint.core.groups.ExtendedAtomGroup

Query atom group for analysis.

Returns:

The query atoms (typically protein).

Return type:

ExtendedAtomGroup

update_query(new_query: MDAnalysis.AtomGroup) None[source]

Update query atom group.

Parameters:

new_query (mda.AtomGroup) – New query atom selection.

property database: prolint.core.groups.ExtendedAtomGroup

Database atom group for contact detection.

Returns:

The database atoms (typically lipids or ligands).

Return type:

ExtendedAtomGroup

update_database(new_database: MDAnalysis.AtomGroup) None[source]

Update database atom group.

Parameters:

new_database (mda.AtomGroup) – New database atom selection.

compute_contacts(*args: Any, replica: str | None = None, **kwargs: Any) Any[source]

Compute contacts between query and database atom groups.

Detects distance-based contacts between query (e.g., protein) and database (e.g., lipids) atoms across the trajectory.

Parameters:
  • cutoff (float, default=7.0) – Distance cutoff in Angstroms for contact detection.

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

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

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

  • replica (str, optional) – Replica ID to analyze (e.g., ‘A’, ‘B’). Required when multiple replicas with repeated residue IDs are detected. Use detect_replicas() to see available replicas.

  • **kwargs (dict) – Additional keyword arguments passed to ContactsProvider.

Returns:

Object containing contact data and analysis methods.

Return type:

ComputedContacts

Raises:

ValueError – If multiple replicas with repeated residue IDs are detected and replica is not specified.

Examples

Compute contacts for a single-replica system:

>>> contacts = universe.compute_contacts(cutoff=7.0)

For multi-replica systems, first detect replicas:

>>> from prolint.core.replica_detection import detect_replicas
>>> result = detect_replicas(universe.query)
>>> print(f"Found {result.n_replicas} replicas")
>>> for info in result.replica_info:
...     print(f"  Replica {info.replica_id}: {info.n_residues} residues")

Then select a specific replica for analysis:

>>> contacts = universe.compute_contacts(cutoff=7.0, replica='A')

See also

ComputedContacts

Result object with analysis methods

detect_replicas

Detect replicas in query selection

property units: prolint.config.enums.TimeUnit | str

Current time units for analysis results.

Returns:

Current time unit setting.

Return type:

TimeUnit or str

property normalize_by: prolint.config.enums.NormalizationMethod | str

Current normalization method for contact durations.

Returns:

Current normalization setting.

Return type:

NormalizationMethod or str

prolint.setup_logging(level: int = logging.INFO, format_string: str | None = None, simple: bool = False) logging.Logger[source]

Configure logging for ProLint.

Parameters:
  • level (int, default=logging.INFO) – Logging level (e.g., logging.DEBUG, logging.INFO).

  • format_string (str, optional) – Custom format string for log messages.

  • simple (bool, default=False) – If True, use simplified format without timestamps.

Returns:

Configured ProLint logger instance.

Return type:

logging.Logger

prolint.get_logger(name: str) logging.Logger[source]

Get a child logger for a ProLint module.

Parameters:

name (str) – Module name (will be prefixed with “prolint.”).

Returns:

Logger instance for the specified module.

Return type:

logging.Logger