CmhaDSO データ形式


配列データ

FASTA形式

FASTA形式は塩基ごとの品質スコアを必要としない配列データを格納するために使用される. これには参照ゲノム配列、参照転写配列、参照CDS、タンパク量配列などがある. FASTAファイル(拡張子: .fasta, .fa)の各配列エントリーは以下のように構成されている.
>title and optional description  
sequence line(s)
IUPAC-IUBアミノ酸コード
A alanine
B aspartate/asparagine
C cystine
D aspartate
E glutamate
F phenylalanine
G glycine
H histidine
I isoleucine
K lysine
L leucine
M methionine
N asparagine
P proline
Q glutamine
R arginine
S serine
T threonine
U selenocysteine
V valine
W tryptophan
Y tyrosine
Z glutamate/glutamine
X any
* translation stop
- gap of indeterminate length
IUPAC-IUB核酸コード
A Adenine
T (or U) Thymine (or Uracil)
C Cytosine
G Guanine
Y T/C (pyrimidine)
R A/G (purine)
S G/C (strong bond)
W A/T (weak bond)
K T/G (keto)
M A/C (amino)
B T/C/G
D A/T/G
H A/T/C
V A/C/G
N A/T/C/G (any)
. or - gap

小文字の塩基はソフトマスクされたリピート配列や低複雑度配列を表現するために使用されることが多い. これらの配列はハードマスクされている場合もあり、その場合のヌクレオチドはNで置換される. 縮重(または曖昧)ヌクレオチドに対する取扱い方はプログラムごとに異なり、ランダム塩基置換等が行われる.

FASTAファイルのエントリー数は以下のように数える.

$ cat in.fasta | grep -c "^>"

参考文献

FASTQ形式

FASTQ形式は配列データとその配列の各塩基に品質スコアを含めたFASTAの拡張形式である. FASTQファイル(拡張子: .fastq, .fq)の各配列エントリーは以下のように構成されている.
@title and optional description  
sequence line(s)
+optional repeat of title line
quality line(s)

* @は品質文字列中にも出現するため、@が行頭にあっても、品質文字列長が配列文字列長と一致することを確認せずに、次エントリの開始を意味しているものと解釈してはならない.

FASTQ形式には品質スコアの表現が異なる変種が少なくとも3つ存在し, Open Bioinformatics Foundation (OBF)によってfastq-sanger, fastq-solexa, fastq-illuminaと命名されている. fastq-sangerfastq-illuminaでは品質スコアにQPHRED (=-10log10Perr)を採用し、 fastq-solexaではQSolexa (=-10log10(Perr/(1-Perr)))を採用している.

種類
(OBF名)
ASCII文字 品質スコア
範囲 オフセット タイプ 範囲
Sanger, Illumina (version 1.8~)
(fastq-sanger)
33~126 33 PHRED 0~93
Solexa, early Illumina (version ~1.3)
(fastq-solexa)
59~126 64 Solexa -5~62
Illumina (version 1.3~1.7)
(fastq-illumina)
64~126 64 PHRED 0~62

fastq-sangerが現在のデファクトスタンダードであり、品質スコアにオフセット33を加えることで印字可能なASCII文字に符号化している. すなわちfastq-sanger品質スコアから各塩基の正しさの推定確率Pは以下のPythonスクリプトから算出できる.

>>> qline = "JJJJJJJJJJJJJJGJJJJJJJJJJJJJJIJGJJJJJJJJJJJJHHHHFFFFDDFCCCCC"  
>>> phred = [ord(base)-33 for base in qline]
>>> p = [10**(-q/10) for q in phred]

FASTQファイルのエントリー数は以下のようにして知ることができる.

$ cat in.fastq | bioawk -cfastx 'END{print NR}'

参考文献:

注釈データ形式

Genbank/EMBL形式

注釈付きの塩基配列情報はEMBL形式/GenBank形式/DDBJ形式で記述される。 DDBJ形式やRefSeqから提供されているデータはGenBank形式と同様である。 具体例:

GTF/GFF形式

General Transfer Format (GTF)/General Feature Format(GFF)形式はゲノム上の特徴配列を記述するために使用される. 行指向であり、各行タブ区切りの必須9列からなり、空値は"."で補完する.

