int CLocalBlastDbAdapter::GetTaxId(const CSeq_id_Handle& idh) { int retval = static_cast<int>(kInvalidSeqPos); CConstRef<CSeq_id> id = idh.GetSeqId(); if (id.NotEmpty()) { int oid = 0; if (SeqidToOid(*id, oid)) { map<int, int> gi_to_taxid; m_SeqDB->GetTaxIDs(oid, gi_to_taxid); if (idh.IsGi()) { retval = gi_to_taxid[GI_TO(int, idh.GetGi())]; } else {
bool CLocation_constraint :: x_DoesLocationMatchDistanceConstraint(CConstRef <CBioseq> bioseq, const CSeq_loc& loc) const { if (!CanGetEnd5() && !CanGetEnd3()) { return true; } unsigned pos = loc.GetStop(eExtreme_Positional); int pos2; if (bioseq.NotEmpty()) { pos2 = (bioseq->IsSetLength() ? bioseq->GetLength() : 0) - pos - 1; } if (loc.GetStrand() == eNa_strand_minus) { if (CanGetEnd5()) { if (bioseq.Empty()) { return false; } else { if (!GetEnd5().Match(pos2)) { return false; } } } if (CanGetEnd3()) { return GetEnd3().Match(pos); } } else { if (CanGetEnd5() && !GetEnd5().Match(pos)) { return false; } if (CanGetEnd3()) { if (bioseq.Empty()) { return false; } return GetEnd3().Match(pos2); } } return true; };