이 파일에는 최대 500개의 시퀀스가 있고 그 중 일부는 이름이 동일하며 복사본을 하나로 병합하고 싶습니다.
file 1
>1
aa
>2
cc
>3
tt
>4
atc
>2
tag
>1
gg
outfile
>1
aagg
>2
cctag
>3
tt
>4
atc
답변1
이것은 Awk 스크립트입니다:
#!/usr/bin/awk -f
/^>/ { header = $0 }
!/^>/ { sequence[header] = sequence[header] $0 }
END {
for (head in sequence) {
printf("%s\n%s\n", head, sequence[head])
}
}
전체 Fasta 파일을 메모리로 구문 분석하여 모든 시퀀스 데이터를 동일한 헤더와 연결합니다. 마지막으로 데이터를 출력합니다.
이 접근 방식은 다음과 같습니다.안좋다큰 Fasta 파일의 경우 게놈 크기 파일에서 완전히 (메모리 부족) 충돌이 발생합니다. 이러한 경우 더 나은 접근 방식을 찾으려면 구문 분석된 데이터를 마지막 연결된 파일에 저장하는 것이 좋습니다. 그래도 이것을 구현할 생각은 없었습니다.
스크립트를 실행합니다:
$ awk -f ./script.awk file.fa
>1
aagg
>2
cctag
>3
tt
>4
atc