Linux에 Shell이 있다면, Window에는 CMD가 있다. 둘 다 명령어를 실행해 주는 해석기이다.
window에서 cutadapt를 사용하는 것은 이전 글(Window에서 Cutadapt사용하기)에서 확인할 수 있다.
많은 샘플의 adapter를 잘라낼 때 linux에서는 for문을 통해서 간편하게 해결할 수 있다. window로 FOR문을 이용해서 사용 가능하지만, 조금 제한적이다.
내가 찾아낸 최선의 방법은, 샘플들의 이름(_1.fastq.gz 와 _2.fastq.gz가 제외된 이름)만 저장된 name_list.txt를 만들고, 그 안에서 변수를 하나씩 꺼내어 쓰는 방식이다.
| 예시 데이터 보기
만약 서열의 이름이 다음과 같을 때, 우리는
위 샘플의 이름만 담긴 txt파일을 만들어 보자.
| Cutadapt를 실행하는 for문
for /F "tokens=*" %f in (name_list.txt) do ; py -m cutadapt -g ACCTGCGGARGGATCA -a AACTTTYARCAAYGGATCTC -G GAGATCCRTTGYTRAAAGTT -A TGATCCYTCCGCAGGT -o "cutadapt/%f_1_trim.fastq.gz" -p "cutadapt/%f_2_trim.fastq.gz" -n 2 "%f_1.fastq.gz" "%f_2.fastq.gz"
각각의 요소를 살펴보자
py -m cutadapt : window에서 cutadapt실행 명령어
-g ACCTGCGGARGGATCA -a AACTTTYARCAAYGGATCTC : forward 서열의 adapter
-G GAGATCCRTTGYTRAAAGTT -A TGATCCYTCCGCAGGT : reverse 서열의 adapter
-o "cutadapt/%f_1_trim.fastq.gz" : forward output file
-p "cutadapt/%f_2_trim.fastq.gz" : reverse output file
"%f_1.fastq.gz" : forward input file
"%f_2.fastq.gz" : reverse input file
실행 시 아래와 같은 메시지를 출력한다.
| Cutadapt의 결과물을 cmd로 정리해 보자
1. 빈 txt파일 만들기
echo. > cutadapt_result.txt
# 혹은
type nul > cutadapt_result.txt
2. cutadapt실행하고 결과 저장하기
for /F "tokens=*" %f in (name_list.txt) do ; py -m cutadapt -g ACCTGCGGARGGATCA -a AACTTTYARCAAYGGATCTC -G GAGATCCRTTGYTRAAAGTT -A TGATCCYTCCGCAGGT -o "cutadapt/%f_1_trim.fastq.gz" -p "cutadapt/%f_2_trim.fastq.gz" -n 2 "%f_1.fastq.gz" "%f_2.fastq.gz" >> cutadapt_result.txt
3. 저장된 결과 요약하기 (참고 : Linux에서 정리)
1) unxutils 설치(window상에서 linux명령어를 사용 가능하게 함)
a. 다운로드 : https://sourceforge.net/projects/unxutils/
b. 파일 다운 후, 다운로드한 위치기억 (예) C:\Users\ksy\)
c. 제어판(Control Panel) → 시스템(System) → 고급 시스템 설정(Advanced system settings) → 환경 변수(Environment Variables) → 시스템 변수(System variables) → Path 선택 → 편집(Edit)
d. 경로 추가 (예 ) C:\Users\ksy\unxutils\bin)
e. 확인 및 종료
2) cmd로 정리하기
type cutadapt_result.txt | grep "passing filters" cutadapt_result.txt | cut -f3 -d "(" | tr -d ")" > file1.txt
type cutadapt_result.txt | grep "filtered" cutadapt_result.txt | cut -f3 -d "(" | tr -d ")" > file2.txt
paste file1.txt file2.txt > Output.txt
이때, quality에 따른 filtering을 설정하지 않아서, 처음 filtering은 100%로 나오고, primer에 따른 filtering은 그다음 열에 나타나는 것을 볼 수 있다.
사실 cmd명령어가 linux와 유사할 것이라고 생각했는데, 생각보다 공통적인 명령어가 많지 않았다. (예-ll, paste는 linux에서만 사용 가능)
또한 unxutils을 이용해서 리눅스와 거의 비슷하게 사용 가능하기 때문에 차후에 cmd를 사용해야 할 때에도 큰 무리가 없을 것 같다.
(그래도 역시 리눅스가 편하다..!)