![v2-190594d0ba330840d02668ee7382bb3b_1440w.jpg?source=172ae18b](http://img-01.proxy.5ce.com/view/image?&type=2&guid=b1e3163e-e12f-eb11-8da9-e4434bdf6706&url=https://pic2.zhimg.com/v2-190594d0ba330840d02668ee7382bb3b_1440w.jpg?source=172ae18b)
通过xyz文件可视化小分子
导入库
from
定义mol转svg函数
def moltosvg(mol,molSize=(450,150),kekulize=True):
mc = Chem.Mol(mol.ToBinary())
if kekulize:
try:
Chem.Kekulize(mc)
except:
mc = Chem.Mol(mol.ToBinary())
if not mc.GetNumConformers():
rdDepictor.Compute2DCoords(mc)
drawer = rdMolDraw2D.MolDraw2DSVG(molSize[0],molSize[1])
drawer.DrawMolecule(mc)
drawer.FinishDrawing()
svg = drawer.GetDrawingText()
return svg
def render_svg(svg):
return SVG(svg.replace('svg:',''))
jensengroup的xyz2mol,提供了将MIT许可下的xyz文件转换为RDKit mol实例的代码
"""
https://github.com/jensengroup/xyz2mol/blob/master/xyz2mol.py
"""
##
# Written by Jan H. Jensen based on this paper Yeonjoon Kim and Woo Youn Kim
# "Universal Structure Conversion Method for Organic Molecules: From Atomic Connectivity
# to Three-Dimensional Geometry" Bull. Korean Chem. Soc. 2015, Vol. 36, 1769-1777 DOI: 10.1002/bkcs.10334
#
from rdkit import Chem
from rdkit.Chem import AllChem
import itertools
from rdkit.Chem import rdmolops
from collections import defaultdict
import copy
import networkx as nx # uncomment if you don't want to use "quick"/install networkx
global __ATOM_LIST__
__ATOM_LIST__ = [x.strip() for x in ['h ', 'he',
'li', 'be', 'b ', 'c ', 'n ', 'o ', 'f ', 'ne',
'na', 'mg', 'al', 'si', 'p ', 's ', 'cl', 'ar',
'k ', 'ca', 'sc', 'ti', 'v ', 'cr', 'mn', 'fe', 'co', 'ni', 'cu',
'zn', 'ga', 'ge', 'as', 'se', 'br', 'kr',
'rb', 'sr', 'y ', 'zr', 'nb', 'mo', 'tc', 'ru', 'rh', 'pd', 'ag',
'cd', 'in', 'sn', 'sb', 'te', 'i ', 'xe',
'cs', 'ba', 'la', 'ce', 'pr', 'nd', 'pm', 'sm', 'eu', 'gd', 'tb', 'dy',
'ho', 'er', 'tm', 'yb', 'lu', 'hf', 'ta', 'w ', 're', 'os', 'ir', 'pt',
'au', 'hg', 'tl', 'pb', 'bi', 'po', 'at', 'rn',
'fr', 'ra', 'ac', 'th', 'pa', 'u ', 'np', 'pu']]
def get_atom(atom):
global __ATOM_LIST__
atom = atom.lower()
return __ATOM_LIST__.index(atom) + 1
def getUA(maxValence_list, valence_list):
UA = []
DU = []