챕터 7 - 규칙 이름 대신 파일 이름을 Snakemake에 전달하기

새 게놈을 추가하고, 그 게놈에 대한 스케치 파일(.sig 확장자)을 생성해 봅시다.

이 NCBI 링크에서 GCF_008423265.1의 RefSeq 어셈블리 파일(_genomic.fna.gz 파일)을 다운로드한 후, genomes/GCF_008423265.1.fna.gz로 저장하세요. (이 osf.io 링크에서 올바른 이름으로 저장된 복사본도 다운로드 가능합니다.)

이제 snakemake를 통해 sourmash sketch dna를 실행하여 스케치를 생성하고 싶습니다.

이를 위해 Snakefile에 무언가를 추가해야 할까요? 아닙니다, 전혀요!

새 게놈의 스케치를 만들려면, 그냥 Snakemake에게 원하는 파일 이름을 요청하면 됩니다:

snakemake -j 1 GCF_008423265.1.fna.gz.sig

왜 이게 작동할까요? genomes/에 있는 파일에서 .sig 파일을 만드는 범용 와일드카드 규칙이 있기 때문입니다!

Snakemake는 요청한 파일 이름을 받으면 모든 규칙의 output: 블록을 검색하여 일치하는 출력이 있는 규칙을 선택합니다. 중요한 점은 이 규칙에 와일드카드가 있어도 되며, 있는 경우 파일 이름에서 와일드카드를 추출합니다!

주의: sketch_genome 규칙이 변경되었습니다!

한 가지 참고할 점이 있습니다. 이제는 규칙 이름인 sketch_genome으로 Snakemake를 실행할 수 없게 되었습니다. 규칙이 와일드카드를 채워야 하는데, 파일 이름을 제공하지 않으면 {accession}에 무엇을 넣어야 할지 알 수 없기 때문입니다.

snakemake -j 1 sketch_genome을 실행하면 다음 오류가 발생합니다:

WorkflowError: Target rules may not contain wildcards. Please specify concrete files or a rule without wildcards at the command line, or have a rule without wildcards at the very top of your workflow (e.g. the typical “rule all” which just collects all results you want to generate in the end).

이 오류는 Snakemake가 와일드카드를 채울 방법을 모른다는 것을 알려주며, 어떻게 해야 하는지에 대한 제안도 함께 제공합니다. 아래에서 더 자세히 살펴보겠습니다.

이 챕터에서는 새로운 기능을 활용하기 위해 Snakefile을 전혀 수정할 필요가 없었습니다!