Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Rdkit图纸-隐藏(不移除)氢_Python_Rdkit - Fatal编程技术网

Python Rdkit图纸-隐藏(不移除)氢

Python Rdkit图纸-隐藏(不移除)氢,python,rdkit,Python,Rdkit,我试图突出测试分子中的碳位置,同时隐藏隐含的氢。这出乎意料地复杂,因为我有两个复合问题,每个问题都有一个解决方案,但不兼容 from rdkit import Chem from rdkit.Chem import Draw from rdkit.Chem.Draw import rdMolDraw2D from rdkit.Chem.Draw import IPythonConsole from IPython.display import SVG import rdkit Molblock

我试图突出测试分子中的碳位置,同时隐藏隐含的氢。这出乎意料地复杂,因为我有两个复合问题,每个问题都有一个解决方案,但不兼容

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import rdMolDraw2D
from rdkit.Chem.Draw import IPythonConsole
from IPython.display import SVG
import rdkit

Molblock = 'molblock information here'
mx = Chem.MolFromMolBlock(Molblock,sanitize=False)# this molblock already provides an atom map, which I must remove to keep from displaying all assignments in the final image


def remove_atom_indices(mol):
    for a in mol.GetAtoms():
        a.SetAtomMapNum(0)

remove_atom_indices(mx) # remove atom indicies, to keep them from being displayed - can this be passed as an arg? 
highlight = [96,89,113] # locations of atoms I wish to highlight, fetched from indicies which are now removed
drawer = rdMolDraw2D.MolDraw2DSVG(500,500) # I want to actually see this with eyeballs
# mx=Chem.RemoveHs(mx) #this does not work - assuming it rewrtires the indicies and is now incompatable when they are removed
drawer.DrawMolecule(mx,highlightAtoms=highlight)
drawer.FinishDrawing()
svg = drawer.GetDrawingText().replace('svg:','')
SVG(svg)
我可以在以下条件下获取并生成图像文件:

  • 我不提供一个突出显示的原子列表-这是一个非初学者在这里,这是主要的一点
  • 我没有隐藏隐含的氢——这是“很好的……我猜”,除了在大型结构中,这创造了一个巨大且无法阅读的支架
  • 如果能够满足以下条件之一,则解决方案将非常好:

  • 只是不在结构中呈现1H,而是在mol文件中保留它们的存在(用于索引)
  • 在不显示原子贴图编号的情况下渲染图像-无法找到如何在不删除原子贴图编号的情况下执行此操作

  • 抱歉,如果我没有正确理解你的问题,但是如果氢是隐式的,你不需要直接修改mol对象来阻止它们显示。您可以使用RDKit手册中的以下代码片段:

    至于隐藏原子索引,您只需修改
    drawOptions
    ,如下所示:

    这是一条关于RDKit如何处理氢的更多信息的线索:

    for atom in m.GetAtoms():
        atom.SetProp("atomLabel", atom.GetSymbol())
    
    drawer.drawOptions().addAtomIndices = False