Skip to content

H1W0XXX/ChiralCarbonAuth-go

Repository files navigation

ChiralCarbonAuth

本项目基于重写 cinit/NeoAuthBotPlugin,用于手性碳分子认证。

功能简介

  • 从 PubChem 数据库中随机抽取一个小分子。
  • 提供网页接口渲染分子结构。
  • 用于生成手性碳识别验证题目。

目录结构

  • cmd/server:HTTP 服务入口
  • cmd/build-index:基础索引生成器
  • cmd/build-index-resume:带进度的索引生成器
  • internal/app:共享业务逻辑(分子解析、渲染、鉴定等)

使用方法

1. 下载 SDF 数据

从 PubChem 官方 FTP 下载 .sdf 文件:

https://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF/

例如下载 Compound_156500001_157000000.sdf

2. 过滤区域数少于 5 的分子(推荐)

go run ./cmd/filter-sdf Compound_156500001_157000000.sdf Compound_filtered.sdf

输出的 Compound_filtered.sdf 会移除渲染区域数(AutoGrid 生成的格子数)小于 5 的分子。

3. 生成索引文件

直接运行基础版索引工具(推荐用 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 版本建索引。

4. 修改源码配置

打开 internal/app/handler.go,找到并修改以下行:

mol, err = pickRandomMoleculeFromIndexed("Compound_156500001_157000000.sdf", "Compound_156500001_157000000.index")

替换为你自己的 .sdf.index 文件名。

5. 修改端口号(可选)

打开 cmd/server/main.go,找到:

http.ListenAndServe(":8080", nil)

可以将端口号改为需要的值,例如 27419

6. 去除星号提示(可选)

如果想去掉网页中的星号提示,打开 internal/app/render_molecule.go,修改相关渲染逻辑。

7. 运行项目

运行服务器:

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。
  • 部署到服务器时需开放对应端口。

About

go语言实现的手性碳原子验证码,使用docker一键部署

Topics

Resources

Stars

Watchers

Forks

Contributors