From 3fa1104ff72aca864dddce5d804b3d7d7a2aa8a7 Mon Sep 17 00:00:00 2001 From: Alina Molkentin <alina.molkentin@studium.uni-hamburg.de> Date: Sat, 27 Nov 2021 14:05:01 +0100 Subject: [PATCH] =?UTF-8?q?neue=20Input=20Funktion=20f=C3=BCr=20die=20Test?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- verarbeitung/Processing.py | 33 +++++---- .../__pycache__/input_fj.cpython-36.pyc | Bin 0 -> 4299 bytes .../__pycache__/input_test.cpython-36.pyc | Bin 0 -> 2359 bytes .../__pycache__/json_demo.cpython-36.pyc | Bin 0 -> 865 bytes verarbeitung/input_test.py | 63 ++++++++++++++++++ verarbeitung/json_demo.py | 6 +- verarbeitung/json_text.json | 2 +- 7 files changed, 87 insertions(+), 17 deletions(-) create mode 100644 verarbeitung/__pycache__/input_fj.cpython-36.pyc create mode 100644 verarbeitung/__pycache__/input_test.cpython-36.pyc create mode 100644 verarbeitung/__pycache__/json_demo.cpython-36.pyc create mode 100644 verarbeitung/input_test.py diff --git a/verarbeitung/Processing.py b/verarbeitung/Processing.py index 5cfeba2..89f1ef2 100644 --- a/verarbeitung/Processing.py +++ b/verarbeitung/Processing.py @@ -18,6 +18,7 @@ import requests as req import sys from pathlib import Path from input_fj import input +from input_test import input_test_func from json_demo import output_to_json # adds every publication from input list to graph structure @@ -26,7 +27,7 @@ from json_demo import output_to_json # TO-DO: Listenelemente auf Korrektheit überprüfen def initialize_nodes_list(doi_input_list): for pub_doi in doi_input_list: - pub = input(pub_doi) + pub = input_test_func(pub_doi) not_in_nodes = True for node in nodes: # checks if a pub is already in nodes if (pub.doi_url == node.doi_url): @@ -34,6 +35,7 @@ def initialize_nodes_list(doi_input_list): break if (not_in_nodes): nodes.append(pub) + pub.group = "input" else: doi_input_list.remove(pub_doi) @@ -42,7 +44,7 @@ def initialize_nodes_list(doi_input_list): # adds a node for every publication unknown # adds edges for citations between publications def create_graph_structure_citations(pub, search_height, search_height_max): - for citation in pub._citations: + for citation in pub.citations: not_in_nodes = True for node in nodes: # checks every citation for duplication @@ -51,7 +53,7 @@ def create_graph_structure_citations(pub, search_height, search_height_max): break if (not_in_nodes): if (search_height <= search_height_max): - #citation.group = "citation" + citation.group = "height" nodes.append(citation) edges.append([pub.doi_url,citation.doi_url]) @@ -64,7 +66,7 @@ def create_graph_structure_citations(pub, search_height, search_height_max): # adds a node for every publication unknown # adds edges for references between publications def create_graph_structure_references(pub, search_depth, search_depth_max): - for reference in pub._references: + for reference in pub.references: not_in_nodes = True for node in nodes: # checks every reference for duplication @@ -73,7 +75,7 @@ def create_graph_structure_references(pub, search_depth, search_depth_max): break if (not_in_nodes): if (search_depth <= search_depth_max): - #reference.group = "reference" + reference.group = "depth" nodes.append(reference) edges.append([reference.doi_url,pub.doi_url]) @@ -93,13 +95,13 @@ def process_citations_rec(doi_citations, search_height, search_height_max): # create class object for every citation from list for pub_doi in doi_citations: - pub = input(pub_doi) + pub = input_test_func(pub_doi) create_graph_structure_citations(pub, search_height, search_height_max) # If the maximum height has not yet been reached, all references from the publication # are written to an array and the function is called again with this array. if (search_height < search_height_max): citations_list = [] - for citation in pub._citations: + for citation in pub.citations: # currently only the references with acs are stored in the URL, because we can't # extract the info from other sources. @@ -121,13 +123,13 @@ def process_references_rec(doi_references, search_depth, search_depth_max): # create class object for every citation from list for pub_doi in doi_references: - pub = input(pub_doi) + pub = input_test_func(pub_doi) create_graph_structure_references(pub, search_depth, search_depth_max) # If the maximum depth has not yet been reached, all references from the publication # are written to an array and the function is called again with this array. if (search_depth < search_depth_max): references_list = [] - for reference in pub._references: + for reference in pub.references: # currently only the references with acs are stored in the URL, because we can't # extract the info from other sources. @@ -173,9 +175,9 @@ def process_main(doi_input_list, search_height, search_depth): # program test, because there is no connection to the input yet. def test_print(): arr = [] - arr.append('https://pubs.acs.org/doi/10.1021/acs.jcim.9b00249') - arr.append('https://pubs.acs.org/doi/10.1021/acs.jcim.9b00249') - arr.append('https://doi.org/10.1021/acs.jmedchem.0c01332') + #arr.append('https://pubs.acs.org/doi/10.1021/acs.jcim.9b00249') + #arr.append('https://pubs.acs.org/doi/10.1021/acs.jcim.9b00249') + #arr.append('https://doi.org/10.1021/acs.jmedchem.0c01332') #arr.append('https://doi.org/10.1021/acs.jcim.0c00741') #arr.append('https://doi.org/10.1021/ci700007b') @@ -183,6 +185,11 @@ def test_print(): #url = sys.argv[1] #arr.append[url] + arr.append('doi1') + #arr.append('doi2') + #arr.append('doi3') + + nodes,edges = process_main(arr,1,1) print("Knoten:\n") @@ -192,5 +199,5 @@ def test_print(): for edge in edges: print(edge,"\n") -#test_print() +test_print() \ No newline at end of file diff --git a/verarbeitung/__pycache__/input_fj.cpython-36.pyc b/verarbeitung/__pycache__/input_fj.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04312c91f0a7675651e99a2a6c10a2c9da146758 GIT binary patch literal 4299 zcmb7H&5zs073Y^IiuzdXhhuM0yKK@Xkzr|3v_R5DV%T28Mcia##4cP2C<rcx+NDg9 z@^I+v64a&2p(xP)1BKCR`!Dp+KcMKj2VQ&1J*OOs{@#$1<wblb1-+R!d^3FW=Dpv0 z^RsT({>$~3-rsi=<v+^CqoaQZ|Md4DOc^Uo9ji<mYfK;O%wUbkm^H?xs-SO1&9Noh z*0_bX8QHV;xUDL`RG7tDUn{J&)W#ifHfw`xgX^*m>wc|_d#uN{&~C9l+eX`GJ8T#2 zHrr!Y(C)Ce*j2Q<%zUg2uH~QE53<-7VG^g#B;igNgU&n}aCjhi7`*TzCz&`N7oi^o zkmAYA5odvO_vo=RO)?%s;Nj7ypWAl6^&m=k=*7;%#6Jt-H1ABNcf6Q+ellV~X+Po# z%jDO-ff<y6T6XURUM9jx7Cla~`7uU}N1izI>GkT-(7A(udJQB{U^iu~ohq;!EQq}r zOvhe~vi&GKi9%m0?>8Y!54E(w5&r21Aca~eu2N{AYN3N_g#oG;4N#*nK^siLg6i?W zEE^&eQBd~hua<V1CxWu$Co#-(l8J<;Ws@bLoAIc$((Gg!_#!R4aW-@PP)K#sL9;Z{ zAewL!DsWPYTSQt!Y$9!tzbU+n=DRNr&XQSh;6)*f8^+oB!BO~l2<uIQXX3yQhv{%$ zF~b)D_xMQ=iYz`oc#R3;c_!S+bTq#xE!Pd>P`K_smQOn%if*c_U%t0txzS4Wc+jAE zu{R4`x3pb%hQo`f-*MgNnHR0!tar(`u&~_12I<jQ1LO++sR3eXh9*b8|Csk6vO4Da zi1qr2t)tqYJ}pQOwd?c!0hl+P@9Inqc?4y%cHLLUFlcZxOm#w}>#J9ncSGC!G5#r? zp;Fs1-(D%VVM2rVA;Gta027oqTZnf3F8(R)#!@-)z6wGQeUO|+dhxgD6v`A3!T=wC z)D~)?f&+*UH&qu}&6_o^pF46yWlb8nul%;RFbZR;F>9$V8qaS(h1KMGExDd~sw|r4 z?-b@#XZBKs{NBPUnp2~&FsHp#m#V5fkLy_g9yzOpSvF?1Fv|c8RbT2a+J%jo?P)dZ zuj_AZ$yuGEGi{{*X8lDswx|#NyTU|#>V=J%Y!=<6x#$%=MCA5ysk87!e!T`G_bl*O zz=u&V5zah|BH06mn11A?sf&=CdvV@AiylO5_=F-k?;(<h6v0CPTNdP3F0F+?rZ_gv zcreMYUV16K^CV7Y7p3Y|UZiEwSdS7f->trJRDr_XOq?ZryjM^EoPg9%T|dcy8Fan` z2a_;nr6GcIQR=6GC@mUry(lV8Z$1xV#@~jdjFZ6@wgP-C&1%Qv?n*HUPZCc`14!{q z0?OC`3Z)WON*&#?0kBG?JCAjA#|E&;mxxp9u*W6$F8ff&U44Nv!c8cW5_l?VPwnHk zhqk90b<Y6b2M;{aEX`Koz3)MG9o;$@ihJq3$LI)Us;<2kp1V-bNAPHkHKeyW@L&yI zWG>;c&oq7mF-<(Y^+RQ$KELr)5k?{XsZik;tz-TcR?V*ih=wfrD#nShA>+xM7??d4 zK`aI;ze-YjXF|-=!-E6tJRNy{I!gFyWorWG{OT%<9b_&f!AZb_*bh=p*a?vM5gJZN z!+%KR21wbM^AKOqOEWm1CmbgVC*tqYdjj-|5D-?jUFk?E;~qv+dPTM+i}utVvLM-f z9sguO`b!JmN2iMarOMw%Pug;+F>N2#5x|5(y{aIxr4^S7|410jpqPy<^k8F@8I<A7 z<L}f@z9Edst<k|GM0!8ScORg2yoe*VE}Y;zOhsA`vIO}*PDC{dQ;-!(lc)126r4`D zY=)^z3-R~C4Rk)BL3nl)P_`(IIg<NjlUOTr{0hQVa#C#=q60J78viLqecC)dWK9BH zX^8)#a|%;XI^S?89YAE9-z;=ER1J!NuxpD3AP;GNYD^o<WX+`}VeEsaSYu%VxGH&T z4O~qEK!QCf_Zul^)pD&G7F&Qs9gt@dP)fN%$`KG&>$TVG5fJJC!fHJL;rYj+$vVO! zS6&h<-&}O)V5hohp(yF>D=0^Z+L8hu_myQe`(ID1BkUfRS`y{^@ce)cYfpFmlZ%xT z*Iv)5cFNy>qu46khgH3!j!Gqe@6FP6@*L8kR-r?|k&oUyqlOcy;;L+_pwQ;Kn7a{C z4zbrk$|euyk>>|>kZ~_Q4N4u6CbQ$9%YQ<mR5{70L>U$cFO1UCl-o!pNRPX<wz8B- zOM{d~fn8N>sdQ0^jb)SU2jxmNyzHaf1c}(4tmaTlO_C@0YK@7ej9d#2dkqmxZNJ9G z6}Jb3<ey;1I-)5HkmAyj|A~%3KBrjzv%*lDPBpZsPNzCr<7JavOHkC4Lz|)cC&|N! zSL2P1an!I=ykXWegZ~4$wBlMo(mB2YM+Fk>px351Sikd9r?K;U;4Qe}2q>bkE@}eO zriZqLb_;C-Z67UZwfz!7fI8q0PYG8PwnLo6mEGff=WcahaO6Q8I(YJ3d!x*BC<h<X z;QcQ?9sc^u&!h~=L9%VzkLx=65E(3(=h`hN@7YHiHTR+P9)1g^%YR`%ISW&i0PFhS z0V|!+Ik}Lxl}Qps$yZ@~x+!&N=ePc!srlCC>=e^?ZBqCNl@{v_)PoPJyHPz{55Beo z+C5Ew-2!=64$=#H@{hh(LxSP;2EF*gNpL6Qo9c}QwnX8opp{pSSGNs$`S=jFtD;9n zAl1ABO~zDdt$h7*AoOIWb75*31tI37RHrDaW;pPBOYLh^8`#<o;y`PRG=2wf*M3h~ zVqFVR?xR|uK(?BqjupsU3{bexklz8%3tcn-qf`fI@a5a0S*%C!URRZZu73J4YCJKE zMsts+0k2@iDs>(_m&j3piH4Gh$`bx++Z2%lLn6SqMJu>ej#U|6Ld&J(-H>;x-(gmr zraIWCB{MdsKpyOsP1j|KUtO4Rvqc$*e#>=(8Gxx8PJtp>ioSl5{+v^0<79}^g1%XR zbj$A&tEU&ZSW?1_!V{TYWi2S7ui6Ne2r@lNXpwf7YHXaD+<+`RtdFbv+ikirrBt;T angN(Hnv`b&T3WByYg*T=7JgT({r>^(Ul4@= literal 0 HcmV?d00001 diff --git a/verarbeitung/__pycache__/input_test.cpython-36.pyc b/verarbeitung/__pycache__/input_test.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9dd609c5b2fe3d7530f4120f8993c04d58f4600c GIT binary patch literal 2359 zcmd5-OK%%D5GMD@m1WshoW#xpMcR`J*oGvahoUHgx<G>-3^zWwShQHI#kIP&ypp-Q zg%hk#%CG35_x^+a7G8VOvDcpZ4fU|>!U57#xZp<)hg@>L84kOvtF^z&-{U_8V}G%w z0-3!;&3^-Y$0U>d9qQN$NwTC3$%e!sInssXLb9YM{dX+1rH}zyN7m#DT36QPs%-SR zT$Af^18o!aL0^QP+>o2{A*4t0ai7WhY}}Vkxh1zDJ&{jo6grwO5-;%+(YM1uK09Kq z=RKTnQ7rUcqUM``goRu(oQX@zoXN&~N3R@~Cxf&X7wItT1(-*LT3Wo1n*Ri-c*P=C zSwLRdK&x_qcI5({%9HF|sNFt;<Yu+PtGqF-a4X+vUKx!Kji`L1@hbs+AQ=w94_Y<t z%V8RoYM|XBEe46M_l8-a(vz|ns$BbL!%}7OK(CK(jvL9iNOVmlr-@3kUXp7YeI4}D z!k7aYUG4VOupG4l?c~YeRFPfECU6K`0*}BaAj{PX;18x&(fsqn-Y>(8WG^11*gnn5 ztG)g7Xy;H3&yw?Eub1xRJEN(v^J}7Fb&{k-nf3Q>328Pei>OHQVt4dLizrI7w1^@) zO1=eP+*^Et3#-Pb_;z#2JG=8`2XGtyk;NBD6zN(NT?}P8png4yF3Wf@)u=W6*ch<{ z4I1OLBWg|u5ZuTg95`ZsMsttYqeAT>YCeVV{-~Mz-o4i)El<_)n|t+l?IMFI)bkqP zhSRqj^P?_PsMaw@Z4fjG?q%x%v{dJ8QU8P43SQ5n^y8xI85wqmuIA#b|BEm3z|$qZ zNbXU%QK5@R*J~d&{}FKYx?tb3pTECGzNon5+w9y@Ucsk*ptViown4|BYtS?38x-4Y zEUvA}I%1dJG14=#N^mg2@7aWQo={j$XzvMK`Uze735Dx~E`7_=jX|0h(eN~im5Sfw z=0>z^?IYVnNKD!_<JyLNC+PIr&E<|x%dGbq{+QEy!FY|=`4?QhKz~61?N59g0z!29 z?3!O4Rz$+9YwPM8L&ulbHj=G9qhqt;XS|rn7$r(<Ly0Yk5?g|ju{-9RU2Yz;%i1w0 z0|nlJdWap=BZ9{Slx);Cpk=G)XtWoPMoA_W1vRA=!vic19i+~Ddh<S^MU)JuU{VN~ z@HuKu7nE@awvx3Su1NEdTB|52%}iC~r_jNJ@g6J5jUCkgT1gu1fT(upnFp&KF27jq zP|RMeHeP!?Q*AT3W3a2)Y*FXdqRwJbXS%2}o7TNGt-F}kolfiG{WKA4OjC5<Ow1Wq zC^~5v;91H?X)<WvbUQcQt_g-E9~*CzqqX>I`nr5=9t_Hqjb=kMgz$wB!4tm4x2%5w DrE<@4 literal 0 HcmV?d00001 diff --git a/verarbeitung/__pycache__/json_demo.cpython-36.pyc b/verarbeitung/__pycache__/json_demo.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04acef5f40630ee2c7b6e887e33dc740b5e16a74 GIT binary patch literal 865 zcmY+C&x_PB6vvY`{V|>HC<}suig+7wc3|~5h_HHHMi-o=Af?k}X4CC7HBH@F>72&9 z|ABW8{y&ndAnd>3$(O8)V?*BiyyW}x(np@{?M2@of6acm2>nDmp9B07X7dOPMHH7P zG2SWh%1IoIs7uLbl(-b1prLmKDs()=+T&H-s@$ZTFZw%=z&Ag@D6~Zz$68lmV6r~# z&@1$Qy76r6cV6LiKE)FR<N`UC2#{;Z10t4uAkR_&<O4ZH*!f$G(TBS;w0_=UIQi)& zuqTIIK!baz3uy?-fc7j$z%FEkHcQUnjE>O0Sp^?Ykm}JrI@mg2_BTBh75$EMy)86g z2JLu*-l9|R(1KgXnpD|}C4SbbGa)s(WSP`KAzE2wB{WKK?JcEfYl)!|+HYVdXIIyO z%H)zM?Nx%ZMtdc%&YMqzq7hZ9*jgPJ()eN+Yf|z?X+n7pa>Z52bexMyNj`6tkd3}w zxAT(cnc|R4GsUE5>IHCtw3VgwZS}0KSw%Gw;54zv6WXroVWjapjbA7GrcNprsku^W z$~FJi7+v11_05*iWn~F10C5sl?80VfVuVR_6Q_qd5UpD9l6^z+K3wGYbbKaOY@ER# zo7t|%NBm?om7-whYMk>?GpetH(MKjTIcHq8)pGn_VEaVbN*vUedH@yR4W>$@X5IXJ z^8^gSz8w+RXlD$7eH_CW;1GvSjO9a64~e`3PKWkIr;9?GM{T$4&3DWLtDCF@ZA<pT L$QlAB#If@SEMV(c literal 0 HcmV?d00001 diff --git a/verarbeitung/input_test.py b/verarbeitung/input_test.py new file mode 100644 index 0000000..79b00b1 --- /dev/null +++ b/verarbeitung/input_test.py @@ -0,0 +1,63 @@ +class Publication: + def __init__(self, doi_url, title, contributors, journal, publication_date, references, citations, group): + self.doi_url = doi_url + self.title = title + self.contributors = contributors + self.journal = journal + self.publication_date = publication_date + if references is None: + self.references = [] + else: + self.references = ref(references) + if citations is None: + self.citations = [] + else: + self.citations = cit(citations) + self.group = group + + +class Citation: + def __init__(self,doi_url, title, contributors, journal, publication_date): + self.doi_url = doi_url + self.title = title + self.contributors = contributors + self.journal = journal + self.publication_date = publication_date + +class Reference: + def __init__(self,doi_url, title, contributors, journal, publication_date): + self.doi_url = doi_url + self.title = title + self.contributors = contributors + self.journal = journal + self.publication_date = publication_date + +def input_test_func(pub_doi): + for array in list_of_arrays: + if pub_doi == array[0]: + pub = Publication(array[0], array[1], array[2], array[3], array[4], array[5], array[6], array[7]) + return pub + + +def cit(list_doi): + cits = [] + for doi_url in list_doi: + for array in list_of_arrays: + if doi_url == array[0]: + cits.append(Citation(array[0], array[1], array[2], array[3], array[4])) + return cits + +def ref(list_doi): + refs = [] + for doi_url in list_doi: + for array in list_of_arrays: + if doi_url == array[0]: + refs.append(Citation(array[0], array[1], array[2], array[3], array[4])) + return refs + + +beispiel1 = ['doi1', 'title1', ['contributor1'], 'journal1', 'date1', ['doi2'], ['doi3'], ''] +beispiel2 = ['doi2', 'title2', ['contributor2'], 'journal2', 'date2', [], ['doi1'], ''] +beispiel3 = ['doi3', 'title3', ['contributor3'], 'journal3', 'date3', ['doi1'], [], ''] + +list_of_arrays = [beispiel1, beispiel2, beispiel3] diff --git a/verarbeitung/json_demo.py b/verarbeitung/json_demo.py index 362d064..7341560 100644 --- a/verarbeitung/json_demo.py +++ b/verarbeitung/json_demo.py @@ -10,10 +10,10 @@ def output_to_json(V,E): new_dict = dict() new_dict["name"] = node.title new_dict["author"] = node.contributors - #new_dict["year"] = node.publication_date - #new_dict["journal"] = node.journal + new_dict["year"] = node.publication_date + new_dict["journal"] = node.journal new_dict["doi"] = node.doi_url - #new_dict["group"] = node.group + new_dict["group"] = node.group list_of_node_dicts.append(new_dict) for edge in E: new_dict_2 = dict() diff --git a/verarbeitung/json_text.json b/verarbeitung/json_text.json index 2e6c8fa..683e49f 100644 --- a/verarbeitung/json_text.json +++ b/verarbeitung/json_text.json @@ -1 +1 @@ -{"nodes": [{"name": "Comparing Molecular Patterns Using the Example of SMARTS: Applications and Filter Collection Analysis", "author": ["Emanuel S. R. Ehmki", "Robert Schmidt", "Farina Ohm", "Matthias Rarey"], "doi": "https://doi.org/10.1021/acs.jcim.9b00249"}, {"name": "Combining Machine Learning and Computational Chemistry for Predictive Insights Into Chemical Systems ", "author": "John A. Keith, Valentin Vassilev-Galindo, Bingqing Cheng, Stefan Chmiela, Michael Gastegger, Klaus-Robert M\u00fcller, Alexandre Tkatchenko. ", "doi": "https://doi.org/10.1021/acs.chemrev.1c00107"}, {"name": "Disconnected Maximum Common Substructures under Constraints ", "author": "Robert Schmidt, Florian Krull, Anna Lina Heinzke, Matthias Rarey. ", "doi": "https://doi.org/10.1021/acs.jcim.0c00741"}, {"name": "Evolution of Novartis\u2019 Small Molecule Screening Deck Design ", "author": "Ansgar Schuffenhauer, Nadine Schneider, Samuel Hintermann, Douglas Auld, Jutta Blank, Simona Cotesta, Caroline Engeloch, Nikolas Fechner, Christoph Gaul, Jerome Giovannoni, Johanna Jansen, John Joslin, Philipp Krastel, Eugen Lounkine, John Manchester, Lauren G. Monovich, Anna Paola Pelliccioli, Manuel Schwarze, Michael D. Shultz, Nikolaus Stiefl, Daniel K. Baeschlin. ", "doi": "https://doi.org/10.1021/acs.jmedchem.0c01332"}, {"name": "Comparing Molecular Patterns Using the Example of SMARTS: Theory and Algorithms ", "author": "Robert Schmidt, Emanuel S. R. Ehmki, Farina Ohm, Hans-Christian Ehrlich, Andriy Mashychev, Matthias Rarey. ", "doi": "https://doi.org/10.1021/acs.jcim.9b00250"}, {"name": "Machine learning accelerates quantum mechanics predictions of molecular crystals ", "author": "Yanqiang Han, Imran Ali, Zhilong Wang, Junfei Cai, Sicheng Wu, Jiequn Tang, Lin Zhang, Jiahao Ren, Rui Xiao, Qianqian Lu, Lei Hang, Hongyuan Luo, Jinjin Li. ", "doi": "https://doi.org/10.1016/j.physrep.2021.08.002"}, {"name": "The Growing Importance of Chirality in 3D Chemical Space Exploration and Modern Drug Discovery Approaches for Hit-ID ", "author": "Ilaria Proietti Silvestri, Paul J. J. Colbon. ", "doi": "https://doi.org/10.1021/acsmedchemlett.1c00251"}, {"name": "Target-Based Evaluation of \u201cDrug-Like\u201d Properties and Ligand Efficiencies ", "author": "Paul D. Leeson, A. Patricia Bento, Anna Gaulton, Anne Hersey, Emma J. Manners, Chris J. Radoux, Andrew R. Leach. ", "doi": "https://doi.org/10.1021/acs.jmedchem.1c00416"}, {"name": "Fostering Research Synergies between Chemists in Swiss Academia and at Novartis ", "author": "Arndt Meyer, Daniel Baeschlin, Cara E. Brocklehurst, Myriam Duckely, Fabrice Gallou, Lucie E. Lovelle, Michael Parmentier, Thierry Schlama, Radka Snajdrova, Yves P. Auberson. ", "doi": "https://doi.org/10.2533/chimia.2021.936"}, {"name": "BonMOLi\u00e8re: Small-Sized Libraries of Readily Purchasable Compounds, Optimized to Produce Genuine Hits in Biological Screens across the Protein Space ", "author": "Neann Mathai, Conrad Stork, Johannes Kirchmair. ", "doi": "https://doi.org/10.3390/ijms22157773"}, {"name": "Accelerating high-throughput virtual screening through molecular pool-based active learning ", "author": "David E. Graff, Eugene I. Shakhnovich, Connor W. Coley. ", "doi": "https://doi.org/10.1039/D0SC06805E"}, {"name": "Compound Screening ", "author": "Shin Numao, Gianluca Etienne, Goran Malojcic, Enrico Schmidt, Christoph E. Dumelin. ", "doi": "https://doi.org/10.1016/B978-0-12-820472-6.00078-5"}], "links": [{"source": "https://doi.org/10.1021/acs.jcim.9b00249", "target": "https://doi.org/10.1021/acs.chemrev.1c00107"}, {"source": "https://doi.org/10.1021/acs.jcim.9b00249", "target": "https://doi.org/10.1021/acs.jcim.0c00741"}, {"source": "https://doi.org/10.1021/acs.jcim.9b00249", "target": "https://doi.org/10.1021/acs.jmedchem.0c01332"}, {"source": "https://doi.org/10.1021/acs.jcim.9b00249", "target": "https://doi.org/10.1021/acs.jcim.9b00250"}, {"source": "https://doi.org/10.1021/acs.jcim.9b00249", "target": "https://doi.org/10.1016/j.physrep.2021.08.002"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.1021/acsmedchemlett.1c00251"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.1021/acs.jmedchem.1c00416"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.2533/chimia.2021.936"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.3390/ijms22157773"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.1039/D0SC06805E"}, {"source": "https://doi.org/10.1021/acs.jmedchem.0c01332", "target": "https://doi.org/10.1016/B978-0-12-820472-6.00078-5"}]} \ No newline at end of file +{"nodes": [{"name": "title1", "author": ["contributor1"], "year": "date1", "journal": "journal1", "doi": "doi1", "group": "input"}, {"name": "title3", "author": ["contributor3"], "year": "date3", "journal": "journal3", "doi": "doi3", "group": "height"}, {"name": "title2", "author": ["contributor2"], "year": "date2", "journal": "journal2", "doi": "doi2", "group": "depth"}], "links": [{"source": "doi1", "target": "doi3"}, {"source": "doi2", "target": "doi1"}]} \ No newline at end of file -- GitLab