From 717f3c16d3ae6320fc8f9b654289b5296e21b3d3 Mon Sep 17 00:00:00 2001 From: "Stahl, Merle" <merle.stahl@studium.uni-hamburg.de> Date: Wed, 15 Dec 2021 16:15:27 +0000 Subject: [PATCH] =?UTF-8?q?Revert=20"l=C3=B6schen"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 952fad2c6984652d2a082ad05ec15e6f62cad889 --- Output/README.md | 46 ++ Output/graph/cn.js | 548 ++++++++++++++++++++++++ Output/graph/index.html | 107 +++++ Output/graph/json_text.json | 819 ++++++++++++++++++++++++++++++++++++ 4 files changed, 1520 insertions(+) create mode 100644 Output/README.md create mode 100644 Output/graph/cn.js create mode 100644 Output/graph/index.html create mode 100644 Output/graph/json_text.json diff --git a/Output/README.md b/Output/README.md new file mode 100644 index 0000000..418fdbe --- /dev/null +++ b/Output/README.md @@ -0,0 +1,46 @@ +# Projekt CiS-Projekt 2021/22 + +Citation network made with **d3.js** + +## Usage +### Input +Json file **json\_text.json** in directory +```json +{ + "nodes": [ + { + "name": <title: string>, + "author": [<author1: string>, <author2: string>, ...], + "year": <date: tring>, + "journal": <journal: string>, + "doi": <doi: string>, + "group": <"input"/"height"/"depth">, + "citations": <citation: int> + }, ... + ], + "links": [ + { + "source": <doi: string>, + "target": <doi: string> + }, ... + ] +} +``` + +### Display the Citation Network +Starting a python web server: +```sh + cd <path to file> &&python3 -m http.server <port> +``` +Access to the server: +[http://0.0.0.0/:\<port\>](http://0.0.0.0/:<port>) + +## Files in Directory +- **index.html**: webpage +- **cn.js**: javascript code for force-directed graph, text elements and legend +- **json_text.json**: example data + + +## Authors +- Katja Ehlers +- Merle Stahl \ No newline at end of file diff --git a/Output/graph/cn.js b/Output/graph/cn.js new file mode 100644 index 0000000..309678b --- /dev/null +++ b/Output/graph/cn.js @@ -0,0 +1,548 @@ +/** +* creates a new zoom behavior +*/ +var zoom = d3.zoom().on("zoom", handle_zoom); + +/** +* creates svg object and associated attributes +* applies the zoom behavior to svg +*/ +var svg = d3.select("svg.graph") + .call(zoom), +width = svg.attr("width"), +height = svg.attr("height"), +perc; + +/** +* scale functions that return y coordinate/color of node depending on group +*/ +var color = d3.scaleOrdinal() + .domain(["height", "input", "depth"]) + .range([' #01d7c0', ' #8b90fe ', ' #a15eb2 ']), +y_scale = d3.scaleOrdinal() + .domain(["height", "input", "depth"]) + .range([0, 200, 400]), +to_remove; + +/** +* creates node object and (default) radius +*/ +var node, +r = 10; + +/** +* creates link object +*/ +var link; + +/** +* creates a background with a click functionality +*/ +var rect = svg.append("rect") + .attr("x", 0) + .attr("y", 0) + .attr("height", height) + .attr("width", width) + .style("fill", 'white') + .on('click', click_rect); + +/** +* creates svg object (legend) and associated attributes +*/ +var svg_legend = d3.select("svg.legendsvg"), +legend_position = [65,95,125], +arrow_legend_position = [0,25], +arrow_group_names = ["citation","self-citation"], +group_names = ["cited by","input","reference"], +line_type = d3.scaleOrdinal() + .domain(["line","dotted"]) + .range([("8,0"),("8,8")]), +text_info = '', +text_abstract = ''; + +var legend = svg_legend.selectAll(".legend") + .data(legend_position) + .enter() + .append("g") + .attr("class","legend") + .attr("transform", function(d,i) {return "translate(0," + d + ")"; }); + +legend.append("text") + .attr("x", 80) + .attr("y", 0) + .attr("dy", ".35em") + .style("text-anchor", "start") + .text(function(d,i) {return group_names[i]}); + +legend.append("circle") + .attr("r", r) + .attr("cx",30-r) + .style("fill", color); + +var legend_arrow = svg_legend.selectAll(".legendarr") + .data(arrow_legend_position) + .enter() + .append("g") + .attr("class","legendarr") + .attr("transform", function(d) { return "translate(0," + d + ")"; }); + +legend_arrow.append("line") + .attr("x1", 10) + .attr("x2", 50) + .attr("y1", 10) + .attr("y2", 10) + .style("stroke-dasharray",line_type) + .style("stroke", '#999') + .style("stroke-width", "1px") + .style('pointer-events', 'none') + .attr('marker-end',update_marker('#999',this)); + +legend_arrow.append("text") + .attr("x", 80) + .attr("y", 10) + .attr("dy", ".35em") + .style("text-anchor", "start") + .text(function(d,i){return arrow_group_names[i]}); + +/** +* creates a new simulation +* updates the positions of the links and nodes when the + state of the layout has changed (simulation has advanced by a tick) +*/ +var simulation = d3.forceSimulation() + .force("link", d3.forceLink().id(function(d) {return d.doi;}).distance(50).strength(function(d) { + if (d.group == "input") {return 0;} + else {return 5;} + })) + .force("collide", d3.forceCollide(function(d) { + if (d.group == "input") {return 100;} + else {return 65;} + }).strength(0.5)) + .force("charge", d3.forceManyBody().strength(0.001)) + .force("center", d3.forceCenter(width/2, height/2+20)) + .force("yscale", d3.forceY().strength(function(d) { + if (d.group == "input") {return 1000;} + else {return 50;} + }).y(function(d) {return y_scale(d.group)})) + .alpha(0.005) + .on("end", zoom_to); + +/** +* creates group element +*/ +var g = svg.append("g") + .attr("class", "everything") + +/** +* loads JSON data and calls the update function +*/ +d3.json("json_text.json").then(function(graph) { + update(graph.links, graph.nodes); +}) + +/** +* calls update functions for links and nodes +* adds the nodes, links and tick functionality to the simulation +* @param {object} nodes - nodes +* @param {object} links - links +*/ +function update(links, nodes) { + update_links(links); + update_nodes(nodes); + + simulation + .nodes(nodes) + .on("tick", handle_tick); + simulation.force("link") + .links(links); + + link.attr('marker-end', function(d) {return update_marker("#999", d.target);}) + .style("stroke-dasharray",function(d){return self_citation(d.source,d.target)? ("8,8"): ("1,0")}); +} + +/** +* initializes and shows links +* @param {object} links - links +*/ +function update_links(links) { + link = g.append("g") + .selectAll(".link") + .data(links) + .enter() + .append("line") + .style("stroke-width", "1px") + .style("stroke", "#999") + .attr("class", "link"); +} + +/** +* initializes and shows nodes with circles, texts and a click functionality +* creates a new drag behavior and applies it to the circles +* @param {object} nodes - nodes +*/ +function update_nodes(nodes) { + node = g.selectAll(".node") + .data(nodes) + .enter() + .append("g") + .attr("class", "node") + .call(d3.drag() + .on("start", start_drag) + .on("drag", dragged) + ); + + node.append("circle") + .attr("class", "circle") + .attr("r", function(d) {return 1.5*r+d.citations*0.05}) + .style("fill", function(d){ return color(d.group)}) + .on('click', click_node); + + node.append("text") + .attr("class", "text") + .style("font-size", "15px") + .style('pointer-events', 'auto') + .text(function (d) {const first_author=d.author[0].split(" ") + return first_author[first_author.length-1];}) + .on('click', click_node); +} + +/** +* creates arrowhead and returns its url +* @param {string} color - color of arrowhead +* @param {string} target - target node +*/ +function update_marker(color, target) { + var radius = 1.5*r+target.citations*0.05; + svg.append('defs').append('marker') + .attr('id',color.replace("#", "")+radius) + .attr('viewBox','-0 -5 10 10') + .attr('refX',radius+9.5) + .attr('refY',0) + .attr('orient','auto') + .attr('markerWidth',10) + .attr('markerHeight',15) + .attr('xoverflow','visible') + .append('svg:path') + .attr('d', 'M 0,-5 L 10 ,0 L 0,5') + .attr('fill', color) + .style('stroke','none'); + return "url(" + color + radius + ")"; +}; + +/** +* sets color of circle and its links to black and removes the previous highlights +* displays overview info of node in textbox +* @param {object} node - node +*/ +function click_node(node) { + d3.select(this.parentNode).raise(); + fix_nodes(node); + if(to_remove){ + d3.select(to_remove).selectAll(".circle").style("stroke","none") + } + to_remove = this.parentNode; + d3.select(this.parentNode).selectAll(".circle").style("stroke","black") + mark_link(node) + textbox_content(node) + reset_button_highlight() + highlight_button("overview") +} + +/** +* removes the highlights of the circles and their links +*/ +function click_rect() { + fix_nodes(node); + d3.selectAll(".circle").style("stroke", "none") + d3.selectAll(".link") + .style("stroke", "#999") + .attr('marker-end', function(d) {return update_marker('#999', d.target);}) + text_abstract=''; + text_info=''; + reset_button_highlight() + document.getElementById('textbox').innerHTML = "Click node"; +} + +/** +* returns true if journals have a common author (self-citation) +* @param {object} source - node +* @param {object} target - node +*/ +function self_citation(source,target) { + return source.author.some(item=>target.author.includes(item)) +} + +/** +* sets color of link (line and arrowhead) to black if it is directly connected to node +* and to grey otherwise +* @param {object} node - node +*/ +function mark_link(node) { + d3.selectAll(".link") + .style("stroke", function(o) { + return is_link_for_node(node, o) ? "black" : "#999";}) + .attr('marker-end', function(o) { + return is_link_for_node(node, o) ? update_marker('#000000', o.target) : update_marker('#999', o.target);}) +} + +/** +* returns true if link is directly connected to node and false if it is not +* @param {object} node - node +* @param {object} link - link +*/ +function is_link_for_node(node, link) { + return link.source.index == node.index || link.target.index == node.index; +} + +/** +* saves text for overview and abstract of node +* outputs node info to textbox +* @param {object} node - node +*/ +function textbox_content(node) { + text_info = "Title:" + '</br>' + node.name + + '</br>' +'</br>'+"Author:"+ '</br>' +node.author+'</br>'+'</br>'+"Date:"+'</br>' + +node.year+'</br>'+'</br>'+"Journal:"+'</br>'+node.journal+'</br>'+'</br>'+"doi:" + +'</br>'+'<a href="'+node.doi+ '">'+node.doi+'</a>'+'</br>'+'</br>'+"Citations:" + +'</br>'+node.citations; + text_abstract = node.abstract; + document.getElementById('textbox').innerHTML = text_info; +} + +/** +* sets color of btn to dark gray +* @param {object} btn - button +*/ +function highlight_button(btn) { + reset_button_highlight(); + document.getElementById(btn).style.background = "#CACACA"; +} + +/** +* sets color of all buttons to default light gray +*/ +function reset_button_highlight() { + document.getElementById("overview").style.background = ''; + document.getElementById("abstract").style.background = ''; +} + +/** +* displays abstract in textbox if a is true, overview text otherwise +* @param {bool} a- bool +*/ +function display_abstract(a) { + if (text_abstract == '' && text_info == '') { + document.getElementById('textbox').innerHTML="Click node"; + } + else { + if (a == true) { + document.getElementById('textbox').innerHTML = text_abstract; + } + else { + document.getElementById('textbox').innerHTML = text_info; + } + } +} + +/** +* updates the positions of the links and nodes +*/ +function handle_tick() { + link.attr("x1", function (d) {return d.source.x;}) + .attr("y1", function (d) {return d.source.y;}) + .attr("x2", function (d) {return d.target.x;}) + .attr("y2", function (d) {return d.target.y;}); + node.attr("transform", function (d) {return "translate(" + d.x + ", " + d.y + ")";}); +} + +/** +* initializes the dragging of the node +* @param {object} node - node +*/ +function start_drag(node) { + d3.select(this).raise(); + if (!d3.event.active) + simulation.alphaTarget(0.3).restart() + node.fx = node.x; + node.fy = node.y; + fix_nodes(node); +} + +/** +* applies the dragging to the node +* @param {object} node - node +*/ +function dragged(node) { + node.fx = d3.event.x; + node.fy = d3.event.y; + fix_nodes(node); +} + +/** +* fix positions of all nodes except for the current node +* @param {object} this_node - node +*/ +function fix_nodes(this_node) { + node.each(function(d) { + if (this_node != d) { + d.fx = d.x; + d.fy = d.y; + } + }); +} + +/** +* applies the transformation (zooming or dragging) to the g element +*/ +function handle_zoom() { + d3.select('g').attr("transform", d3.event.transform); +} + +/** +* transforms svg so that the zoom is adapted to the size of the graph +*/ +function zoom_to() { + node_bounds = d3.selectAll("svg.graph").node().getBBox(); + svg_bounds = d3.select("rect").node().getBBox(); + + perc_x = width/(node_bounds.width+100); + perc_y = height/(node_bounds.height+100); + perc = d3.min([perc_x, perc_y]) + + d3.select('svg') + .call(zoom.scaleBy, perc); +} + +/** +* transforms svg so that the zoom and drag is reset +*/ +function reset_view() { + d3.select('svg') + .call(zoom.scaleTo, 1) + d3.select('svg') + .call(zoom.translateTo, 0.5 * width, 0.5 * height); + d3.select('svg') + .call(zoom.scaleBy, perc); +} + +/** +* save svg as png +*/ +function save_svg(){ + var svgString = get_svg_string(svg.node()); + svg_string_to_image(svgString, 2*width, 2*height, 'png', save); // passes Blob and filesize String to the callback + + function save( dataBlob, filesize ){ + saveAs(dataBlob, 'D3 vis exported to PNG.png'); // FileSaver.js function + } +}; + +/** +* generate svgString +* @param {object} svgNode - node +*/ +function get_svg_string(svgNode) { + svgNode.setAttribute('xlink', 'http://www.w3.org/1999/xlink'); + var cssStyleText = get_css_styles(svgNode); + append_css(cssStyleText, svgNode); + + var serializer = new XMLSerializer(); + var svgString = serializer.serializeToString(svgNode); + svgString = svgString.replace(/(\w+)?:?xlink=/g, 'xmlns:xlink='); // Fix root xlink without namespace + svgString = svgString.replace(/NS\d+:href/g, 'xlink:href'); // Safari NS namespace fix + + return svgString; + + function get_css_styles(parentElement) { + var selectorTextArr = []; + + // Add Parent element Id and Classes to the list + selectorTextArr.push('#' + parentElement.id); + for (var c = 0; c < parentElement.classList.length; c++) + if (!contains('.'+parentElement.classList[c], selectorTextArr)) + selectorTextArr.push('.'+parentElement.classList[c]); + + // Add Children element Ids and Classes to the list + var nodes = parentElement.getElementsByTagName("*"); + for (var i = 0; i < nodes.length; i++) { + var id = nodes[i].id; + if (!contains('#'+id, selectorTextArr)) + selectorTextArr.push('#' + id); + + var classes = nodes[i].classList; + for (var c = 0; c < classes.length; c++) + if (!contains('.'+classes[c], selectorTextArr)) + selectorTextArr.push('.'+classes[c]); + } + + // Extract CSS Rules + var extractedCSSText = ""; + for (var i = 0; i < document.styleSheets.length; i++) { + var s = document.styleSheets[i]; + + try { + if(!s.cssRules) continue; + } catch(e) { + if(e.name !== 'SecurityError') throw e; // for Firefox + continue; + } + + var cssRules = s.cssRules; + for (var r = 0; r < cssRules.length; r++) { + if (contains(cssRules[r].selectorText, selectorTextArr)) + extractedCSSText += cssRules[r].cssText; + } + } + + + return extractedCSSText; + + function contains(str,arr) { + return arr.indexOf(str) === -1 ? false : true; + } + + } + + function append_css(cssText, element) { + var styleElement = document.createElement("style"); + styleElement.setAttribute("type","text/css"); + styleElement.innerHTML = cssText; + var refNode = element.hasChildNodes() ? element.children[0] : null; + element.insertBefore(styleElement, refNode); + } +} + +/** +* convert svgString to image and export it +* @param {object} svgString - svgString +* @param {object} width - width of image +* @param {object} height - height of image +* @param {object} format - format to save image in +* @param {object} callback - callback function +*/ +function svg_string_to_image( svgString, width, height, format, callback ) { + var format = format ? format : 'png'; + + var imgsrc = 'data:image/svg+xml;base64,'+ btoa(unescape(encodeURIComponent(svgString))); // Convert SVG string to data URL + + var canvas = document.createElement("canvas"); + var context = canvas.getContext("2d"); + + canvas.width = width; + canvas.height = height; + + var image = new Image(); + image.onload = function() { + context.clearRect(0, 0, width, height); + context.drawImage(image, 0, 0, width, height); + + canvas.toBlob(function(blob) { + var filesize = Math.round(blob.length/1024) + ' KB'; + if (callback) callback(blob, filesize); + }); + + }; + + image.src = imgsrc; +} + diff --git a/Output/graph/index.html b/Output/graph/index.html new file mode 100644 index 0000000..78560da --- /dev/null +++ b/Output/graph/index.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + + <!-- style specifications for button and div elements --> + <style type="text/css"> + button { + width: 100px; + height:20px; + display: flex; + justify-content: center; + position: absolute; + left: 455px; + top: 575px; + transition-duration: 0.4s; + border-radius:3px; + border:1px solid #909090; + } + + .button:hover { + background-color: #CACACA; + } + + button.resetZoom { + margin-left: 110px; + } + + button.save { + margin-left: 220px; + } + + button.abstract { + width:146px; + position:absolute; + top: 181px; + left: 1114px; + border-radius:0; + border:1px solid #909090; + } + + button.overview { + width:147px; + position:absolute; + display:inline-block; + top: 181px; + left: 968px; + border-radius:0; + border:1px solid #909090; + } + + div.legendbox { + width:270px; + height:170px; + padding: 10px; + /*border: 1px solid #999;*/ + position: absolute; + top: 10px; + left: 968px; + display: inline-block; + margin: 0; + } + + div.textbox { + width:270px; + min-height:200px; + max-height:370px; + padding: 10px; + border: 1px solid #999; + position: absolute; + top: 200px; + left: 968px; + display: inline-block; + overflow-y: scroll; + margin: 0; + } + </style> +</head> + +<body> + <!-- graph --> + <svg class="graph" width="960" height="560"></svg> + + <!-- legend --> + <div class="legendbox"> <svg class="legendsvg"></svg></div> + + <!-- textbox --> + <div class="textbox" id = "textbox">Click node</div> + <button id="overview" class="overview" onclick='display_abstract(false), highlight_button("overview")'>Overview</button> + <button id="abstract" class="abstract" onclick='display_abstract(true), highlight_button("abstract")'>Abstract</button> + + <!-- buttons --> + <button onclick="location.reload()">Reload Graph</button> + <button class="resetZoom" onclick="reset_view()">Reset View</button> + <button class="save" onclick="save_svg()">Save</button> + + <!-- D3 (version 5) --> + <script src="https://d3js.org/d3.v5.min.js"></script> + + <!-- scripts to save svg element as png --> + <script src="https://cdn.rawgit.com/eligrey/canvas-toBlob.js/f1a01896135ab378aa5c0118eadd81da55e698d8/canvas-toBlob.js"></script> + <script src="https://cdn.rawgit.com/eligrey/FileSaver.js/e9d941381475b5df8b7d7691013401e171014e89/FileSaver.min.js"></script> + + <!-- javascript for force-directed graph --> + <script type="text/javascript" id="cn" src="cn.js"></script> +</body> +</html> \ No newline at end of file diff --git a/Output/graph/json_text.json b/Output/graph/json_text.json new file mode 100644 index 0000000..eb3c1d3 --- /dev/null +++ b/Output/graph/json_text.json @@ -0,0 +1,819 @@ +{ + "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" + ], + "year": "May 24, 2019", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.9b00249", + "group": "input", + "citations": 5 + }, + { + "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" + ], + "year": "July 7, 2021", + "journal": "Chem. Rev.", + "doi": "https://doi.org/10.1021/acs.chemrev.1c00107", + "group": "height", + "citations": 1 + }, + { + "name": "Disconnected Maximum Common Substructures under Constraints", + "author": [ + "Robert Schmidt", + "Florian Krull", + "Anna Lina Heinzke", + "Matthias Rarey" + ], + "year": "December 16, 2020", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.0c00741", + "group": "height", + "citations": 0 + }, + { + "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" + ], + "year": "November 3, 2020", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/acs.jmedchem.0c01332", + "group": "height", + "citations": 8 + }, + { + "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" + ], + "year": "May 23, 2019", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.9b00250", + "group": "height", + "citations": 12 + }, + { + "name": "AutoDock Vina 1.2.0: New Docking Methods, Expanded Force Field, and Python Bindings", + "author": [ + "Jerome Eberhardt", + "Diogo Santos-Martins", + "Andreas F. Tillack", + "Stefano Forli" + ], + "year": "July 19, 2021", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.1c00203", + "group": "input", + "citations": 1 + }, + { + "name": "Accelerating AutoDock4 with GPUs and Gradient-Based Local Search", + "author": [ + "Diogo Santos-Martins", + "Leonardo Solis-Vasquez", + "Andreas F Tillack", + "Michel F Sanner", + "Andreas Koch", + "Stefano Forli" + ], + "year": "January 6, 2021", + "journal": "Journal of Chemical Theory and Computation", + "doi": "https://doi.org/10.1021/acs.jctc.0c01006", + "group": "depth", + "citations": 14 + }, + { + "name": "Docking Flexible Cyclic Peptides with AutoDock CrankPep", + "author": [ + "Yuqi Zhang", + "Michel F. Sanner" + ], + "year": "September 11, 2019", + "journal": "Journal of Chemical Theory and Computation", + "doi": "https://doi.org/10.1021/acs.jctc.9b00557", + "group": "depth", + "citations": 9 + }, + { + "name": "Lessons Learned in Empirical Scoring with smina from the CSAR 2011 Benchmarking Exercise", + "author": [ + "David Ryan Koes", + "Matthew P. Baumgartner", + "Carlos J. Camacho" + ], + "year": "February 4, 2013", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci300604z", + "group": "depth", + "citations": 100 + }, + { + "name": "Vina-Carb: Improving Glycosidic Angles during Carbohydrate Docking", + "author": [ + "Anita K. Nivedha", + "David F. Thieker", + "Spandana Makeneni", + "Huimin Hu", + "Robert J. Woods" + ], + "year": "January 8, 2016", + "journal": "Journal of Chemical Theory and Computation", + "doi": "https://doi.org/10.1021/acs.jctc.5b00834", + "group": "depth", + "citations": 48 + }, + { + "name": "Lennard-Jones Potential and Dummy Atom Settings to Overcome the AUTODOCK Limitation in Treating Flexible Ring Systems", + "author": [ + "Stefano Forli", + "Maurizio Botta" + ], + "year": "June 22, 2007", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci700036j", + "group": "depth", + "citations": 32 + }, + { + "name": "AutoDock4Zn: An Improved AutoDock Force Field for Small-Molecule Docking to Zinc Metalloproteins", + "author": [ + "Diogo Santos-Martins", + "Stefano Forli", + "Maria Jo\u00e3o Ramos", + "Arthur J. Olson" + ], + "year": "June 15, 2014", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci500209e", + "group": "depth", + "citations": 100 + }, + { + "name": "A Force Field with Discrete Displaceable Waters and Desolvation Entropy for Hydrated Ligand Docking", + "author": [ + "Stefano Forli", + "Arthur J. Olson" + ], + "year": "December 9, 2011", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm2005145", + "group": "depth", + "citations": 100 + }, + { + "name": "Consensus Docking: Improving the Reliability of Docking in a Virtual Screening Context", + "author": [ + "Douglas R. Houston", + "Malcolm D. Walkinshaw" + ], + "year": "January 27, 2013", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci300399w", + "group": "depth", + "citations": 100 + }, + { + "name": "Inhomogeneous Fluid Approach to Solvation Thermodynamics. 1. Theory", + "author": [ + "Themis Lazaridis" + ], + "year": "April 14, 1998", + "journal": "Journal of Physical Chemistry B", + "doi": "https://doi.org/10.1021/jp9723574", + "group": "depth", + "citations": 100 + }, + { + "name": "Inhomogeneous Fluid Approach to Solvation Thermodynamics. 2. Applications to Simple Fluids", + "author": [ + "Themis Lazaridis" + ], + "year": "April 14, 1998", + "journal": "Journal of Physical Chemistry B", + "doi": "https://doi.org/10.1021/jp972358w", + "group": "depth", + "citations": 100 + }, + { + "name": "ZINC20\u2014A Free Ultralarge-Scale Chemical Database for Ligand Discovery", + "author": [ + "John J. Irwin", + "Khanh G. Tang", + "Jennifer Young", + "Chinzorig Dandarchuluun", + "Benjamin R. Wong", + "Munkhzul Khurelbaatar", + "Yurii S. Moroz", + "John Mayfield", + "Roger A. Sayle" + ], + "year": "October 29, 2020", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.0c00675", + "group": "depth", + "citations": 25 + }, + { + "name": "Structural Biology-Inspired Discovery of Novel KRAS\u2013PDE\u03b4 Inhibitors", + "author": [ + "Yan Jiang", + "Chunlin Zhuang", + "Long Chen", + "Junjie Lu", + "Guoqiang Dong", + "Zhenyuan Miao", + "Wannian Zhang", + "Jian Li", + "Chunquan Sheng" + ], + "year": "September 20, 2017", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/acs.jmedchem.7b01243", + "group": "depth", + "citations": 12 + }, + { + "name": "Directory of Useful Decoys, Enhanced (DUD-E): Better Ligands and Decoys for Better Benchmarking", + "author": [ + "Michael M. Mysinger", + "Michael Carchia", + "John. J. Irwin", + "Brian K. Shoichet" + ], + "year": "June 20, 2012", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm300687e", + "group": "depth", + "citations": 100 + }, + { + "name": "Evaluation of AutoDock and AutoDock Vina on the CASF-2013 Benchmark", + "author": [ + "Thomas Gaillard" + ], + "year": "July 10, 2018", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.8b00312", + "group": "depth", + "citations": 74 + }, + { + "name": "Autodock Vina Adopts More Accurate Binding Poses but Autodock4 Forms Better Binding Affinity", + "author": [ + "Nguyen Thanh Nguyen", + "Trung Hai Nguyen", + "T. Ngoc Han Pham", + "Nguyen Truong Huy", + "Mai Van Bay", + "Minh Quan Pham", + "Pham Cam Nam", + "Van V. Vu", + "Son Tung Ngo" + ], + "year": "December 30, 2019", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.9b00778", + "group": "depth", + "citations": 65 + }, + { + "name": "Glide:\u2009 A New Approach for Rapid, Accurate Docking and Scoring. 1. Method and Assessment of Docking Accuracy", + "author": [ + "Richard A. Friesner", + "Jay L. Banks", + "Robert B. Murphy", + "Thomas A. Halgren", + "Jasna J. Klicic", + "Daniel T. Mainz", + "Matthew P. Repasky", + "Eric H. Knoll", + "Mee Shelley", + "Jason K. Perry", + "David E. Shaw", + "Perry Francis", + "Peter S. Shenkin" + ], + "year": "February 27, 2004", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm0306430", + "group": "depth", + "citations": 97 + }, + { + "name": "Surflex:\u2009 Fully Automatic Flexible Molecular Docking Using a Molecular Similarity-Based Search Engine", + "author": [ + "Ajay N. Jain" + ], + "year": "January 21, 2003", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm020406h", + "group": "depth", + "citations": 100 + }, + { + "name": "ID-Score: A New Empirical Scoring Function Based on a Comprehensive Set of Descriptors Related to Protein\u2013Ligand Interactions", + "author": [ + "Guo-Bo Li", + "Ling-Ling Yang", + "Wen-Jing Wang", + "Lin-Li Li", + "Sheng-Yong Yang" + ], + "year": "February 9, 2013", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci300493w", + "group": "depth", + "citations": 99 + }, + { + "name": "A Knowledge-Based Energy Function for Protein\u2212Ligand, Protein\u2212Protein, and Protein\u2212DNA Complexes", + "author": [ + "Chi Zhang", + "Song Liu", + "Qianqian Zhu", + "Yaoqi Zhou" + ], + "year": "February 16, 2005", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm049314d", + "group": "depth", + "citations": 100 + }, + { + "name": "Novel Anti-Hepatitis B Virus Activity of Euphorbia schimperi and Its Quercetin and Kaempferol Derivatives", + "author": [ + "Mohammad K. Parvez", + "Sarfaraz Ahmed", + "Mohammed S. Al-Dosari", + "Mazin A. S. Abdelwahid", + "Ahmed H. Arbab", + "Adnan J. Al-Rehaily", + "Mai M. Al-Oqail" + ], + "year": "October 21, 2021", + "journal": "ACS Omega", + "doi": "https://doi.org/10.1021/acsomega.1c04320", + "group": "height", + "citations": 0 + }, + { + "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" + ], + "year": "July 16, 2021", + "journal": "ACS Med. Chem. Lett.", + "doi": "https://doi.org/10.1021/acsmedchemlett.1c00251", + "group": "height", + "citations": 0 + }, + { + "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" + ], + "year": "May 13, 2021", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/acs.jmedchem.1c00416", + "group": "height", + "citations": 0 + }, + { + "name": "Topological Characterization and Graph Entropies of Tessellations of Kekulene Structures: Existence of Isentropic Structures and Applications to Thermochemistry, Nuclear Magnetic Resonance, and Electron Spin Resonance", + "author": [ + "S. Ruth Julie Kavitha", + "Jessie Abraham", + "Micheal Arockiaraj", + "Joseph Jency", + "Krishnan Balasubramanian" + ], + "year": "September 1, 2021", + "journal": "J. Phys. Chem. A", + "doi": "https://doi.org/10.1021/acs.jpca.1c06264", + "group": "height", + "citations": 0 + }, + { + "name": "Automatic Identification of Lansoprazole Degradants under Stress Conditions by LC-HRMS with MassChemSite and WebChembase", + "author": [ + "Stefano Bonciarelli", + "Jenny Desantis", + "Laura Goracci", + "Lydia Siragusa", + "Ismael Zamora", + "Elisabeth Ortega-Carrasco" + ], + "year": "June 1, 2021", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.1c00226", + "group": "height", + "citations": 0 + }, + { + "name": "Computational Approaches to Identify Structural Alerts and Their Applications in Environmental Toxicology and Drug Discovery", + "author": [ + "Hongbin Yang", + "Chaofeng Lou", + "Weihua Li", + "Guixia Liu", + "Yun Tang" + ], + "year": "February 24, 2020", + "journal": "Chem. Res. Toxicol.", + "doi": "https://doi.org/10.1021/acs.chemrestox.0c00006", + "group": "height", + "citations": 11 + }, + { + "name": "Toward a Global Understanding of Chemical Pollution: A First Comprehensive Analysis of National and Regional Chemical Inventories", + "author": [ + "Zhanyun Wang", + "Glen W. Walker", + "Derek C. G. Muir", + "Kakuko Nagatani-Yoshida" + ], + "year": "January 22, 2020", + "journal": "Environ. Sci. Technol.", + "doi": "https://doi.org/10.1021/acs.est.9b06379", + "group": "height", + "citations": 100 + }, + { + "name": "ZINC \u2212 A Free Database of Commercially Available Compounds for Virtual Screening", + "author": [ + "John J. Irwin", + "Brian K. Shoichet" + ], + "year": "December 14, 2004", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci049714+", + "group": "depth", + "citations": 99 + }, + { + "name": "ZINC: A Free Tool to Discover Chemistry for Biology", + "author": [ + "John J. Irwin", + "Teague Sterling", + "Michael M. Mysinger", + "Erin S. Bolstad", + "Ryan G. Coleman" + ], + "year": "May 15, 2012", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci3001277", + "group": "depth", + "citations": 100 + }, + { + "name": "ZINC 15 \u2013 Ligand Discovery for Everyone", + "author": [ + "Teague Sterling", + "John J. Irwin" + ], + "year": "October 19, 2015", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/acs.jcim.5b00559", + "group": "depth", + "citations": 98 + }, + { + "name": "Application of Belief Theory to Similarity Data Fusion for Use in Analog Searching and Lead Hopping", + "author": [ + "Steven W. Muchmore", + "Derek A. Debe", + "James T. Metz", + "Scott P. Brown", + "Yvonne C. Martin", + "Philip J. Hajduk" + ], + "year": "April 17, 2008", + "journal": "Journal of Chemical Information and Modeling", + "doi": "https://doi.org/10.1021/ci7004498", + "group": "depth", + "citations": 100 + }, + { + "name": "Do Structurally Similar Molecules Have Similar Biological Activity?", + "author": [ + "Yvonne C. Martin", + "James L. Kofron", + "Linda M. Traphagen" + ], + "year": "August 13, 2002", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm020155c", + "group": "depth", + "citations": 100 + }, + { + "name": "The Properties of Known Drugs. 1. Molecular Frameworks", + "author": [ + "Guy W. Bemis", + "Mark A. Murcko" + ], + "year": "July 19, 1996", + "journal": "Journal of Medicinal Chemistry", + "doi": "https://doi.org/10.1021/jm9602928", + "group": "depth", + "citations": 100 + }, + { + "name": "Molecular Shape Diversity of Combinatorial Libraries:\u2009 A Prerequisite for Broad Bioactivity\u2020", + "author": [ + "Wolfgang H. B. Sauer", + "Matthias K. Schwarz" + ], + "year": "March 14, 2003", + "journal": "J. Chem. Inf. Comput. Sci.", + "doi": "https://doi.org/10.1021/ci025599w", + "group": "depth", + "citations": 99 + } + ], + "links": [ + { + "source": "https://doi.org/10.1021/acs.chemrev.1c00107", + "target": "https://doi.org/10.1021/acs.jcim.9b00249" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00741", + "target": "https://doi.org/10.1021/acs.jcim.9b00249" + }, + { + "source": "https://doi.org/10.1021/acs.jmedchem.0c01332", + "target": "https://doi.org/10.1021/acs.jcim.9b00249" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.9b00250", + "target": "https://doi.org/10.1021/acs.jcim.9b00249" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jctc.0c01006" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jctc.9b00557" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/ci300604z" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jctc.5b00834" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/ci700036j" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/ci500209e" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jm2005145" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/ci300399w" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jp9723574" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jp972358w" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jcim.0c00675" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jmedchem.7b01243" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jm300687e" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jcim.8b00312" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/acs.jcim.9b00778" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jm0306430" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jm020406h" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/ci300493w" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00203", + "target": "https://doi.org/10.1021/jm049314d" + }, + { + "source": "https://doi.org/10.1021/acsomega.1c04320", + "target": "https://doi.org/10.1021/acs.jcim.1c00203" + }, + { + "source": "https://doi.org/10.1021/acsmedchemlett.1c00251", + "target": "https://doi.org/10.1021/acs.jmedchem.0c01332" + }, + { + "source": "https://doi.org/10.1021/acs.jmedchem.1c00416", + "target": "https://doi.org/10.1021/acs.jmedchem.0c01332" + }, + { + "source": "https://doi.org/10.1021/acs.jpca.1c06264", + "target": "https://doi.org/10.1021/acs.chemrev.1c00107" + }, + { + "source": "https://doi.org/10.1021/acs.chemrev.1c00107", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.1c00226", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00741", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "source": "https://doi.org/10.1021/acs.jmedchem.0c01332", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "source": "https://doi.org/10.1021/acs.chemrestox.0c00006", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "source": "https://doi.org/10.1021/acs.est.9b06379", + "target": "https://doi.org/10.1021/acs.jcim.9b00250" + }, + { + "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.0c00675", + "target": "https://doi.org/10.1021/ci049714+" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/ci3001277" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/acs.jcim.5b00559" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/ci7004498" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/jm020155c" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/jm9602928" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00675", + "target": "https://doi.org/10.1021/ci025599w" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.5b00559", + "target": "https://doi.org/10.1021/ci049714+" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.5b00559", + "target": "https://doi.org/10.1021/ci3001277" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.5b00559", + "target": "https://doi.org/10.1021/jm300687e" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.8b00312", + "target": "https://doi.org/10.1021/ci300604z" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.0c01006", + "target": "https://doi.org/10.1021/ci700036j" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.9b00557", + "target": "https://doi.org/10.1021/ci700036j" + }, + { + "source": "https://doi.org/10.1021/ci500209e", + "target": "https://doi.org/10.1021/ci700036j" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.0c01006", + "target": "https://doi.org/10.1021/ci500209e" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.0c01006", + "target": "https://doi.org/10.1021/jm2005145" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.8b00312", + "target": "https://doi.org/10.1021/jm2005145" + }, + { + "source": "https://doi.org/10.1021/ci500209e", + "target": "https://doi.org/10.1021/jm2005145" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.0c00741", + "target": "https://doi.org/10.1021/jm300687e" + }, + { + "source": "https://doi.org/10.1021/acs.jcim.9b00778", + "target": "https://doi.org/10.1021/acs.jcim.8b00312" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.0c01006", + "target": "https://doi.org/10.1021/acs.jcim.9b00778" + }, + { + "source": "https://doi.org/10.1021/acs.jctc.0c01006", + "target": "https://doi.org/10.1021/ci049714+" + }, + { + "source": "https://doi.org/10.1021/ci7004498", + "target": "https://doi.org/10.1021/jm020155c" + }, + { + "source": "https://doi.org/10.1021/acsmedchemlett.1c00251", + "target": "https://doi.org/10.1021/ci025599w" + }, + { + "source": "https://doi.org/10.1021/acs.jmedchem.0c01332", + "target": "https://doi.org/10.1021/ci025599w" + } + ] +} \ No newline at end of file -- GitLab