从(微笑)字符串而不是元素列表中查找字母
Find alphabetical letter from a (smiles) string not from a list of elements
OBJECTIVE
过滤掉 SMILES 字符串,如果字符串中的任何字母(原子)对大写不敏感,不来自以下元素列表H, B, C, N, O, F, Al, Si, P, S, Cl
,这是一个截断的列表。总共有38个元素。
背景
我有一个包含 SMILES 字符串的数据库:
The simplified molecular-input line-entry system (SMILES) is a specification in the form of a line notation for describing the structure of chemical species using short ASCII strings.
(更多信息 Wikipedia link)
微笑示例:
OC[C@H]1O[C@H]([C@H](O)[C@@H]1O)n1cnc2c(NC3CCCC3)ncnc12
这样做的目的是从数据库中去除稀有元素和有机金属。
一种适用于任何版本 SQL 的通用方法是创建一个 table,其中包含不允许的原子符号黑名单。要保留的微笑将是与任何列入黑名单的元素符号不匹配的微笑。
WITH disallowed AS (
SELECT 'He' AS symbol UNION ALL
SELECT 'Li' UNION ALL
SELECT 'Be' UNION ALL
SELECT 'Ne' UNION ALL
...
SELECT 'Lr'
)
SELECT t1.smile
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM disallowed t2
WHERE t1.smile LIKE '%' || t2.symbol || '%');
诸如 UO2 之类的化合物将被上述内部连接过滤掉,其中包含列入黑名单的元素铀。
OBJECTIVE
过滤掉 SMILES 字符串,如果字符串中的任何字母(原子)对大写不敏感,不来自以下元素列表H, B, C, N, O, F, Al, Si, P, S, Cl
,这是一个截断的列表。总共有38个元素。
背景
我有一个包含 SMILES 字符串的数据库:
The simplified molecular-input line-entry system (SMILES) is a specification in the form of a line notation for describing the structure of chemical species using short ASCII strings.
(更多信息 Wikipedia link)
微笑示例:
OC[C@H]1O[C@H]([C@H](O)[C@@H]1O)n1cnc2c(NC3CCCC3)ncnc12
这样做的目的是从数据库中去除稀有元素和有机金属。
一种适用于任何版本 SQL 的通用方法是创建一个 table,其中包含不允许的原子符号黑名单。要保留的微笑将是与任何列入黑名单的元素符号不匹配的微笑。
WITH disallowed AS (
SELECT 'He' AS symbol UNION ALL
SELECT 'Li' UNION ALL
SELECT 'Be' UNION ALL
SELECT 'Ne' UNION ALL
...
SELECT 'Lr'
)
SELECT t1.smile
FROM yourTable t1
WHERE NOT EXISTS (SELECT 1 FROM disallowed t2
WHERE t1.smile LIKE '%' || t2.symbol || '%');
诸如 UO2 之类的化合物将被上述内部连接过滤掉,其中包含列入黑名单的元素铀。