商业原料库(building-block stock)¶
做什么:管理"哪些分子买得到"的商业原料库。多步规划判断一条路线的叶子是否 可购、可合成性评分 SynScore据此打分,都用它。你可以切换内置库、并入自己的库、或只 用自己的库——同一个库会同时作用于规划和评分。
内置两个库(用时才下载):
zinc(默认)——ZINC in-stock 集;molport——MolPort 在库砌块。
Python¶
内置库就是普通的 stock 对象,用集合运算自由组合:
from synomega.stock import zinc, molport, InMemoryStock
mine = InMemoryStock.from_file("my_building_blocks.smi") # 你自己的库(SMILES 文件)
# 或从预先算好的键文件秒加载: InMemoryStock.from_keys_file("mine.keys")
stock = zinc() # 只用内置 zinc(默认)
stock = molport() # 只用内置 molport
stock = zinc() | mine # 补充:内置 ∪ 自有(并集)
stock = mine # 独立:只用自己的库
stock = zinc() | molport() # 两个内置一起用
stock = zinc() & molport() # 交集(两边都在库)
stock = zinc() - blacklist # 差集(排除某些)
把组合好的库传给规划或评分,两处都用它:
import synomega
planner = synomega.load_default_planner(stock=zinc() | mine)
scorer = synomega.load_default_scorer(stock=molport())
不传 stock= 就用默认的 zinc。同一个 stock 会同时流进多步规划和 SynScore。
声明式快捷方式¶
不想手写组合,可以用 resolve_stock:
from synomega.stock import resolve_stock
resolve_stock("molport") # 只用内置 molport
resolve_stock("zinc", user_stock="mine.smi") # 补充(默认 supplement)
resolve_stock("zinc", user_stock="mine.smi", mode="standalone") # 只用自己的库
resolve_stock("zinc", user_stock="mine.keys", user_is_keys=True) # 自有是预算好的键文件
mode="supplement"(默认)= 内置库 ∪ 自有库;mode="standalone"= 只用自己的库。
命令行¶
# 切换内置库
synomega score --targets targets.smi --library molport --out scores.jsonl
# 补充:内置 zinc ∪ 你的库
synomega plan --target "CCO" --library zinc --stock mine.smi
# 独立:只用你的库
synomega plan --target "CCO" --stock mine.smi --stock-mode standalone
# 你的库是预算好的键文件
synomega score --targets targets.smi --stock mine.keys --stock-is-keys
--library {zinc,molport}:内置库,默认zinc;--stock <文件>:你自己的库(SMILES;键文件要配--stock-is-keys);--stock-mode {supplement,standalone}:自有库与内置库的关系,默认supplement(并集)。
自定义库与预算键文件¶
原始目录(SMILES)每次加载都要重算 InChIKey(千万级要几分钟)。算一次、存成键文件,以后秒加载:
之后 --stock my.keys.gz --stock-is-keys,或 Python 里 InMemoryStock.from_keys_file("my.keys.gz")。
是否可购按 InChIKey 匹配,所以自己的库和内置库的键在同一口径下比较,跨工具生成的目录也能对上。
加一个新的内置库¶
在 synomega/data.py 的 BUILTIN_STOCKS 注册表里加一行(库名 → 托管的键文件名),把键文件上传到资产
镜像即可。所有使用点(多步规划、SynScore、命令行)都通过同一处解析商业库,因此只改这一处,各处自动
生效。