2020-10-25ここでは、シークエンスデータを表す各種のファイル形式について説明します。BiopythonではSeqRecordオブジェクトとしてシークエンスデータを扱いますが、それぞれのファイル形式がSeqRecordオブジェクトにどのように変換されるのかを示します。以下の方法で構築した環境であることを前提として説明します。検証はしていませんが、プログラム自体は基本的にmacOS、Linuxでも動作すると思われます。[toc]目次フラットファイル形式DDBJ/ENA/GenBankで使われている形式で、DDBJ形式やGenBank形式などとも呼ばれます。配列の情報と、その配列にまつわる様々な付加情報が含まれています。DDBJに登録されているフラットファイル形式のフォーマットについては以下を参照してください。GenBankやENAに登録されているものとは記載の順序など若干の違いがありますが、書かれている情報としては同一です。https://www.ddbj.nig.ac.jp/ddbj/flat-file.htmlフラットファイル形式の構成フラットファイル形式の主な項目の意味は次のようになっています。データベース中でそのエントリのみが持つユニークな名前が付けられています。1996年7月以降公開されたデータに、アクセッション番号と同じ名前を付けています。(特徴をさらに特定する項目)を用いて記述しています。そのエントリの表す配列情報フラットファイル形式のBiopythonでの扱いSeqIO.read関数を用いて、フラットファイル形式からSeqRecordオブジェクトを取得することができます。例として、フラットファイル形式をTogoWSを用いて取得して、SeqRecordオブジェクトとするコードを示します。"genbank")SeqRecordオブジェクトの属性とフラットファイル形式の項目は次のように対応します。ORIGIN例えば上記の例で、フラットファイル形式におけるDEFINITIONを取得するには次のようにします。print(record.description)FASTA形式もともとは配列類似性検索ツールFASTAにおける入力配列形式として開発されたもので、現在は塩基配列やアミノ酸配列の情報を保持するために幅広い分野で用いられているファイル形式です。FASTA形式の構成FASTA形式では2つの行で1つのエントリーを表現します。‘>’に引き続いて、エントリーのID(アクセッション番号など)が記述されています。1番最初のスペースの後に、そのエントリーの定義・説明などが記述されています。....配列を表す文字列(核酸・アミノ酸を表すコード)が記述されています。次の’>’が出てくるまでがシークエンスデータ領域です。(次の’>’から新しいエントリーになります)FASTA形式のBiopythonでの扱いFASTAファイルに含まれるエントリーが1つのみの場合SeqIO.read関数を用いて、FASTA形式からSeqRecordオブジェクトを取得することができます。例として、TogoWSを用いてFASTA形式を取得して、SeqRecordオブジェクトとするコードを示します。"fasta")SeqRecordオブジェクトの属性とFASTA形式の項目は次のように対応します。handle’というエラーを出して停止してしまいます。その場合は、次のようにSeqIO.parse関数を用いて1つ1つのエントリーごとにSeqIO.read関数で読み込みましょう。multi_seq.fastaというファイルに複数のエントリーが含まれる場合は、次のように読み込みます。print(record)SeqIO.parse関数によってSeqRecordオブジェクトをまとめたオブジェクトを取得できるので、forループもしくは組み込み関数のnext関数を用いて1つ1つのSeqRecordオブジェクトを取り出します。Quality値を加えたデータ形式です。Quality値がセットになっているので、FASTQ形式を用いることでNGSの出力データを表現することができ、NGS配列データ形式のデファクトスタンダードとなっています。FASTQ形式の構成FASTQ形式は次の4行で1セットとなり、1つのリード(シークエンス)を表します。最小のFASTQ形式は以下のようになります。(Wikipediaより)@SEQ_IDGATTTGGGGTTCAAAGCAGTATCGATCAAATAGTAAATCCATTTGTTCAACTCACAGTTT+!''*((((***+))%%%++)(%%%%).1***-+*''))**55CCF>>>>>>CCCCCCC651行目はFASTA形式のヘッダー行に相当します。1行目の@以降と3行目の+以降は同じ文字列を入れることが多いようです。Quality値を表しています。Quality値を1文字で表現するためにこのような形になっています。Quality値はPhredクオリティスコアになります。実際のFASTQ形式ファイルは上記の1~4行が一まとまりで1つのリードを表し、改行によって新たなリードとして認識されます。FASTQ形式では複数のリードが連続していき以下のようになります。length=36IIIII*I>I6+9AI+F.:I138(.(,1<&&(%)*(&FASTQ形式のBiopythonでの扱いSeqIO.read関数を用いて、FASTQ形式からSeqRecordオブジェクトを取得することができます。handle’というエラーで止まってしまいます。複数のリードを含む場合は、SeqIO.parse関数を用いて1つ1つの分割して読み込みましょう。NGSから出力されるデータや公共データベースからの入手されるデータは大量のリードから構成されているので、通常はSeqIO.parse関数を用いることになると思います。ここでは例としてまず以下のファイルを用意します。して保存し、Biopythonで読み込みます。SeqIO.parse関数により複数のSeqRecordオブジェクトをまとめたオブジェクトとして取得できるので、forループにより一つ一つのSeqRecordオブジェクトを取り出します。(SRA)で使われています。テキストファイルであるFASTQ形式をバイナリ形式で圧縮することで、ファイルサイズは10分の1程度にまで圧縮できますが、SRAデータのためだけの専用の形式であり、汎用の圧縮形式ではありません。NGSの出力データは膨大な量のファイル容量が必要であり、データベースの容量を押さえるために、NCBIなどのデータベースではFASTQ形式では直接ダウンロードできずに、SRA形式でしかダウンロードできなくなっています。Toolkitのfasterq-dumpでFASTQ形式に変換できます。(fasterq-dumpで直接ダウンロードすることも可能です)SeqRecordオブジェクトからファイルへの保存SeqIO.write関数を用いて、SeqRecordオブジェクトを指定したフォーマットのファイルに保存することが可能です。フラットファイル形式でダウンロードしSeqRecordオブジェクトとして格納したものを、FASTA形式でファイルに保存する例です。'fasta')このようにSeqRecordオブジェクトはフラットファイル形式やFASTA形式、FASTQ形式などの区別なく情報を格納できるので、保存するファイル形式も自由に変更できます。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。date*日本語が含まれない投稿は無視されますのでご注意ください。ラボ・ノート」は、ライフサイエンス研究とIT技術を組み合わせることでライフサイエンス研究をオープンなものに昇華させ、その可能性を広げていくことを目指しています。役立つソフトウェアなどを公開しています。