NGS 軟體開發

【NGS 軟體開發】使用SeqAn3 讀取fastq格式

SeqAn3是一個支援現代C++的NGS Data 上游處理的函式庫。這裡介紹如何使用它來讀取剛下機的原始資料(fastq)檔。

Seqan3函式庫的Hello World

安裝完成之後,可以用seqan3的debug_stream函式來測試看看是否正常運作,測試程式碼如下:

C++
#include <seqan3/core/debug_stream.hpp> 
 
int main()
{
    seqan3::debug_stream << "Hello World!";
}

編譯執行之後就會得到:

Hello World

Seqan3函式庫讀取fastq

seqan3讀取資料的方式為使用建構子建立一個sequence_file_input的物件(seqan3::sequence_file_input fin{std :: cin, format_fasta{}}; ),之後就可以用迭代器來取得每一筆read。這裡示範如下,用seqan3::sequence_file_input fin{“R1.fastq”};讀取檔案R1.fastq,然後用迭代器走訪每個read。每個read會有id,sequence,以及base_qualities三個主要的屬性可以存取。

C++
#include <iostream>
#include <seqan3/core/debug_stream.hpp>
#include <seqan3/io/sequence_file/input.hpp>
#include <string>
int main() {
 seqan3::sequence_file_input fin{"R1.fastq"};
 for (auto& read : fin) {
   seqan3::debug_stream << "id:  " << read.id() << std::endl;
   seqan3::debug_stream << "sequence: " << read.sequence() << std::endl;
   seqan3::debug_stream << "base qualities: " << read.base_qualities() << std::endl;
 }
 return 0;
}

另外,也可以省略auto& read,直接用類似tuple的方式寫:

C++
#include <iostream>
#include <seqan3/core/debug_stream.hpp>
#include <seqan3/io/sequence_file/input.hpp>
#include <string>
int main() {
 seqan3::sequence_file_input fin{"R1.fastq"};
 for (auto& [seq , id, bqual] : fin) {
   seqan3::debug_stream << "id:  " << id << std::endl;
   seqan3::debug_stream << "sequence: " << seq<< std::endl;
   seqan3::debug_stream << "base qualities: " << bqual << std::endl;
 }
 return 0;
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

zh_TWChinese