24개의 샘플에서 96개의 *fastqc.gz 원시 읽기 파일이 있습니다. 각 샘플은 쌍당 2개의 레인에서 시퀀싱되었습니다.
두 채널의 각 쌍에서 읽은 내용을 예제 파일 이름(2271_merged_R1_001.fastq.gz)과 동일한 이름 식별자를 가진 하나의 출력 파일로 병합하고 싶습니다.
File names are in this order:
22[71-94]*R[1-2]_001.fastq.gz;
**2271**_ID890_1_S1_L001_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R1_001.fastq.gz**
**2271**_ID890_1_S1_L001_**R2_001.fastq.gz**
**2271**_ID890_1_S1_L002_**R2_001.fastq.gz**
다음과 같은 짧은 스크립트를 시도했지만 두 개의 출력 파일(첫 번째와 마지막)만 생성되었습니다.
R1 파일의 경우
for rf in 22[71-94]*R1_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R1_001.fastq.gz ; done
R2 파일의 경우
for rf in 22[71-94]*R2_001.fastq.gz; do zcat $rf > 22"${71-94}"_merged_R2_001.fastq.gz ; done
내 질문은 다음과 같습니다. 1. 왜 두 개의 출력 파일만 생성됩니까? 2. 출력 파일의 읽기 횟수는 두 채널의 병합된 파일의 합이 아닙니다. 3. 각 읽기 유형에 대해 두 번 실행하는 대신 단일 단계로 두 채널(R1 및 R2)의 읽기를 병합할 수 있는 좋은 방법이 있습니까?
코드에 어떤 문제가 있나요? 출력 파일이 완전히 병합되었는지 어떻게 확인할 수 있나요?
감사해요
답변1
첫째, 22[71-94]*R1_001.fastq.gz
그것은 당신이 생각하는 것까지 확장되지 않습니다.
이것은 작동합니다 22[1-9]*R1_001.fastq.gz
. 여기서 [71-94]는 "7 OR 1 to 9 OR 4"가 "1 to 9"로 줄어드는 문자 그룹입니다.
22{71..94}*R1_001.fastq.gz
찾고 있는 확장명일 가능성이 높지만, zcat
파일을 연결하는 대신 발견된 각 파일에 대해 루프가 한 번 실행됩니다. 실제로 각 파일은 동일한 출력 파일에 R1
순차적으로 기록되어 이전 쓰기를 덮어씁니다.zcat
나는 이것이 귀하의 가정에 따라 실제로 찾고 있는 것이라고 믿습니다(아래 참조).
for num in {71..94}; do zcat 22"$num"*R1_{L001,L002}.fastq.gz > "22${num}_merged_R1_001.fastq" ; done
가정:결과의 압축을 풀기를 원하므로 .gz
이를 결과 파일에서 제거했습니다(Patrick이 지적한 대로).
그렇지 않은 경우 결과 파일 zcat
로 변경하여 다시 cat
추가하면 됩니다..gz