수십 개의 규칙이있는 snakefile을 가지고 있으며 수천 개의 파일을 처리합니다. 이것은 DNA 시퀀싱 분석을위한 생물 정보학 파이프 라인입니다. 오늘 샘플 세트에 두 개의 샘플을 더 추가했는데 Snakemake를 실행할 수있을 것으로 예상했는데 새 샘플 파일을 처리 할 파일과 해당 파일에 종속 된 모든 파일을 처리 할 규칙을 자동으로 결정합니다 최상위 레벨로. 그러나 아무것도하지 않습니다. 그리고 -R 옵션도 그렇게하지 않습니다.새 파일이 계층의 맨 아래에 나타나면 Snakemake를 통해 계층 적 규칙 기반 방식으로 파일을 업데이트 할 수 있습니까?
문제점이 snakefile으로 도시되어
> rm test*.txt
> touch test2.txt
> touch test1.txt
> snakemake -s tst -F
출력된다 : 다음
> cat tst
rule A:
output: "test1.txt"
input: "test2.txt"
shell: "cp {input} {output}"
rule B:
output: "test2.txt"
input: "test3.txt"
shell: "cp {input} {output}"
rule C:
output: "test3.txt"
input: "test4.txt"
shell: "cp {input} {output}"
rule D:
output: "test4.txt"
input: "test5.txt"
shell: "cp {input} {output}"
그것을 실행
Provided cores: 1
Rules claiming more threads will be scaled down.
Job counts:
count jobs
1 A
1
rule A:
input: test2.txt
output: test1.txt
jobid: 0
Finished job 0.
1 of 1 steps (100%) done
가 test5.txt가 존재하지 않기 때문에, I은 그 효과에 대한 오류 메시지가 예상되었지만 발생하지 않았습니다. 물론 test3.txt와 test4.txt는 존재하지 않습니다.
-F 대신 -R을 사용하면 "수행 할 작업 없음"이됩니다. "-R A"를 사용하면 규칙 A 만 실행됩니다.
이것은 Snakemake가 트리의 맨 위에 규칙을 작성하고 해당 규칙의 출력 및 입력 파일이 이미 존재하는 경우 Snakemake가 전체 종속 트리를 분석하지 않는다는 것을 보여주는 점에서 내 프로젝트와 관련이 있습니다. 그리고 -R 옵션은 강제하지 않습니다. 내 프로젝트에서 -F 시도했을 때 재건 할 필요가없는 파일을 포함하여 전체를 다시 빌드하기 시작했습니다.
이것이 Snakemake가해야 할 일의 기본이며, 나는 그것을 이해하지 못하는 것 같습니다. 새로운 샘플을 분석하기 위해 파이프 라인을 확보하는 유일한 방법은 새 파일에 필요한 각 규칙을 순서대로 개별적으로 호출하는 것입니다. 그리고 그것은 너무 지루하고 첫 번째 장소에서 Snakemake를 사용한 이유 중 하나입니다.
도움말!
새 샘플이 위의 예제에 어떻게 들어 맞는 지 보여줍니다. 규칙 D를 으로 변경하십시오. 규칙 D : 출력 : "test4.txt" 입력 : "test5.txt", "test6.txt" 쉘 : "cat {input [0]} {input [1]} > {출력} " " – tedtoal
나는 왜 코멘트 편집 규칙이 작동하지 않는지 모르겠다. – tedtoal
규칙 D를 변경 한 다음 다시 실행하면 -R을 사용하여도 아무 일도 일어나지 않습니다. – tedtoal