CRAM(파일 형식)
CRAM (file format)파일 이름 확장자 | .disclosed(비활성화) |
---|---|
개발자 | 마르쿠스 쉬양 프리츠 외; 바딤 잘루닌 |
포맷의 종류 | 생물정보학 |
오픈 포맷? | 네. |
웹 사이트 | www |
CRAM(Compressed Reference-Oriented Alignment Map)은 Markus Hsi-Yang Fritz [1]등이 최초로 고안한 기준 시퀀스에 정렬된 생물학적 시퀀스를 저장하기 위한 압축 컬럼 파일 형식이다.
CRAM은 시퀀스 얼라인먼트 맵(SAM) 및 바이너리 얼라인먼트 맵(BAM) 파일 형식에 대한 효율적인 참조 기반 대안으로 설계되었습니다.또한 게놈 참조를 사용하여 정렬된 시퀀스 조각과 참조 시퀀스 간의 차이를 설명하므로 스토리지 비용을 절감할 수 있습니다.또한 SAM 형식의 각 열은 자체 블록으로 분리되므로 압축률이 향상됩니다.CRAM 파일은 일반적으로 저장된 데이터에 따라 BAM보다 30~60% 작습니다.
CRAM 실장은 htsjdk,[2] htslib,[3] JBrowse [4]및 [5]Scramble로 이루어집니다.
파일 포맷 사양은 Genomics and Health 글로벌 얼라이언스(GA4)가 관리하고 있습니다.GH)[6]는 EBI cram toolkit [7]페이지에서 구할 수 있는 사양 문서를 제공합니다.
파일 형식
CRAM 파일의 기본 구조는 일련의 컨테이너로, 첫 번째 컨테이너에는 SAM 헤더의 압축 복사가 저장됩니다.후속 컨테이너는 일련의 블록 형식으로 정렬 레코드가 유지되는 일련의 슬라이스와 컨테이너 압축 헤더로 구성됩니다.
CRAM 파일:
매직 넘버 컨테이너.
(SAM 헤더)컨테이너.
(데이터)... 컨테이너.
(데이터)컨테이너.
(EOF)
컨테이너:
컨테이너.
헤더압축
헤더조각을 내라 ... 조각을 내라
슬라이스:
조각을 내라
헤더블록 블록 ... 블록
CRAM은 정렬의 구성 요소를 설명하는 일련의 데이터로부터 레코드를 구성합니다.컨테이너 Compression Header는 어떤 데이터 시리즈가 어떤 블록에 부호화되는지, 어떤 코덱이 사용되는지 및 코덱 고유의 메타 데이터(예를 들어 Huffman 기호 코드 길이의 테이블)를 지정합니다.데이터 시리즈를 같은 블록 내에서 혼재시킬 수 있지만, 일반적으로 데이터 시리즈를 분리하면 압축이 향상되고 일부 데이터 유형만 필요한 경우 효율적인 선택적 디코딩이 가능합니다.
CRAM 파일에 대한 선택적 액세스는 인덱스를 통해 허용됩니다(파일 이름 접미사 ".crai").염색체 및 위치 정렬된 데이터에서 이것은 각 슬라이스가 커버하는 영역을 나타냅니다.정렬되지 않은 데이터의 경우 인덱스를 사용하여 N 컨테이너를 가져올th 수 있습니다.부분 기록이 필요한 경우 압축 헤더를 사용하여 지정된 데이터 시리즈를 건너뛸 수도 있습니다.
역사
연도 | 버전 | 메모들 |
---|---|---|
2010-11 | 프리 CRAM | 참조 기반 형식을 설명하는 초기 문서입니다.이것은 CRAM이라는 이름을 사용하지 않고 mzip이라고 불렀습니다.이 소프트웨어는 기본 개념의 프로토타입 및 [1]데모로서 Python에 구현되었습니다. |
2011-12 | 0.3 - 0.86 | 유럽생물정보연구소(EBI)의 Vadim Zalunin은 Java 프로그래밍 언어로 작성된 CRAMtools라는 [8]패키지로 CRAM이라는 이름의 첫 번째 구현을 만들었습니다. |
2012 | 1.0[9] | Java CRAMtools에 [10]구현됩니다. |
2013 | Wellcome Sanger Institute의 James Bonfield에 의해 Scramble 도구에[11][5] 구현이 추가되었습니다. | |
2013 | 2.0 | 변경 사항에는 슬라이스당 두 개 이상의 참조 지원(고도의 단편화된 어셈블리에 유용), SAM 보조 태그의 더 나은 인코딩, 소프트 클립 및 삽입된 베이스를 자체 데이터 시리즈로 분할, 슬라이스당 레코드 및 베이스 수를 추적하기 위한 메타 데이터, BF(BAM 플래그) 데이터 시리즈 수정 등이 포함됩니다. |
2013 | htslib(0.2.0)에 추가되었습니다. | |
2014 | 2.1[12] | 잘린 파일을 쉽게 식별할 수 있도록 EOF 블록이 추가되었습니다. |
2014 | htsjdk(1.127)에 추가되었습니다. | |
2014 | 3.0[13] | 블록 압축용 lzma 및 rANS 코덱과 데이터 무결성을 보장하기 위한 여러 체크섬 포함 |
2018 | JBrowse[4](1.15.0)의 일부로서 Rob Buels에 의한 Javascript 구현. |
CRAM 버전 4.0은 [5]Scramble에 프로토타입으로 존재하며, 2015년에 처음 시연되었지만 아직 표준으로 채택되지 않았습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b Hsi-Yang Fritz, Markus; Leinonen, Rasko; Cochrane, Guy; Birney, Ewan (May 2011). "Efficient storage of high throughput DNA sequencing data using reference-based compression". Genome Research. 21 (5): 734–740. doi:10.1101/gr.114819.110. ISSN 1549-5469. PMC 3083090. PMID 21245279.
- ^ "Htsjdk by Broad Institute". samtools.github.io. Retrieved 2018-10-14.
- ^ "Samtools". www.htslib.org. Retrieved 2018-10-14.
- ^ a b "JBrowse · A fast, embeddable genome browser built with HTML5 and JavaScript". jbrowse.org. Retrieved 2018-10-14.
- ^ a b c Bonfield, James K. (2014-06-14). "The Scramble conversion tool". Bioinformatics. 30 (19): 2818–2819. doi:10.1093/bioinformatics/btu390. ISSN 1460-2059. PMC 4173023. PMID 24930138.
- ^ "GA4GH". www.ga4gh.org. Retrieved 2018-10-14.
- ^ EMBL-EBI. "CRAM toolkit < Software < European Nucleotide Archive < EMBL-EBI". www.ebi.ac.uk. Retrieved 2018-10-14.
- ^ "vadimzalunin/crammer". GitHub. 2017-08-08. Retrieved 2018-10-14.
- ^ "CRAM 1.0 Specification" (PDF).
- ^ "enasequence/cramtools". GitHub. 2018-10-02. Retrieved 2018-10-14.
- ^ "jkbonfield/io_lib". GitHub. 2018-10-16. Retrieved 2018-10-14.
- ^ "CRAM 2.1 Specification" (PDF).
- ^ "CRAM 3.0 Specification" (PDF).