prolint.core¶
Core module for ProLint.
Provides the main classes for biomolecular interaction analysis: - Universe: Entry point extending MDAnalysis Universe - ExtendedAtomGroup: Enhanced atom group with additional properties - ContactsProvider: Orchestrates contact computation
Submodules¶
Classes¶
ProLint Universe for biomolecular interaction analysis. |
|
Extended MDAnalysis AtomGroup with additional ProLint functionality. |
|
Orchestrates contact computation between atom groups. |
Package Contents¶
- class prolint.core.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.UniverseProLint 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 unitsunits ({"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
ComputedContactsResult object from compute_contacts
ExtendedAtomGroupEnhanced 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:
- 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:
- 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:
- Raises:
ValueError – If multiple replicas with repeated residue IDs are detected and
replicais 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
ComputedContactsResult object with analysis methods
detect_replicasDetect replicas in query selection
- property units: prolint.config.enums.TimeUnit | str¶
Current time units for analysis results.
- property normalize_by: prolint.config.enums.NormalizationMethod | str¶
Current normalization method for contact durations.
- Returns:
Current normalization setting.
- Return type:
- class prolint.core.ExtendedAtomGroup(*args: Any, **kwargs: Any)[source]¶
Bases:
MDAnalysis.AtomGroup,PLAtomGroupBaseExtended MDAnalysis AtomGroup with additional ProLint functionality.
Provides enhanced methods for manipulating and querying atom selections, with cached properties for efficient repeated access.
- Parameters:
Examples
>>> from prolint import Universe >>> u = Universe("topology.gro", "trajectory.xtc") >>> u.database.unique_resnames array(['POPC', 'POPE', 'CHOL'], dtype='<U4') >>> u.database.resname_counts Counter({'POPC': 128, 'POPE': 64, 'CHOL': 32})
Add atoms:
>>> extended = u.database.add(resname="DPPC")
Remove atoms:
>>> filtered = u.database.remove(resname="CHOL")
See also
Universe.queryQuery atom group (typically protein)
Universe.databaseDatabase atom group (typically lipids)
- add(resname: str | list[str] | None = None, atomname: str | list[str] | None = None, resnum: int | list[int] | None = None, atomids: int | list[int] | None = None) ExtendedAtomGroup[source]¶
Add atoms to the atom group.
See
PLAtomGroupBase.add()for parameter documentation.
- remove(resname: str | list[str] | None = None, atomname: str | list[str] | None = None, resnum: int | list[int] | None = None, atomids: int | list[int] | None = None) ExtendedAtomGroup[source]¶
Remove atoms from the atom group.
See
PLAtomGroupBase.remove()for parameter documentation.
- get_resnames(resids: Iterable[int], out: type[list] | type[dict] = list) list[str] | Dict[int, str][source]¶
Get residue names for given residue IDs.
See
PLAtomGroupBase.get_resnames()for parameter documentation.
- get_resids(resname: str) numpy.ndarray[source]¶
Get residue IDs for a given residue name.
See
PLAtomGroupBase.get_resids()for parameter documentation.
- get_all_resids(resnames: Iterable[str], out: type[list] | type[dict] = list) list[numpy.ndarray] | Dict[str, numpy.ndarray][source]¶
Get residue IDs for multiple residue names.
See
PLAtomGroupBase.get_all_resids()for parameter documentation.
- filter_resids_by_resname(resids: Iterable[int], resname: str) numpy.ndarray[source]¶
Filter residue IDs to keep only those matching a residue name.
See
PLAtomGroupBase.filter_resids_by_resname()for parameter documentation.
- property unique_resnames: numpy.ndarray¶
Unique residue names in the atom group.
- Returns:
Array of unique residue names.
- Return type:
ndarray
- property resname_counts: collections.Counter¶
Count of residues for each residue name.
- Returns:
Mapping of residue name to count.
- Return type:
Counter
- class prolint.core.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_contactsHigh-level interface using this provider
ComputedContactsResult container returned by compute()
- query¶
- database¶
- params¶
- 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:
- Raises:
ValueError – If strategy_or_computer is not recognized.