.xyz文件_RDKit | 可视化分子来自于xyz文件

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 = []
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值