简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31

snakemake:工作流管理工具

8

主题

128

科技点

60

积分

太初窥星

积分
60
发表于 2025-11-22 02:24:23 | 显示全部楼层 |阅读模式 [标记阅至此楼]

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x

Snakemake

前段时间参与整了个命令行和R语言转换的工具,发paper时被审稿人怼说snakemake比咱的更好,气得我连夜学习。

发现确实比我的好😅

1. 简介

Snakemake 是一种基于 Python 的工作流管理系统,用于构建可复现、可扩展的科学计算流程。比如要对一众数据集进行一系列同种操作,可以把操作流程打包,给所有数据集集体应用,就不必一个个重复操作。

2. 用法

创建一个文件 Snakefile(没有后缀):

# 规则1:最终目标
rule all:
    input:
        "final_report.txt"

# 规则2:下载数据
rule download_data:
    output:
        "raw_data.txt"  # 这个规则会生成 raw_data.txt
    shell:
        "echo '假设这里是原始数据' > {output}"  # 模拟下载数据

# 规则3:处理数据  
rule process_data:
    input:
        "raw_data.txt"  # 需要 raw_data.txt 作为输入
    output:
        "processed_data.txt"  # 会生成 processed_data.txt
    shell:
        "echo '处理后的数据' > {output}"

# 规则4:生成报告
rule make_report:
    input:
        "processed_data.txt"
    output:
        "final_report.txt"  # 最终目标
    shell:
        "echo '最终报告' > {output}"

要运行,则输入:

snakemake --cores 1

--cores 参数用来限制整个工作流同时使用的CPU核心总数。

rule的执行顺序:download_dataprocess_datamake_report

  1. Snakemake 看到 rule all 需要 final_report.txt
  2. 找哪个规则能生成 final_report.txt?找到 rule make_report
  3. make_report 需要 processed_data.txt
  4. 找哪个规则能生成 processed_data.txt?找到 rule process_data
  5. process_data 需要 raw_data.txt
  6. 找哪个规则能生成 raw_data.txt?找到 rule download_data
  7. download_data 不需要任何输入,开始执行!

3. rule的结构

规则大致结构为:

rule 规则名:
    input: "输入文件"
    output: "输出文件" 
    shell: "要执行的命令"
  • input:这个规则需要什么文件才能运行
  • output:这个规则会生成什么文件
  • shell:实际要执行的命令行命令

这里的shell表示运行shell命令。此外还有:

  • script: "scripts/myscript.py"表示运行现有脚本,支持:
    • Python
    • R
    • Julia
    • Rust
    • Bash
  • notebook: "notebooks/plot-histogram.py.ipynb"表示jupyter笔记
  • run:后面直接写要运行的python语句
(ᗜᴗᗜ)
回复

使用道具 举报

0

主题

824

科技点

516

积分

候风辨气

积分
516
发表于 2025-11-26 14:49:03 | 显示全部楼层 [标记阅至此楼]
温馨提示:看帖回帖是一种美德,您的每一次发帖、回帖都是对论坛最大的支持,谢谢! [这是默认签名,点我更换签名]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Discord频道

加入Discord频道

加入QQ社群

加入QQ社群

联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.