2 个版本
0.1.2 | 2023年3月19日 |
---|---|
0.1.1 | 2023年3月15日 |
#758 在 科学
每月 28 次下载
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