我是Snakemake的新手,我想编写一个非常简单的Snakefile,其规则将每个输入文件分别处理为一个输出文件,但是由于某种原因,我的通配符无法正确解释。
我在Ubuntu 18.04中使用输入文件“ test / test1.txt”,“ test / test2.txt”和Snakefile设置了一个最小的,可重现的示例环境。(snakemake版本5.5.4)
Snakefile:
ins = glob_wildcards("test/{f}.txt")
rule all:
input: expand("out/{f}.txt", f=ins)
rule test:
input: "test/{f}.txt"
output: "out/{f}.txt"
shell: "touch {output}"
Run Code Online (Sandbox Code Playgroud)
生成作业的DAG时,此Snakefile引发以下错误:
Missing input files for rule test:
test/['test1', 'test2'].txt
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决此错误?
我有三个类:一个基类A和两个类B,C它们都扩展A. A并且B在同一个包裹中并且C在不同的包裹中。
两者都有,B并且C有一个受保护的成员变量。A有一个方法(让我们称之为reflect),它使用反射和字符串输入通过this指针访问具有子类名称的字段。
reflect从B对象调用是可以的,但是从C对象调用它会导致 IllegalAccessException。我无法理解这个异常,因为这意味着C没有访问权限来访问它自己的成员变量。为什么java不允许这种反射?
这是一个 MWE 来澄清我的意思:
在parent/A.java:
package Parent;
public abstract class A {
public Object reflect(String parameter) throws NoSuchFieldException, IllegalAccessException{
Class cl = getClass();
return cl.getDeclaredField(parameter).get(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在parent/B.java:
package Parent;
public class B extends A{
protected Integer b;
public B(Integer b){
this.b …Run Code Online (Sandbox Code Playgroud)