Skip to content

Snakemake #

Find similar titles

12회 업데이트 됨.

Edit
  • 작성자

You are seeing an old version of the page. Go to latest version

Structured data

Category
Analysis
Software

Snakemake (스네이크메이크) #

스네이크메이크 #

스네이크메이크는 워크플로우 관리 시스템(Workflow Management System, WMS)툴로서 유향 비순환 그래프 방식 (Directed Acyclic Graph, DAG) 으로 구현되어 있다. 워크플로우 가독성이 좋으며 파이썬으로도 작성할 수 있어서 호환성이 좋다. 서버, 클러스터, 그리드, 클라우드 환경에 다 적용할 수 있는 툴로 일주일에 5편에 논문 인용이 나올 만큼 인기가 많다.

스네이크메이크 주요 문법 #

rule : 룰은 shell script 명령어와 input, output을 지정하여 받을 수 있다. shell 명령어에 맞는 input을 입력하면 예상되는 output 출력 결과값을 output에 입력한다.

Image

스네이크메이크 공식 튜토리얼 시퀀싱 리드 맵핑 예제 (출처)

wildcards: 와일드카드는 컴퓨터에서 특정 명령어로 명령을 내릴 때, 여러 파일을 한꺼번에 지정할 목적으로 사용하는 기호를 가리킨다. 스네이크메이크 에서는 {변수 이름}으로 지정한다. 가장 중요한 개념으로 위에 read mapping 예제에서 {sample}.fastq 파일은 a.fastq, b.fastq, asdf.fastq 모두를 받을 수 있고 따라서 각각의 파일에 rule이 적용된다. 위에 룰이 실행되면 스네이크메이크는 wildcards에 sample 변수를 맵핑하여 shell 명령어에서는 {wildcards.sample} 해주어야 sample을 인식할 수 있다.

snakefile: snakefile은 rule을 적는 파일로 그 파일이 있는 디렉토리에 "snakemake" 명령어만 커맨드라인에 실행하면 스네이크메이크 파이프라인이 작동한다. 워크플로우가 복잡한 경우 rule 디렉토리를 따로 만들고 스네이크파일에는 rull에 input 부분의 최종 결과파일만 넣어준 후 include 명령어로 rule 디렉토리에 있는 파일들을 연결할 수 있다.

Config files: config file은 변수를 지정해주는 snakefile 과 분리되어 rule에 shell에서 작업할 필요 없이 파일 하나로 커스터마이징이 가능하다. 이렇게 커스터마이징 파일을 따로 만들면 직관적인 워크플로우를 만들 수 있다.

Image

스네이크메이크 개발자가 제작한 germline varaint calling pipeline config file (출처)

wrapper: 생물정보 관련 파이프라인을 스네이크메이크로 작성하는 데 유용한 기능이다. 이미 정형화된 분석 스크립트를 모아 놓은 저장소로 주로 samtools, bwa, fastq, varscan, vcftools, 등 이외에도 수많은 분석 관련 툴이 스네이크메이크 문법에 맞게 적용할 수 있다. wrapper 기능을 사용하려면 비교적 최신버전의 스네이크메이크를 환경을 갖추어야 한다(현재 5.24.1).

Image

wrapper 사용 스네이크메이크 예 (출처)

이 밖에 유용한 기능들 #

expand: 위에 wildcard가 존재하는 파일의 형식을 기반으로 생성하는 기호지만 expand를 사용함으로써 와일드카드에 들어갈 변수에 파이썬 리스트를 삽입할 수 있다.

expand 사용 스네이크메이크 예 (출처)

**Protected & Temporary Files: 스네이크메이크 워크플로우에서 생성한 특정 결과 파일을 보호하기 위해 'proteted()' 옵션을 사용한다. 워크플로우를 여러 번 실행하면서 실수로 파일이 덮어쓰기되거나 삭제되는 경우를 예방할 수 있다. 'temp()' 옵션은 모든 룰이 다 실행되면 삭제되는 결과 파일을 지정할 때 사용한다.

(출처)

Image

0.0.1_20230725_7_v68