私は D が初めてで、次の形式の生物学的ファイルを解析したいと考えています。
>name1
acgcgcagagatatagctagatcg
aagctctgctcgcgct
>name2
acgggggcttgctagctcgatagatcga
agctctctttctccttcttcttctagagaga
>name2
gag ggagag
「ヘッダー」name1、name2、name3 を対応する「シーケンス」データ、..acgcg... などでキャプチャできるようにします。
今、私はこれを持っていますが、行ごとに繰り返すだけです。
import std.stdio;
import std.stream;
import std.regex;
int main(string[] args){
auto filename = args[1];
auto entry_name = regex(r"^>(.*)"); //captures header only
auto fasta_regex = regex(r"(\>.+\n)([^\>]+\n)"); //captures header and correponding sequence
try {
Stream file = new BufferedFile(filename);
foreach(ulong n, char[] line; file) {
auto name_capture = match(line,entry_name);
writeln(name_capture.captures[1]);
}
file.close();
}
catch (FileException xy){
writefln("Error reading the file: ");
}
catch (Exception xx){
writefln("Exception occured: " ~ xx.toString());
}
return 0;
}
各項目がファイル内のエントリに対応する連想配列を作成できるように、ヘッダーとシーケンス データを抽出する良い方法を知りたいです。
[name1:acgcgcagagatatagctagatcgaagctctgctcgcgct,name2:acgggggcttgctagctcgatagatcgaagctctctttctccttcttcttctagagaga,.....]