2017-12-01 2 views
0

클러스터 구성 파일의 메모리 및 리소스에 대한 기본 설정을 정의한 다음 필요시 규칙에 따라 재정의 할 수 있습니까? resources 필드가 클러스터 구성 파일에 직접 연결되어 있습니까? 아니면 가독성을위한 필드 params에 대한 멋진 방법입니까? 아래의 예에서 Snakemake - LSF (bsub) 클러스터 구성을 규칙에 따라 재정의합니다.

, 어떻게 rule a에 대한 기본 클러스터 CONFIGS를 사용하지만, rule b에 사용자 지정 변경 ( memory=40000rusage=15000)를 사용합니까?

cluster.json :

{ 
    "__default__": 
    { 
     "memory": 20000, 
     "resources": "\"rusage[mem=8000] span[hosts=1]\"", 
     "output": "logs/cluster/{rule}.{wildcards}.out", 
     "error": "logs/cluster/{rule}.{wildcards}.err" 
    }, 
} 

Snakefile : 나는 underst

snakemake --cluster-config cluster.json 
      --cluster "bsub -M {cluster.memory} -R {cluster.resources} -o logs.txt" 
      -j 50 

: 실행

rule all: 
    'a_out.txt', 'b_out.txt' 

rule a: 
    input: 
     'a.txt' 
    output: 
     'a_out.txt' 
    shell: 
     'touch {output}' 

rule b: 
    input: 
     'b.txt' 
    output: 
     'b_out.txt' 
    shell: 
     'touch {output}' 

명령 그리고 클러스터 설정 파일에서 규칙 특정 리소스 요구 사항을 정의하는 것이 가능하지만 가능한 경우 Snakefile에서 직접 정의하는 것을 선호합니다.

다른 방법으로이를 구현하는 더 좋은 방법이 있으면 알려 주시기 바랍니다.

:

는 당신은 직접 각 규칙에 resources을 추가 할 수 있습니다
+0

이 관련 포스트 그냥 내가 볼때 후 발견 여기에 - https://stackoverflow.com/q/45111823/3998252. 이 질문은 예제가있는 몇 가지 세부 정보를 표시하므로 내 게시물을 삭제하지 않을 것입니다. – JeeYem

답변

0

: 명령 줄은 snakefile을 무시하지 않을 수 있도록

rule all: 
    'a_out.txt' , 'b_out.txt' 

rule a: 
    input: 
     'a.txt' 
    output: 
     'a_out.txt' 
    resources: 
     mem_mb=40000 
    shell: 
     'touch {output}' 
rule b: 
    input: 
     'b.txt' 
    output: 
     'b_out.txt' 
    resources: 
     mem_mb=20000 
    shell: 
     'touch {output}' 

그리고, 당신은 당신의 .json에서 resources 매개 변수를 제거한다 new.cluster.json :

{ 
    "__default__": 
    { 
     "output": "logs/cluster/{rule}.{wildcards}.out", 
     "error": "logs/cluster/{rule}.{wildcards}.err" 
    }, 
} 
+0

클러스터 구성 파일에 기본 리소스 제약 조건을 설정하고 Snakefile에 필요할 때 특정 규칙 방식으로 변경하려고합니다. 여기서 아이디어는 자원을 거의 변경하지 않아야한다는 것입니다. 그 말로, 나는 당신이 여기서 묘사 한 것을 구현하는 것에 대해 최근 숙고 해왔다. 자세한 정보를 줄이려면 전자를 선호하지만 모든 규칙에 대해 동일한 파일에 보관해야한다고 주장 할 수도 있습니다. – JeeYem

관련 문제