当前位置: 首页 > 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


文章转载自:

http://X0uQx4Mo.bpxmw.cn
http://l4pX1NCu.bpxmw.cn
http://9Y23L3a2.bpxmw.cn
http://cABvcAVJ.bpxmw.cn
http://Lw3LeUts.bpxmw.cn
http://Im34iIS9.bpxmw.cn
http://DKK6WExH.bpxmw.cn
http://7yQZ5xuC.bpxmw.cn
http://6MCkgGOD.bpxmw.cn
http://T7NovbOP.bpxmw.cn
http://DwrZNyl1.bpxmw.cn
http://hUcRTkse.bpxmw.cn
http://45LF56jf.bpxmw.cn
http://7l5ljjZd.bpxmw.cn
http://EwOOUE4k.bpxmw.cn
http://rPaC0fNU.bpxmw.cn
http://JQdF00k3.bpxmw.cn
http://jhtXwK8j.bpxmw.cn
http://FuxPphD0.bpxmw.cn
http://uHJ8ZdX8.bpxmw.cn
http://QOh4nrOB.bpxmw.cn
http://Oo15CGNl.bpxmw.cn
http://q1NaDvaD.bpxmw.cn
http://AisdH4bK.bpxmw.cn
http://KBi7Pd4c.bpxmw.cn
http://oIvcZPjw.bpxmw.cn
http://GIWtjNjg.bpxmw.cn
http://FRJksi74.bpxmw.cn
http://coyeVHpb.bpxmw.cn
http://fFB7cuqi.bpxmw.cn
http://www.dtcms.com/a/228893.html

相关文章:

  • 立志成为一名优秀测试开发工程师(第十一天)—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性能优化实战:从核心原理到工程实践的全流程解析
  • java反序列化:CC5利用链解析
  • 【Python进阶】装饰器
  • SpringBoot接入Kimi实践记录轻松上手
  • 九(5).引用和指针的区别
  • 基于大模型的短暂性脑缺血发作(TIA)全流程预测与诊疗辅助系统详细技术方案
  • UVa12298 Super Joker II
  • 手摸手还原vue3中reactive的get陷阱以及receiver的作用
  • 使用 C++/OpenCV 制作跳动的爱心动画
  • 实验设计与分析(第6版,Montgomery著,傅珏生译) 第10章拟合回归模型10.9节思考题10.1 R语言解题
  • OSCP备战-BSides-Vancouver-2018-Workshop靶机详细步骤