76 const string& link_type,
77 vector<TUid>& neighbor_uids)
80 uids.push_back(query_uid);
88 const string& link_type,
89 vector<TUid>& neighbor_uids)
97 = link_set->GetIds().GetConstUidIterator();
98 if (link_set->GetIds().IsSetNum()) {
99 neighbor_uids.reserve(link_set->GetIds().GetNum());
101 for ( ; !it.
AtEnd(); ++it) {
102 neighbor_uids.push_back(*it);
111 const string& link_type)
114 uids.push_back(query_uid);
124 const string& link_type)
154 vector<TUid>& result_uids,
163 bexp.
SetDb().Set(db);
164 bexp.
SetExp().push_back(bel);
181 if (!bool_reply->GetUids().CanGetUids()) {
186 = bool_reply->GetUids().GetConstUidIterator();
188 result_uids.push_back(*it);
201 const string& query_string,
202 vector<TUid>& result_uids)
204 const unsigned int kMaxIdsInQueryString = 2500;
206 if (query_uids.empty()) {
210 if (query_uids.size() <= kMaxIdsInQueryString) {
214 ITERATE (vector<TUid>, uid, query_uids) {
215 if ( !uids.empty() ) {
221 string whole_query =
"(" + query_string +
") AND (" + uids +
")";
222 Query(whole_query, db, result_uids);
225 vector<TUid> subset_query_uids;
226 subset_query_uids.reserve(kMaxIdsInQueryString);
227 for (
size_t start = 0; start < query_uids.size();
228 start += kMaxIdsInQueryString) {
229 subset_query_uids.clear();
232 min(start + kMaxIdsInQueryString, query_uids.size());
233 for (
size_t i = start;
i < end; ++
i) {
234 subset_query_uids.push_back(query_uids[
i]);
237 FilterIds(subset_query_uids, db, query_string, result_uids);
270 switch (e2req.
Which()) {
299 if (db && !db->
Get().empty()) {
300 return "DB=" + db->
Get();
307 #ifdef NCBI_STRICT_GI
310 const string& db_from,
312 vector<TGi>& neighbor_uids)
314 vector<TUid> vi_neighbor_uids;
316 ITERATE(vector<TUid>, it, vi_neighbor_uids) {
323 const string& link_type,
324 vector<TGi>& neighbor_uids)
326 vector<TUid> vi_query_uids;
327 ITERATE(vector<TGi>, it, query_uids) {
328 vi_query_uids.push_back(
GI_TO(
TUid, *it));
330 vector<TUid> vi_neighbor_uids;
331 GetNeighbors(vi_query_uids, db, link_type, vi_neighbor_uids);
332 ITERATE(vector<TUid>, it, vi_neighbor_uids) {
338 const string& db_from,
345 const string& db_from,
348 vector<TUid> vi_query_uids;
349 ITERATE(vector<TGi>, it, query_uids) {
350 vi_query_uids.push_back(
GI_TO(
TUid, *it));
363 vector<TGi>& result_uids,
368 vector<TUid> vi_result_uids;
369 Query(
query, db, vi_result_uids, start_offs, count, reply);
370 ITERATE(vector<TUid>, it, vi_result_uids) {
377 const string& query_string,
378 vector<TGi>& result_uids)
380 vector<TUid> vi_query_uids;
381 ITERATE(vector<TGi>, it, query_uids) {
382 vi_query_uids.push_back(
GI_TO(
TUid, *it));
384 vector<TUid> vi_result_uids;
385 FilterIds(vi_query_uids, db, query_string, vi_result_uids);
386 ITERATE(vector<TUid>, it, vi_result_uids) {
394 vector<TUid> vi_uids;
395 ITERATE(vector<TGi>, it, uids) {
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
CRef< CEntrez2_docsum_list > GetDocsums(const vector< TUid > &uids, const string &db)
Retrieve the docsums for a set of UIDs.
virtual string GetAffinity(const CEntrez2_request &request) const
Get DB affinity of the request.
CRef< CEntrez2_link_count_list > GetNeighborCounts(TUid query_uid, const string &db)
Retrieve counts of the various types of neighbors available.
void FilterIds(const vector< TUid > &query_uids, const string &db, const string &query_string, vector< TUid > &result_uids)
Given some uids, a database, and an entrez query string, determine which of these uids match the quer...
void Query(const string &query, const string &db, vector< TUid > &result_uids, size_t start_offs=0, size_t count=0, TReply *reply=0)
Some other simplified interfaces.
void GetNeighbors(TUid query_uid, const string &db_from, const string &db_to, vector< TUid > &neighbor_uids)
A simplified interface for getting neighbors (links)
CEntrez2_boolean_element –.
void AssignUids(const vector< TUid > &uids)
#define GI_FROM(T, value)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define ENTREZ_ID_FROM(T, value)
const TPrim & Get(void) const
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
virtual CRef< CEntrez2_link_set > AskGet_links(const CEntrez2_get_links &req, TReply *reply=0)
void SetDb(const TDb &value)
Assign a value to Db data member.
const TGet_docsum & GetGet_docsum(void) const
Get the variant data.
const TDb & GetDb(void) const
Get the Db member data.
const TEval_boolean & GetEval_boolean(void) const
Get the variant data.
const TGet_term_list & GetGet_term_list(void) const
Get the variant data.
virtual CRef< CEntrez2_link_count_list > AskGet_link_counts(const CEntrez2_id &req, TReply *reply=0)
const TUids & GetUids(void) const
Get the Uids member data.
const TGet_term_pos & GetGet_term_pos(void) const
Get the variant data.
const TGet_linked & GetGet_linked(void) const
Get the variant data.
void SetUids(TUids &value)
Assign a value to Uids data member.
void SetLimits(TLimits &value)
Assign a value to Limits data member.
void SetUid(TUid value)
Assign a value to Uid data member.
const TGet_links & GetGet_links(void) const
Get the variant data.
const TDb & GetDb(void) const
Get the Db member data.
void SetReturn_UIDs(TReturn_UIDs value)
Assign a value to Return_UIDs data member.
const TGet_link_counts & GetGet_link_counts(void) const
Get the variant data.
TExp & SetExp(void)
Assign a value to Exp data member.
const TDb & GetDb(void) const
Get the Db member data.
const TRequest & GetRequest(void) const
Get the Request member data.
const TDb & GetDb(void) const
Get the Db member data.
virtual CRef< CEntrez2_boolean_reply > AskEval_boolean(const CEntrez2_eval_boolean &req, TReply *reply=0)
void SetLinktype(const TLinktype &value)
Assign a value to Linktype data member.
void SetDb(const TDb &value)
Assign a value to Db data member.
const TQuery & GetQuery(void) const
Get the Query member data.
E_Choice Which(void) const
Which variant is currently selected.
void SetQuery(TQuery &value)
Assign a value to Query data member.
const TDb & GetDb(void) const
Get the Db member data.
virtual CRef< CEntrez2_docsum_list > AskGet_docsum(const CEntrez2_id_list &req, TReply *reply=0)
const TGet_term_hierarchy & GetGet_term_hierarchy(void) const
Get the variant data.
void SetDb(const TDb &value)
Assign a value to Db data member.
const TDb & GetDb(void) const
Get the Db member data.
@ e_Get_term_pos
get position in term list
@ e_Get_link_counts
get all links from one UID
@ e_Get_docsum
get the DocSums
@ e_Get_linked
get subset of UID list which has links
@ e_Get_links
get specific links from a UID list
@ e_Get_term_list
get Term list by position
@ e_Get_term_hierarchy
get a hierarchy from a term
@ e_Eval_boolean
Boolean lookup.