- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在以下示例中,将在与输入文件相同的位置创建输出文件。有没有办法获取输出部分中通配符值的基本名称,以便我可以使用输入文件的基本名称来命名输出文件,但将其写入不同的位置?
infile=['/home/user/folder1/file1','/home/user/folder2/file2/']
rule one:
input: expand("{myfile}", myfile = infile)
output: "{myfile}" + ".out"
shell: "touch {wildcards.myfile}.out"
最佳答案
在 Snakemake 中有一个简单的方法可以使用 lambda
来做到这一点Python 的函数。
首先,您应该创建一个文件字典,以文件名作为键,以文件路径作为值,如下所示:
files = {'filesA' : 'path/to/fileA.ext', 'filesB' : 'path/to/fileB.ext'}
这个字典可以在snakefile中,也可以在配置文件中。我建议把它放在配置文件中并像这样调用 config['dict_name']
现在让我们使用 lambda
编写规则功能:
rule all :
input :
#If you want to create in a different directory use this,
#but it has to be like output from rule one.
#expand('{directory}{filename}{extension}',
#directory = 'path/to/newdir',
#filename = config['dictname'].keys(),
#extension = '.out')
#Otherwise
expand('{filename}{extension}',
filename = config['dictname'].keys(),
extension = '.out')
rule one:
input: lambda wildcards: config['dictname'][wildcards.input]
output: "{input}" + ".out"
message: "Executing one using {input}"
shell: "touch {input}.out"
在代码中您有两个规则,第一个名为 all
将被执行。因此,当您启动snakemake
时它将想要获取与 expand
创建的列表相对应的文件列表。功能。
Snakemake 将查看规则是否生成该文件列表,如果不是,它将在目录中搜索它们。正如您所看到的,您可以使用 expand
指定您想要的一切。目录、文件名、后缀、前缀、扩展名...
在此示例中,Snakemake 想要一些文件名为键字典且扩展名为 .out
的文件。 。规则one
是产生它们的完美规则。
规则one
工作原理如下:对于字典的每个键,都将执行该规则。输入部分中的 lambda 函数就起到了这个作用。根据记录,通配符可以被称为任何你想要的 input
这只是一个例子。
为了更优雅,您可以将 lambda 函数的内容放入变量中,如下所示:
_input_One = lambda wildcards: config['dictname'][wildcards.input]
然后像这样编写规则一输入:
input: _input_One
有关更多信息,请查看 https://snakemake.readthedocs.io/en/stable/ 上的文档
雨果
关于wildcard - 如何获取snakemake输出规则中通配符值的基本名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42675341/
我们正在运行一个为我们的客户使用自定义子域的 PHP 站点,因此我们在 Apache(版本 2.2.3)中使用通配符 VHost 实现了通配符 SSL 证书。这些子域 PHP 网络应用程序还在我们的
我正在尝试创建一个 snakemake 管道,其输出由特定文件夹中存在的一组排序文件决定。我的文件路径结构如下: project_dir > Snakefile > code >
在以下示例中,将在与输入文件相同的位置创建输出文件。有没有办法获取输出部分中通配符值的基本名称,以便我可以使用输入文件的基本名称来命名输出文件,但将其写入不同的位置? infile=['/home/u
是否可以在不使用显示和隐藏类填充我的文档的情况下执行类似于以下的操作: body.vnu-hours-sel *:not(#results-content) { visibility:hid
我们有一个简单的搜索界面,它调用 search:search($query-text) 函数。是否有一种语法可以在函数接受的单个文本字符串中包含对通配符、词干提取和区分大小写的控制?我在 MarkLo
我正在使用 Twitter API 搜索帖子:GET search/tweets我用意大利语进行查询,为了使其对男性和女性都有效,我运行了两次。示例: https://api.twitter.com/
我正在尝试创建一个仅接受特定类的容器。使用泛型如下: static class Test1 { C field = null; public C
是否可以将事实插入到 Drools 工作内存中(例如查询的约束)作为通配符? 例如,假设我有以下规则: rule "meal_exceptions_1" agenda-group "MEAL"
所以我正在阅读泛型以重新熟悉这些概念,尤其是在涉及通配符的地方,因为我几乎从不使用它们或遇到它们。从我所做的阅读中,我无法理解他们为什么使用通配符。下面是我经常遇到的一个例子。 void printC
我正在尝试执行 git rm --cached -r 以递归方式删除名为 .svn 的文件夹的所有实例。我试过这个: .svn /.svn /*/.svn /*/*/.svn etc 它确实有效,但我
我是 C# 世界的新手,我正在努力研究泛型。这是我目前的问题: public Interface IAnimal{ string getType(); } public Interface IAn
我正在创建一个 RPM,它对另一个包有要求,该包名称中间有版本号。 例如 softwarepackage10.1-util-10.1.1.x86_64.rpm。名称会随下一个版本而改变,例如 soft
我想从多个位置加载键值对。我的第一个猜测是: 但它无效 Invocation of init method failed; nested exception is java.io.FileNotFo
我有以下代码段: public void reorder(int fromIndex, int toIndex) { getElements().add(toIndex, getElement
我有一个场景,我使用了一些我很熟悉的公式,但没有得到结果。我想得到单元格中存在“1”的任何结果。 (1 是公式的结果)。以及某个列的文本包含 & 的位置。 (“&/或者”) 我尝试了几个公式 =IF(
我有一个生成文件,用于构建许多相互依赖的库。我构建它们的方式总是一样的。 它可能是这样的: #Makefile all: commonprefix_lib1 commonprefix_
我试图让 git 忽略所有扩展名为 .ex 的文件,但前提是它们位于名为 subf 的子文件夹中。在 man gitignore 中我读到了以下内容: Two consecutive asterisk
我正在使用Elasticsearch6.8并在查询中使用match_phrase_prefix和wildcard。我发现它的性能很差。我在想的是手动将文本标记为一组术语。 例如,该字段具有类似于ABC
我一直在尝试用 VHDL 代码为我在 Altera DE1 板上实现的简单 16 位处理器编写有限状态机。在有限状态机中,我有一个 CASE 语句来处理不同的 16 位指令,这些指令由 16 位 ST
最近我一直在试验 EPiServerFind,我想弄清楚通配符查询是如何使用的。 我遇到了以下困难: 我的一位同事使用 EPiServerFind 设置了 POC,遗憾的是这只能搜索整个单词。例如:如
我是一名优秀的程序员,十分优秀!