Files
PlantAI-rag/evaluation/SUPPLEMENTARY_DATA_FETCH_ANALYSIS.md
2026-07-10 17:59:59 +08:00

6.9 KiB
Executable File

自动获取补充材料可行性分析报告

分析对象: 番茄P450论文 (PMID: 30732561) 时间: 2026-03-30


📋 核心结论

问题 答案
是否可行? ✅ 技术上可行,但需要额外开发
实现难度 中等 (需要爬虫/API开发)
成功率估计 60-80% (取决于期刊开放程度)
推荐方案 Europe PMC API + 爬虫混合方案

🔍 番茄P450补充材料清单

根据论文描述,需要以下补充材料才能完整验证系统发育分组:

文件 格式 内容 重要性
Additional file 1 XLSX 基因列表和系统发育分组 ⭐⭐⭐ 关键
Additional file 2 XLSX 引物序列 ⭐ 次要
Additional file 3 PDF/TIF 系统发育树 (Figure 2原图) ⭐⭐⭐ 关键
Additional file 4 XLSX 内含子分析 ⭐⭐ 重要
Additional file 5 XLSX 启动子分析 ⭐⭐ 重要

关键: Additional file 1 包含 clan-family-gene 的完整对应表


🌐 可能的获取来源

1. BMC官网 (优先推荐)

URL: https://bmcgenomics.biomedcentral.com/articles/10.1186/s12864-019-5483-x
优点: 开放获取,无付费墙
挑战: 需要JavaScript渲染,反爬虫机制

2. Europe PMC API (推荐)

API: https://www.ebi.ac.uk/europepmc/webservices/rest/
示例: https://www.ebi.ac.uk/europepmc/webservices/rest/PMC6367802/supplementaryFiles
优点: 结构化API,无爬虫限制
挑战: 可能需要处理多种文件格式

3. NCBI PMC FTP

FTP: ftp://ftp.ncbi.nlm.nih.gov/pub/pmc/02/PMC6367802/
优点: 直接文件访问
挑战: FTP协议,文件命名不规范

4. 期刊直接下载

URL: https://static-content.springer.com/...
优点: 直接文件链接
挑战: 需要先从页面提取链接

💻 技术实现方案

方案A: Europe PMC API (推荐)

import requests

def fetch_supplementary_files(pmcid: str) -> List[Path]:
    """使用Europe PMC API获取补充材料"""
    
    # 1. 获取补充材料列表
    url = f"https://www.ebi.ac.uk/europepmc/webservices/rest/{pmcid}/supplementaryFiles"
    response = requests.get(url)
    
    # 2. 解析XML/JSON响应
    files = parse_supplementary_list(response.content)
    
    # 3. 下载文件
    downloaded = []
    for file_info in files:
        file_url = file_info['url']
        local_path = download_file(file_url)
        downloaded.append(local_path)
    
    return downloaded

优点:

  • 官方API,稳定可靠
  • 无反爬虫限制
  • 结构化数据

缺点:

  • 需要处理XML解析
  • 文件格式多样

方案B: Playwright爬虫

from playwright.sync_api import sync_playwright

def fetch_from_bmc(doi: str) -> List[Path]:
    """使用Playwright从BMC官网爬取"""
    
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        
        # 访问文章页面
        page.goto(f"https://doi.org/{doi}")
        
        # 等待补充材料加载
        page.wait_for_selector("[data-test='supplementary-files']")
        
        # 提取下载链接
        links = page.eval_on_selector_all(
            "a[href*='additional']", 
            "elements => elements.map(e => e.href)"
        )
        
        # 下载文件
        downloaded = []
        for link in links:
            path = download_with_playwright(page, link)
            downloaded.append(path)
        
        browser.close()
        return downloaded

优点:

  • 可处理JavaScript动态加载
  • 模拟真实用户行为
  • 成功率高

缺点:

  • 需要安装浏览器
  • 资源消耗大
  • 可能被反爬虫

方案C: 混合方案 (推荐)

class SupplementaryFetcher:
    """混合方案获取补充材料"""
    
    def fetch(self, paper_info: Dict) -> FetchResult:
        # 策略1: 尝试Europe PMC API
        result = self.try_europe_pmc(paper_info['pmcid'])
        if result.success:
            return result
        
        # 策略2: 尝试FTP
        result = self.try_ncbi_ftp(paper_info['pmcid'])
        if result.success:
            return result
        
        # 策略3: 使用爬虫
        result = self.try_crawler(paper_info['doi'])
        return result

📊 成本效益分析

开发成本

组件 工作量 复杂度
Europe PMC API封装 1-2天 低
文件下载管理 0.5天 低
XLSX/PDF解析 1-2天 中
Playwright爬虫 (备选) 2-3天 中
错误处理和重试 1天 低
总计 5-8天 -

运行成本

项目 成本
API调用 免费
存储 可忽略
网络 正常
Playwright (如使用) CPU/内存较高

收益

收益 说明
数据完整性 从40分→100分
自动化程度 减少人工查找
可扩展性 适用于其他论文
验证准确性 100%精确验证

⚠️ 风险和限制

技术风险

风险 概率 影响 缓解措施
API变更 中 高 封装抽象层
网站改版 中 高 多源备份
反爬虫 低 中 限速+代理
文件格式变化 低 中 健壮解析

数据限制

限制 说明
付费墙 部分期刊需要订阅
文件缺失 不是所有论文都有补充材料
格式多样 xlsx, xls, pdf, doc, txt等
命名不规范 文件名不统一

🎯 实施建议

短期 (本周)

  1. 验证Europe PMC API可用性

    curl "https://www.ebi.ac.uk/europepmc/webservices/rest/PMC6367802/supplementaryFiles"
    
  2. 测试文件下载

    • 尝试下载番茄P450的Additional file 1
    • 验证XLSX解析

中期 (下周)

  1. 实现API封装

    • 封装Europe PMC API
    • 实现文件下载管理
    • 添加缓存机制
  2. 集成到v3提取流程

    • 当confidence < 60时触发
    • 自动获取补充材料
    • 重新提取并验证

长期

  1. 建立补充材料数据库

    • 缓存已下载的文件
    • 建立索引加速查询
  2. 支持更多期刊

    • Springer
    • Elsevier
    • Nature系列

📝 结论

是否值得做?

是的,值得做,原因:

  1. 技术可行: Europe PMC API提供稳定接口
  2. 成本可控: 5-8天开发,免费运行
  3. 收益显著: 解决P450这类复杂论文的验证问题
  4. 可复用: 一次开发,长期受益

推荐实施顺序

Phase 1: Europe PMC API (本周)
   ↓
Phase 2: 集成到v3 (下周)
   ↓
Phase 3: Playwright爬虫 (按需)
   ↓
Phase 4: 扩展更多期刊 (长期)

立即行动项

需要你的决策:

  1. 是否立即开始Phase 1? ( Europe PMC API验证 )
  2. 优先级: 这个功能 vs 其他bbav2任务
  3. 范围: 只做番茄P450还是通用方案

分析完成: 2026-03-30 工具: fetch_supplementary_data.py