From 1dac884d9e7bee326b9c106ca04f5304045eb189 Mon Sep 17 00:00:00 2001 From: hp0404 Date: Fri, 5 Mar 2021 17:45:22 +0200 Subject: [PATCH 1/2] Add Reference model --- scite/models.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scite/models.py b/scite/models.py index f39cb9c..a7bee95 100644 --- a/scite/models.py +++ b/scite/models.py @@ -1,7 +1,15 @@ # -*- coding: utf-8 -*- -from typing import Any, AnyStr, Dict, List +from typing import Any, AnyStr, Dict, List, NamedTuple +import pandas as pd DOI = AnyStr DOIs = List[DOI] -JSON = Dict[str, Any] \ No newline at end of file +JSON = Dict[str, Any] +Reference = NamedTuple( + "References", [ + ("target_doi", DOI), + ("concise_references", list), + ("detailed_references", pd.DataFrame) + ] +) \ No newline at end of file From cecd52b44f61a15304b663293ff0c35243d043bb Mon Sep 17 00:00:00 2001 From: hp0404 Date: Fri, 5 Mar 2021 17:46:27 +0200 Subject: [PATCH 2/2] add detailed references func --- scite/processing.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 scite/processing.py diff --git a/scite/processing.py b/scite/processing.py new file mode 100644 index 0000000..fdfc157 --- /dev/null +++ b/scite/processing.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +import pandas as pd + +from .papers import get_papers_by_target +from .models import DOI, Reference + + +def generate_references(doi: DOI) -> Reference: + """Get a detailed info on papers citing a given DOI. + + + Examples + -------- + >>> refs = generate_references("10.1017/cbo9780511628283.008") + >>> refs.target_doi + '10.1017/cbo9780511628283.008' + """ + refs = get_papers_by_target(doi) + if refs == {"detail": "Paper not found"}: + raise ValueError("Paper not found in the database.") + + concise_refs = [*refs["papers"].keys()] + detailed_table = pd.DataFrame([*refs["papers"].values()]) + return Reference( + target_doi=doi, + concise_references=concise_refs, + detailed_references=detailed_table + )