Анализ файла с помощью D

Я новичок в D и хотел бы проанализировать биологический файл формы

>name1
acgcgcagagatatagctagatcg
aagctctgctcgcgct
>name2
acgggggcttgctagctcgatagatcga
agctctctttctccttcttcttctagagaga
>name2
gag ggagag

так, чтобы я мог захватить «заголовки» name1, name2, name3 с соответствующими данными «последовательности»,. .acgcg ... прочее.

Теперь у меня есть this. Но он будет выполнять итерацию только построчно,

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,.....]
7
задан eastafri 24 January 2012 в 19:57
поделиться