+void
+Sequence::parse_annot(std::string data, int start_index, int end_index)
+{
+ std::string species_name;
+ int start=0;
+ int end=0;
+ std::string name;
+ std::string type;
+
+
+ bool status = spirit::parse(data.begin(), data.end(),
+ //begin grammar
+ (
+ (+(spirit::alpha_p))[spirit::assign_a(species_name)] >>
+ *((spirit::uint_p[spirit::assign_a(start)] >>
+ spirit::uint_p[spirit::assign_a(end)] >>
+ (*(spirit::alpha_p))[spirit::assign_a(name)] >>
+ (*(spirit::alpha_p))[spirit::assign_a(type)]
+ // to understand, read the comment above
+ // struct push_back_annot
+ )[push_back_annot(annots, start, end, name, type)])
+ ),
+ //end grammar
+ spirit::space_p).full;
+}
+
+/*
+void
+Sequence::load_annot(std::istream& data_stream, int start_index, int end_index)
+{
+ std::string file_data_line;
+ annot an_annot;
+ std::string::size_type space_split_i;
+ std::string annot_value;
+ std::list<annot>::iterator list_i;
+ std::string err_msg;
+
+ annots.clear();
+
+ getline(data_stream,file_data_line);
+ species = file_data_line;
+
+ // end_index = 0 means no end was specified, so cut to the end
+ if (end_index == 0)
+ end_index = sequence.length();
+
+ //std::cout << "START: " << start_index << " END: " << end_index << std::endl;
+
+ while ( !data_stream.eof() )
+ {
+ getline(data_stream,file_data_line);
+ if (file_data_line != "")