列番号 列名 列説明
1 seqname 染色体名やscaffold名、chrはなくてもよい
2 source featureを作製したprogram/data source名
3 feature featureのタイプ名. GENCODEの場合ではgene,transcript,exon,CDS,UTR,start_codon,stop_codon,Selenocysteineのいずれかの値をとる.
4 start featureの開始位置
5 end featureの終了位置
6 score 浮動小数点値
7 strand +(fwd)|-(rv)
8 frame 読み枠(0|1|2),0なら最初の塩基がコドンの最初の塩基
9 attribute featureの追加情報、セミコロン区切りのタグ値

GTFとGFFはほぼ同形式であるが、GTFでは3列目のfeatureタイプ値の制限が強いことが両者の主たる相違点である.

参考文献:

アライメントデータ形式

SAM/BAM形式

Sequence Alignment/Mapping(SAM)/BAM形式はアライメント情報を格納するために使用される. SAMはテキストであり、BAMはそのバイナリである. SAMは行指向であり、1つのheader sectionと1つのalignment sectionからなる. headerの各行は@で始まり、2文字コードが続いた後、タブ区切りのKEY:VALUEが並ぶ. alignmentの各行はtab区切りの必須11列からなる.

header section

@SQ行は参照配列に関する情報を保存する. KEYにはSNとLNがある.

@RG行はリードグループとサンプルメタ情報を保存する. KEYにはIDとSM,PLがある。

@PGはprogramに関するメタ情報を保存する. KEYにはID, VN, CLがある。

alignment section
列番号 列名 列説明
1 QNAME Query(リード)名
2 FLAG bit表現フラグ(アライメント結果を整数値で記載)
3 RNAME リファレンス名
4 POS リードのマッピング開始位置(1起算)/unmappedは0
5 MAPQ マッピングクオリティスコア, Q=-10log10P. 不正確アライメントのフィルタリング, 低品質領域(反復、パラログ領域)の同定にする.
6 CIGAR CIGAR文字列(マッピング状況)
7 RNEXT PEの場合、相手方のリード名. *はRNEXTが存在しないことを意味.>=はRNEXTがRNAMEと同じであることを意味.
8 PNEXT PEの場合、相手方のマッピング開始位置. RNEXTが存在しない場合、値は0.
9 TLEN PEの場合、templateの長さ
10 SEQ マップした配列の塩基配列データ. この配列は常にアライメントされた方向に並んでいる. (元のリード配列の相補鎖の可能性がある.)
11 QUAL マップした配列のSequence Qualityデータ
bit表現フラグ
Flag (hex) 意味
0x1 PEである.
0x2 正しいペアとしてaligmentされている
0x4 Mappingされていない
0x8 メイトペアがMappingされていない
0x10 配列は相補鎖にMappingされている
0x20 メイトペアの配列が逆転している
0x40 ペアの最初のリード
0x80 ペアの2番めのリード
0x100 secondary aligment
0x200 QC失敗
0x400 PCRまたは光学複製
0x800 補助的アライメント

CIGAR文字列はアライメントに対する塩基のマッチ/ミスマッチ、挿入/欠失、ソフトクリップ/ハードクリップなどの情報を符号化する. 基本的なCIGAR文字列は整数による長さと文字操作の連結ペアが並んだものである.

CIGAR文字列
操作 意味
M 0 aligment match (=とXのいずれでもありうる.)
I 1 挿入
D 2 欠失
N 3 skip領域
S 4 ソフトクリッピング領域 (この領域はSEQフィード内の配列として存在する)
H 5 ハードクリッピング領域 (この領域はSEQフィールド内には存在しない)
P 6 padding
= 7 配列マッチ
X 8 配列ミスマッチ

SAM/BAMファイルを操作するにはsamtoolsを利用する. 詳細はアライメントデータの操作の章に記載されている.

参考文献:

バリアントデータ形式

Variant Call Format (VCF)

VCF/BCF形式

##で始まるメタデータheader行とデータライン行からなる tab区切りのデータ.

参考文献:

トラックデータ形式

ゲノムブラウザのannotation tracksを表現するためのテキストフォーマットにはBED, bedGraph, Wiggle (WIG)などがある. BED, BedGraph, WIGは行指向であり、三つの行タイプ(browser lines, track lines, data lines)からなる. 空行や#から始まる行は無視される. BedGraphとWIGは確率値のような連続値データをグラフ表現するために用いる. BedGraphでは指定領域の大きさが不定でかつ領域間距離が不規則なデータを許容する. 一方、WIGは密な連続値データをなるべく簡略に表現するために設計されたものであり、指定領域の大きさが一定である必要がある. さらに領域間距離が規則的な場合(fixedStep)と不規則な場合(variableStep)との区別がなされる.

browser/track lines

browser lines

