def extract_refs(dois, urls, pmids): results = {} def gen_error(id): return {'message': 'No references found for {}.'.format(id)} if dois: for doi in dois: results[doi] = [] try: r = get_scopus_references(doi) refs = r.get('references', None) if not refs: results[doi] = gen_error(doi) else: for ref in refs: results[doi].append(getPubMedID(ref)) except HTTPException: results[doi] = gen_error(doi) if urls: for url in urls: results[url] = [] try: r = get_scopus_references(url) refs = r.get('references', None) if not refs: results[url] = gen_error(url) else: for ref in refs: results[url].append(getPubMedID(ref)) except HTTPException: results[url] = gen_error(url) if pmids: for pmid in pmids: results[pmid] = [] try: r = getReferenceInfo(getRefID(pmid)) if not r: results[pmid] = gen_error(pmid) else: for ref in r: results[pmid].append(ref) except HTTPException: results[pmid] = gen_error(pmid) return results
def wrapper(*args, **kwargs): result = func(*args, **kwargs) ret_dict = {'length': 0, 'result': []} if type(result) == list: for r in result: ret_dict['result'].append(getPubMedID(r)) ret_dict['length'] = len(ret_dict['result']) else: ret_dict['result'].append(getPubMedID(result)) ret_dict['length'] = 1 return ret_dict
def deferred_search(citations, cr_only=False, md_only=False): results = multi_search(citations, cr_only, md_only) final = [] for res in results: final.append(getPubMedID(res)) return final
def post(self): data = self.parser.parse_args() query = data.get('query', None) get_all = data.get('chkbox', False) if not query: return self.get() result = integrated_lookup(query.strip(), return_all=get_all) ret_dict = {'length': 0, 'result': []} if get_all: for r in result: ret_dict['result'].append(getPubMedID(r)) ret_dict['length'] = len(ret_dict['result']) else: ret_dict['result'].append(getPubMedID(result)) ret_dict['length'] = 1 return ret_dict
def batch_lookup(refl): """ Mendeley & Crossref integrated lookup. This one receives a list of references and resolves them based on the integrated lookup, returning only the best result of each citation with it's respective pubmedI lookpu result :param refl: List of references to resolve :return: List of reference lookup results """ results = [] for ref in refl: res = integrated_lookup(ref, return_all=False, return_empty=True) res = getPubMedID(res) results.append(res) return results
def lookup_and_extract(citation_list): results = [] for citation in citation_list: ref = getPubMedID(single_search(citation)) doi = ref.get('ids', {}).get('doi', None) pmid = ref.get('ids', {}).get('pubmed', None) url = ref.get('ids', {}).get('scopus', None) dois = [doi] if doi else [] pmids = [pmid] if pmid else [] urls = [url] if url else [] extracted_refs = extract_refs(dois, urls, pmids) ref['references'] = extracted_refs results.append(ref) return results
def deferred_extract_references(doi): res = get_scopus_references(doi) results = [] for r in res: results.append(getPubMedID(r)) return results