다음과 같은 측면을 가진 .vcf.gz 파일이 있습니다.
#CHROM POS ID REF ALT
chr1 10894 chr1:10894:G:A G A
chr1 10915 chr1:10915:G:A G A
chr1 10930 chr1:10930:G:A G A
CHROM 열을 수정하여 "chr"을 제거하고 다른 것으로 바꾸고 싶으므로 다음과 같은 것을 얻고 싶습니다.
#CHROM POS ID REF ALT
1 10894 chr1:10894:G:A G A
1 10915 chr1:10915:G:A G A
1 10930 chr1:10930:G:A G A
그래서 다음 명령줄을 작성했습니다.
zcat input.vcf.gz | sed 's/^chr//' > output.vcf.gz
효과가 있었습니다. 문제는 출력 파일을 확장자가 vcf.gz인 압축 파일로 저장하고 싶다는 것입니다. "output.vcf.gz"라고 써도 출력 파일이 압축되지 않습니다.
압축파일을 수정한 후 다시 압축파일로 저장하려면 어떻게 해야 하나요?
매우 감사합니다!
답변1
zcat
실제로는 편의 기능입니다 gzip
. // 맨 페이지 gzip
인용 ( ):gunzip
zcat
man zcat
이
zcat
명령은 와 동일합니다gunzip -c
.
파이프라인 프로그램 체인에서 ( 또는 )를 사용할 수 있는 것처럼 다음을 gunzip -c
사용하여 다시 압축할 수 있습니다.zcat
gzip
zcat input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz
# ^^^^
또는
gunzip -c input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz
#^^^^^^^^ ^^^^
일관성을 좋아한다면.
그게 다야. 여기에 있는 모든 것이 그 것입니다.
아, 내기하겠습니다. 당신은 생물정보학을 하고 있고 vcf 파일은 실제로 "Variant Call Format" 파일이고 아마도 꽤 클 것입니다. gzip
매우 빠른 압축 해제기는 아니지만 상당히 느린 압축기입니다. gzip 압축 파일 형식을 사용할 수 없는 경우,
unpigz -c input.vcf.gz | sed 's/^chr//' | pigz > output.vcf.gz
#^^^^^^^^ ^^^^
pigz
와 정확히 동일 gzip
하지만 여러 CPU 코어로 확장 가능합니다. 그걸 써.
당신이라면 어떨까요?아니요이러한 파일은 gzip 컨테이너에 저장해야 하지만 더 현대적인 형식을 자유롭게 선택할 수 있습니다.
unpigz -c input.vcf.gz | sed 's/^chr//' | zstd -T0 -8 > output.vcf.zst
# decompress using | | ^^^^ ^^^ ^^
# unpigz instead of | modify | \--\ \-\ \\ compression ratio
# gzip/zcat | | \ \ \ -0=very fast 18=very compressed
# | | \ \ -8 is much better compressed
# | | \ \ than gzip --best, but faster
# | | \ \
# | | \ \- Use as many threads as CPU cores
# | | \
# | | \
# | | \---- Use zstd instead of gzip
답변2
파이프라인에 gzip을 추가하면 됩니다.
zcat input.vcf.gz | sed 's/^chr//' | gzip > output.vcf.gz