#virtual #bindings #cpp #input #generate #created #structure

recgen

Rust 版本的 ReCGen 绑定:基于输入结构生成虚拟化合物

2 个版本

0.1.2 2023年3月19日
0.1.1 2023年3月15日

#758科学

每月 28 次下载

MIT 许可证

9KB
78

recgen-rust

ReCGen 的 Rust 封装

日志

  • v0.1.1: Apple M1 动态链接
  • v0.1.0: 初始化完成,ecfp-build 完成

环境变量

  • RECGEN_INCL: 编译所需的头文件
  • RECGEN_LIB: 编译所需的库文件
  • RECGEN_DB: sqlite 数据库文件
  • RECGEN_INPUT: 存储输入文件的目录

使用 conda 安装 openbabel 和 sqlite3

openbabel 需要 boost。

conda install -y -c anaconda sqlite 
conda install -y -c conda-forge boost-cpp openbabel
ln -s /Users/qw/miniconda3/envs/openbabel/lib/libboost_iostreams.dylib /usr/local/lib
export RECGEN_INCL=~/miniconda3/envs/openbabel/include
export RECGEN_LIB=~/miniconda3/envs/openbabel/lib

关于 ReCGen 的发现

  • 表 "_s" 包含 id、smarts 和 SDF 的内容。
  • 表 "_f" 包含 id、smarts、指纹和重叠数。

构建成功

从 OB2.0 到 OB3.0

  • OBElementTable 已被移除,请使用 OBElements::
  • OBAtom::GetHvyDegree() (OB 2.x GetHvyValence())
  • 分子、原子和键标志的“未设置”方法已被移除,OB 2.x 中的 OBMol::UnsetAromaticPerceived() 现在是 OBMol::SetAromaticPerceived(false)。

代码改进

WrapSQLit_Base 析构函数尝试关闭数据库连接。添加一个标记 is_opened,尝试在打开时关闭

关于数据库

表 frag_f 中的列 nof 是什么?

WrapSQLite.cpp 行 162,BBMol.GetOverlap 返回的重叠向量的大小

重叠是如何创建的?

void Insert(deque<ECMol> &frags, int &nn)
bmol.SetOverlapFragments_Ref();
const int ECMol::he2[12]={85,100,101,102,104,105,106,107,108,109,110,111};
// At, Fm, Md, No, Rf, Db, Sg, Bh, Hs, Mt, Ds, Rg
while (tmp.find("[No]") != string::npos) tmp.replace(tmp.find("[No]"), 3, "[A;!R]");
while (tmp.find("[Fm]") != string::npos) tmp.replace(tmp.find("[Fm]"), 4, "a");
while (tmp.find("[Md]") != string::npos) tmp.replace(tmp.find("[Md]"), 4, "[A;R]");
while (tmp.find("[At]") != string::npos) tmp.replace(tmp.find("[At]"), 4, "*");
void ECMol::MkSMARTS(bool AddH) // specific SMART rule
void BBMol::SetOverlapFragments_Ref()
void SetOverlapFragments_Ref(int ele);
void SetOverlapFragments_Ref(string attr, int val);
void SetOverlapFragments_Fra();

依赖关系

~1.7–3MB
~35K SLoC