bioinformatics - Snakemake conda env 参数不是取自 config.yaml 文件
问题描述
我使用手动创建的 conda env,而不是使用 Snakemake 自动创建。我这样做是为了保持更严格的版本控制。
无论如何,在我的 config.yaml 我有以下行:
conda_env: '/rst1/2017-0205_illuminaseq/scratch/swo-406/snakemake'
然后,在我的 Snakefile 开始时,我读取了该变量(从 shell 部分的配置中读取变量似乎不起作用,对吗?):
conda_env = config['conda_env']
然后在外壳部分,我欢呼说这样的参数:
rule rsem_quantify:
input:
os.path.join(fastq_dir, '{sample}_R1_001.fastq.gz'),
os.path.join(fastq_dir, '{sample}_R2_001.fastq.gz')
output:
os.path.join(analyzed_dir, '{sample}.genes.results'),
os.path.join(analyzed_dir, '{sample}.STAR.genome.bam')
threads: 8
shell:
'''
#!/bin/bash
source activate {conda_env}
rsem-calculate-expression \
--paired-end \
{input} \
{rsem_ref_base} \
{analyzed_dir}/{wildcards.sample} \
--strandedness reverse \
--num-threads {threads} \
--star \
--star-gzipped-read-file \
--star-output-genome-bam
'''
注意{conda_env}
. 现在这给了我以下错误:
Could not find conda environment: None
You can list all discoverable environments with `conda info --envs`.
现在,如果我直接更改{conda_env}
它的参数/rst1/2017-0205_illuminaseq/scratch/swo-406/snakemake
,它确实有效!使用此方法读取其他参数时我没有任何问题(例如上面rsem_ref_base
的analyzed_dir
示例规则。
这里有什么问题?
致以最崇高的敬意,
弗里克。
解决方案
我使用的模式是将变量加载到params
中,因此类似于
rule rsem_quantify:
input:
os.path.join(fastq_dir, '{sample}_R1_001.fastq.gz'),
os.path.join(fastq_dir, '{sample}_R2_001.fastq.gz')
output:
os.path.join(analyzed_dir, '{sample}.genes.results'),
os.path.join(analyzed_dir, '{sample}.STAR.genome.bam')
params:
conda_env=config['conda_env']
threads: 8
shell:
'''
#!/bin/bash
source activate {params.conda_env}
rsem-calculate-expression \
...
'''
虽然,我也永远不会在 conda 环境中这样做,因为 Snakemake 内置了 conda 环境管理。有关详细信息,请参阅集成包管理文档中的此部分。这使得再现性更易于管理。
推荐阅读
- javascript - JavaScript 中的小数舍入
- symfony - 添加命名空间的树枝路径
- excel - 使用 Angular 和 Spring Boot 下载 Excel 会产生损坏的 xls 文件
- c# - UWP 绑定属性到 ItemsSource 的当前项
- java - 如何从另一个视图获取值并在同一活动中使用它?
- c# - EF FromSql() 与相关实体
- javascript - 我必须在 keydown.backspace 事件的按键上找到从字符串中删除的字符
- python - 如何使用 python 仅验证 http:// 或 https:// 起始 url
- gstreamer - Gstreamer 元素 dmairesizer 视频移位
- xml - 在 Spring Boot 上使用 SecurityContext.xml 添加身份验证