| # Bioconda Tool Crawler (Tiered) |
|
|
| 该目录提供一个分层抓取脚本:`bioconda_crawler.py`,用于从 Bioconda 抓取工具元数据并按 `T0 / T1 / T2` 输出。 |
|
|
| ## 输出字段 |
|
|
| 每条记录至少包含: |
|
|
| - `software_name` |
| - `package_name` |
| - `latest_version` |
| - `dependencies` |
| - `maintainers` |
| - `description` |
| - `summary` |
| - `license` |
| - `home_url` |
| - `doc_url` |
| - `dev_url` |
|
|
| ## 分层策略 |
|
|
| - `T0`(核心层):按下载量自动选取 |
| - 各领域(单细胞/空间转录组/蛋白组/代谢组)按下载量取 Top-K |
| - 全部包再按下载量取整体 Top-K |
| - 合并去重后作为 T0 结果,不再硬编码固定名单 |
| - `T1`(扩展层):按关键词覆盖单细胞、空间转录组、蛋白组、代谢组工具 |
| - `T2`(长尾层):按需输入工具名动态抓取 |
|
|
| ## 快速开始 |
|
|
| 在项目根目录运行: |
|
|
| ```bash |
| python agent_system/toolbase/bioconda_crawler.py \ |
| --tiers ALL T0 T1 T2 \ |
| --subdirs linux-64 noarch \ |
| --downloads-source channel_api \ |
| --t0-k-per-domain 5 \ |
| --t0-k-overall 20 \ |
| --t1-max-per-domain 200 \ |
| --t1-target-total 600 \ |
| --t2-tools cellranger scanpy \ |
| --output-dir agent_system/toolbase/output |
| ``` |
|
|
| 说明: |
|
|
| - `ALL`:导出全量包索引(依赖来自 repodata,维护者默认空) |
| - `T0`:按累计下载量自动排序和筛选(结果包含 `downloads` 字段) |
| - `T0/T1/T2`:会进一步访问 Anaconda 包 API 补充维护者和描述等字段 |
| - `--t1-max-per-domain`:控制 T1 每个领域抓取上限(默认 200) |
| - `--t1-target-total`:控制 T1 总目标数量(默认 600,不足会从全局高下载包回填) |
| - `--downloads-source`: |
| - `channel_api`:优先使用频道级包列表接口抓下载量(默认) |
| - `package_api`:逐包查询下载量(可配合 `--package-api-max` 限制数量) |
|
|
| ## 结果文件 |
|
|
| - `bioconda_all_packages_index.json` |
| - `bioconda_t0_core_tools.json` |
| - `bioconda_t1_domain_tools.json` |
| - `bioconda_t2_on_demand_tools.json` |
|
|
| ## 转换为 Converter 输入 |
|
|
| 使用 `prepare_converter_inputs.py` 将 `T0/T1/T2` 三份 JSON 转成 `tool2mcp.py` 可直接处理的格式,并可选生成每个工具的 help 文档: |
|
|
| ```bash |
| python agent_system/toolbase/prepare_converter_inputs.py \ |
| --input-dir agent_system/toolbase/output \ |
| --output-dir agent_system/toolbase/output \ |
| --conda-env bioinfomcp-env |
| ``` |
|
|
| 常用输出: |
|
|
| - `converter_input_t0.json` / `converter_input_t1.json` / `converter_input_t2.json` |
| - `converter_input_all.json`(可用于 `tool2mcp.py --tools_json`) |
| - `converter_jobs.json`(每个工具含 `manual` 和 `run_help_command`,可用于 `tool2mcp.py --jobs_json`) |
| - `help_index.json` 与 `help_docs/*.help.txt` |
| - `help_docs/*.manual_bundle.txt`(多源文档聚合:CLI help + URL 文档 + conda search --info) |
|
|
| 如果只做格式转换,不执行安装: |
|
|
| ```bash |
| python agent_system/toolbase/prepare_converter_inputs.py --skip-install |
| ``` |
|
|
| 多元回退策略(自动): |
|
|
| 1. `<tool> --help` |
| 2. `python -m <module> --help` |
| 3. 抓取 `doc_url/home_url/dev_url` 网页文本 |
| 4. `conda search --info` 元信息 |
|
|