conformational_density
Conformational density map generation for lipid species.
attributeDEFAULT_IL_RESNAMES= ['ILN', 'ILP']func_heavy_neighbors(mol, atom_idx) → list[int]parammolparamatom_idxintReturns
list[int]func_headgroup_heavy_atoms(species) → list[int]Return heavy-atom indices for the headgroup region.
Uses RDKit connectivity to include heavy atoms reachable from head atoms without traversing beyond branch atoms (branch atoms are included but not expanded).
paramspeciesLipidSpeciesReturns
list[int]func_tail_heavy_atoms_from_branch(species, n_tail_atoms=4) → list[int]Return heavy-atom indices from each tail, starting at branch points.
For each heavy neighbor of a branch atom that is not in the headgroup, include up to n_tail_atoms heavy atoms by graph distance from the branch.
paramspeciesLipidSpeciesparamn_tail_atomsint= 4Returns
list[int]func_get_fit_atoms(species, n_tail_atoms=4) → list[int]Return atom indices for RMSD fitting.
Uses headgroup heavy atoms plus branch atoms and the first few heavy atoms of each tail chain (from the branch point outward).
paramspeciesLipidSpeciesparamn_tail_atomsint= 4Returns
list[int]func_kabsch_rotation_batched(P, Q) → np.ndarrayCompute optimal rotation matrices using batched Kabsch algorithm.
paramPnp.ndarrayMobile points, shape (batch, N, 3)
paramQnp.ndarrayTarget points, shape (N, 3) - same reference for all
Returns
numpy.ndarrayRotation matrices, shape (batch, 3, 3)
func_align_positions_batched(positions, fit_indices, reference_fit_positions, center_indices=None) → np.ndarrayAlign multiple molecules to reference using fit atoms (batched).
parampositionsnp.ndarrayAll atom positions, shape (batch, N_atoms, 3)
paramfit_indiceslist[int]Atom indices to use for fitting
paramreference_fit_positionsnp.ndarrayReference positions for fit atoms, centered at origin, shape (N_fit, 3)
paramcenter_indiceslist[int] | None= NoneAtom indices to use for centering translations. Defaults to fit_indices.
Returns
numpy.ndarrayAligned positions, shape (batch, N_atoms, 3)
func_accumulate_density(aligned_positions, grid, origin, grid_spacing) → NoneAccumulate atom positions onto density grid (in-place).
paramaligned_positionsnp.ndarrayAligned atom positions, shape (N, 3)
paramgridnp.ndarray3D density grid to accumulate into
paramoriginnp.ndarrayOrigin of grid in real space
paramgrid_spacingfloatGrid spacing in Angstroms
Returns
Nonefunc_write_mrc(grid, output_path, voxel_size, origin) → NoneWrite density grid to MRC format.
paramgridnp.ndarray3D density grid indexed as [x, y, z]
paramoutput_pathPathOutput file path
paramvoxel_sizefloatVoxel size in Angstroms
paramoriginnp.ndarrayOrigin coordinates in Angstroms (x, y, z)
Returns
Nonefuncconformational_density_map(simulation, *, species_filter=None, start_ns=0.0, stride=1, grid_spacing=0.5, max_residues=None, output_prefix='conformational_density', write_pdb=False, pdb_stride=10, fit_n_tail_atoms=4, **_kwargs) → list[Path]Generate conformational density maps for lipid species.
Aligns all lipids of each species to a reference conformation and accumulates atom positions on a 3D grid. Output is MRC format files suitable for visualization in VMD, ChimeraX, or matplotlib.
paramsimulationSimulationSimulation instance with universe and build input.
paramspecies_filterlist[str] | None= NoneResidue names to analyze. Default: ["ILN", "ILP"]
paramstart_nsfloat | None= 0.0Start time for analysis in ns.
paramstrideint= 1Frame stride.
paramgrid_spacingfloat= 0.5Grid spacing in Angstroms.
parammax_residuesint | None= NoneMaximum number of residues to process per species (for testing). If None, process all residues.
paramoutput_prefixstr= 'conformational_density'Output filename prefix.
paramwrite_pdbbool= FalseIf True, write a multi-model PDB of aligned conformations.
parampdb_strideint= 10Write every Nth aligned lipid to reduce PDB file size.
paramfit_n_tail_atomsint= 4Number of heavy atoms per tail to include in RMSD fitting (from the branch point outward), in addition to headgroup heavy atoms.
param_kwargs= {}Returns
listPaths to generated files (MRC and optionally PDB).
