2021년 10월 21일 목요일

Bactopia에서 다운로드한 fastq 원본 파일은 work directory 아래 어디에 있는가?

요즘 Bactopia를 쓰는데 재미를 들였다. 2020년 mBio에 실린 논문 제목은 다음과 같다.

Bactopia: a Flexible Pipeline for Complete Analysis of Bacterial Genomes (https://doi.org/10.1128/mSystems.00190-20)

이를 처음으로 접한 것은 지난 4월. 바로 어제까지 공식 문서를 보고 무릎을 탁 치면서 '아, 이럴 때는 이렇게 하는 것이구나!'라고 깨달을 정도로 기본 개념과 작동 원리를 정확히 이해하기가 조금 까다롭지만, 쓰면 쓸수록 활용성이 높다는 것을 깨닫게 된다. 특히 BioProject나 SRA의 accession을 입력하면 이에 해당하는 raw sequencing read를 자동으로 가져와서 분석 프로세스를 진행하는 것이 매우 편리하다.

결과 디렉토리에는 QC를 거친 read와 후속 처리 결과물(de novo assembly, AMR prediction, genome annotation, variant analysis 등)이 저장되고, bactopia 명령을 수행한 현 위치의 work 디렉토리에는 중간 과정 결과가 쌓인다. 만약 SRA에서 다운로드한 원본 그대로의 fastq 파일을 쓰고 싶다면 work 디렉토리 아래를 뒤져야 한다. 무슨 이유인지 NCBI의 SRA에서는 직접 다운로드가 되지 않아서 '--use-ena' 옵션을 주어야 한다. 아마도 인증서와 관련한 문제일 것으로 생각된다.

work 디렉토리는 매우 복잡한 구조이고 심볼릭 링크가 너무 많아서 Bactopia pipeline 진행 중 최초로 다운로드한 fastq file 원본의 위치를 찾으려면 약간의 수고를 들여야 한다. Bactopia가 그런 목적으로 만들어진 것은 아니니 이해할 수밖에.

SRX997206_R1.fastq.gz는 어디에 있는지 find 명령으로 찾아보자. 심볼릭 링크는 제외하도록 한다. 'find work'가 아니라 'find .'이라 해도 결과는 같다. 현 디렉토리에는 SRX로 시작하는 무수한 'official' 결과 디렉토리가 있지만, 그렇게 깊숙한 곳에 원하는 파일이 있는 것이 아니니 결과물은 같다. 현 디렉토리에서만 찾고자 한다면 '-maxdepth 0'이 아니라 '-maxdepth 1'이라 해야 된다.

$ find work -maxdepth 6 -type f -name SRX997206_R1.fastq.gz
./SRX997206/quality-control/SRX997206_R1.fastq.gz
./work/bactopia/fe/e4ace6f0ae219902471aba4c2f75ae/fastqs/SRX997206_R1.fastq.gz
./work/bactopia/d9/587964324ce23bcde690aaa8557c9a/quality-control/SRX997206_R1.fastq.gz

두 개의 파일이 나온다. 첫 번째 것은 진짜 원본 파일이고 두 번째의 것은 QC를 거친 것이다. 파일의 이름도 같고, 현 위치 기준의 레벨(6)도 같다. 따라서 전체 경로에 'fastqs'라는 문자열이 있는 것만 선택하면 된다. 만약 마지막 디렉토리 이름이 'fastqs'가 아니라 'fastq'였다는 원본을 고르는 일이 상당히 성가셨을 것이다.

work 디렉토리 하위에 있는 fastq 원본 파일 전부를 01_original_fastq 디렉토리로 옮기려면 다음과 같이 한다. 만약 find 명령에서 '-name */fastqs/*fastq.gz'과 같이 옵션을 줄 수 있다면, '-exec cp {} 01_original_fastq;'를 명령행에 추가하여 find 명령어 한 줄로 검색과 복사를 다 할 수 있을텐데 내 실력으로는 그렇게 하는 방법을 아직 모르겠다.

$ mkdir 01_original_fastq
$ find . -maxdepth 6 -type f -name *fastq.gz | grep fastqs | while read f
> do
> cp $f 01_original_fastq/
> done

grep 'quality-control' 필터를 쓰면 QC를 거친 fastq 파일만을 골라서 복사할 수 있다. 물론 QC를 거친 fastq를 찾으려면 work 디렉토리가 아니라 정식 결과물 디렉토리를 찾는 것이 더 현명하다. 사용자가 이해하기 쉬운 서브디렉토리 이름과 구조라서 depth를 고려할 필요가 없기 때문이다.

복사가 끝났나? 그러면 137 GB나 되는 work directory를 지우자. 이번 작업에서는 총 296개의 fastq 파일을 ENA에서 다운로드했었다.

댓글 없음: