From 537b4806674fd6676f0f34bd089e7b28236dcfdb Mon Sep 17 00:00:00 2001 From: Alina Molkentin <alina.molkentin@studium.uni-hamburg.de> Date: Fri, 10 Dec 2021 21:17:19 +0100 Subject: [PATCH] =?UTF-8?q?connect=20new=20input=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- verarbeitung/connect_new_input.py | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 verarbeitung/connect_new_input.py diff --git a/verarbeitung/connect_new_input.py b/verarbeitung/connect_new_input.py new file mode 100644 index 0000000..b9167dc --- /dev/null +++ b/verarbeitung/connect_new_input.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +""" +Functions to update a graph representing citations between multiple ACS/Nature journals + +""" + +__authors__ = "Donna Löding, Alina Molkentin, Xinyi Tang, Judith Große, Malte Schokolowski" +__email__ = "cis-project2021@zbh.uni-hamburg.de" +__status__ = "Production" +#__copyright__ = "" +#__credits__ = ["", "", "", ""] +#__license__ = "" +#__version__ = "" +#__maintainer__ = "" + +import sys +from pathlib import Path +from os import error +sys.path.append("../") + +from import_form_json import input_from_json +from Processing import initialize_nodes_list, process_citations_rec, process_references_rec, complete_inner_edges, create_graph_structure_references, create_graph_structure_citations +from json_demo import output_to_json + +def connect_old_and_new_input(json_file, new_doi_list, search_height, search_depth, test_var = False): + global nodes, edges + nodes = [] + edges = [] + + nodes, edges = input_from_json(json_file) + + complete_changed_group_nodes(new_doi_list, search_height, search_depth, test_var) + + # initializes nodes/edges from input and gets a list with publication objects for citations and references returned + references_obj_list, citations_obj_list = initialize_nodes_list(new_doi_list,search_depth, search_height, test_var) + + # function calls to begin recursive processing up to max depth/height + process_citations_rec(citations_obj_list, 1, search_height, test_var) + process_references_rec(references_obj_list, 1, search_depth, test_var) + + # adds edges between reference group and citation group of known publications + complete_inner_edges(test_var) + + # calls a skript to save nodes and edges of graph in .json file + output_to_json(nodes,edges, test_var) + + return(nodes, edges) + + +def complete_changed_group_nodes(new_doi_list, search_height_max, search_depth_max, test_var): + changed_group_node_citations = [] + changed_group_node_references = [] + + for node in nodes: + if (node.group != "input") and (node.doi in new_doi_list): + node.group = "input" + + # inserts references as publication objects into list and + # inserts first depth references into nodes/edges if maximum search depth > 0 + for reference in create_graph_structure_references(node, 0, search_depth_max, test_var): + changed_group_node_references.append(reference) + + # inserts citations as publication objects into list and + # inserts first height citations into nodes if maximum search height > 0 + for citation in create_graph_structure_citations(node, 0, search_height_max, test_var): + changed_group_node_citations.append(citation) + -- GitLab