所以,我正在尝试将 RDKit 添加到我在 PyCharm 中的项目中。我发现如果您使用解释器,/usr/bin/python2.7PyCharm 会尝试使用pip. 而 RDKit 需要conda. 我试图将解释器更改为conda,但RDKit要么不在列表中,要么无法打开带有 repo 的 URL。有谁知道如何解决这个问题?
顺便说一句,在安装东西的同时,是否有可能让解释器/usr/bin/python2.7使用其他任何东西(不是pip)?
我正在尝试使用Anaconda和Python 2.7在我的Windows 7系统上运行rdkit.我一直在遵循http://www.rdkit.org/docs/Install.html的说明
conda create -c https://conda.anaconda.org/rdkit -n my-rdkit-env rdkit
activate my-rdkit-env
Run Code Online (Sandbox Code Playgroud)
然后我得到以下内容:
停用环境"C:\ Anaconda2"......
激活环境"C:\ Anaconda2\envs\my-rdkit-env"
但是,如果我再打开一个Jupyter笔记本,并尝试
import rdkit
Run Code Online (Sandbox Code Playgroud)
它失败了
ImportError:没有名为rdkit的模块
任何帮助将不胜感激!
在一个例子中,我意识到至少有两种方法可以使用rdkit. 但是在两种方式中使用完全相同的属性我得到了不同的向量。我错过了什么吗?
第一种方法:
info = {}
mol = Chem.MolFromSmiles('C/C1=C\\C[C@H]([C+](C)C)CC/C(C)=C/CC1')
fp = AllChem.GetMorganFingerprintAsBitVect(mol, useChirality=True, radius=2, nBits = 124, bitInfo=info)
vector = np.array(fp)
vector
array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, …Run Code Online (Sandbox Code Playgroud) 如果RDKit的安装不是那么复杂,则它可能是一个不错的软件包。在SO上,有几个问题与RDKit的安装有关。但是,在不同的操作系统或不同的环境上。
我的配置是:
Win10,Python 3.7.4,pip已安装,PATH已设置,PYTHONPATH已设置。通过可以正常安装其他模块python -m pip install <package>。
我知道该网站建议使用Anaconda进行最快的安装。但是,我没有也不想水蟒。
在网页上显示:“从以下网址获取适当的Windows二进制版本:https : //github.com/rdkit/rdkit/releases ”。但是,没有最新版本的二进制文件。
这意味着,我将不得不从源代码构建它。我很犹豫,因为该过程似乎很复杂,安装了许多新问题和未知数的额外安装,此外,对于那些首次从源头构建二进制文件的人来说,说明似乎已经过时且不完整。
因此,然后我尝试了RDKit的一些非官方二进制文件。
如果我解压它们并按照说明设置路径,则会收到此错误消息:
>>> from rdkit import Chem
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\xyz\Programs\RDKit\rdkit\__init__.py", line 2, in <module>
from .rdBase import rdkitVersion as __version__
ImportError: DLL load failed: The specified module could not be found.
Run Code Online (Sandbox Code Playgroud)
所以,最后我的问题是:
我很确定这可能是一件“小事”(这里的路径或那里的支票),但我被卡住了。谢谢您的提示。 …
我在尝试使用 python3 和 Ubuntu 20.04 LTS 安装 RDKit 时遇到了很多麻烦尝试以这种方式安装 rdkit:
sudo apt-get install python3-rdkit
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用 python3 导入它时它不起作用。它确实安装了,但它不在包列表中。使用后我也无法导入它,例如:
from rdkit import Chem
Run Code Online (Sandbox Code Playgroud)
官网(https://www.rdkit.org/docs/Install.html)网站确实有下面的安装语句,但是没有用:
sudo apt-get install python-rdkit librdkit1 rdkit-data
Run Code Online (Sandbox Code Playgroud)
我将不胜感激任何帮助!
目的:我正在使用rdkit来根据我的分子颜色进行着色rdkit.Chem.Draw.SimilarityMaps.现在,我想使用matplotlib图像SimilarityMaps函数在pandas数据帧中引入它们,并以html文件的形式导出该表.
代码:我尝试使用以下代码执行此操作
import pandas as pd
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import SimilarityMaps
from rdkit.Chem.Draw import IPythonConsole #Needed to show molecules
from rdkit.Chem.Draw.MolDrawing import MolDrawing, DrawingOptions
df = pd.DataFrame({'smiles':['Nc1nc(NC2CC2)c3ncn([C@@H]4C[C@H](CO)C=C4)c3n1','CCCC(=O)Nc1ccc(OCC(O)CNC(C)C)c(c1)C(C)=O','CCN(CC)CCNC(=O)C1=CC=C(C=C1)NC(=O)C','CC(=O)NC1=CC=C(C=C1)O','CC(=O)Nc1sc(nn1)[S](N)(=O)=O']})
def getSim(smi):
mol = Chem.MolFromSmiles(smi)
refmol = Chem.MolFromSmiles('c1ccccc1')
fp = SimilarityMaps.GetMorganFingerprint(mol, fpType='bv')
fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(refmol, mol, SimilarityMaps.GetMorganFingerprint)
return fig
df['map'] = df['smiles'].map(getSim)
df.to_html('/.../test.html')
Run Code Online (Sandbox Code Playgroud)
当我打开文件时test.html,map列包含信息"Figure(200x200)".我检查我的数据帧映射列是否包含对象:它在python中没有问题,但在html文件中没有.
问题:我不确定如何获取带有图像的数据框,我希望得到社区的帮助来澄清这个主题.
提前致谢
我正在使用 RDKit 根据两个具有 SMILE 结构的分子列表之间的 Tanimoto 系数计算分子相似性。现在我可以从两个单独的 csv 文件中提取 SMILE 结构。我想知道如何将这些结构放入RDKit中的指纹模块中,以及如何一一计算两个分子列表之间的相似度?
from rdkit import DataStructs
from rdkit.Chem.Fingerprints import FingerprintMols
ms = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO'), ... Chem.MolFromSmiles('COC')]
fps = [FingerprintMols.FingerprintMol(x) for x in ms]
DataStructs.FingerprintSimilarity(fps[0],fps[1])
Run Code Online (Sandbox Code Playgroud)
我想将我拥有的所有 SMILE 结构(超过 10,000 个)放入“ms”列表中并获取它们的指纹。然后我将比较两个列表中每对分子之间的相似性,也许这里需要一个 for 循环?
提前致谢!
我使用 pandas dataframe 选择并打印出包含我的结构的列表,并将列表保存到 list_1 和 list_2 中。当运行到ms1行时,出现如下错误:
TypeError: No registered converter was able to produce a C++ rvalue of type std::__cxx11::basic_string<wchar_t,
std::char_traits<wchar_t>, std::allocator<wchar_t> > from this Python object of type float
Run Code Online (Sandbox Code Playgroud)
然后我检查了文件,微笑栏中只有微笑。但是当我手动将一些分子结构放入列表中进行测试时,仍然存在错误
fpArgs['minSize'].
Run Code Online (Sandbox Code Playgroud)
例如,钆双酰胺的 SMILES 为“O=C1[O-][Gd+3]234567[O]=C(C[N]2(CC[N]3(CC([O-]4)=O) )CC[N]5(CC(=[O]6)NC)CC(=O)[O-]7)C1)NC",错误代码如下(运行fps线时):
ArgumentError: …Run Code Online (Sandbox Code Playgroud) 我想使用 rdkit 生成计数摩根指纹并将其输入 scikit Learn 模型(Python 中)。但是,我不知道如何将指纹生成为 numpy 数组。当我使用
from rdkit import Chem
from rdkit.Chem import AllChem
m = Chem.MolFromSmiles('c1cccnc1C')
fp = AllChem.GetMorganFingerprint(m, 2, useCounts=True)
Run Code Online (Sandbox Code Playgroud)
我得到一个需要转换的 UIntSparseIntVect 。我发现的唯一的东西是cDataStructs(参见: http: //rdkit.org/docs/source/rdkit.DataStructs.cDataStructs.html),但这目前不支持UIntSparseIntVect。
我为一个分子生成了一堆构象异构体。对于每个一致的,我想将坐标保存在 SDF 文件中。我尝试了以下操作,但 sdf 文件中的坐标与符合者的坐标不同。
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem.EnumerateStereoisomers import EnumerateStereoisomers
from rdkit.Chem.EnumerateStereoisomers import StereoEnumerationOptions
aspirin = 'CC(=O)OC1=CC=CC=C1C(=O)O'
mol = Chem.AddHs(Chem.MolFromSmiles(aspirin))
conformers = AllChem.EmbedMultipleConfs(mol, numConfs=8)
conformer_i = mol.GetConformer(0) # This is the conformer that I wanted to save in a SDF file.
print(conformer_i.GetPositions())
Run Code Online (Sandbox Code Playgroud)
我明白了
[[ 3.55910965 0.20840444 0.20174025]
[ 2.13148034 -0.07274183 -0.11680036]
[ 1.81233825 -0.09134332 -1.32465968]
[ 1.16950868 -0.30747936 0.83214171]
[-0.12944319 -0.55824117 0.41262056]
[-0.53676538 -1.86517356 0.15656512]
[-1.82111824 -2.14574436 -0.26154327]
[-2.69581394 -1.09437287 -0.4203516 ]
[-2.35275981 …Run Code Online (Sandbox Code Playgroud) 我正在遵循 RDKit 的基本教程。
p = Chem.MolFromSmiles('[nH]1cnc2cncnc21')
subms = [x for x in ms if x.HasSubstructMatch(p)]
len(subms)
AllChem.Compute2DCoords(p)
for m in subms: AllChem.GenerateDepictionMatching2DStructure(m,p)
img=Draw.MolsToGridImage(subms,molsPerRow=4,subImgSize=(200,200),legends=[x.GetProp("_Name") for x in subms])
img.save('images/cdk2_molgrid.aligned.o.png')
Run Code Online (Sandbox Code Playgroud)
我的版本如下所示:
NP=pd.read_excel(r'C:\Users\BajMic\NPPics.xlsx', header=0, index_col=False, keep_default_na=True)
NP['mol']=NP.smiles.apply(getMol)
ms= [i for i in NP['mol'] if i is not None]
img=Draw.MolsToGridImage(ms, molsPerRow=10)
img.save('Pic.png')
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,教程和我自己的代码,我得到相同的错误: AttributeError: 'Image' object has no attribute 'save'
现在,这很令人困惑,因为我只是遵循一个简单的教程。我查看了其他类似的主题,但我认为我的案例更加微不足道。我在这里缺少什么?
rdkit ×10
python ×9
fingerprint ×2
python-3.x ×2
anaconda ×1
c++ ×1
chemistry ×1
csv ×1
image ×1
installation ×1
matplotlib ×1
morgan ×1
numpy ×1
pandas ×1
pycharm ×1
save ×1
scikit-learn ×1
similarity ×1
ubuntu-20.04 ×1
windows ×1