void GetFilteredRedundantGis(const IBlastSeqInfoSrc & seqinfo_src, int oid, vector<int> & gis) { gis.resize(0); if (! seqinfo_src.HasGiList()) { return; } list< CRef<CSeq_id> > seqid_list = seqinfo_src.GetId(oid); gis.reserve(seqid_list.size()); ITERATE(list< CRef<CSeq_id> >, id, seqid_list) { if ((**id).IsGi()) { gis.push_back((**id).GetGi()); } } sort(gis.begin(), gis.end()); }
void GetFilteredRedundantSeqids(const IBlastSeqInfoSrc & seqinfo_src, int oid, vector<string> & seqids, bool use_gi) { seqids.resize(0); if (! seqinfo_src.HasGiList()) { return; } list< CRef<CSeq_id> > seqid_list = seqinfo_src.GetId(oid); ITERATE(list< CRef<CSeq_id> >, id, seqid_list) { if (use_gi) { if ((**id).IsGi()) { string sid_string = "gi:" + (*id)->GetSeqIdString(true); seqids.push_back(sid_string); } } else { const CTextseq_id* tsid = (*id)->GetTextseq_Id(); if (tsid && tsid->IsSetAccession()) { string sid_string = "seqid:" + (*id)->GetSeqIdString(true); seqids.push_back(sid_string); } else if ((*id)->IsPdb()) { string sid_string = "seqid:" + (*id)->GetSeqIdString(true); seqids.push_back(sid_string); } } } }