Sequence Alignment/Map オプショナルフィールド仕様(日本語訳)
GitHub Copilot を用いた非公式日本語訳です。正確性は原文を優先してください。
原文(最新版)の所在: https://github.com/samtools/hts-specs
原文ファイル: SAMtags.tex
hts-spec 文書群は歴史的経緯よりあえて明確なライセンスを持ちませんが、慣習的に Apache 2.0と見なされています。
本書は、SAM/BAM 形式を定義する「Sequence Alignment/Map Format Specification」と、CRAM 形式を定義する「CRAM Format Specification」の補助文書(companion document)です。各形式におけるアラインメントレコード(alignment record)は、任意の個数のオプショナルフィールド(optional field)を含むことがあり、各フィールドは当該データを識別するタグ(tag)でラベル付けされます。本書は、定義済みの標準タグ(predefined standard tags)を記述し、新しいタグ作成に関する慣行(conventions)を述べます。
標準タグ
定義済みの標準タグは以下で一覧し、その後の小節で詳細を説明します。オプショナルフィールドは通常 TAG:TYPE:VALUE の形で表示されます。TYPE は次のいずれかです。
-
A(1 文字) -
B(一般配列) -
f(実数) -
H(16 進配列) -
i(整数) -
Z(文字列)
備考: 原文の LaTeX 版には標準タグの大型表が含まれます。本訳では可読性のため、表は後続のタグ個別節に対応する内容として逐次記述します。
追加のテンプレート/マッピング情報(前半)
以下では、タグを TAG:TYPE:説明 の順で示し、必要に応じて例や正規表現を添えます。
-
AM:i:<score>- 同一テンプレート(template)内の任意のセグメントにおける、テンプレート非依存(template-independent)の最小マッピングクオリティ(mapping quality)。(
SMも参照)
- 同一テンプレート(template)内の任意のセグメントにおける、テンプレート非依存(template-independent)の最小マッピングクオリティ(mapping quality)。(
-
AS:i:<score>- アライナー(aligner)が生成したアラインメントスコア(alignment score)。
-
BQ:Z:<qualities>- Base Alignment Quality(BAQ)へのオフセット。長さはリード配列(read sequence)と同じ。
- i 番目の塩基について、
BAQ_i = Q_i - (BQ_i - 64)(ここでQ_iは i 番目のベースクオリティ(base quality))。
-
CC:Z:<rname>- 次のヒット(next hit)の参照名。 同じ染色体の場合は
=を用いる。
- 次のヒット(next hit)の参照名。 同じ染色体の場合は
-
CG:B:I,<encodedCigar>(BAM のみ)- 実 CIGAR(real CIGAR)が 65535 を超える演算子数を含む場合に限り、そのバイナリ形式を格納する。BAM の制約に対する回避策であり、当該回避策に対応したツールで作成された SAM/CRAM にはこのタグは通常現れない。詳細は SAM 仕様 4.2 節の脚注参照。
-
CP:i:<pos>- 次のヒットの左端(leftmost)座標(1 始まり)。
-
E2:Z:<bases>- 第 2 最尤(most likely)な塩基コール。
SEQと同じエンコーディング・同じ長さ。関連するクオリティ値はU2を参照。
- 第 2 最尤(most likely)な塩基コール。
-
FI:i:<int>- テンプレート中でのセグメントのインデックス(index of segment in the template)。
-
FS:Z:<str>- セグメントサフィックス(segment suffix)。
-
H0:i:<count>- 完全一致ヒット(perfect hits)の数。
-
H1:i:<count>- 1 差分(1-difference)ヒット数(
NMも参照)。
- 1 差分(1-difference)ヒット数(
-
H2:i:<count>- 2 差分(2-difference)ヒット数。
-
HI:i:<i>- クエリヒットインデックス(query hit index)。このアラインメントレコードが SAM に格納された第 i のものであることを示す。
-
IH:i:<count>- 本レコードのクエリを含むアラインメントの総数(query hit total count)。
-
MC:Z:<cigar>- mate/次セグメントの CIGAR 文字列。
-
MD:Z:<regex>(正規表現)- 形式:
[0-9]+(([A-Z]|\^[A-Z]+)[0-9]+)* - 参照の不一致塩基および欠失塩基を、
CIGARおよびSEQと併用して表現し、アラインメントがマップされた参照配列区間(reference sequence interval)を復元できるようにする。これにより、元の参照全体へアクセスせずにバリアントコールを可能にする。 - 構成要素(追加の区切り文字なしで連結):
-
[0-9]+:参照とSEQが一致する連続塩基数のラン(run) -
[A-Z]:その位置でSEQと異なる参照の 1 塩基 -
^[A-Z]+:アラインメントにおける参照側の連続欠失塩基(deleted reference bases)
-
- 上記は数値とそれ以外の要素が交互に現れる。したがって、一致ランを挟まずにミスマッチまたは欠失が隣接する場合、
0(長さ 0 のラン)で区切る必要がある。 - クリッピング・パディング・参照スキップ・挿入(
H/S/P/N/Iの CIGAR 操作)はMDには表現されない。参照復元時には、IおよびSに相当するSEQ塩基は、CIGARの追跡に基づき省かれる(CIGARにNが含まれる場合、対応する参照領域は復元できない)。 - 例:
10A5^AC6は、アラインメントの左端から 10 マッチ、続く参照塩基AはSEQと不一致、その後 5 マッチ、参照上でACの 2 塩基欠失、最後に 6 マッチ、を意味する。
- 形式:
-
MQ:i:<score>- mate/次セグメントのマッピングクオリティ(mapping quality)。
-
NH:i:<count>- 現在のレコードにおけるクエリを含む、報告されたアラインメントの数(Number of reported alignments that contain the query in the current record)。
-
NM:i:<count>-
SEQと参照の差分数(Number of differences)。ここで差分は、ミスマッチ(mismatch)に加え、挿入(insertion)および欠失(deletion)を 1 塩基あたり 1 として数える。ただし、SEQと参照のいずれも(大文字小文字を区別しない)A/C/G/T のみを一致候補とし、それ以外はミスマッチとして扱う。したがって、両者で曖昧コード(ambiguity codes)が一致していても(例: 両方がN、あるいはAとRのような互換コード)ミスマッチとして数えられる。特別な塩基=は、参照側が曖昧であっても常に一致とみなす。参照スキップ・パディング・ソフト/ハードクリップ(N/P/S/Hの CIGAR 操作)はミスマッチに数えないが、挿入と欠失は塩基長に応じて数える。 - 注記: 歴史的に定義が曖昧であり、この定義と一致しないデータやツールも存在する。
-
-
PQ:i:<score>- テンプレート(template)の Phred 尺度による尤度(likelihood)。ただし両方/すべてのセグメントのマッピング位置が正しいことを条件とする(conditional on the mapping locations of both/all segments being correct)。
-
Q2:Z:<qualities>-
R2タグにある mate/次セグメント配列の Phred 品質値(Phred quality)。エンコーディングはQUALと同じ。
-
-
R2:Z:<bases>- テンプレート内の mate/次セグメントの配列。関連する品質値は
Q2を参照。
- テンプレート内の mate/次セグメントの配列。関連する品質値は
-
SA:Z:<list>- キメラアラインメント(chimeric alignment)における他の正準(canonical)アラインメント。セミコロン区切りのリストとして整形される。各要素はキメラアラインメントの一部を表す。慣例的に、補助(supplementary)行では、最初の要素がプライマリ行を指す。
strandは+または-(FLAG 0x10 に対応)、posは 1 始まり。 - 形式(正規表現の概略):
(rname,pos,strand,CIGAR,mapQ,NM;)+
- キメラアラインメント(chimeric alignment)における他の正準(canonical)アラインメント。セミコロン区切りのリストとして整形される。各要素はキメラアラインメントの一部を表す。慣例的に、補助(supplementary)行では、最初の要素がプライマリ行を指す。
-
SM:i:<score>- テンプレート非依存のマッピングクオリティ。すなわち、当該リードがペア/テンプレートの一部ではなく単独でマッピングされたと仮定した場合のマッピングクオリティ。
-
TC:i:<int>- テンプレート内のセグメント数(the number of segments in the template)。
-
TS:A:<strand>- リードがマップされたトランスクリプトのストランド(transcript strand)。
+または-。
- リードがマップされたトランスクリプトのストランド(transcript strand)。
-
U2:Z:<qualities>- 最良(best)のコールが誤りであることを前提とした条件付きで、第 2 コールが誤りである確率の Phred 表現。エンコーディングと長さは
QUALと同じ。関連する塩基コールはE2を参照。
- 最良(best)のコールが誤りであることを前提とした条件付きで、第 2 コールが誤りである確率の Phred 表現。エンコーディングと長さは
-
UQ:i:<score>- マッピングが正しいことを条件とした、当該セグメントの Phred 尺度による尤度(Phred likelihood of the segment, conditional on the mapping being correct)。
メタデータ(Metadata)
-
RG:Z:<readgroup>- 当該リードが属するリードグループ(read group)。
@RGヘッダが存在する場合、<readgroup>はいずれかのヘッダのRG-IDフィールドと一致しなければならない。
- 当該リードが属するリードグループ(read group)。
-
LB:Z:<library>- 当該リードがシーケンスされたライブラリ(library)。
@RGヘッダが存在する場合、<library>はいずれかのヘッダのRG-LBフィールドと一致しなければならない。
- 当該リードがシーケンスされたライブラリ(library)。
-
PG:Z:<program_id>- プログラム(program)。
@PGが存在する場合、値はヘッダのPG-IDタグと一致する。
- プログラム(program)。
-
PU:Z:<platformunit>- 当該リードがシーケンスされたプラットフォームユニット(platform unit)。
@RGヘッダが存在する場合、<platformunit>はいずれかのヘッダのRG-PUフィールドと一致しなければならない。
- 当該リードがシーケンスされたプラットフォームユニット(platform unit)。
-
CO:Z:<text>- 自由記述コメント(free-text comments)。
バーコード(Barcodes)
DNA バーコード(DNA barcode)は、基礎となるリードの出自(provenance)を識別するために用いられる。現在、共存し得る 3 種のバーコードがある:Sample Barcode、Cell Barcode、Unique Molecular Identifier(UMI)。
-
Sample Barcode は名称に反して Library(ライブラリ)を識別し、複数のライブラリを併合して同時にシーケンスできるようにする。シーケンス後、このバーコードに従ってリードを分離し、それぞれのライブラリに対応する異なる「read group」に配置できる。ライブラリはサンプルに由来するため、ライブラリを知ることはサンプルを知る手掛かりとなる。バーコード自体は
@RGヘッダ行のPUフィールドに含められる。PUはグローバルに一意であることが望ましいため、フローセルバーコードやレーンなどの具体的情報を含めるのが望ましい。@RG行のIDフィールドにバーコードを直接用いるのは推奨されない(ファイル結合時などに一部ツールがこのフィールドを変更するため)。 -
Cell Barcode は Sample Barcode に似ているが、通常はバーコードへの細胞の割当てを制御できない(配列はランダム/事前決定いずれもあり得る)。シングルセルシーケンス実験において、リードが異なる細胞由来かどうかの識別に役立つ。
-
UMI はバーコードが導入された時点の(一本鎖または二本鎖の)分子を識別することを意図する。これにより、重複(duplicate)マーキングや超深度シーケンスにおけるコンセンサスコールが可能になる。さらに、UMI は同一の長い分子から生成されたリードを情報学的に連結するのに用いることができ、長距離フェージング(long-range phasing)やより良いマッピングに資する。実験によっては、同一の二本鎖 DNA 分子の反対鎖が関連するバーコードを持つ場合がある。これらのテンプレートは技術的には UMI が異なる場合でも重複と見なせる。プロトコルにより複数の UMI が(おそらく異なる時点で)付与されることもあり、そのため得られたデータを正しく解析するにはプロトコルの具体的知識が必要となり得る。
-
BC:Z:<sequence>- バーコード配列(sample/library を識別)。品質値(quality scores)は任意で
QTタグに保存する。BCとQTの長さは一致すべきである。複数の UMI が存在する場合(例:テンプレートの両端)には、同一テンプレート由来のバーコード同士をハイフン(-)で区切って全バーコードを連結することが推奨される。
- バーコード配列(sample/library を識別)。品質値(quality scores)は任意で
-
QT:Z:<qualities>-
BCにあるサンプルバーコード配列の Phred 品質値。エンコーディングはQUALと同じ(Phred スコア + 33)。複数の UMI の場合、同一テンプレート内の異なる品質文字列の間を空白()で区切って連結することが推奨される。
-
-
CB:Z:<str>- セル識別子(cell identifier)。任意に誤り補正されたセルバーコード配列と、任意のサフィックスの組からなる。配列部分は
CRタグに類似するが、シーケンスエラー等が補正されている可能性がある。続けて、ハイフン(-)と 1 文字以上の英数字からなるサフィックスを付けて識別子を形成してもよい。セルバーコード(CR)が複数のバーコード配列に基づく場合、(補正済み/未補正を問わず)全バーコードをハイフン(-)で区切って連結するのが推奨される。シーケンスエラー等を除けば、単一の細胞由来の全リードは同一のCBを持つことが期待される。
- セル識別子(cell identifier)。任意に誤り補正されたセルバーコード配列と、任意のサフィックスの組からなる。配列部分は
-
CR:Z:<sequence+>- セルバーコード(cellular barcode)。シーケンサが報告した未補正のセルバーコード塩基配列。対応するベース品質値は任意で
CYに保存する。シーケンスエラー等を除けば、同一のCRを持つ全リードは同一細胞に由来する可能性が高い。セルバーコードが複数バーコード配列に基づく場合、全バーコードをハイフン(-)で区切って連結することが推奨される。
- セルバーコード(cellular barcode)。シーケンサが報告した未補正のセルバーコード塩基配列。対応するベース品質値は任意で
-
CY:Z:<qualities+>-
CRにあるセルバーコード配列の Phred 品質値。エンコーディングはQUALと同じ(Phred スコア + 33)。CYとCRの長さは一致しなければならない。複数バーコードの場合は、各品質文字列を空白()で区切って連結することが推奨される。
-
-
MI:Z:<str>- Molecular Identifier。SAM ファイル内で当該リードの由来分子を一意に識別する ID。同一
MIを持つ全リードは、同一分子由来のリード群を表す。
- Molecular Identifier。SAM ファイル内で当該リードの由来分子を一意に識別する ID。同一
-
OX:Z:<sequence+>- UMI の生(未補正)塩基配列。品質値は任意で
BZに保存する。複数 UMI の場合は、全バーコードをハイフン(-)で区切って連結することが推奨される。
- UMI の生(未補正)塩基配列。品質値は任意で
-
BZ:Z:<qualities+>-
OXにある(未補正)UMI 配列の Phred 品質値。エンコーディングはQUALと同じ(Phred スコア + 33)。BZの長さはOXと一致すべきである。複数 UMI の場合は、各品質文字列を空白()で区切って連結することが推奨される。
-
-
RX:Z:<sequence+>- UMI の塩基配列。補正済み/未補正いずれも可。
MIと異なり、ファイル内で値が一意とは限らない。塩基配列から構成されるべきである。複数 UMI の場合は、全バーコードをハイフン(-)で区切って連結することが推奨される。基底配列が補正済みを表す場合、元の配列はOXに保存できる(OQが元のベース品質を格納するのと類似)。
- UMI の塩基配列。補正済み/未補正いずれも可。
-
QX:Z:<qualities+>-
RXにある UMI 配列の Phred 品質値。エンコーディングはQUALと同じ(Phred スコア + 33)。ここに格納される品質は補正済みである可能性がある(未補正の塩基と品質はそれぞれOXとBZに格納可能)。QXとRXの長さは一致しなければならない。複数 UMI の場合は、各品質文字列を空白()で区切って連結することが推奨される。
-
元データ(Original data)
-
OA:Z:(RNAME,POS,strand,CIGAR,MAPQ,NM;)+- 後続ツールによる再アラインメント(realignment)やアンアラインメント(unalignment)より前の、当該レコードの元のアラインメント情報(original alignment information)。各エントリは元レコードからの 6 フィールド値を、一般にテキスト形式の SAM 表現で含み、カンマ(
,)で区切り、セミコロン(;)で終端する:明示的なRNAME(RNEXTと異なり=は不可)、1 始まりのPOS、+または-(FLAG 0x10 に対応、順鎖/逆鎖)、CIGAR、MAPQ、NMタグ値(省略可。ただし直前のカンマは残すこと)。 - 既存の
OAタグがある場合、後続ツールはセミコロンの後に別の元アラインメントエントリを追加してよい。置換ではなく追記である。 -
OAはレコードレベルの由来(provenance)理解に有用な情報を提供するために設計されている。テンプレートアラインメント情報の完全な履歴を提供することを意図しない。特に、セカンダリまたはサプリメンタリレコードの削除を伴う再アラインメントは、それらのレコードに関連付けられた全タグの喪失を引き起こし得る。またSAタグを不正状態のまま残す可能性がある。
- 後続ツールによる再アラインメント(realignment)やアンアラインメント(unalignment)より前の、当該レコードの元のアラインメント情報(original alignment information)。各エントリは元レコードからの 6 フィールド値を、一般にテキスト形式の SAM 表現で含み、カンマ(
-
OC:Z:<cigar>(非推奨)- 元の CIGAR(通常は再アラインメント前)。より一般的な
OAを用いることが推奨される。
- 元の CIGAR(通常は再アラインメント前)。より一般的な
-
OP:i:<pos>(非推奨)- 元の 1 始まり
POS(通常は再アラインメント前)。より一般的なOAを用いることが推奨される。
- 元の 1 始まり
-
OQ:Z:<qualities>- 元のベース品質(通常は再キャリブレーション前)。エンコーディングは
QUALと同じ。
- 元のベース品質(通常は再キャリブレーション前)。エンコーディングは
アノテーションとパディング(Annotation and Padding)
SAM 形式は、ここで述べるパディングされた参照配列(padded reference sequences)とアノテーションタグを用いることで、de novo アセンブリを表現できる。表現の詳細は SAM 仕様の「Guide for Describing Assembly Sequences」を参照。
-
CT:Z:<strand;type(;key(=value)?)*>- コンプリートリードアノテーションタグ(complete read annotation tag)。コンセンサスアノテーションのダミーフィーチャ(consensus annotation dummy features)に使用される。主としてアノテーションのダミーリードを想定し、
strand、type、および 0 個以上のkey=valueの組から成り、各項目はセミコロンで区切る。strandは GFF3 と同様に 4 値を取り、FLAG 0x10 の補助として、非ストランド(.)やストランドありだが不明(?)も許容する。これらおよび正鎖(+)のアノテーションでは FLAG 0x10 を設定しない。逆鎖(-)のアノテーションではstrandを-にし、FLAG 0x10 を設定する。typeと任意のkeyとその任意のvalueは、RFC3986 に従ってパーセントエンコードされ、=、%、;、|といったメタ文字や、C ロケールで isprint() に該当しない非印字文字をエスケープする(例:%は%25)。
- コンプリートリードアノテーションタグ(complete read annotation tag)。コンセンサスアノテーションのダミーフィーチャ(consensus annotation dummy features)に使用される。主としてアノテーションのダミーリードを想定し、
-
PT:Z:<annotag(|annotag)*>但し各<annotag>は<start;end;strand;type(;key(=value)?)*>に一致- パディングを含むリード配列の部分に対するアノテーション。
PTは|区切りの一連のアノテーションタグからなり、各タグがリードのサブ領域を注釈する。各タグはstart、end、strand、typeと 0 個以上のkey=valueの組から成り、セミコロン区切り。startとendは 1 始まりで、CIGARのMIDPS=X演算子(すなわちSEQ長に任意のパッドを加えたもの)の合計の範囲内にある。CIGARの編集はPT座標の更新を要する場合や、PTを無効化し得ることに注意。strandは GFF3 と同様に+(正鎖)、-(逆鎖)、.(非ストランド)、?(ストランドありだが不明)のいずれか。typeと任意のkeyとそのvalueはCTと同様にパーセントエンコードする。
- パディングを含むリード配列の部分に対するアノテーション。
技術固有データ(Technology-specific data)
-
FZ:B:S,<intensities>- 元鎖(original strand)のフローシグナル強度(flow signal intensities)。
(uint16_t) round(value * 100.0)として格納する。
- 元鎖(original strand)のフローシグナル強度(flow signal intensities)。
カラー空間(Color space)
-
CM:i:<distance>- カラー配列(color sequence)とカラー参照(color reference)の編集距離(edit distance)。(
NMも参照)
- カラー配列(color sequence)とカラー参照(color reference)の編集距離(edit distance)。(
-
CS:Z:<sequence>- 元鎖上のカラーリード配列。プライマーベース(primer base)を含めなければならない。
-
CQ:Z:<qualities>- 元鎖上のカラーリード品質(color read quality)。エンコーディングは
QUALと同じ。長さはCSと同じ。
- 元鎖上のカラーリード品質(color read quality)。エンコーディングは
塩基修飾(Base modifications)
塩基修飾(base modifications。メチル化を含む)は、シーケンス装置が元来報告した未修飾の一次配列(primary unmodified sequence)からの編集(edits)の系列として表現される。これは SAM の主たる SEQ フィールドに格納された配列と一致しない場合がある。SEQ が逆相補化(reverse complemented)されているときは SAM FLAG 0x10 を設定しなければならない。したがって修飾位置は元の向き(5' 端から)に対して記録され、元の塩基種を数える。
列挙された各修飾塩基予測には品質値が関連付けられる。未修飾塩基自体がすでに Phred 尺度の尤度(phred likelihood)を持つことを踏まえると、塩基修飾の品質は「元のコールが正しいと仮定した場合に当該修飾が正しい確率」と解釈すべきである。
-
MM:Z:([ACGTUN][-+]([a-z]+|[0-9]+)[.?]?(,[0-9]+)*;)*- 先頭文字は、上側鎖(top strand)についてシーケンス装置が報告した未修飾の「基本(fundamental)」塩基であり、
A、C、G、T、(RNA の場合)U、またはその他すべてに対するNのいずれかでなければならない(SEQにおける IUPAC の曖昧コードも含む)。Nは装置のコールとしてのNに特定せず、任意の塩基に一致させる用途にも用いてよい(標準塩基型の派生ではない修飾に使える)。 - これに続けて
+または-があり、観測された修飾の鎖(strand)を示す(SEQの元の配列に対して、+は同じ向き)。このため、配列の逆相補化を行い得るツールはMM/MLの操作方法を理解する必要はない。 - 次に 1 個以上の塩基修飾コード(base modification codes)が続く。修飾コードに続いて、推奨だが任意のフラグとして
.または?を付けられる。これは、指定された未修飾塩基型に属するスキップされたSEQ塩基を下流ツールがどう解釈すべきかを示す。?の場合、スキップ塩基の修飾状態に関する情報はない。フラグがない、または.の場合、これらの塩基は修飾確率が低いと仮定すべきである(実際にどの程度を省略し、どの程度を確率として明示するかはコーラー(caller)の判断であり、しきい値未満を省略してMMを縮約する方法もある)。 - その後に、指定された未修飾塩基型について、前回位置からスキップする
SEQ塩基数のリストがカンマ区切りで続く。これは差分(delta)として保存され、最初(または次)の塩基は 0 から始め、未相補化のSEQの 5' 端基準で数える。この数列はMDタグの数列に類似するが、特定の塩基型のみを数え、かつ逆相補化され得る点が異なる。 - 例:
C+m,5,12,0;は、SEQの上側鎖に 3 つの 5-メチルシトシン候補があることを示す。最初の 5 つのCは未修飾であり、6、19、20 番目が修飾候補で、その確率は対応するMLの値で与えられる。6 番目と 19 番目の間の 12 個のCは未修飾。スキップされた 17 個のCについて修飾確率は提供されない。 -
?フラグがある場合、C+m?,5,12,0;は最初の 5 つのシトシンの修飾状態が不明、6 番目はコール済み(修飾/未修飾のいずれか)、続く 12 個は不明、19 番目と 20 番目はコール済み、を意味する。 - 同様に
G-m,14;は 15 番目のGに、反対鎖における 5-メチルシトシンが存在し得ることを示す(数え方は 5' 端から見た上側鎖のGを用いる)。アラインメントレコードが逆相補化され(FLAG 0x10 セット)、SEQが反転していても、MMは常に as-sequenced の向きを指すため、これらの例は不変である。 - 修飾は両鎖いずれにも記載可能で、稀に同一部位で両鎖が修飾を持ち得る。FLAG 0x10 がセットされている場合、
MMはSEQおよび他の SAM 派生フィールドとは逆向きになることに注意。 - 座標リストが空であることは許容される(例:
MM:Z:C+m;)。これは当該修飾が存在しない明示的な指標として用いられ得る。座標が配列長を超えることは許されない。 - 複数の修飾を列挙する場合(例:
C+mh,5,12,0;)、当該位置の修飾は列挙されたもののいずれかであることを示す。相対的な尤度比較にはMLの値を用いる。これはC+m,5,12,0;C+h,5,12,0;と同値だが、MLにおける確率の並びは異なる。多重修飾形式では数値の ChEBI コードは使用できない点に注意(C+mhなど)。 - 標準的でない修飾は数値の ChEBI コードで指定できる(例:
C+76792,57;はC+h,57;と同じ)。 - 未修飾塩基が
Nの場合は、SEQ中の任意の塩基を数える(Nに限定しない)。したがってN+n,100;は、配列組成に依らず 101 番目の塩基が Xanthosine(n)であることを意味する。
- 先頭文字は、上側鎖(top strand)についてシーケンス装置が報告した未修飾の「基本(fundamental)」塩基であり、
標準コードと対応する ChEBI は以下の通り(Viner らに基づく)。加えて、曖昧コード A、C、G、T、U は各基本塩基型に属する未特定の修飾を表し、N は任意の塩基型に属する未特定の修飾を表す。
| 未修飾塩基 (Unmodified base) | コード (Code) | 略称 (Abbreviation) | 名称 (Name) | ChEBI |
|---|---|---|---|---|
| C | m | 5mC | 5-Methylcytosine | 27551 |
| C | h | 5hmC | 5-Hydroxymethylcytosine | 76792 |
| C | f | 5fC | 5-Formylcytosine | 76794 |
| C | c | 5caC | 5-Carboxylcytosine | 76793 |
| C | C | Ambiguity code; any C mod | ||
| T | g | 5hmU | 5-Hydroxymethyluracil | 16964 |
| T | e | 5fU | 5-Formyluracil | 80961 |
| T | b | 5caU | 5-Carboxyluracil | 17477 |
| T | T | Ambiguity code; any T mod | ||
| U | U | Ambiguity code; any U mod | ||
| A | a | 6mA | 6-Methyladenine | 28871 |
| A | A | Ambiguity code; any A mod | ||
| G | o | 8oxoG | 8-Oxoguanine | 44605 |
| G | G | Ambiguity code; any G mod | ||
| N | n | Xao | Xanthosine | 18107 |
| N | N | Ambiguity code; any mod |
-
ML:B:C,<scaled-probabilities>- 任意(optional)。
MMで列挙された各修飾が正しい確率(probability)を、出現順に格納する。連続確率 0.0〜1.0 を等間隔に 0〜255 の整数へ再マッピングする。よって整数値 N は N/256 から (N+1)/256 の範囲に対応する。SAM のエンコーディングはC型のバイト配列を用い、要素数はMMにおいて「存在すると記された」修飾数の総和に一致する(多重修飾形では各候補がそれぞれ確率を持つ)。 - 例:
MM:Z:C+m,5,12;C+h,5,12;に対してML:B:C,204,89,26,130。これを多重修飾形に書き換えると、確率は提示順にインタリーブされ、MM:Z:C+mh,5,12; ML:B:C,204,26,89,130となる。同一部位で複数候補が提示される場合、MLの値は相対的な尤度ではなく、各修飾コールが正しいという絶対確率を表す。合計は 1.0(整数エンコードで約 256。丸め誤差の微小な超過は許容)を超えるべきではないが、列挙されていない修飾が存在する確率分だけ 1.0 未満になることはある。上の例では、6 番目のCが 5mC である確率 80%、5hmC で 10%、未修飾Cで 10% を意味する。曖昧コードのML値は、当該曖昧コードに適合する候補のいずれかである確率を表す(例:MM:Z:C+C,10; ML:B:C,229は C が何らかの未特定修飾を持つ確率が 90% であることを示す)。
- 任意(optional)。
-
MN:i:<length>-
MMが最後に書き込まれた時点のSEQフィールドの長さ。整列済みデータの処理(例:ハードクリップ)によりSEQが変更されることがある。この場合、MM/MLの基準位置は、対応して更新されない限り不正となる。ハードクリップツールにはMM/MLを更新するものとしないものがあるため、MNは簡易整合性チェックを提供する。MMを検証したいソフトウェアは、SEQの長さとMNを比較し、異なる場合はMM/MLを古い(out-of-date)と見なす。MNは任意だが推奨であり、存在しない場合は、反証(例:座標が配列末尾を超えているなど)がない限りMMが有効であるという前提が暗黙に置かれる。
-
ドラフトタグ(Draft tags)
標準タグとして提案され、広く受け入れられているが、レビューまたは試用期間が有用と判断されたタグである。ローカルに定義されたタグ名前空間(locally-defined tag namespace)を用いるため、処理ソフトウェアは、これらのタグが他用途でローカルに使われている可能性を考慮すべきである。
現在、ドラフトステータスのタグは存在しない。
ローカル定義タグ(Locally-defined tags)
自由に新しいタグを追加できる。ただし、X、Y、Z で始まるタグ、またはどちらかの文字が小文字を含むタグはローカル用途に予約され、将来の仕様で正式に定義されることはない。
新しいタグが一般的関心事となり得る場合は、本仕様への追加を検討できる。提案は GitHub の issue(https://github.com/samtools/hts-specs/issues)を新規作成するか、メール(samtools-devel@lists.sourceforge.net)で連絡のこと。
付録:タグ履歴(Tag History)
この付録は、標準タグが最初に定義された、または大きく変更された時期、ならびにタグの解釈や出現に影響するその他の歴史的事項を列挙する。
2024年9月(September 2024)
- 塩基修飾タグ(base modification tags)の整合性検証のために
MNタグを追加。
2022年2月(February 2022)
- 塩基修飾タグは、審査期間の終了に伴い、定義済み標準名
MMおよびMLを使用するよう変更。ドラフトのMmおよびMlを出力するプログラムはMM/MLに切り替えるべき。
2021年12月(December 2021)
- ドラフト
Mmタグを修正し、スキップされた配列塩基の修飾状態に関するヒントを提供。
2021年7月(July 2021)
- 塩基修飾を記述するドラフトタグ
MmとMlを追加。
2020年3月(March 2020)
- トランスクリプトストランドタグ
TSを追加。いくつかの RNA アライナーが生成するローカル定義XSと同等。
2019年1月(January 2019)
- 元/以前のアラインメント情報を記録する
OAタグを追加。 -
OCおよびOPタグを廃止。
2018年7月(July 2018)
-
NMスコアの計算を明確化。
2018年5月(May 2018)
- セルバーコードタグ
CB、CR、CYを追加。 - 長らく廃止同義であった
RT:Z(BCの同義)を削除。
2017年11月(November 2017)
- SAM バージョン番号
VN:1.6を導入。非常に長い CIGAR 文字列の表現(CGタグ追加)を示す。65,535 を超える CIGAR 演算子を含むレコードを持つファイルは、ヘッダ@HDのVNに 1.6 未満を宣言すべきでない。
2017年8月(August 2017)
- UMI 関連タグ
BZ、MI、OX、QX、RXを追加。 - サンプルバーコード
BCの用法を明確化。
2017年6月(June 2017)
-
E2(第 2 最尤塩基)タグの説明を訂正。以前は塩基か品質かが不明瞭であった。
2016年9月(September 2016)
- これまで主仕様内の簡略表として記されていた定義済みタグを、本ドキュメントとして分離。より明確で完全な説明を可能にした。
2014年2月(February 2014)
-
MCタグを追加。
2013年5月(May 2013)
- SAM バージョン番号
VN:1.5を導入。タグへの直接的影響は限定的だが、CT/PTアノテーションタグ定義が確定したことを示す。 -
SAタグを追加。
2012年3月(March 2012)
-
CTおよびPTアノテーションタグの説明を大幅に明確化。
2011年10月(October 2011)
- サンプルバーコードタグ
QTとRTを追加。RTはBCの廃止済み代替であると位置付け。 - リードアノテーションタグ
CTとPTを追加。
2011年9月(September 2011)
-
FZタグの型をHからB,S配列に変更。 -
BCとCOタグを追加。
2011年4月(April 2011)
- SAM バージョン番号
VN:1.4を導入。B配列タグ型の追加を示す。B配列フィールドを含むファイルは@HDのVNに 1.4 未満を宣言すべきでない。 -
FZタグをH型として追加。 -
MDタグの説明を変更し、ACGTNに加えて IUPAC の曖昧コードを許容。
2011年3月(March 2011)
-
CCとCPタグを本来の意味で復活。
2010年11月(November 2010)
-
BQタグを追加。
2010年7月(July 2010)
- 仕様を LaTeX 文書に改稿し、SAM バージョン
VN:1.3を明記。 - タグ
FI、FS、OC、OP、OQ、TCを追加。 - 繰り返しシーケンスされたリードの表現に一時的に提案された
GC:Z、GQ:Z、GS:Zは後方互換性のため予約とし、既存のMF:i(MAQ pair flag)、SQ:H(suboptimal bases)、S2:H(mate's suboptimal bases)は削除のうえ後方互換性のため予約とした。 -
CCとCPタグを一時的に削除。
2009年7月(July 2009)
- 初期の SAM “0.1.2-draft” 仕様は
VN:1.0を掲げ、合計 30 の標準タグを定義(SQとS2はすでにE2とU2に置換予定):AM, CM, CS, H1, IH, MF, NM, PU, RG, SQAS, CP, E2, H2, LB, MQ, PG, Q2, S2, U2CC, CQ, H0, HI, MD, NH, PQ, R2, SM, UQ