- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对具有楔形键的分子应用 react 时出现 sanitizer 错误。我在对分子应用质子去除 react 时遇到此错误,但我在 MolBlock 信息中没有看到任何错误。
这是一个 react 问题,在这个问题中,我试图对给定同分异构体 SMILES 的分子应用一个简单的 react (质子去除)。
我创建了一个函数来使用 SMARTS 和 SMILES 应用 react ,但我收到以下无法修复的错误。
我正在使用以下代码来加载我的输入。
smile = rdkit.Chem.rdmolfiles.MolToSmiles(mol,isomericSmiles=True)
这导致:
C/C1=C\\C[C@@H]([C+](C)C)CC/C(C)=C/CC1
我创建了以下字典来使用我的 SMILES 和 SMARTS:
reaction_smarts = {}
# proton removal reaction
reaction_smarts["proton_removal"] = "[Ch:1]-[C+1:2]>>[C:1]=[C+0:2].[H+]"
reactions = {name: AllChem.ReactionFromSmarts(reaction_smarts[name]) for name in reaction_smarts}
# function to run reactions
def run_reaction(molecule, reaction):
products = []
for product in reaction.RunReactant(molecule, 0):
Chem.SanitizeMol(product[0])
products.append(product[0])
return products
# apply reaction
products = run_reaction(cation_to_rdkit_mol["mol_name"], reactions["proton_removal"])
在这一步,我收到了这个错误,但我无法修复它。 RDKit 错误:[10:43:23] 原子 # 0 C,5 的显式化合价大于允许值
预期结果应该是带有双键的分子及其立体异构体:
第一个产品:CC(C)=C1C/C=C(\\C)CC/C=C(\\C)CC1
第二个产品:C=C(C)[C@@H]1C/C=C(\\C)CC/C=C(\\C)CC1
第三个产品:C=C(C)[C@H]1C/C=C(\\C)CC/C=C(\\C)CC1
我正在使用 Chem.EnumerateStereoisomers.EnumerateStereoisomers()
获取所有立体异构体,但我只获取第一个和第二个产品。我还添加了您的初始提案 product[0].GetAtomWithIdx(0).SetNumExplicitHs(0)
,它实际上修复了 Explicit valence 错误。但现在我正试图弄清楚如何获得所有这三种立体异构体。
任何提示为什么会发生这种情况?因为如果我用所有关于化合价的信息检查 mol block ,它似乎没问题。
最佳答案
错误表明原子 0(碳)的显式化合价为 5,这表明显式氢尚未被移除,尽管该键现在是双键,因此化合价为 5。我不是对 Reaction SMARTS 太熟悉了,尽管手动解决这个问题的一个简单方法是在清理之前将原子 0 上显式氢的数量设置为 0:
product.GetAtomWithIdx(0).SetNumExplicitHs(0)
Chem.SanitizeMol(product)
编辑 1:从头开始,我做了一些实验,试试这个 react :
rxn = AllChem.ReactionFromSmarts('[#6@@H:1]-[#6+:2] >> [#6H0:1]=[#6+0:2]')
通过这种方式,我们在 react 定义中明确指出氢气丢失,生成的分子将被 sanitizer 。这对你有用吗?
编辑 2:当我运行这个 react 时,产物似乎不包含阳 ionic :
mol = Chem.MolFromSmiles('C/C1=C\\C[C@@H]([C+](C)C)CC/C(C)=C/CC1')
rxn = AllChem.ReactionFromSmarts('[#6@@H:1]-[#6+:2] >> [#6H0:1]=[#6+0:2]')
products = list()
for product in rxn.RunReactant(mol, 0):
Chem.SanitizeMol(product[0])
products.append(product[0])
print(Chem.MolToSmiles(products[0]))
Output:
'CC(C)=C1C/C=C(\\C)CC/C=C(\\C)CC1'
编辑 3:我想我现在明白你在找什么了:
mol = Chem.MolFromSmiles('C/C1=C\\C[C@@H]([C+](C)C)CC/C(C)=C/CC1')
# Reactant SMARTS
reactant_smarts = '[CH3:1][C+:2][C@@H:3]'
# Product SMARTS
product_smarts = [
'[CH2:1]=[CH0+0:2][CH:3]',
'[CH2:1]=[CH0+0:2][C@H:3]',
'[CH2:1]=[CH0+0:2][C@@H:3]',
]
# Reaction SMARTS
reaction_smarts = str(reactant_smarts + '>>' + '.'.join(product_smarts))
# RDKit Reaction
rxn = AllChem.ReactionFromSmarts(reaction_smarts)
# Get Products
results = list()
for products in rxn.RunReactant(mol, 0):
for product in products:
Chem.SanitizeMol(product)
results.append(product)
print(Chem.MolToSmiles(product))
Output:
'C=C(C)C1C/C=C(\\C)CC/C=C(\\C)CC1'
'C=C(C)[C@H]1C/C=C(\\C)CC/C=C(\\C)CC1'
'C=C(C)[C@@H]1C/C=C(\\C)CC/C=C(\\C)CC1'
'C=C(C)C1C/C=C(\\C)CC/C=C(\\C)CC1'
'C=C(C)[C@H]1C/C=C(\\C)CC/C=C(\\C)CC1'
'C=C(C)[C@@H]1C/C=C(\\C)CC/C=C(\\C)CC1'
请注意,我们两次得到相同的产物,我认为这是因为 react 物 SMARTS 与两个 CH3 基团匹配,因此 react 适用于两者。我希望这就是您要找的。
关于python - 对分子 RDKit 应用 react 的 sanitizer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55385877/
我目前使用以下代码在存储字符串之前对其进行清理: ERB::Util::h(string) 当字符串已经像这样清理后,我的问题就出现了: string = "Watching baseball `&a
我有几个版本的项目结帐和编译。如果我发现错误,我会比较版本以缩小问题范围。有时我会启用像 AddressSanitizer 这样的 sanitizer 。如果我重新使用一个可执行文件,我不记得它是否是
过去有人担心在某些环境中的生产中使用 ASAN:https://seclists.org/oss-sec/2016/q1/363 .评论来自 2016 年 - 今天的情况如何? 是否推荐使用 sani
过去有人担心在某些环境中的生产中使用 ASAN:https://seclists.org/oss-sec/2016/q1/363 .评论来自 2016 年 - 今天的情况如何? 是否推荐使用 sani
我正在使用 Google Caja HTML Sanitizer ( https://code.google.com/p/google-caja/wiki/JsHtmlSanitizer ),但它正在
我正在使用 goog.dom.safeHtmlToNode 动态更新包含内容的选项卡 由于较新版本的 google 闭包库删除了 dom 片段方法:goog.dom.htmlToDocumentFra
我正在使用 DOMPurify.sanitize()里面 dangerouslySetInnerHTML={{}}显示 innerHtml从数据库返回。对于最初的目的,我使用 getServersid
我不知道我需要做什么才能使这些选项不再被禁用。任何帮助,将不胜感激: 最佳答案 Thread Sanitizer 可用于以下准备条件: 关闭其他选项,例如 'Malloc stack' 需要64位模拟
我想知道是否有人使用过这个类并发现它可靠? http://www.phpclasses.org/package/3746-PHP-Remove-unsafe-tags-and-attributes-f
假设我复制了一些“恶意”输入,例如带有事件处理程序或其他 javascript 的 DOM 节点 如果我将其复制到我的剪贴板并将其粘贴到 contenteditable div 中,事件处理程序将被
这是我的一个表单(PHP+MySQL,textarea被TinyMCE取代)。它记录了带有段落、项目符号、标题和文本对齐方式(右对齐、左对齐、居中对齐和对齐)的描述。 提交后,记录显示为 Introd
我有以下代码片段,我在其中检查 soap 结果并将数据插入我的数据库。 Connection dbconn = null; Statement stmt1 = null; Statem
在以下示例中,我如何删除所有保留 html 内容的未知现有自定义标签: my header my Title my SubTitle 我想回去
我正在 Ubuntu 14.04 上使用带有 Clang 3.7.0 的 Memory Sanitizer。以下代码可以完美运行: #include int main() { double an
有哪些好的 PHP html(输入) sanitizer ? 最好是,如果内置了某些东西 - 我希望我们能做到这一点。 更新: 根据请求,通过评论,输入应该不允许 HTML(并且显然防止 XSS 和
我有以下数组,想知道验证和清理该数组以确保只允许整数的最佳方法是什么? if(is_array($_POST['taxonomy'])) { $term_ids = array_map('es
$sanitize 服务 tells me that All safe tokens (from a whitelist) are then serialized back to properly e
很抱歉,如果这是一个 super 简单的概念,但我发现很难获得正确的心态才能正确使用 clang 提供的 sanitizer 。 float foo(float f) { return (f / 0)
Clang有各种 sanitizer ,可以打开以在运行时发现问题。 但是,有些 sanitizer 我不能一起使用。这是为什么? clang++-3.9 -std=c++1z -g -fsaniti
一直在用fsanitize=address在编译 C 程序时,为了跟踪段错误大约一年了。我时不时地遇到一个奇怪的行为,如果编译没有我的程序会出现段错误 fsanitize=address但是当我用 f
我是一名优秀的程序员,十分优秀!