2017-01-27 5 views
0

함수에서 내 snakemake 와일드 카드의 색인 생성에 문제가 있습니다. 어떤 이유로 변수가 "와일드 카드"목록에 저장되는 순서가 다릅니다. 이 함수를 사용하여 내 규칙 중 하나에 대한 입력 파일의 경로를 생성하고 올바른 값의 위치가 변경 될 때마다 규칙은 매 몇 번의 쿼리 만 성공합니다. "와일드 카드"목록에서 와일드 카드의 위치를 ​​제어하거나 수정하려면 어떻게합니까? 내 Snakefile의 관련 콘텐츠를 추가했습니다. Snakemake : 임의의 와일드 카드 순서 와일드 카드 목록

가 가에서 와일드 카드 주문이 Snakemake에 의해 보존되지 않습니다 zuup

#!/usr/bin/env python3 
import glob 
import re 

R_BIN = "Rscript" 

pop = "lineA lineB".split() 
group = "test control".split() 
chrom = "X Y".split() 

def getInput(Wildcards): 
    pop = str(Wildcards[0]) 
    group = str(Wildcards[1]) 
    chrom = str(Wildcards[2]) 
    path = "Resources/bed/" + pop + "_" + group + r"_rep[1-5]/" + pop + "_" + group + r"_rep[1-5]_chr" + chrom + ".bed" 
    return(glob.glob(path)) 

rule BED2BS: 
    input: 
     getInput 
    output: 
     wd + "Resources/bs/{pop}_{group}/{group}_chr{chrom}.RDS" 
    shell: 
     R_BIN + " Scripts/Script1.R {input} {output}" 
+2

[mcve]를 제공하십시오. 나는 네가 무슨 말을하고 있는지 정말로 모른다. –

+0

죄송합니다. 나는 워크 플로우 관리자 인 Snakemake의 문제에 대해 이야기하고 있으며, 실제로 태그를 제외하고는 그렇게 명확하게하지 않는다는 것을 깨달았다. 이 정보를 추가하고 코드를 확장했습니다. – Zuup

+0

"와일드 카드"목록의 출처, 설명 및 예상되는 내용에 대해서는 아직 설명하지 않았습니다. 모든 사람이 귀하의 질문에서 수집 할 수있는 목록에 실제로 무엇을 포함 할 기대하고 무엇 사이에 일종의 불일치가 있다는 것입니다. 그냥 추측 해 - 당신이 목록으로 변환 한 사전에서 만들었고 사전에 잘 정의 된 순서가 없으므로 값이나 키를 다음과 같이 변환하는 순서가됩니다. 목록은 기본적으로 무작위입니다. –

답변

6

(다른 순서에서 같은 와일드 카드를 사용할 수있는 다양한 출력 및 입력 파일을 참고, 감사합니다. 따라서 더 표준적인 순서가이 없다 파일 패턴에서 와일드 카드가 발생했을 때 파생 될 수 있음). 그러나, 당신은 이름, 예컨대하여 와일드 카드 값을 해결 할 수 있습니다 :.

wildcards.group 

Snakemake tutorial를 통해 갈 생각하십시오.

+0

이것은 질문의 의미가 있습니다. –

+0

고마워,이 작품 :) 나는 다시 튜토리얼을 통해 갈 것입니다, 분명히 내가 몇 가지 포인트를 놓쳤습니다. – Zuup