생물정보 데이터는 기본적으로 줄 기반 텍스트 데이터인 경우가 많다. 그래서 간단한 데이터 처리는 따로 스크립트를 짜지 않고 awk, sed 등 줄 단위로 빠르게 연산 가능한 리눅스 커맨드들을 pipe (|)로 연결해서 이용하는 편이 코딩 시간, 분석 속도 면에서 가장 빠른 편이다.
다만 코드가 간결할수록 좋은 리눅스 커맨드들의 특성 상, sam, vcf, bed, gff, fasta, fastq 등 루틴하게 자주 사용하는 데이터들을 파싱하는 boilerplate들을 직접 매번 구현하는 것은 조금 귀찮다. 그래서 오히려 스크립트를 짜는 쪽이 덜 번거로운 경우가 많더라.
bioawk는 이러한 문제를 해결해주는 좋은 도구이다. 알아두면 간단한 분석 할 때 편하다!
요약
•
bioawk는 생물정보학 분석에서 주로 사용되는 일부 파일 포맷들을 자동으로 파싱하여 awk를 사용할 수 있게 해 주는 도구이다.
◦
-c [file format] 처럼 파일 포맷을 지정한다.
◦
bioawk -c help 로 지원되는 파일 포맷을 확인할 수 있다. (sam, vcf, bed, gff, fastx 정도 지원)
•
참고: BAM 파일은 지원 안해서, samtools view로 출력해서 넘겨줘야 함.
•
컬럼명이 있는 Tab-delimited 테이블이 있을 때, awk 변수로 컬럼명을 이용할 수 있는 기능도 있다.
설치
$ conda install -c bioconda bioawk
Shell
복사
Quickstart
Fasta 파일
•
FASTA 내의 DNA 서열을 reverse complement한다. (gzipped fasta 처리 가능)
◦
$name, $seq 변수, revcomp 함수 사용. (AGCTU → AAGCT 로 변환해줌.)
◦
주의) Protein 서열이어도 따로 오류를 출력하지 않고 revcomp 해 준다. DNA/RNA 인지 미리 체크하고 사용하자.
$ bioawk -c fastx '{print ">"$name; revcomp($seq)}' seq.fa.gz
Shell
복사
•
FASTA 내의 서열의 이름과 길이를 출력한다.
$ bioawk -c fastx '{print ">"$name; print length($seq)}' seq.fa.gz
Bash
복사
출력
SAM/BAM 파일
•
SAM 파일에서 mapped read만 뽑아내기 (Header 출력 안함)
◦
$flag 변수 사용
$ bioawk -c sam '!and($flag, 4)' aln.sam > aln.mapped.sam
Shell
복사
•
BAM 파일에서 mapped read만 뽑아내기 (Header 출력)
◦
samtools view 에서도 header 출력해야 됨. 조심할 것
$ samtools view -H aln.bam | bioawk -H -c sam '!and($flag, 4)'
Bash
복사
•
BAM 파일에서 mapped read만 뽑아내서 BAM 파일로 저장.
◦
이 정도면 samtools view 쓰는게 좋긴 한데 연습용으로 정리해 둔다.
$ samtools view -h aln.bam |\
bioawk -h -c sam '!and($flag, 4)' | samtools view -Sb - > aln.mapped.bam
Bash
복사