browser linesの指定は任意である. formatは以下の通りである.

browser attribute value(s)
position position ゲノムブラウザがはじめに開くゲノム領域をchromosome:start-end formatで指定する.
hide all custom trackファイルにリストされているもの以外の全てのannotation tracksを隠す.
hide track_primary_table_name(s) 指定したtracksを隠す. 複数のtrack名はスペースで区切る.
dense all 全てのtracksをdense modeで表示する.
dense track_primary_table_name(s) 指定したtracksをdense modeで表示する. シンボル名で指定する. 複数のtrack名はスペースで区切る.
pack all 全てのtracksをpack modeで表示する.
pack track_primary_table_name(s) 指定したtracksをpack modeで表示する. シンボル名で指定する. 複数のtrack名はスペースで区切る.
squish all 全てのtracksをsquish modeで表示する.
squish track_primary_table_name(s) 指定したtracksをsquish modeで表示する. シンボル名で指定する. 複数のtrack名はスペースで区切る.
full all 全てのtracksをfull modeで表示する.
full track_primary_table_name(s) 指定したtracksをfull modeで表示する. シンボル名で指定する. 複数のtrack名はスペースで区切る.
track lines

track linesの指定は任意である. ただしBedGraphやWIGの場合などにはtrack lineを配置し、それぞれtype=wiggle_0type=bedGraphと指定する必要がある. formatは以下の通りである.

track attribute=value [attribute=value ...]
attribute value
name trackを同定するために用いるユニーク名. trackの左側に表示される. 最大15文字長であり、スペースを含む場合は引用符で囲まれていなければならない.
description 領域内のtrackに表示されるラベル. 最大60文字長であり、スペースを含む場合は引用符で囲まれていなければならない.
type track typeを指定する. BAM, BED detail, bedGraph, bigBarChart, bigBed, bigChain, bigGenePred, bigInteract, bigNarrowPeak, bigMaf, bigPsl, bigWIG, broadPeak, CRAM, interact, narrowPeak, Microarray, VCF, WIGを表示する際は必須である.
priority 複数のtrackが指定された場合にどの順序で表示するかを定める整数値
color RGB, hexかX11 named colorで指定する
useScore 1にセットすることでtrackをグレーススケールに変換する
itemRgb onにセットすることで、trackで定義された個々のRGB値が使用される

参考文献:

BED形式

BED形式は行指向であり、各行3-12列からなり、各列はホワイトスペースで区切る. 前3列は必須列、後9列は任意列である. カスタム列を定義・使用することも可能である. 各行の列数は同一でなければならず、空値は"."等で埋める必要がある. 任意列の列を使用する際はその前列全てを記述する必要がある. 初めのn列を使用するものをBEDnファイルという. 初めのn列を含み、任意列の残り又はカスタム列がゼロ又は複数後続ものをBEDn+ファイルという. 初めのn列を含み、m列のカスタム列が後続するものをBEDn+mファイルという. BEDファイルはLC_ALL=C sort -k 1,1 -k 2n,2 3n,3でソートされていることが望ましい. 1列目はchr1, chr2, ...,chr21, chr22, chrM, chrX, chrY順でもよい. BED形式では0ベース半開区間の座標系を使用する.

列番号 列名 列説明
1 chrom 染色体名やscaffold名、chrという接頭辞はなくてもよい.
2 chromStart 染色体/scaffold座標上でのfeatureの開始位置
3 chromEnd 同上での終了位置
4 name ブラウザに表示されるfeature名.
5 score 0-1000までのスコア. グレー色の濃淡(高値ほど濃い)で表現される.
6 strand "." (= no strand)|+(fwd)|-(rv)
7 thickStart 強調表示されるfeatureの開始座標
8 thickEnd 強調表示されるfeatureの終了位置
9 itemRgb 色(RGB), R,G,Bのように,区切りで数値指定
10 blockCount featureの内部にあるサブ要素の数(CDSに対するexon数など)
11 blockSizes サブ要素のサイズ(数値を,区切りで指定)
12 blockStarts サブ要素それぞれの開始座標(数値を,区切りで指定)

参考文献:

BedGraph/Wiggle format

BedGraph data line(s)は以下のように記述する.

chrom	chromStart	chromEnd	dataValue

dataValueは整数/実数, 正/負数のいずれかを問わない.座標系には0ベースの半開区間を使用する.

具体例:

