本项目基于重写 cinit/NeoAuthBotPlugin,用于手性碳分子认证。
- 从 PubChem 数据库中随机抽取一个小分子。
- 提供网页接口渲染分子结构。
- 用于生成手性碳识别验证题目。
cmd/server:HTTP 服务入口cmd/build-index:基础索引生成器cmd/build-index-resume:带进度的索引生成器internal/app:共享业务逻辑(分子解析、渲染、鉴定等)
从 PubChem 官方 FTP 下载 .sdf 文件:
https://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF/
例如下载 Compound_156500001_157000000.sdf。
go run ./cmd/filter-sdf Compound_156500001_157000000.sdf Compound_filtered.sdf输出的 Compound_filtered.sdf 会移除渲染区域数(AutoGrid 生成的格子数)小于 5 的分子。
直接运行基础版索引工具(推荐用 Go 版,内置手性过滤逻辑):
go run ./cmd/build-index Compound_filtered.sdf Compound_filtered.index如需断点续跑或超时保护,可使用带进度版本:
go run ./cmd/build-index-resume Compound_filtered.sdf Compound_filtered.index也可以先编译再执行:
go build -o build_index ./cmd/build-index # 基础版
go build -o build_index_resume ./cmd/build-index-resume # 带进度版提示:根目录的
build_index.py会对每个分子都写偏移,不含手性/区域筛选,行数会明显偏大。要保持与过滤逻辑一致,请使用上述 Go 版本建索引。
打开 internal/app/handler.go,找到并修改以下行:
mol, err = pickRandomMoleculeFromIndexed("Compound_156500001_157000000.sdf", "Compound_156500001_157000000.index")替换为你自己的 .sdf 和 .index 文件名。
打开 cmd/server/main.go,找到:
http.ListenAndServe(":8080", nil)可以将端口号改为需要的值,例如 27419。
如果想去掉网页中的星号提示,打开 internal/app/render_molecule.go,修改相关渲染逻辑。
运行服务器:
go run ./cmd/server或先编译:
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ./startAuth ./cmd/server
./startAuth访问浏览器:
http://127.0.0.1:8080
.sdf和.index文件需要在正确路径下,或使用绝对路径。.sdf文件较大,建议选用部分数据进行测试,解压后的文件5-10g。- 部署到服务器时需开放对应端口。