SAM 파일은 염기 서열 파일들의 각 read에 대해서 필터링(filtering), 쳐내기(trimming), 묶기(grouping) 한 후에 참조 서열에 대해 해당 파일을 정렬(alignment)한 후에 생성되는 내용을 담은 파일이다.
SAM 파일의 가장 윗 부분에는 헤더가 있다. 대략 다음과 같이 생겼다.
@HD VN:1.3 SO:coordinate
@SQ SN:ref LN:45
@SQ SN:ref2 LN:40
여기에서 HD(header)는 헤더, VN(version number)은 버전 번호, SO는 정렬 순서(sorting order), SN(sequence name)은 서열 이름, LN(length)은 길이를 나타낸다.
여기에서는 좌표를 기준으로 정렬이 되었고, 서열의 이름은 ref와 ref2로 각각 45, 40의 길이를 가지고 있다. 즉, 이 정렬은 두 개의 참조 서열에 대한 정렬을 담고 있다.
다음으로 그 아래에는 각 서열에 대한 개별 정렬(alignment)을 보인다.
001 163 ref 7 30 8M4I4M1D3M = 37 39 TTAGATAAAGAGGATACTG * XX:B:S,12561,2,20,112
r002 0 ref 9 30 1S2I6M1P1I1P1I4M2I * 0 0 AAAAGATAAGGGATAAA *
r003 0 ref 9 30 5H6M * 0 0 AGCTAA *
r004 0 ref 16 30 6M14N1I5M * 0 0 ATAGCTCTCAGC *
r003 16 ref 29 30 6H5M * 0 0 TAGGC *
r001 83 ref 37 30 9M = 7 -39 CAGCGCCAT *
각 열은 다음의 의미를 가진다.
열 |
이름 |
형태 |
설명 |
1 |
QNAME |
문자열 |
쿼리 이름(같은 이름은 같은 부분에서 왔음) |
2 |
FLAG |
16비트 정수 |
비트 연산 플래그 |
3 |
RNAME |
문자열 |
참조 서열 이름(헤더에서 있던 서열 중 한 가지) |
4 |
POS |
32비트 정수 | 참조 서열에서의 위치(1부터 시작) |
5 |
MAPQ |
8비트 정수 |
매핑 품질 |
6 |
CIGAR |
문자열 |
매핑 형태(CIGAR) 문자열 |
7 | RNEXT |
32비트 정수 |
짝을 이루는 참조 서열의 이름 |
8 |
PNEXT | 32비트 정수 |
짝을 이루는 참조 서열에서의 위치 |
9 |
TLEN |
32비트 정수 |
템플릿의 길이 |
10 |
SEQ |
문자열 |
실제 서열 |
11 | QUAL |
문자열 |
생어 점수(프레드 품질 점수 + 33) |
12 | TAG | 문자열 | 기타 정보를 포함함(없을 수도 있음) |
2번열 FLAG의 값은 다음과 같다.
비트 값 |
설명 |
0x1 |
서열에서 다중 세그먼트를 가진 리드 |
0x2 |
정렬 프로그램에 의하면 각 세그먼트가 별로 안 좋게 정렬됨 |
0x4 | 세그먼트가 매핑되지 않음(이 비트가 설정되면 값은 대부분 무시된다) |
0x8 |
리드에서 매핑되지 않은 다음 세그먼트 |
0x10 |
SEQ는 역 방향으로 완전히 뒤집어짐 |
0x20 | 리드의 다음 세그먼트의 SEQ는 역으로 뒤집어짐 |
0x40 |
리드에서 첫 세그먼트 |
0x80 |
리드에서 마지막 세그먼트 |
0x100 |
보조적 정렬 |
0x200 | 품질 제어를 통과하지 못함 |
0x400 | PCR 또는 광학적 복제본 |
CIGAR 문자열은 다음을 뜻한다. 이것은 정렬이 어떤 식으로 이뤄져 있는지 설명해 준다.
설명자 |
BAM에서의 설명자 |
설명 |
M | 0 |
정렬이 매칭됨 |
I |
1 |
서열에 대해 삽입 발생 |
D |
2 |
서열에 대해 삭제 발생 |
N | 3 |
참조에서 스킵된 영역 |
S |
4 |
가상 잘라내기(soft clipping, SEQ에 잘린 서열이 존재함) |
H |
5 |
강제 잘라내기(hard clipping, SEQ에 잘린 서열이 존재하지 않음) |
P |
6 |
패딩(패딩된 참조에서 조용한 삭제) |
= |
7 |
서열이 매칭됨 |
X | 8 | 서열이 미스매칭됨 |
가장 마지막 열에 있는 태그는 다음과 같다.
태그 |
종류 |
설명 |
X? | ? |
사용자를 위해 예비된 필드(Y?와 Z?도 마찬가지) |
AM |
i | 최소한의 템플릿 독립적인 세그먼트의 매핑 품질 |
AS |
i |
정렬 프로그램에 의해 생성된 정렬 점수 |
BC |
Z |
바코드 서열 |
BQ |
Z | 기본 정렬 품질(BAQ, base alignment quality)로의 오프셋, 서열과 같은 길이를 가짐, BAQi=Qi-(BQi-64) |
CC |
Z |
다음 히트의 참조 이름, "="은 같은 염색체를 위한 기호 |
CM |
i |
색상 서열과 색상 참조 사이의 편집 거리 |
CP |
i |
다음 히트의 최왼쪽 좌표 |
CQ |
Z |
리드의 원래 가닥에 있는 색상 리드 품질. QUAL과 같은 인코딩 방식이며, CS와 같은 길이 |
CS | Z | 리드의 원래 가닥에 있는 색상 리드 서열. 프라이머 염기는 반드시 포함되어야 함 |
E2 |
Z | 현재 염기가 에러로 판명될 때, 그 대신에 사용될 확률이 높은 두 번째 염기 후보 |
FI |
i |
템플릿에서 세그먼트의 색인 번호 |
FS |
Z |
세그먼트의 접미사 |
FZ | B,S |
리드의 원래 가닥에 있는 플로우 신호 강도 (uint16_t)round(value * 100.0)으로 저장됨 |
LB |
Z |
라이브러리. 만약 @RG가 있다면, RG-LG 태그와 같은 값을 가짐 |
HO |
i |
완전한 히트들의 수 |
H1 | i |
한 개 다른 히트들의 수 |
H2 |
i |
두 개 다른 히트들의 수 |
HI |
i |
쿼리 히트 색인 번호, 정렬 레코드가 SAM에서 i번째 저장됨을 나타냄 |
IH | i | 현재 레코드에 있는 쿼리를 포함한 SAM에 저장된 정렬의 수 |
MD | Z | 미스매칭 위치의 문자열 |
MQ | i | 메이트/다음 세그먼트의 매핑 품질 |
NH | i | 현재 레코드에 있는 쿼리를 포함한 리포트된 정렬의 수 |
NM | i | 참조 서열로의 편집 거리 |
OQ | Z | 원래의 염기 품질(일반적으로 재교정(recalibration) 전). QUAL과 동일한 인코딩 |
OP | i | 원래 매핑 위치(일반적으로 재정렬(realignment) 전) |
OC | Z | 원래 CIGAR(일반적으로 재정렬 전) |
PG | Z | 프로그램. 만약 @PG가 있으면, PG-ID 태그와 일치하는 값 |
PQ | i | 리드의 프레드 확률, |
PU | Z | 플랫폼 단위. 만약 @RG가 있으면, RG-PU 태그의 값과 일치하는 값 |
Q2 | Z | 메이트/다음 세그먼트의 프레드 품질. QUAL과 같은 인코딩 |
R2 | Z | 리드에서 메이트/다음 세그먼트의 서열 |
RG | Z | 리드 그룹. 만약 @RG가 헤더에 있으면, RG-ID 값과 일치하는 값 |
SM | i | 리드에 독립적인 매핑 품질 |
TC | i | 템플릿에 있는 세그먼트들의 수 |
U2 | Z | 가장 잘맞는 염기 값이 잘못되고, 두번째 염기 값마저 틀릴 프레드 확률. QUAL과 같은 인코딩 |
UQ | i | 세그먼트의 프레드 확률. 매핑이 정확한 것에 기반하여 변함 |
댓글