browser position chr19:49302001-49304701
browser hide all
browser pack refGene encodeRegions
browser full altGraph
#	300 base wide bar graph, autoScale is on by default == graphing
#	limits will dynamically change to always show full range of data
#	in viewing window, priority = 20 positions this as the second graph
#	Note, zero-relative, half-open coordinate system in use for bedGraph format
track type=bedGraph name="BedGraph Format" description="BedGraph format" visibility=full color=200,100,0 altColor=0,100,200 priority=20
chr19 49302000 49302300 -1.0
chr19 49302300 49302600 -0.75
chr19 49302600 49302900 -0.50
chr19 49302900 49303200 -0.25
chr19 49303200 49303500 0.0
chr19 49303500 49303800 0.25
chr19 49303800 49304100 0.50
chr19 49304100 49304400 0.75
chr19 49304400 49304700 1.00

WIG (wiggle)ではdata line(s)に先行し、variableStepかfixedStepかを指定するdeclaration行を配置する. variableStepのdeclaration行はvariableStepまたはfixedStepという語で始まり、スペース区切りのkey-valueペアが後続する.

variableStepにおけるKey-Value
Key Value
chrom (必須) 染色体名
span (任意) 各データがカバーする塩基数 (デフォルトは1).
fixedStepにおけるKey-Value
Key Value
start (必須) データ値のスタート位置
step (必須) データ値間の距離
chrom (必須) 染色体名
span (任意) 各データがカバーする塩基数 (デフォルトは1).

WIG variableStep data lines format

variableStep chrom=chrN [span=windowSize]
chromStart dataValue

WIG fixedStep data lines format

fixedStep chrom=chrN start=position step=stepInterval [span=windowSize]
dataValue

dataValueは整数/実数, 正/負数の別を問わない.座標系には1ベースの閉区間を使用する.

具体例1:

# 2番染色体上の300701-300705の位置に12.5のデータ値を表示する.
# spanを使わない場合
variableStep chrom=chr2
300701  12.5
300702  12.5
300703  12.5
300704  12.5
300705  12.5

具体例2:

# 2番染色体上の300701-300705の位置に12.5のデータ値を表示する.
# spanを使う場合
variableStep chrom=chr2 span=5
300701  12.5

具体例3:

# 3番染色体上の位置40601, 400701, 40801にそれぞれ11, 22, 33というデータ値を表示する.
# spanを使わない場合
fixedStep chrom=chr3 start=400601 step=100 11 22 33

具体例4:

# 3番染色体上の位置400601-400605, 400701-400705, 400801-400805にそれぞれ11, 22, 33というデータ値を表示する.
# spanを使う場合
fixedStep chrom=chr3 start=400601 step=100 span=5
11
22
33

具体例5:

browser position chr19:49304200-49310700
browser hide all
#	150 base wide bar graph at arbitrarily spaced positions,
#	threshold line drawn at y=11.76
#	autoScale off viewing range set to [0:25]
#	priority = 10 positions this as the first graph
#	Note, one-relative coordinate system in use for this format
track type=wiggle_0 name="variableStep" description="variableStep format" visibility=full autoScale=off viewLimits=0.0:25.0 color=50,150,255 yLineMark=11.76 yLineOnOff=on priority=10
variableStep chrom=chr19 span=150
49304701 10.0
49304901 12.5
49305401 15.0
49305601 17.5
49305901 20.0
49306081 17.5
49306301 15.0
49306691 12.5
49307871 10.0
#	200 base wide points graph at every 300 bases, 50 pixel high graph
#	autoScale off and viewing range set to [0:1000]
#	priority = 20 positions this as the second graph
#	Note, one-relative coordinate system in use for this format
track type=wiggle_0 name="fixedStep" description="fixedStep format" visibility=full autoScale=off viewLimits=0:1000 color=0,200,100 maxHeightPixels=100:50:20 graphType=points priority=20
fixedStep chrom=chr19 start=49307401 step=300 span=200
1000
900
800
700
600
500
400
300
200
100

参考文献:

BigBed/BigWig format

BEDからbedToBigBedプログラムにより変換されたインデックス付バイナリをbigBedという. BedGraphやWiggle(WIG)からそれぞれbedGraphToBigWigやwigToBigWigプログラムによって変換されたインデックス付バイナリという. 変換ファイルを用いる主たる利点は、UCSCゲノムブラウザサーバを利用する際、表示領域に対応するファイルの部分だけがサーバに転送されるため 大きなサイズ(50MiB以上)のファイルを取扱う際の処理速度の向上する点にある.

bigBedやbigWigを作成・操作するために必要なutilityは以下から入手できる.

