bioinformatics - Snakemake 和 Pandas 语法:从示例表中获取示例特定参数
问题描述
首先,这可能是Snakemake 和 pandas 语法的副本。但是,我仍然感到困惑,所以我想再次解释一下。
在 Snakemake 中,我加载了一个包含几列的示例表。其中一列称为“Read1”,它包含样本特定的读取长度。我想分别为每个样本获取这个值,因为它可能会有所不同。
我期望的工作是这样的:
rule mismatch_profile:
input:
rseqc_input_bam
output:
os.path.join(rseqc_dir, '{sample}.mismatch_profile.xls')
conda:
"../envs/rseqc.yaml"
params:
read_length = samples.loc['{sample}']['Read1']
shell:
'''
#!/bin/bash
mismatch_profile.py -i {input} -o {rseqc_dir}/{wildcards.sample} -l {params.read_length}
但是,这是行不通的。出于某种原因,我不允许在标准 Pandas 语法中使用 {sample} 并且我收到此错误:
KeyError in line 41 of /rst1/2017-0205_illuminaseq/scratch/swo-406/test_snakemake_full/rules/rseqc.smk:
'the label [{sample}] is not in the [index]'
我不明白为什么这不起作用。我读到我也可以使用 lambda 函数,但我并不真正了解它们是如何使用的,因为它们仍然需要 {sample} 作为输入。
有人可以帮我吗?
解决方案
你可以使用 lambda 函数
params:
read_length = lambda wildcards: samples.loc[wildcards.sample, 'Read1']
推荐阅读
- angular - 路由器事件三元语句中的匹配值
- material-design - Android Material Components 命名空间:MaterialComponents vs Design
- angular - RxJS 间隔,AJAX 请求和减少
- php - 在 Woocommerce 中显示基于发货国家/地区的交货日期范围
- c# - 处理 ListView 内 Html Button 的 onclick 事件
- javascript - 所需的属性不适用于克隆的元素
- powershell - 在不使用其他按钮的情况下激活单选按钮
- css - 加载组件时使用css隐藏/显示类
- javascript - JavaScript 按标签显示/隐藏元素
- ruby-on-rails - RABL 集合在模板中显示为空,但在控制器中不显示