diff --git a/modules/io/src/seq/fasta_io_handler.cc b/modules/io/src/seq/fasta_io_handler.cc index 919902088ea0a312a0acc48a27ca1cb6d996899d..198171208bd563319b3dd710fdcade308e58c5c9 100644 --- a/modules/io/src/seq/fasta_io_handler.cc +++ b/modules/io/src/seq/fasta_io_handler.cc @@ -92,17 +92,22 @@ void FastaIOHandler::Import(seq::SequenceList& aln, String error=str(format(error_msg) % line); throw IOException(error); } - String identifier=line.substr(1); - String sequence_str; - while (std::getline(instream, line) && line.size()>0 && line[0]!='>') { - if (line.find_first_not_of("\n\t ")==String::npos) { - continue; + String name=line.substr(1); + std::stringstream seq_string; + while (std::getline(instream, line)) { + if (!line.empty() && line[0]=='>') { + break; } - sequence_str+=line; - } - if (sequence_str.length()>0) { + for (String::iterator i=line.begin(), e=line.end(); i!=e; ++i) { + if (isspace(*i)) { + continue; + } + seq_string << *i; + } + } + if (!seq_string.str().empty()) { try { - seq::SequenceHandle seq=seq::CreateSequence(identifier, sequence_str); + seq::SequenceHandle seq=seq::CreateSequence(name, seq_string.str()); aln.AddSequence(seq); seq_count+=1; } catch (seq::InvalidSequence& e) {