Source code for cgsmiles.coordinates

"""
Handle 3D embeddings.
"""
import numpy as np
import networkx as nx
from .rdkit import embed_3d_via_rdkit

[docs] def forward_map_molecule(cg_mol, aa_mol): """ Forward map the positions of an all-atom molecule to a coarse-grained molecule. Positions are updated in the CG molecule. Parameters ---------- cg_mol: networkx.Graph aa_mol: networkx.Graph """ for cg_node in cg_mol.nodes: weights = nx.get_node_attributes(cg_mol.nodes[cg_node]['graph'], "weight") cg_pos = np.zeros(3) for aa_node, weight in weights.items(): cg_pos += aa_mol.nodes[aa_node]['position']*weight cg_pos = cg_pos/ len(weights) cg_mol.nodes[cg_node]['position'] = cg_pos
[docs] def embedd_cg_molecule_via_rdkit(cg_mol, aa_mol): """ Generates coordinates for a cgmolecule by embedding the all-atom molecule and subsquently forward mapping those coordinates to CG resolution. The all-atom molecule coordinates are generated using the Rdkit scheme. Parameters ---------- cg_mol: networkx.Graph aa_mol: networkx.Graph """ embed_3d_via_rdkit(aa_mol) forward_map_molecule(cg_mol, aa_mol)