diff --git a/Output/Graph/cn.js b/Output/Graph/cn.js index 0be4cedd95ec434e295e3581638a47a0c6eb1627..a1f6ea8db1d78c1198c38fff630e514c01606527 100644 --- a/Output/Graph/cn.js +++ b/Output/Graph/cn.js @@ -11,7 +11,8 @@ var svg = d3.select("svg.graph") .call(zoom), width = svg.attr("width"), height = svg.attr("height"); - +var textinfo=''; +var textabstract=''; /** * creates node object and associated attributes */ @@ -179,7 +180,7 @@ function updateNodes(nodes) { node.append("circle") .attr("class", "circle") - .attr("r", function(d) {return r+d.citations*0.1}) + .attr("r", function(d) {return 1.5*r+d.citations*0.05}) .style("fill", function(d){ return color(d.group)}) .on('click', clickNode); @@ -197,11 +198,11 @@ function updateNodes(nodes) { * @param {string} target - target-node */ function updateMarker(color, target) { - var radius = r+target.citations*0.1; - svg.append('defs').append('marker') //arrowhead + var radius=1.5*r+target.citations*0.05 + svg.append('defs').append('marker')//arrowhead .attr('id',color.replace("#", "")+radius) .attr('viewBox','-0 -5 10 10') - .attr('refX',radius+10) + .attr('refX',radius+9.5) .attr('refY',0) .attr('orient','auto') .attr('markerWidth',10) @@ -209,7 +210,7 @@ function updateMarker(color, target) { .attr('xoverflow','visible') .append('svg:path') .attr('d', 'M 0,-5 L 10 ,0 L 0,5') - .attr('fill', color) //arrowhead color + .attr('fill', color)//arrowhead color .style('stroke','none'); return "url(" + color + radius + ")"; }; @@ -226,6 +227,8 @@ function clickNode(node) { d3.select(this.parentNode).selectAll(".circle").style("stroke","black") marklink(node) textfunc(node) + resetbuttonhighlight() + highlightbutton("overview") } /** @@ -236,6 +239,9 @@ function clickRect() { d3.selectAll(".link") .style("stroke", "#999") .attr('marker-end', function(d) {return updateMarker('#999', d.target);}) + textabstract=''; + textinfo=''; + resetbuttonhighlight() document.getElementById('textbox').innerHTML = "Click node"; } @@ -294,10 +300,36 @@ function firstauthor(authors){ * @param {object} node - data of current node */ function textfunc(node){ - document.getElementById('textbox').innerHTML = "Title:" + '</br>' + node.name + + textinfo="Title:" + '</br>' + node.name + '</br>' +'</br>'+"Author:"+ '</br>' +node.author+'</br>'+'</br>'+"Year:"+'</br>' +node.year+'</br>'+'</br>'+"doi:"+'</br>'+'<a href="'+node.doi+ '">'+node.doi +'</a>'+'</br>'+'</br>'+"Citations:"+'</br>'+node.citations; + textabstract=node.abstract; + document.getElementById('textbox').innerHTML = textinfo; +} + + +function highlightbutton(btn){ + resetbuttonhighlight(); + document.getElementById(btn).style.background="#DCDCDC"; +} +function resetbuttonhighlight(){ + document.getElementById("overview").style.background=''; + document.getElementById("abstract").style.background=''; +} + +function displayabstract(a){ + if(textabstract=='' && textinfo==''){ + document.getElementById('textbox').innerHTML="Click node"; + } + else{ + if (a==true){ + document.getElementById('textbox').innerHTML =textabstract; + } + else{ + document.getElementById('textbox').innerHTML =textinfo; + } + } } /** diff --git a/Output/Graph/index.html b/Output/Graph/index.html index e4845d9f7aee1b3eed1b6247358cf8f209aba488..846551f8deb7bab394a66716372fd1cec5247061 100644 --- a/Output/Graph/index.html +++ b/Output/Graph/index.html @@ -27,6 +27,23 @@ button.save{ margin-left: 330px; } + 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; @@ -75,6 +92,9 @@ <button class="resetZoom" onclick="resetZoom()">Reset zoom</button> <button class="center" onclick="center()">Center</button> <button class="save" onclick="savesvg()">Save</button> + <button id="overview" class="overview" onclick='displayabstract(false),highlightbutton("overview")'>Overview</button> + <button id="abstract" class="abstract" onclick='displayabstract(true),highlightbutton("abstract")'>Abstract</button> + <!-- link D3 (version 5) --> <script src="https://d3js.org/d3.v5.min.js"></script> diff --git a/Output/Graph/json_text.json b/Output/Graph/json_text.json index 546be1993ed58042d3ac61cf095626e42e91c8ee..2ac1c1733f8ab395f5b9cf4d88e501e3c4cf1c39 100644 --- a/Output/Graph/json_text.json +++ b/Output/Graph/json_text.json @@ -6,7 +6,8 @@ "year":"1997", "doi": "https://doi.org/10.1021/acs.jcim.9b00249", "group": "input", - "citations": 0 + "citations": 0, + "abstract":"Ehmki ein langer text" }, { "name": "Combining Machine Learning and Computational Chemistry for Predictive Insights Into Chemical Systems ", @@ -14,7 +15,8 @@ "year":"1937", "doi": "https://doi.org/10.1021/acs.chemrev.1c00107", "group": "citing", - "citations": 140 + "citations": 140, + "abstract":"Keit ein langer text" }, { "name": "Disconnected Maximum Common Substructures under Constraints ", @@ -22,7 +24,8 @@ "year":"1991", "doi": "https://doi.org/10.1021/acs.jcim.0c00741", "group": "citing", - "citations": 300 + "citations": 300, + "abstract":"Schmidt ein langer text" }, { "name": "Evolution of Novartis\u2019 Small Molecule Screening Deck Design ", @@ -30,7 +33,8 @@ "year":"2001", "doi": "https://doi.org/10.1021/acs.jmedchem.0c01332", "group": "input", - "citations": 250 + "citations": 250, + "abstract":"Schuffenhauer ein langer text" }, { "name": "Comparing Molecular Patterns Using the Example of SMARTS: Theory and Algorithms ", @@ -38,7 +42,8 @@ "year":"2021", "doi": "https://doi.org/10.1021/acs.jcim.9b00250", "group": "cited", - "citations": 130 + "citations": 130, + "abstract":"Schmidt ein langer text" }, { "name": "Machine learning accelerates quantum mechanics predictions of molecular crystals ", @@ -46,7 +51,8 @@ "year":"2011", "doi": "https://doi.org/10.1016/j.physrep.2021.08.002", "group": "cited", - "citations": 170 + "citations": 170, + "abstract":"Han ein langer text" }, { "name": "The Growing Importance of Chirality in 3D Chemical Space Exploration and Modern Drug Discovery Approaches for Hit-ID ", @@ -54,7 +60,8 @@ "year":"2001", "doi": "https://doi.org/10.1021/acsmedchemlett.1c00251", "group": "cited", - "citations": 210 + "citations": 210, + "abstract":"Silvestri ein langer text" }, { "name": "Target-Based Evaluation of \u201cDrug-Like\u201d Properties and Ligand Efficiencies ", @@ -62,7 +69,8 @@ "year":"2003", "doi": "https://doi.org/10.1021/acs.jmedchem.1c00416", "group": "cited", - "citations": 10 + "citations": 10, + "abstract":"Leeson ein langer text" }, { "name": "BonMOLi\u00e8re: Small-Sized Libraries of Readily Purchasable Compounds, Optimized to Produce Genuine Hits in Biological Screens across the Protein Space ", @@ -70,7 +78,8 @@ "year":"2003", "doi": "https://doi.org/10.3390/ijms22157773", "group": "cited", - "citations": 80 + "citations": 80, + "abstract":"Mathai ein langer text" }, { "name": "Accelerating high-throughput virtual screening through molecular pool-based active learning ", @@ -78,7 +87,8 @@ "year":"2013", "doi": "https://doi.org/10.1039/D0SC06805E", "group": "cited", - "citations": 60 + "citations": 60, + "abstract":"Graff ein langer text" }, { "name": "Compound Screening ", @@ -86,7 +96,8 @@ "year":"2009", "doi": "https://doi.org/10.1016/B978-0-12-820472-6.00078-5", "group": "citing", - "citations": 280 + "citations": 280, + "abstract":"Numao ein langer text" } ], "links": [ diff --git a/Output/Graph_mit_Zeitstrahl/cn_Zeitstrahl.js b/Output/Graph_mit_Zeitstrahl/cn_Zeitstrahl.js index f78f6537bd6875a4ca19061dffe36636808b6cca..ce08a98ad560cb3d6867c3fcf3c708ac6086c6f8 100644 --- a/Output/Graph_mit_Zeitstrahl/cn_Zeitstrahl.js +++ b/Output/Graph_mit_Zeitstrahl/cn_Zeitstrahl.js @@ -11,6 +11,8 @@ var svg = d3.select("svg") .call(zoom), width = svg.attr("width"), height = svg.attr("height"); +var textinfo=''; +var textabstract=''; /** * creates node object and associated attributes @@ -22,7 +24,10 @@ color = d3.scaleOrdinal() .range([' #01d7c0', ' #8b90fe ', ' #a15eb2 ']), yscale = d3.scaleOrdinal() .domain(["citing", "input", "cited"]) - .range([50, height/2, height-50]), + .range([0, 200, 400]), +linetype=d3.scaleOrdinal() + .domain(["line","dotted"]) + .range([("8,0"),("8,8")]), toRemove; /** @@ -42,6 +47,59 @@ var rect = svg.append("rect") .style("fill", 'white') .on('click', clickRect); +/** +* creates svg object (legend) and associated attributes +*/ +var svglegend = d3.select("svg.legendsvg"), +legendposition = [65,95,125], +arrowlegendposition = [0,25], +arrowgroupnames = ["citation","self-citation"], +groupnames = ["citing","input","cited"]; + +var legend = svglegend.selectAll(".legend") + .data(legendposition) + .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 groupnames[i]}); + +legend.append("circle") + .attr("r", r) + .attr("cx",30-r) + .style("fill", color); + +var legendarrow = svglegend.selectAll(".legendarr") + .data(arrowlegendposition) + .enter() + .append("g") + .attr("class","legendarr") + .attr("transform", function(d) { return "translate(0," + d + ")"; }); + +legendarrow.append("line") + .attr("x1", 10) + .attr("x2", 50) + .attr("y1", 10) + .attr("y2", 10) + .style("stroke-dasharray",linetype) + .style("stroke", '#999') + .style("stroke-width", "1px") + .style('pointer-events', 'none') + .attr('marker-end',updateMarker('#999',this)); + +legendarrow.append("text") + .attr("x", 80) + .attr("y", 10) + .attr("dy", ".35em") + .style("text-anchor", "start") + .text(function(d,i){return arrowgroupnames[i]}); + /** * creates a new simulation * arranges the nodes according to their group on the y-axis @@ -95,7 +153,7 @@ d3.json("json_text.json").then(function(graph) { * @param {object} nodes - nodes * @param {object} links - links */ -function update(links, nodes) { +function update(links, nodes) { //THISS updateXAxis(nodes); updateLinks(links); updateNodes(nodes); @@ -106,12 +164,13 @@ function update(links, nodes) { simulation.force("link") .links(links); - d3.selectAll(".link") - .attr('marker-end', function(d) {return updateMarker("#999", d.target);}); + link + .attr('marker-end', function(d) {return updateMarker("#999", d.target);}) + .style("stroke-dasharray",function(d){return self_cit(d.source,d.target)? ("8,8"): ("1,0")}); } /** -* initializes and shows xAxis +* initializes and shows xAxis THISS * @param {object} nodes - nodes */ function updateXAxis(nodes) { @@ -166,7 +225,7 @@ function updateNodes(nodes) { node.append("circle") .attr("class", "circle") - .attr("r", function(d) {return r+d.citations*0.1}) + .attr("r", function(d) {return 1.5*r+d.citations*0.05}) .style("fill", function(d){ return color(d.group)}) .on('click', clickNode); @@ -184,11 +243,11 @@ function updateNodes(nodes) { * @param {string} target - target-node */ function updateMarker(color, target) { - var radius = r+target.citations*0.1; + var radius=1.5*r+target.citations*0.05 svg.append('defs').append('marker')//arrowhead .attr('id',color.replace("#", "")+radius) .attr('viewBox','-0 -5 10 10') - .attr('refX',radius+10) + .attr('refX',radius+9.5) .attr('refY',0) .attr('orient','auto') .attr('markerWidth',10) @@ -213,6 +272,8 @@ function clickNode(node) { d3.select(this.parentNode).selectAll(".circle").style("stroke","black") marklink(node) textfunc(node) + resetbuttonhighlight() + highlightbutton("overview") } /** @@ -226,6 +287,19 @@ function clickRect() { document.getElementById('textbox').innerHTML = "Click node"; } +function create_author_array(authors){ + authorarray = authors.split(",") + authorarray = authorarray.map(elem =>{return elem.trim();}) + + return authorarray +} + +function self_cit(source,target){ + sourceauthors = create_author_array(source.author) + targetauthors = create_author_array(target.author) + + return sourceauthors.some(item=>targetauthors.includes(item)) +} /** * sets color of link (line and arrowhead) to black if it is directly connected to node * and to grey otherwise @@ -248,6 +322,7 @@ function isLinkForNode(node, link){ return link.source.index == node.index || link.target.index == node.index; } + /** * returns last name of first author * @param {string} authors - the comma-separated string of authors @@ -267,12 +342,39 @@ function firstauthor(authors){ * @param {object} node - data of current node */ function textfunc(node){ - document.getElementById('textbox').innerHTML = "Title:" + '</br>' + node.name + + textinfo="Title:" + '</br>' + node.name + '</br>' +'</br>'+"Author:"+ '</br>' +node.author+'</br>'+'</br>'+"Year:"+'</br>' +node.year+'</br>'+'</br>'+"doi:"+'</br>'+'<a href="'+node.doi+ '">'+node.doi +'</a>'+'</br>'+'</br>'+"Citations:"+'</br>'+node.citations; + textabstract=node.abstract; + document.getElementById('textbox').innerHTML = textinfo; +} + + +function highlightbutton(btn){ + resetbuttonhighlight(); + document.getElementById(btn).style.background="#DCDCDC"; +} +function resetbuttonhighlight(){ + document.getElementById("overview").style.background=''; + document.getElementById("abstract").style.background=''; +} + +function displayabstract(a){ + if(textabstract=='' && textinfo==''){ + document.getElementById('textbox').innerHTML="Click node"; + } + else{ + if (a==true){ + document.getElementById('textbox').innerHTML =textabstract; + } + else{ + document.getElementById('textbox').innerHTML =textinfo; + } + } } + /** * updates the positions of the links and nodes */ @@ -347,4 +449,115 @@ function resetZoom() { function center() { d3.select('svg') .call(zoom.translateTo, 0.5 * width, 0.5 * height); +} + + +function savesvg(){ + var svgString = getSVGString(d3.select("svg.legendsvg").node()); + svgString2Image( 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 + } +}; + +// Below are the functions that handle actual exporting: +// getSVGString ( svgNode ) and svgString2Image( svgString, width, height, format, callback ) +function getSVGString( svgNode ) { + svgNode.setAttribute('xlink', 'http://www.w3.org/1999/xlink'); + var cssStyleText = getCSSStyles( svgNode ); + appendCSS( 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 getCSSStyles( 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 appendCSS( 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 ); + } +} + + +function svgString2Image( 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; } \ No newline at end of file diff --git a/Output/Graph_mit_Zeitstrahl/index.html b/Output/Graph_mit_Zeitstrahl/index.html new file mode 100644 index 0000000000000000000000000000000000000000..ac85e8f7d9510a38033a5f0cbe8dcfe438982708 --- /dev/null +++ b/Output/Graph_mit_Zeitstrahl/index.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="utf-8"> + + <style type="text/css"> + button { + width: 100px; + height:20px; + display: flex; + justify-content: center; + position: absolute; + left: 430px; + top: 575px; + } + + button.resetGraph {} + + button.resetZoom { + margin-left: 110px; + } + + button.center { + margin-left: 220px; + } + + button.save{ + margin-left: 330px; + } + 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> + <!-- for testing --> + <p id="id"></p> <!--for commenting with document.getElementById("id").innerHTML = "text"; --> + + <!-- 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> + + <!-- reset buttons --> + <!-- <button onclick="javascript:location.reload();">Reload</button>--> + <button class="resetGraph" onclick="resetGraph()">Reset graph</button> + <button class="resetZoom" onclick="resetZoom()">Reset zoom</button> + <button class="center" onclick="center()">Center</button> + <button class="save" onclick="savesvg()">Save</button> + <button id="overview" class="overview" onclick='displayabstract(false),highlightbutton("overview")'>Overview</button> + <button id="abstract" class="abstract" onclick='displayabstract(true),highlightbutton("abstract")'>Abstract</button> + + + <!-- link D3 (version 5) --> + <script src="https://d3js.org/d3.v5.min.js"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/d3-legend/2.13.0/d3-legend.js"></script> + <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> + <script type="text/javascript" src="cn_Zeitstrahl.js"></script> + +</body> +</html> \ No newline at end of file diff --git a/Output/Graph_mit_Zeitstrahl/json_text.json b/Output/Graph_mit_Zeitstrahl/json_text.json index 1a080a0c11d3c2234fb21e462e6ca02c03548bc8..2ac1c1733f8ab395f5b9cf4d88e501e3c4cf1c39 100644 --- a/Output/Graph_mit_Zeitstrahl/json_text.json +++ b/Output/Graph_mit_Zeitstrahl/json_text.json @@ -2,91 +2,102 @@ "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":"2001", + "author":"Emanuel S. R. Ehmki,Robert Schmidt, Farina Ohm, Matthias Rarey", + "year":"1997", "doi": "https://doi.org/10.1021/acs.jcim.9b00249", "group": "input", - "citations": 0 + "citations": 0, + "abstract":"Ehmki ein langer text" }, { "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":"1967", + "author": "John A. Keith, Valentin Vassilev-Galindo, Bingqing Cheng, Stefan Chmiela, Michael Gastegger, Klaus-Robert M\u00fcller, Alexandre Tkatchenko ", + "year":"1937", "doi": "https://doi.org/10.1021/acs.chemrev.1c00107", "group": "citing", - "citations": 140 + "citations": 140, + "abstract":"Keit ein langer text" }, { "name": "Disconnected Maximum Common Substructures under Constraints ", - "author": "Robert Schmidt, Florian Krull, Anna Lina Heinzke, Matthias Rarey. ", + "author": "Robert Schmidt, Florian Krull, Anna Lina Heinzke,Emanuel S. R. Ehmki, Matthias Rarey ", "year":"1991", "doi": "https://doi.org/10.1021/acs.jcim.0c00741", "group": "citing", - "citations": 300 + "citations": 300, + "abstract":"Schmidt ein langer text" }, { "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":"1990", + "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":"2001", "doi": "https://doi.org/10.1021/acs.jmedchem.0c01332", "group": "input", - "citations": 250 + "citations": 250, + "abstract":"Schuffenhauer ein langer text" }, { "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. ", + "author": "Robert Schmidt, Emanuel S. R. Ehmki, Farina Ohm, Hans-Christian Ehrlich, Andriy Mashychev, Matthias Rarey ", "year":"2021", "doi": "https://doi.org/10.1021/acs.jcim.9b00250", "group": "cited", - "citations": 130 + "citations": 130, + "abstract":"Schmidt ein langer text" }, { "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. ", + "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 ", "year":"2011", "doi": "https://doi.org/10.1016/j.physrep.2021.08.002", "group": "cited", - "citations": 170 + "citations": 170, + "abstract":"Han ein langer text" }, { "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. ", + "author": "Ilaria Proietti Silvestri, Robert Schmidt,Nadine Schneider ,Paul J. J. Colbon ", "year":"2001", "doi": "https://doi.org/10.1021/acsmedchemlett.1c00251", "group": "cited", - "citations": 210 + "citations": 210, + "abstract":"Silvestri ein langer text" }, { "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. ", + "author": "Paul D. Leeson,Ansgar Schuffenhauer, A. Patricia Bento, Anna Gaulton, Anne Hersey, Emma J. Manners, Chris J. Radoux, Andrew R. Leach ", "year":"2003", "doi": "https://doi.org/10.1021/acs.jmedchem.1c00416", "group": "cited", - "citations": 10 + "citations": 10, + "abstract":"Leeson ein langer text" }, { "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. ", + "author": "Neann Mathai, Conrad Stork, Johannes Kirchmair ", "year":"2003", "doi": "https://doi.org/10.3390/ijms22157773", "group": "cited", - "citations": 80 + "citations": 80, + "abstract":"Mathai ein langer text" }, { "name": "Accelerating high-throughput virtual screening through molecular pool-based active learning ", - "author": "David E. Graff, Eugene I. Shakhnovich, Connor W. Coley. ", + "author": "David E. Graff, Eugene I. Shakhnovich, Connor W. Coley ", "year":"2013", "doi": "https://doi.org/10.1039/D0SC06805E", "group": "cited", - "citations": 60 + "citations": 60, + "abstract":"Graff ein langer text" }, { "name": "Compound Screening ", - "author": "Shin Numao.", + "author": "Shin Numao", "year":"2009", "doi": "https://doi.org/10.1016/B978-0-12-820472-6.00078-5", "group": "citing", - "citations": 280 + "citations": 280, + "abstract":"Numao ein langer text" } ], "links": [