当前位置: 首页 > news >正文

Snakemake 中 glob_wildcards() 使用注意事项总结


Snakemake 中 glob_wildcards() 使用注意事项总结 🚀

在 Snakemake 中,经常使用 glob_wildcards() 来自动提取通配符 (wildcard) 匹配的文件名参数。


1️⃣ 基本用法

from snakemake.io import glob_wildcardsgw = glob_wildcards("raw/{A_B}/Technical_replicate_{REP}/{ID}.gz", followlinks=True)print("A_B =", gw.A_B)
print("REP =", gw.REP)
print("ID =", gw.ID)

2️⃣ 不能使用 *

⚠️ 大坑提醒

  • glob_wildcards() 里面不能使用 * 通配符
  • 必须使用 {wildcard} 形式,写成 {{WILDCARD}}(在 f-string 里)

例如:

✅ 正确:

glob_wildcards("raw/{A_B}/Technical_replicate_{REP}/{ID}.gz")

❌ 错误(不要用 *):

glob_wildcards("raw/*/Technical_replicate_*/.gz")

为什么?

👉 glob_wildcards()Snakemake 专门的 wildcard 解析函数,它是靠 {} 来绑定 wildcard 名字的,
如果用 *,Snakemake 根本不知道要解析成什么 wildcard。


3️⃣ f-string 中 {} 要写成 {{}}

如果在 f-string 里拼接路径,注意:

  • f-string 自身用 {} 做变量
  • 要嵌套 Snakemake 的 {WILDCARD},需要写成 {{WILDCARD}}

示例 ✅:

gw = glob_wildcards(f"{config['raw']}/{{A_B}}/Technical_replicate_{{REP}}/{{ID}}.gz", followlinks=True)
  • 外层 f"..." 是 Python f-string
  • {{RBP_CELL}} 里面的 {{ → 输出 {
  • Snakemake 看到 raw/{RBP_CELL}/... 才会正确解析 wildcard!

4️⃣ expand() 时要用 gw.A_B

glob_wildcards() 返回的是一个 named tuple,例如:

gw.A_B
gw.REP
gw.ID

⚠️ 不要写 A_B=A_B,否则会 NameError!

✅ 正确写法:

rule all:input:expand("processed_bf/{A_B}/C.bed", A_B=gw.A_B)

5️⃣ 完整示例 ✅

# 提取 wildcard
gw = glob_wildcards(f"{config['raw']}/{{A_B}}/Technical_replicate_{{REP}}/{{ID}}.gz", followlinks=True)print("A_B =", gw.A_B)
print("REP =", gw.REP)
print("ID =", gw.ID)# 定义 all 规则
rule all:input:expand("processed_bf/{A_B}/C.bed", A_B=gw.A_B)

总结 🌟

正确用法错误用法
使用 {WILDCARD}使用 * 通配符
f-string 中用 {{WILDCARD}}直接用 {WILDCARD}
expand 里用 gw.A_B用未定义变量 A_B

6️⃣ 参考

  • Snakemake Docs - Wildcards
  • Snakemake Docs - glob_wildcards

相关文章:

  • 立志成为一名优秀测试开发工程师(第十一天)—Postman动态参数/变量、文件上传、断言策略、批量执行及CSV/JSON数据驱动测试
  • Nginx 配置视频文件播放指南
  • TitanIDE智算版:一键开启云端算法开发环境
  • Qt企业级串口通信实战:高效稳定的工业级应用开发指南
  • QUIC——UDP实现可靠性传输
  • DeepSeek眼中的文明印记:山海经
  • 软件评测师 案例真题笔记
  • 黑马程序员TypeScript课程笔记3
  • 电脑安装系统蓝屏的原因
  • 【相机基础知识与物体检测】更新中
  • CMS32M65xx/67xx系列CoreMark跑分测试
  • 应用智能化转型—MCP原理分析
  • dvwa7——SQL Injection
  • MyBatis 的动态 SQL
  • 【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!
  • mybatis打印完整的SQL,p6spy
  • LeetCode 高频 SQL 50 题(基础版) 之 【高级查询和连接】· 下
  • SQL思路解析:窗口滑动的应用
  • 剑指offer15_数值的整数次方
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • 福建省品牌建设促进会网站/引流软件
  • 做网站开发有前途吗/网页制作软件手机版
  • 做地产网站哪家好/网络seo是什么
  • 北京网站建设公/企业网络营销策略分析案例
  • 什么是网站流量/百度最新秒收录方法2022
  • 做移动网站优化软/友情链接批量查询