Snakemake:将代码库与原始数据和结果分离的最佳实践?

问题描述 投票:0回答:1

我是 Snakemake 的新手,我制作了一个对我的团队非常有帮助的管道。到目前为止,我已经运行了两批数据。为此,我创建了以下结构的两个单独的目录克隆,每个批次一个。

├── .gitignore
├── README.md
├── LICENSE.md
├── config.yaml
├── Snakefile
├── ANNOTATIONS/
├── DATA/
    ├── DATA_TYPE1/
    ├── DATA_TYPE2/
    └── DATA_TYPE3/
└── RESULTS/

这需要维护重复的 Snakefiles 和辅助脚本(存储在

SCRIPTS/
中),如果需要调整,这会导致问题(因为我需要记住将更改传播到版本控制目录)。此外,这还需要复制存储密集型
ANNOTATIONS/
目录,这是更大的问题。

我知道必须有更好的方法来做到这一点,因为这对于大量批次或项目来说无法扩展。出于项目管理的原因,我想将这些批次分开。

我的想法是我可以将代码(Snakefile 和

SCRIPTS/
)和注释(存储在
ANNOTATIONS/
中)保存在一个目录中,同时将数据(和存储结果)保存在单独的项目目录中,但设置
workdir
在配置文件中或在命令行中调用
snakemake
时复制到此项目目录。需要注意的是,对
ANNOTATIONS
或配置文件中的
Snakefile
文件夹的任何引用都需要是 Snakemake 工作流程目录的完整路径,而不是工作目录的相对路径。这带来了新的挑战,如果不修复调用的完整路径,则永远无法移动此工作流程。

我在https://snakemake.readthedocs.io/en/latest/snakefiles/deployment.html中寻找指导,但它似乎没有涵盖我正在寻找的建议。

其他人如何处理使他们的 Snakemake 工作流程和必要的辅助数据成为一个单独的可维护目录,与他们的输入和输出数据不同?我认为我最初的想法会起作用(设置

workdir
,同时设置
ANNOTATIONS/
数据的完整路径),尽管它仍然感觉有点混乱。

python bioinformatics snakemake
1个回答
0
投票

我使用

--directory/-d
CLI 选项。我通常像这样设置我的目录:

.
├── my-snakemake-workflow/
│   ├── .git
│   ├── config/
│   │   └── config.yaml
│   └── workflow/
│       ├── envs
│       ├── rules
│       ├── scripts
│       └── Snakefile
└── my-project/
    ├── my-data/
    │   ├── reads
    │   └── genome
    └── config/
        ├── config.yaml
        └── samples.csv

然后要运行工作流程,我的命令行将如下所示:

snakemake -s my-snakemake-workflow/workflow/Snakefile -d my-project/ <other options...>

这使数据和结果脱离工作流程 git 存储库,并使事情更有条理。

© www.soinside.com 2019 - 2024. All rights reserved.