MDFactoryMDFactory

conformational_density

Conformational density map generation for lipid species.

attributeDEFAULT_IL_RESNAMES
= ['ILN', 'ILP']
func_heavy_neighbors(mol, atom_idx)list[int]
parammol
paramatom_idxint

Returns

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).

paramspeciesLipidSpecies

Returns

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.

paramspeciesLipidSpecies
paramn_tail_atomsint
= 4

Returns

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).

paramspeciesLipidSpecies
paramn_tail_atomsint
= 4

Returns

list[int]
func_kabsch_rotation_batched(P, Q)np.ndarray

Compute optimal rotation matrices using batched Kabsch algorithm.

paramPnp.ndarray

Mobile points, shape (batch, N, 3)

paramQnp.ndarray

Target points, shape (N, 3) - same reference for all

Returns

numpy.ndarray

Rotation matrices, shape (batch, 3, 3)

func_align_positions_batched(positions, fit_indices, reference_fit_positions, center_indices=None)np.ndarray

Align multiple molecules to reference using fit atoms (batched).

parampositionsnp.ndarray

All atom positions, shape (batch, N_atoms, 3)

paramfit_indiceslist[int]

Atom indices to use for fitting

paramreference_fit_positionsnp.ndarray

Reference positions for fit atoms, centered at origin, shape (N_fit, 3)

paramcenter_indiceslist[int] | None
= None

Atom indices to use for centering translations. Defaults to fit_indices.

Returns

numpy.ndarray

Aligned positions, shape (batch, N_atoms, 3)

func_accumulate_density(aligned_positions, grid, origin, grid_spacing)None

Accumulate atom positions onto density grid (in-place).

paramaligned_positionsnp.ndarray

Aligned atom positions, shape (N, 3)

paramgridnp.ndarray

3D density grid to accumulate into

paramoriginnp.ndarray

Origin of grid in real space

paramgrid_spacingfloat

Grid spacing in Angstroms

Returns

None
func_write_mrc(grid, output_path, voxel_size, origin)None

Write density grid to MRC format.

paramgridnp.ndarray

3D density grid indexed as [x, y, z]

paramoutput_pathPath

Output file path

paramvoxel_sizefloat

Voxel size in Angstroms

paramoriginnp.ndarray

Origin coordinates in Angstroms (x, y, z)

Returns

None
funcconformational_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.

paramsimulationSimulation

Simulation instance with universe and build input.

paramspecies_filterlist[str] | None
= None

Residue names to analyze. Default: ["ILN", "ILP"]

paramstart_nsfloat | None
= 0.0

Start time for analysis in ns.

paramstrideint
= 1

Frame stride.

paramgrid_spacingfloat
= 0.5

Grid spacing in Angstroms.

parammax_residuesint | None
= None

Maximum number of residues to process per species (for testing). If None, process all residues.

paramoutput_prefixstr
= 'conformational_density'

Output filename prefix.

paramwrite_pdbbool
= False

If True, write a multi-model PDB of aligned conformations.

parampdb_strideint
= 10

Write every Nth aligned lipid to reduce PDB file size.

paramfit_n_tail_atomsint
= 4

Number of heavy atoms per tail to include in RMSD fitting (from the branch point outward), in addition to headgroup heavy atoms.

param_kwargs
= {}

Returns

list

Paths to generated files (MRC and optionally PDB).