You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snakemake 7.18.2报告样式问题:如何使用旧样式或自定义布局?

解决Snakemake 7.x报告样式问题的方案

一、使用旧版本样式生成报告

1. 直接用Snakemake 5.14.0生成

如果你的工作流代码兼容5.14.0版本,最直接的方法是安装该旧版本并生成报告:

  • 创建隔离环境(避免版本冲突):
    conda create -n snakemake-5x snakemake=5.14.0 -c bioconda -c conda-forge
    conda activate snakemake-5x
    
  • 运行报告生成命令:
    snakemake --report old-style-report.html
    

生成后切换回原环境即可,完全保留旧版本的报告样式。

2. 移植旧版本报告模板到7.x

Snakemake的报告模板是开源的,你可以从5.14.0的源码仓库中提取对应的HTML模板和默认CSS文件,然后在7.x版本中指定自定义模板:

  1. 找到5.14.0版本的report模板文件(通常在snakemake源码的report目录下,包含base.html、rules.html等)
  2. 将这些模板文件复制到你的工作目录
  3. 运行7.x的报告命令时指定模板:
    snakemake --report custom-report.html --report-template ./path/to/old-template-directory
    

注意:可能需要微调模板中的变量名(比如7.x部分统计变量的命名有变化),确保模板能正常渲染数据。

二、自定义7.x版本报告布局

1. 修复custom.css无效问题

先确认参数用法是否正确,7.x版本中自定义CSS的正确参数是--custom-css,且需要确保路径正确:

snakemake --report new-report.html --custom-css ./my-custom.css

如果默认样式优先级过高,在自定义CSS中使用!important强制覆盖:

/* 示例:修改首页规则列表为卡片式布局,贴近旧版本样式 */
.report-rules-list {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)) !important;
  gap: 1.5rem !important;
  padding: 1rem !important;
}

.report-rules-list .rule-entry {
  border: 1px solid #e0e0e0 !important;
  border-radius: 8px !important;
  padding: 1.2rem !important;
  box-shadow: 0 1px 3px rgba(0,0,0,0.1) !important;
}

2. 自定义HTML模板

基于7.x的默认模板修改布局:

  1. 先导出7.x的默认报告模板(如果没有直接导出命令,可从Snakemake源码中复制最新模板文件)
  2. 修改模板的HTML结构,比如:
    • 将首页的线性规则列表改为网格/卡片布局
    • 调整侧边栏的内容展示逻辑,隐藏不需要的模块
  3. 运行命令时指定自定义模板:
    snakemake --report custom-layout-report.html --report-template ./modified-templates/
    

3. 后处理生成的HTML文件

如果上述方法都嫌麻烦,可以直接编辑生成的报告HTML:

  • 用文本编辑器打开生成的.html文件,替换<style>标签内的样式,或者插入自定义CSS
  • 对于批量修改,可使用Python的BeautifulSoup库或sed脚本调整DOM结构和样式

内容的提问来源于stack exchange,提问作者mmcguffi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:45:28