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
Example #3
0
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
Example #4
0
    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
Example #5
0
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
Example #6
0
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
Example #7
0
def deferred_extract_references(doi):
    res = get_scopus_references(doi)
    results = []
    for r in res:
        results.append(getPubMedID(r))
    return results