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
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
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