bedTomBigBed bedからBigBedに変換する. [Linux] [macOS(x86_64)]
bedGraphToBigWig begGraphからBigWigに変換する. [Linux] [macOS(x86_64)]
wigToBigWig wigからBigWigに変換する. [Linux] [macOS(x86_64)]
fetchChromSizes chrom.sizesファイルを作成する. [Linux] [macOS(x86_64)]
bigBedToBed bigBedからBEDに変換する. [Linux] [macOS(x86_64)]
bigBedSummary bigBedファイルから要約情報を抽出する. [Linux] [macOS(x86_64)]
bigBedInfo bigBedファイルに関する情報を出力する. [Linux] [macOS(x86_64)]
bigWigToBedGraph bigWigからbedGraphに変換する. [Linux] [macOS(x86_64)]
bigWigtoWig bigWigからWigに変換する. [Linux] [macOS(x86_64)]
bigWigSummary bigWigファイルから要約情報を抽出する. [Linux] [macOS(x86_64)]
bigWigInfo bigWigファイルに関する情報を出力する. [Linux] [macOS(x86_64)]

chrom.sizesファイルはCMHADSOシステム参照データ(gsize.tar.gz)から入手できる.

BigBedやBigWigに変換するためのsyntaxは以下の通りである.

bedToBigBed in.bed chrom.sizes out.bb
  # in.bedはbrowser linesとtrack linesを除去し、data linesだけにした後、sort -k1,1 -k2n,2したもの.
  # ゲノムブラウザ上において1つのtrackに対応するデータに限定し、複数のtrackデータは個々のin.bedファイルに分割する必要がある.

bedGraphToBigWig in.bg chrom.sizes out.bw
  # in.bgはbrowser linesとtrack linesを除去し、data linesだけにしたもの.
  # ゲノムブラウザ上において1つのtrackに対応するデータに限定し、複数のtrackデータは個々のin.bgファイルに分割する必要がある.

wigToBigWig in.wig chrom.sizes out.bw
  # in.wigはbrowser linesとtrack linesを除去し、data linesだけにしたもの.
  # ゲノムブラウザ上において1つのtrackに対応するデータに限定し、複数のtrackデータは個々のin.wigファイルに分割する必要がある.

出力ファイル(out.bbとする)をUCSCのゲノムブラウザーに表示するためには、 自分のwebサーバなどにおいて外部からwebアクセス可能な場所にout.bb配置後、 UCSCカスタムtrack管理ページのテキストボックスに以下のようなtrack lineを記述するとよい.

track type=bigBed name="bigBed Example" description="A bigBed file" bigDataUrl=http://urlToOut.bb

* WIGデータはUCSCサーバにアップロードすると、圧縮され、128個のビンに分割されて格納される. これにより些少ではあるがデータの正確性が損なわれる可能性がある. BedGraphデータやBigWigでは元の状態を維持したままデータをサーバに移すことができる.

参考文献:

データ形式の変換

liftover

CMHADSOシステムの参照項目からliftover.1.tar.gzを入手し、READMEファイルを参考にliftOverソフトウェアを入手する。 変換に必要な情報のファイル(xxx.over.chain)はliftover.1に梱包されている。

# README内容を参考にliftoverソフトウェアを入手・実行権限付与・PATHの通ったdirectoryに配置する。
# Linuxの場合の例
URL=http://hgdownload.cse.ucsc.edu/admin/exe/linux.x86_64/liftOver
curl -O $URL
chmod +x liftOver
mv liftOver xxx

# 以下の作業は不要 (参考のため)
# 変換に必要な情報のファイル(xxx.over.chain)を入手する。
# mm39 to mm10の場合
URL=https://hgdownload.soe.ucsc.edu/goldenPath/mm39/liftOver/mm39ToMm10.over.chain.gz
curl -O $URL
gunzip mm39ToMm10.over.chain.gz

変換を実行する。 既定ではBEDファイルを変換するがGFFファイルも変換可能である。

IN=mm39.bed
OVERCHAIN=mm39ToMm10.over.chain
OUT=mm10.bed
UNLIFTED=unlifted.bed

liftOver mm39.bed $OVERCHAIN $OUT $UNLIFTED

補足情報

拡張子一覧
FASTA .fa .fasta .mfa
FASTQ .fastq .fq
GTF/GFF .gtf .gff
Genbank .gbk .gbff
SAM/BAM/CRAM .sam .bam .cram
VCF/BCF .vcf .bcf
BED/BigBed .bed .bb
BedGraph/Wiggle/BigWig .bg .wig .bg