int ReadFastaQueries(const string& filename, vector< CRef<objects::CSeq_loc> >& seqs, CRef<objects::CScope>& scope, bool parse_deflines /* = false*/, objects::CSeqIdGenerator* id_generator /* = NULL*/) { seqs.clear(); CNcbiIfstream instream(filename.c_str()); if (!instream) { return -1; } CStreamLineReader line_reader(instream); CFastaReader::TFlags flags = CFastaReader::fAssumeProt | CFastaReader::fForceType; if (!parse_deflines) { flags |= CFastaReader::fNoParseID; } CFastaReader fasta_reader(line_reader, flags); if (id_generator) { fasta_reader.SetIDGenerator(*id_generator); } scope->AddDefaults(); while (!line_reader.AtEOF()) { CRef<CSeq_entry> entry = fasta_reader.ReadOneSeq(); if (entry == 0) { return -1; } scope->AddTopLevelSeqEntry(*entry); CTypeConstIterator<CBioseq> itr(ConstBegin(*entry)); CRef<CSeq_loc> seqloc(new CSeq_loc()); seqloc->SetWhole().Assign(*itr->GetId().front()); seqs.push_back(seqloc); } return 0; }
int ReadMsa(const string& filename, CRef<CSeq_align>& align, CRef<CScope> scope, bool parse_deflines /* = false*/, objects::CSeqIdGenerator* id_generator /* = NULL*/) { if (scope.Empty()) { return -1; } CNcbiIfstream instream(filename.c_str()); if (!instream) { return -1; } CStreamLineReader line_reader(instream); CFastaReader::TFlags flags = CFastaReader::fAssumeProt | CFastaReader::fForceType | CFastaReader::fValidate; if (!parse_deflines) { flags |= CFastaReader::fNoParseID; } CFastaReader fasta_reader(line_reader, flags); if (id_generator) { fasta_reader.SetIDGenerator(*id_generator); } CRef<CSeq_entry> entry = fasta_reader.ReadAlignedSet(-1); if (entry.Empty()) { return -1; } scope->AddTopLevelSeqEntry(*entry); // notify of a problem if the whole file was not read if (!line_reader.AtEOF()) { return -1; } align = entry->GetAnnot().front()->GetData().GetAlign().front(); return 0; }
bool ReadWaypointFile(struct zzip_dir *dir, const char *path, WaypointFileType file_type, Waypoints &way_points, WaypointFactory factory, OperationEnvironment &operation) { auto *reader = CreateWaypointReader(file_type, factory); if (reader == nullptr) return false; bool success = false; ZipLineReader line_reader(dir, path, IgnoreError(), Charset::AUTO); if (!line_reader.error()) { reader->Parse(way_points, line_reader, operation); success = true; } delete reader; return success; }