diff options
-rwxr-xr-x | ratspub.py | 8 | ||||
-rw-r--r-- | server.py | 29 | ||||
-rw-r--r-- | templates/cytoscape.html | 97 | ||||
-rw-r--r-- | templates/index.html | 4 | ||||
-rw-r--r-- | templates/layout.html | 2 | ||||
-rw-r--r-- | templates/sentences.html | 9 |
6 files changed, 99 insertions, 50 deletions
@@ -26,7 +26,7 @@ def getSentences(query, gene): for sent in sentences: if findWholeWord(gene)(sent): sent=re.sub(r'\b(%s)\b' % gene, r'<b>\1</b>', sent, flags=re.I) - out+=pmid+"\t"+sent+"<br>\n" + out+=pmid+"\t"+sent+"\n" return(out) def gene_addiction(gene): @@ -87,7 +87,7 @@ def generate_edges(data): edgeCnts[edgeID]=1 for edgeID in edgeCnts: (source,target)=edgeID.split("|") - json0+="{ data: { id: \'" + edgeID + "\', source: \'" + source + "\', target: '" + target + "\', sentCnt: '" + str(edgeCnts[edgeID]) + "' } },\n" + json0+="{ data: { id: \'" + edgeID + "\', source: \'" + source + "\', target: '" + target + "\', sentCnt: '" + str(edgeCnts[edgeID]) + "', url:'/sentences?edgeID=" + edgeID + "' } },\n" return(json0) @@ -103,9 +103,9 @@ addiction=undic(addiction_d) drug_d = {"alcohol":"alcohol|alcoholism", "nicotine":"smoking|nicotine|tobacco", - "amphetamine":"methamphetamine|amphetamine|METH", "cocaine":"cocaine", "opioid":"opioid|fentanyl|oxycodone|oxycontin|heroin|morphine", + "amphetamine":"methamphetamine|amphetamine|METH", "cannabinoid":"marijuana|cannabinoid|tetrahydrocannabinol|thc|thc-9" } drug=undic(drug_d) @@ -121,10 +121,10 @@ brain_d ={"cortex":"cortex|pfc|vmpfc|il|pl|prelimbic|infralimbic", brain="cortex|accumbens|striatum|amygadala|hippocampus|tegmental|mesolimbic|infralimbic|prelimbic" function_d={"plasticity":"LTP|LTD|plasticity|synaptic|epsp|epsc", - "neurotransmission": "neurotransmission|glutamate|GABA|cholinergic|serotoninergic", "signalling":"signalling|phosphorylation|glycosylation", # "regulation":"increased|decreased|regulated|inhibited|stimulated", "transcription":"transcription|methylation|histone|ribosome", + "neurotransmission": "neurotransmission|glutamate|GABA|cholinergic|serotoninergic", } function=undic(function_d) @@ -15,6 +15,8 @@ def home(): @app.route("/search") def search(): + global all_sentences + all_sentences=str() genes=request.args.get('query') genes=genes.replace(",", " ") genes=genes.replace(";", " ") @@ -23,14 +25,29 @@ def search(): edges=str() for gene in genes: nodes+="{ data: { id: '" + gene + "', nodecolor:'#FADBD8', fontweight:700} },\n" - tmp0=gene_addiction(gene) - e0=generate_edges(tmp0) - tmp1=gene_functional(gene) - e1=generate_edges(tmp1) - tmp2=gene_anatomical(gene) - e2=generate_edges(tmp2) + sent0=gene_addiction(gene) + e0=generate_edges(sent0) + sent1=gene_functional(gene) + e1=generate_edges(sent1) + sent2=gene_anatomical(gene) + e2=generate_edges(sent2) edges+=e0+e1+e2 + all_sentences+=sent0+sent1+sent2 return render_template('cytoscape.html', elements=nodes+edges) +@app.route("/sentences") +def sentences(): + edge=request.args.get('edgeID') + (gene0, cat0)=edge.split("|") + print (gene0 + cat0) + out=str() + for sent in all_sentences.split("\n"): + #print (sent) + if len(sent.strip())!=0: + (gene,nouse,cat, pmid, text)=sent.split("\t") + if (gene == gene0 and cat == cat0) : + out+= "<li> "+ text + " <a href=\"https://www.ncbi.nlm.nih.gov/pubmed/?term=" + pmid +"\" target=_new>PMID:"+pmid+"<br></a>" + return render_template('sentences.html', sentences=out) + if __name__ == '__main__': app.run(debug=True) diff --git a/templates/cytoscape.html b/templates/cytoscape.html index 24c18c1..ab30562 100644 --- a/templates/cytoscape.html +++ b/templates/cytoscape.html @@ -2,45 +2,68 @@ {% block content %} <script type="text/javascript" src="{{ url_for('static', filename='cytoscape.min.js') }}"></script> - - - <div id="cy"></div> - <script> - var cy = cytoscape({ - container: document.getElementById('cy'), - - style: [ - { selector: 'node', - css: { - 'content': 'data(id)', - 'text-valign': 'center', - 'text-halign': 'center', - 'background-color': 'data(nodecolor)', - 'font-weight': 'data(fontweight)' - } - }, - - { selector: 'edge', - css: { - 'content': 'data(sentCnt)', - 'curve-style': 'bezier', - "opacity": "0.4", - } + <div id="cy"></div> + <script> + var cy = cytoscape({ + container: document.getElementById('cy'), + style: [ + { selector: 'node', + css: { + 'content': 'data(id)', + 'text-valign': 'center', + 'text-halign': 'center', + 'background-color': 'data(nodecolor)', + 'font-weight': 'data(fontweight)', + 'font-size': '20%' + } + }, + { selector: 'edge', + css: { + 'content': 'data(sentCnt)', + 'curve-style': 'bezier' + } + }, + { selector: 'node.highlight', + style: { + 'border-color': '#FFF', + 'border-width': '2px' + } + }, + { + selector: 'node.semitransp', + style:{ 'opacity': '0.5' } + }, + { + selector: 'edge.highlight', + style: { 'mid-target-arrow-color': '#FFF' } + }, + { + selector: 'edge.semitransp', + style:{ 'opacity': '0.2' } + } + ], + elements:[ {{ elements | safe }} ], + layout: { + name: 'circle' } - ], - elements:[ {{ elements | safe }} ], - - layout: { - name: 'concentric', - concentric: function( node ){ - return node.degree(); - }, - levelWidth: function( nodes ){ - return 2; + }); + cy.on('tap', 'edge', function(){ + try { // your browser may block popups + window.open( this.data('url') ); + } catch(e){ // fall back on url change + window.location.href = this.data('url'); } - }, - - }); + }); + cy.on('mouseover', 'node', function(e){ + var sel = e.target; + cy.elements().difference(sel.outgoers()).not(sel).addClass('semitransp'); + sel.addClass('highlight').outgoers().addClass('highlight'); + }); + cy.on('mouseout', 'node', function(e){ + var sel = e.target; + cy.elements().removeClass('semitransp'); + sel.removeClass('highlight').outgoers().removeClass('highlight'); + }); </script> {% endblock %} diff --git a/templates/index.html b/templates/index.html index c7bafcd..4f19269 100644 --- a/templates/index.html +++ b/templates/index.html @@ -3,8 +3,8 @@ <h3> Searching PubMed to find sentences related to addiction</h3> - <form class="form-inline my-2 my-lg-0" action="/network" method="POST"> - <input name="query" class="form-control mr-sm-2" type="search" placeholder="Nrxn1" aria-label="search" value="Nrxn1"> + <form class="form-inline my-2 my-lg-0" action="/search"> + <input name="query" class="form-control mr-sm-2" type="search" placeholder="Rgma Nrxn3" aria-label="search" value="Rgma Nrxn3"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> diff --git a/templates/layout.html b/templates/layout.html index 2887e2f..421798e 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -15,7 +15,7 @@ <body> <nav class="navbar navbar-expand-lg navbar-light bg-light"> - <a class="navbar-brand" href="#">GatPub</a> + <a class="navbar-brand" href="#">RatsPub</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> diff --git a/templates/sentences.html b/templates/sentences.html new file mode 100644 index 0000000..c481817 --- /dev/null +++ b/templates/sentences.html @@ -0,0 +1,9 @@ +{% extends "layout.html" %} +{% block content %} + +{{ sentences | safe }} + +{% endblock %} + + + |