From ae79bff6dfabd8d96dad5bd1488ff0268f15fc32 Mon Sep 17 00:00:00 2001 From: Ayush Garg Date: Mon, 4 Apr 2022 13:37:55 +0800 Subject: [PATCH] fixed bugs --- .vs/ProjectSettings.json | 3 + .vs/VSWorkspaceState.json | 8 +++ .vs/getpaper/v17/.suo | Bin 0 -> 16384 bytes .vs/slnx.sqlite | Bin 0 -> 118784 bytes .../__pycache__/pygetpapers.cpython-37.pyc | Bin 15339 -> 15339 bytes .../repositoryinterface.cpython-37.pyc | Bin 2193 -> 2424 bytes pygetpapers/config.ini | 2 +- pygetpapers/pygetpapers.py | 1 - .../__pycache__/arxiv.cpython-37.pyc | Bin 5061 -> 5235 bytes .../__pycache__/crossref.cpython-37.pyc | Bin 4570 -> 4625 bytes .../__pycache__/europe_pmc.cpython-37.pyc | Bin 15545 -> 15183 bytes pygetpapers/repository/arxiv.py | 22 ++++--- pygetpapers/repository/crossref.py | 2 +- pygetpapers/repository/europe_pmc.py | 61 +++++++++--------- pygetpapers/repositoryinterface.py | 4 ++ 15 files changed, 59 insertions(+), 44 deletions(-) create mode 100644 .vs/ProjectSettings.json create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/getpaper/v17/.suo create mode 100644 .vs/slnx.sqlite diff --git a/.vs/ProjectSettings.json b/.vs/ProjectSettings.json new file mode 100644 index 0000000..f8b4888 --- /dev/null +++ b/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 0000000..6e20768 --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,8 @@ +{ + "ExpandedNodes": [ + "", + "\\pygetpapers" + ], + "SelectedNode": "\\pygetpapers\\pygetpapers.py", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/getpaper/v17/.suo b/.vs/getpaper/v17/.suo new file mode 100644 index 0000000000000000000000000000000000000000..a3ace1cf7950d2fb717998c2d4e4d897ebb0ae88 GIT binary patch literal 16384 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 G?|%asdMwuf literal 0 HcmV?d00001 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..ab7a7dafa7e12f2e066823aa211ed471839c7649 GIT binary patch literal 118784 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 YP43Fi3wKV)9w9SAb_p5gUy|$p060VKOaK4? diff --git a/pygetpapers/repository/__pycache__/crossref.cpython-37.pyc b/pygetpapers/repository/__pycache__/crossref.cpython-37.pyc index 0d31bdc630dac5ad470938411254b683268bc9a2..a96e150da0c25a7217625b4064b2234c12cc8c60 100644 GIT binary patch delta 88 zcmcbmJW++uiI%wiD^m|Y0EiX{5C8xG diff --git a/pygetpapers/repository/__pycache__/europe_pmc.cpython-37.pyc b/pygetpapers/repository/__pycache__/europe_pmc.cpython-37.pyc index c96ace053bef2f399a5ea631c6d259b384d2f8f6..eaa9facf8f57576528b4090d070acb24303dde2a 100644 GIT binary patch delta 3434 zcmb7GS!`Qb8NTOwyI$j@iL>vkv$$!RG;0?paoVJAl4;y_dKj?WoSVjtoutP%rOjM7 zou-s|nU>CxKm%gbAYclE1Wbf9MSui?5kepyKp-qef;T`T%>xg8Kw|j+<1|gvdBN8G z?tlO7{L9%M-}wDC->BE?Qs5W3J$1?W%mZH;i9Tp;*-%r~w2j(`!W2eQcItq)C8eb` zs!5(Tln(K=R6>sbYDV3o9yRnaC^O`BN_ZDF;v zmDSNUR!@Vhfwr?o+QFJ=Cu^o%tc8YHD?P~CXg3SeL#&<}GfJ#>g2ro*h4j<7y@l#Lvr$H2ky9itPhpN8209X+YAK{j+pVMDra(?Z7> znNxzp|HJ}L2T9Hr<7;|+o0E4{5)d`kGBPUqt!GNcSOu%RL!cs6ton{Z{kn^di?^(m zBqDxfO_xrvW9&G{>)8nw26+Q31HUIl*fv6};-)P~n#3a;B`1Z&KCtmO7|l>jb(3UO zMzS`hX6?+9b-<$;#B^*DqQD#EM7jPY(_yMhguidvnYyIGTY0FOHq&Yn)3RmFI!z~U zH#KJMSF)PvG%V$cVJ%m(F61q#{F-5VXlFLlwWWer#dK|M5M}|vJrFpUeG3MeRlq42 zZ;@BjtUGHr9fs3%ZxV3n0EufyV$WKywqHP9x2c-$Ezkwp0~E=646kWr4%3rVvtH8+ z*=vcLL{VN^(|JG`^a6<&9Fd)To=+{u4f6eY$%MG@cAj(UALOLE!B*;YBc zM2Yh>85TbnC}}ZP;;CfDh_5WfS#sV;t}G|eVH{k=^~C&Qd^NGEb8*vo!rl~5Czf>a zJ7=dg=;MvT>I#Wb*NB@|bKL-=YdQm$#p3HOcUdm*)T^|Qr*$L25=KHia)mmYASf=O z8L0t)DR?ry0E$N=)}6mbG(p^@wLanjj!*Rv7d-0)ku|=us?Vn9LsudF8{()t+jel{|9E*j%q;wPRS|3M7%5J1o&gBLelwO8`N9|bP;W|GU7Q+k~1nYEO`gTR9( zVo&xb*8`#(@MNk06j?$)QAx4thw^#U0MUqFwGtOuk31{j|1$?(_g)+72iLp{;aT9; zeAQ1O7h~qb2>VLkD+YXTlLql;U$0#@X+#tj)Rjo1eX5;eqTp9vWCpD}l@MkAsskf0 zx)mR5E!$B)BcxjVurNY=;z{9o7-hO>i8P8I7j^mf`Sxu;DH=xYH_BVAK_?H3|2B2l zrh^)95N{Np0;4|__qz8OZI_hv5z;D72aa{)B;^eVrxBtEXAopTLP*J~bOVL$6psVV zC2nLNN7&<4{5$YoaVx5+`DzUzO}I}yF739pJn~!uCoAH_>p>GQ4x;jdV!JX_vCG*T7ivvy|EKaKX~jHqWw_$wi$*#X zU*Ie0I490~?u=vl_{?&L_72(s+Or$to`cJJ^(;d)UTX zWKwK2f4JAHxZLuupe*4mdd?uo;(Z&b?;`AN%6e-mEZh4wNOA>Jb2HQN@tF(L(V6gg zWPB%OetXx;JD=*MwQXfW7Ek*;Pa695bSmfC+YFVeYq|%Kd)ypyb#&d2t{JOV-n)~Wyh(iXY*dm=XU`$@&y-do&C>sCidCLc%YI%0oa&y1s zS3(~>7xTS?TOk?evraui8#xE$blMX!2yy}Oxu(E&ru(jHmk}QlpY&wmhLSy8Q!E|H zMoglQZvas7{lm>A0sP$Os7ge8tAwqWi3dksl}jY(;yzFmU+X9r-TiiGL4SYK06NY2 z^5;Zi*^tM%)Z?$A*V`|;=8M1!i`V-fR<{8av~vr*a!!4D4c1!1fc1t(4dSPL?U!&w z(2${@K=yACFmx`HkiC9BbbbV+Qz{%uIHB-J!b3*v7;hCH z4%EXQ@yS4_rv(R)8z3IuyaxgA3A_^^=gAleBRLPZi^Ubjr;+ay@xd}OC9V%njrQ5@rj%jw-{NRPb+Iq8%eLQwUmC0K!_O(78{R$kBSf6NC3r4 KBbO~u^Zx-nf%-WB delta 3896 zcmaJ^X>1$E72a7cm&;SME{n1(Q@5#umMzITe8jXw+p=j%wd5$CI%OHn%BC$!%5ar9 z?lN*B=Kz8xNCwEyKnmKXX@V56P@o0c0x8fYP1>f3+dm5g0s5mrkEH!q^k3f_+7iXO zC9xmhzIpG>JLY)&#WxHu3t6Qb}ScFDdJ#AupXftb|Eo?7sWsS6r z?W651N;_B+-Ork7jJ42C)=Ilr8|`N8w1;)jINMJTuo&%So%A5?*IeOC%jR-!ZX90oy#PwUAetT~ z8mWXQplZY*0r>=okEkRJZyE`y_=fzORY_@MDmNG3vL=rE6P<^^Sj@$n;fD_+97Wja z0q+Oiig?>UwCVy1KOT5Act+vLzYYK^!G$ZuB2Zm5qFmScEz7n2ZYfyxH5Jy-mJITs zJQ}}XxotOST(HTyj-?{X<1gPB*(o`uJX+gX&_PrOQ6@!oDavM*#Sl}$0nfU@T*$MD zcsX#0bc^=`hgRd@AIG%CJjFm|j3JXi6{1Ttes!Wogn5}#mW`D2pI%yX5RXyRdIfI+CRYy?z%SgKx^YWA8 z8*N?giI~Bg#Fy1)KX;*Y}T?=`Gb4kdo8Ajnsc7;fu~c zbX4F-2%#F_rhjtTT#RPs=FEJahmqZYuuC{yThw{>i4EH^YRDWG+rJ(AX-Z_zDpM3MJWQOXA+%_UOJw!2hHb}+>D zL{=4Obd+m;Xka|hOTiUqyMV2%2W=wFxq+|Qu6Yfb7KJ2#*JQ-s?xF1pj&9LQ`23mWh>vz#XjDw<9WRJ*x*>;2s?sY$C0K4#v;5p~X=I?BzK2F}x3<3&08Ft&EkOgU0ph z662l7mtmSnT|vkoTthe~?hc+!{2IwWB4ETET`Eb1bQpVA-Uxux<{1F=tg7MibsKJ@ zN?aP6Ibc-!yiz1~($TKvmllg_^D=6_0^sP&nMIb#^Cje{;?F}-_>rO`zy8y51MuG?Q^QR{)$uX@JACy|PKmLRBd7UqQ0)_h-y(d9fGK!TZXDxiZi%fd Tn8yi70Rx5mkGqUm@lf7jT diff --git a/pygetpapers/repository/arxiv.py b/pygetpapers/repository/arxiv.py index 0010836..dd7be30 100644 --- a/pygetpapers/repository/arxiv.py +++ b/pygetpapers/repository/arxiv.py @@ -3,7 +3,7 @@ from tqdm import tqdm -import arxiv +import arxiv as arxiv_wrapper from pygetpapers.download_tools import DownloadTools from pygetpapers.pgexceptions import PygetpapersError @@ -50,7 +50,7 @@ from pygetpapers.repositoryinterface import RepositoryInterface class Arxiv(RepositoryInterface): - """Arxiv class which handles arxiv repository""" + """Arxiv class which handles arxiv repository. It uses arxiv repository wrapper to make its query(check https://github.com/lukasschwab/arxiv.py)""" def __init__(self): self.download_tools = DownloadTools(ARXIV) @@ -76,14 +76,14 @@ def arxiv( :rtype: dict """ logging.info("Making request to Arxiv through pygetpapers") - search = arxiv.Search( - query=query, max_results=cutoff_size, sort_by=arxiv.SortCriterion.Relevance + search = arxiv_wrapper.Search( + query=query, max_results=cutoff_size, sort_by=arxiv_wrapper.SortCriterion.Relevance ) - metadata_dictionary = {} logging.info("Got request result from Arxiv through pygetpapers") + search_results = search.get() + metadata_dictionary = self._make_metadata_dict_from_arxiv_output(search_results) - self._make_dict_from_arxiv_output(metadata_dictionary, search) for paper in metadata_dictionary: self.download_tools._add_download_status_keys(paper, metadata_dictionary) if getpdf: @@ -91,11 +91,11 @@ def arxiv( self.download_tools.handle_creation_of_csv_html_xml( makecsv, makehtml, makexml, metadata_dictionary, ARXIV_RESULT ) - self.make_json_from_arxiv_dict(metadata_dictionary) + self.write_metadata_json_from_arxiv_dict(metadata_dictionary) return metadata_dictionary - def make_json_from_arxiv_dict(self, metadata_dictionary): + def write_metadata_json_from_arxiv_dict(self, metadata_dictionary): """Iterates through metadata_dictionary and makes json metadata file for papers :param metadata_dictionary: metadata dictionary for papers @@ -110,8 +110,9 @@ def make_json_from_arxiv_dict(self, metadata_dictionary): self.download_tools.dumps_json_to_given_path(jsonurl, metadata_dictionary[result]) @staticmethod - def _make_dict_from_arxiv_output(metadata_dictionary, search): - for result in search.get(): + def _make_metadata_dict_from_arxiv_output(search_results): + metadata_dictionary = {} + for result in search_results: url_encoded_id_of_paper = str(result.entry_id).rsplit("/", 1)[-1] metadata_dictionary[url_encoded_id_of_paper] = {} @@ -142,6 +143,7 @@ def _make_dict_from_arxiv_output(metadata_dictionary, search): result.pdf_url) paper_dict[ENTRY_ID] = str( result.entry_id) + return metadata_dictionary def download_pdf(self, metadata_dictionary): """Downloads pdfs for papers in metadata dictionary diff --git a/pygetpapers/repository/crossref.py b/pygetpapers/repository/crossref.py index 19c8891..632ee3e 100644 --- a/pygetpapers/repository/crossref.py +++ b/pygetpapers/repository/crossref.py @@ -34,7 +34,7 @@ class CrossRef(RepositoryInterface): - """CrossRef class which handles crossref repository""" + """CrossRef class which handles crossref repository. It uses habanero repository wrapper to make its query""" def __init__(self): diff --git a/pygetpapers/repository/europe_pmc.py b/pygetpapers/repository/europe_pmc.py index fdc4d5a..a2cc522 100644 --- a/pygetpapers/repository/europe_pmc.py +++ b/pygetpapers/repository/europe_pmc.py @@ -2,6 +2,7 @@ import logging import os import time +from numpy import True_ import pandas as pd from tqdm import tqdm @@ -70,7 +71,7 @@ class EuropePmc(RepositoryInterface): def __init__(self): self.download_tools = DownloadTools(EUROPEPMC) - def europepmc(self, query, cutoff_size, synonym=True, cursor_mark="*"): + def query(self, query, cutoff_size, synonym=True, cursor_mark="*"): """Queries eupmc for given query for given number(cutoff_size) papers :param query: query @@ -83,42 +84,42 @@ def europepmc(self, query, cutoff_size, synonym=True, cursor_mark="*"): :rtype: list """ cutoff_size = int(cutoff_size) - cursor_mark=cursor_mark - ( - list_of_papers, - maximum_hits_per_page, - morepapers, - len_list_papers, - ) = self.create_parameters_for_paper_download() + maximum_hits_per_page=1000 + morepapers=True + len_list_papers=0 counter=0 + print(len_list_papers) + print(cutoff_size) while len_list_papers <= cutoff_size and morepapers is True: - retireved_metadata_dictionary = self.build_and_send_query( + retrieved_metadata_dictionary = self.build_and_send_query( maximum_hits_per_page, cursor_mark, query, synonym ) - if retireved_metadata_dictionary: + if retrieved_metadata_dictionary: counter += 1 - totalhits = retireved_metadata_dictionary[RESPONSE_WRAPPER][HITCOUNT] + totalhits = retrieved_metadata_dictionary[RESPONSE_WRAPPER][HITCOUNT] if counter == 1: logging.info("Total Hits are %s", totalhits) if int(totalhits) == 0: logging.warning("Could not find more papers") break - list_of_papers,morepapers = self._add_papers_to_list_of_papers(list_of_papers,retireved_metadata_dictionary) - len_list_papers+=len(list_of_papers) + list_of_paper_metadata,morepapers = self._metadata_dictionary_to_list_of_dictionaries_for_each_paper(retrieved_metadata_dictionary) + len_list_papers+=len(list_of_paper_metadata) morepapers,cursor_mark = self.add_cursor_mark_if_exists( - retireved_metadata_dictionary + retrieved_metadata_dictionary ) - list_of_papers = self.remove_extra_papers_from_list(cutoff_size, list_of_papers) - dictionary_with_papers = self._make_metadata_dictionary_from_list_of_papers(list_of_papers) + list_of_paper_metadata = self.remove_extra_papers_from_list(cutoff_size, list_of_paper_metadata) + dictionary_with_papers = self._make_dictionary_from_list_of_papers(list_of_paper_metadata) + # We use this dictionary_with_papers as a sub dictionary for the metadata_dictionary metadata_dictionary={CURSOR_MARK:cursor_mark,"papers":dictionary_with_papers} return metadata_dictionary - def remove_extra_papers_from_list(self, cutoff_size, list_of_papers): - if len(list_of_papers) > cutoff_size: - list_of_papers = list_of_papers[0:cutoff_size] - return list_of_papers + def remove_extra_papers_from_list(self, cutoff_size, list_of_paper_metadata): + if len(list_of_paper_metadata) > cutoff_size: + list_of_paper_metadata = list_of_paper_metadata[0:cutoff_size] + return list_of_paper_metadata - def _add_papers_to_list_of_papers(self, list_of_papers,retireved_metadata_dictionary): + def _metadata_dictionary_to_list_of_dictionaries_for_each_paper(self,retireved_metadata_dictionary): + list_of_paper_metadata=[] morepapers = True if RESULT in retireved_metadata_dictionary[RESPONSE_WRAPPER][RESULT_LIST]: single_result = isinstance( @@ -126,15 +127,15 @@ def _add_papers_to_list_of_papers(self, list_of_papers,retireved_metadata_dictio ) papers = retireved_metadata_dictionary[RESPONSE_WRAPPER][RESULT_LIST][RESULT] if single_result and PMCID in papers: - list_of_papers.append(papers) + list_of_paper_metadata.append(papers) else: for paper in retireved_metadata_dictionary[RESPONSE_WRAPPER][RESULT_LIST][RESULT]: if PMCID in paper: - list_of_papers.append(paper) + list_of_paper_metadata.append(paper) else: morepapers = False logging.warning("Could not find more papers") - return list_of_papers,morepapers + return list_of_paper_metadata,morepapers def add_cursor_mark_if_exists(self, retireved_metadata_dictionary): @@ -167,12 +168,12 @@ def create_parameters_for_paper_download(): :rtype: [type] """ - list_of_papers = [] + list_of_paper_metadata = [] morepapers = True number_of_papers_there = 0 maximum_hits_per_page = 1000 return ( - list_of_papers, + list_of_paper_metadata, maximum_hits_per_page, morepapers, number_of_papers_there, @@ -261,7 +262,7 @@ def run_eupmc_query_and_get_metadata( cursor_mark= (update[CURSOR_MARK]) else: cursor_mark = "*" - metadata_dictionary = self.europepmc( + metadata_dictionary = self.query( query, cutoff_size, cursor_mark=cursor_mark, synonym=synonym ) self.make_metadata_json( @@ -573,8 +574,6 @@ def add_fields_to_resultant_dict( else: logging.warning("Title not found for paper %s", paper_number) - - def make_metadata_json(self, resultant_dict, update=False): if update: resultant_dict["papers"].update(update["papers"]) @@ -584,9 +583,9 @@ def make_metadata_json(self, resultant_dict, update=False): self.download_tools.dumps_json_to_given_path(jsonurl, resultant_dict) return resultant_dict - def _make_metadata_dictionary_from_list_of_papers(self, list_of_papers): + def _make_dictionary_from_list_of_papers(self, list_of_paper_metadata): resultant_dict = {} - for paper_number, paper in tqdm(enumerate(list_of_papers)): + for paper_number, paper in tqdm(enumerate(list_of_paper_metadata)): paper_number += 1 identifier_for_paper = paper[PMCID] resultant_dict = self.download_tools._make_initial_columns_for_paper_dict( diff --git a/pygetpapers/repositoryinterface.py b/pygetpapers/repositoryinterface.py index ec1087c..86eaea0 100644 --- a/pygetpapers/repositoryinterface.py +++ b/pygetpapers/repositoryinterface.py @@ -18,6 +18,10 @@ RXIV = "rxiv" class RepositoryInterface(ABC): + def __init__(self) -> None: + super().__init__() + self.metadata_dictionary=dict() + @abstractmethod def noexecute(self, query_namespace): """Takes in the query_namespace object as the parameter and runs the query search for given search parameters but only prints the output and not write to disk.