interactivereport / cellxgene_VIP

Enables cellxgene to generate violin, stacked violin, stacked bar, heatmap, volcano, embedding, dot, track, density, 2D density, sankey and dual-gene plot in high-resolution SVG/PNG format. It also performs differential gene expression analysis and provides a Command Line Interface (CLI) for advanced users to perform analysis using python and R.
https://cellxgenevip-ms.bxgenomics.com
MIT License
129 stars 44 forks source link

VIP button does not appear in cellxgene #21

Closed LisaSikkema closed 4 years ago

LisaSikkema commented 4 years ago

Hi all,

Thanks for developing this plugin, it looks great in the demo and I'm excited to start using it. I installed VIP as instructed in the readme (no errors occurred, just a bunch of warnings), but when I launch cellxgene I don't see the VIP button in my browser. How should I start troubleshooting? I have no idea what the problem is.

Thanks!

Lisa

z5ouyang commented 4 years ago

If you have used original cellxgene before, maybe the cache of your browser needs to be cleared. And then refresh the page to see if the VIP window minimized at the top left corner.

interactivereport commented 4 years ago

This is the command line I used and log info,

Screen Shot 2020-09-02 at 8 52 56 PM

Then you should see "Visualization In Plugin" bar near cellxgene icon,

Screen Shot 2020-09-02 at 8 54 45 PM

If you open Chrome Developer Tools, you should see these messages in Console, (Please pull the latest code, run ./update.VIPInterface.sh and restart cellxgene)

Screen Shot 2020-09-02 at 8 55 08 PM
LisaSikkema commented 4 years ago

Hi! Thanks for the quick reply. Clearing the cache didn't help; also I know that something worked, because the name of the cellxgene tab in my browser is "cellxgene VIP".

The output of the cellxgene launch command is:

There's a new version of cellxgene available (0.16.4)!
To upgrade, run the following: pip install --upgrade cellxgene

[cellxgene] Starting the CLI...
[cellxgene] Loading data from atlas_OUTPUT.h5ad, this may take a while...
[cellxgene] CAUTION: due to the size of your dataset, running differential expression may take longer or fail.
[cellxgene] Launching! Please go to http://127.0.0.1:5005 in your browser.
[cellxgene] Type CTRL-C at any time to exit.

Chrome Developer Tools showed me a bunch of errors, maybe they explain it?

Screenshot 2020-09-03 at 10 28 00

baohongz commented 4 years ago

Could you please pull the latest code and run

./update.VIPInterface.sh once

After the run, you should see something like this,

ls -l /opt/anaconda3/lib/python3.7/site-packages/server/common/web/static/.

total 584
drwxr-xr-x 2 bzhang1 compbio    207 Jul 22 09:55 ace
drwxrwxr-x 2 bzhang1 compbio   4096 Apr 29 23:09 assets
-rwxr-xr-x 1 bzhang1 compbio  31196 Sep  3 10:51 color_brewer_diverging.png
-rwxr-xr-x 1 bzhang1 compbio  80225 Sep  3 10:51 color_brewer_sequential.png
-rw-rw-r-- 1 bzhang1 compbio  14216 Sep  3 10:51 color_map.png
drwxrwxr-x 5 bzhang1 compbio   4096 Apr 23 22:14 DataTables
-rwxrwxr-x 1 bzhang1 compbio 138407 Sep  3 10:51 interface.html
-rwxrwxr-x 1 bzhang1 compbio  88144 Sep  3 10:51 jquery.min.js
-rw-r--r-- 1 bzhang1 compbio 228077 Sep  3 10:51 jquery-ui.min.js
drwxrwxr-x 3 bzhang1 compbio    137 Apr 23 21:47 jspanel
drwxr-xr-x 2 bzhang1 compbio    102 Jul 26 17:16 stackedbar

then load a link similar to this to check availability in Chrome browser,

http://yourhost:8000/static/jquery.min.js

LisaSikkema commented 4 years ago

okay I removed cellxgene, cloned the repo, reinstalled, then ran the update.VIPInterface.sh command, and got an output similar to what you showed, but I still don't see the button.

Any other options?

I'm accessing cellxgene, that I run on a VM, by using a reverse proxy (nginx) in case that is of any relevance.

interactivereport commented 4 years ago
  1. Disable Chrome cache by following the link, https://www.scorchsoft.com/blog/force-chrome-clear-cache
  2. Load http://yourhost:yourport/static/assets/favicon-48x48.png, you should see cellxgene icon in your Chrome browser
  3. On server side, you should see these lines while you perform step 2 Screen Shot 2020-09-04 at 11 48 23 AM

Please show us error messages in the Console of Chrome Developer Tools and on screen log on server side. I suspect that it is related to file permission.

LisaSikkema commented 4 years ago

Hi! Thanks for the instructions. I followed them, the icon perfectly shows, nothing is printed in the Chrome Developer Tools console. On server side, indeed this is printed:

[cellxgene] Type CTRL-C at any time to exit.
 * Serving Flask app "server.app.app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5005/ (Press CTRL+C to quit)
127.0.0.1 - - [07/Sep/2020 11:43:14] "GET //static/assets/favicon-48x48.png HTTP/1.0" 200 -
interactivereport commented 4 years ago

Here are outputs of these two commands from my environment,

(test2) [bzhang1@omicsoft01 cellxgene_VIP]$ which cellxgene
/opt/anaconda3/envs/test2/bin/cellxgene
(test2) [bzhang1@omicsoft01 cellxgene_VIP]$ grep jsPanel $(python -c "import server as _; print(_.__file__.replace('/__init__.py',''))")/common/web/templates/index.html

*/.bp3-omnibar{-webkit-filter:blur(0);filter:blur(0);opacity:1;top:20vh;left:calc(50% - 250px);z-index:21;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(16,22,26,.1),0 4px 8px rgba(16,22,26,.2),0 18px 46px 6px rgba(16,22,26,.2);box-shadow:0 0 0 1px rgba(16,22,26,.1),0 4px 8px rgba(16,22,26,.2),0 18px 46px 6px rgba(16,22,26,.2);background-color:#fff;width:500px}.bp3-omnibar.bp3-overlay-appear,.bp3-omnibar.bp3-overlay-enter{-webkit-filter:blur(20px);filter:blur(20px);opacity:.2}.bp3-omnibar.bp3-overlay-appear-active,.bp3-omnibar.bp3-overlay-enter-active{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transition-property:opacity,-webkit-filter;transition-property:opacity,-webkit-filter;transition-property:filter,opacity;transition-property:filter,opacity,-webkit-filter;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,1,.75,.9);transition-timing-function:cubic-bezier(.4,1,.75,.9);-webkit-transition-delay:0;transition-delay:0}.bp3-omnibar.bp3-overlay-exit{-webkit-filter:blur(0);filter:blur(0);opacity:1}.bp3-omnibar.bp3-overlay-exit-active{-webkit-filter:blur(20px);filter:blur(20px);opacity:.2;-webkit-transition-property:opacity,-webkit-filter;transition-property:opacity,-webkit-filter;transition-property:filter,opacity;transition-property:filter,opacity,-webkit-filter;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,1,.75,.9);transition-timing-function:cubic-bezier(.4,1,.75,.9);-webkit-transition-delay:0;transition-delay:0}.bp3-omnibar .bp3-input{border-radius:0;background-color:transparent}.bp3-omnibar .bp3-input,.bp3-omnibar .bp3-input:focus{-webkit-box-shadow:none;box-shadow:none}.bp3-omnibar .bp3-menu{border-radius:0;-webkit-box-shadow:inset 0 1px 0 rgba(16,22,26,.15);box-shadow:inset 0 1px 0 rgba(16,22,26,.15);background-color:transparent;max-height:calc(60vh - 40px);overflow:auto}.bp3-omnibar .bp3-menu:empty{display:none}.bp3-dark .bp3-omnibar,.bp3-omnibar.bp3-dark{-webkit-box-shadow:0 0 0 1px rgba(16,22,26,.2),0 4px 8px rgba(16,22,26,.4),0 18px 46px 6px rgba(16,22,26,.4);box-shadow:0 0 0 1px rgba(16,22,26,.2),0 4px 8px rgba(16,22,26,.4),0 18px 46px 6px rgba(16,22,26,.4);background-color:#30404d}.bp3-omnibar-overlay .bp3-overlay-backdrop{background-color:rgba(16,22,26,.2)}.bp3-select-popover .bp3-popover-content{padding:5px}.bp3-select-popover .bp3-input-group{margin-bottom:0}.bp3-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto;padding:0}.bp3-select-popover .bp3-menu:not(:first-child){padding-top:5px}.bp3-multi-select{min-width:150px}.bp3-multi-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto}.bp3-select-popover .bp3-popover-content{padding:5px}.bp3-select-popover .bp3-input-group{margin-bottom:0}.bp3-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto;padding:0}.bp3-select-popover .bp3-menu:not(:first-child){padding-top:5px}@font-face{font-family:'Roboto Condensed';font-style:italic;src:url(/static/assets/RobotoCondensed-Italic-aca8cfe6a0fd2abecaa6e21a19f66eba.ttf) format('truetype');font-weight:400}@font-face{font-family:'Roboto Condensed';font-style:normal;src:url(/static/assets/RobotoCondensed-Regular-db6d916952fb988edac1e531d47ff83a.ttf) format('truetype');font-weight:400}@font-face{font-family:'Roboto Condensed';font-style:normal;src:url(/static/assets/RobotoCondensed-Bold-89a396525c0de98da36505cb04eb9373.ttf) format('truetype');font-weight:700}.container__container___g6J_y{min-height:100%}.categorical__hover___EpB01,.categorical__value___2RKaC:hover{background:rgba(167,182,194,.3)}.scatterplot__scatterplot___t8EZL{display:block}.scatterplot__scatterplot___t8EZL canvas,.scatterplot__scatterplot___t8EZL svg{font:10px sans-serif;position:absolute}.scatterplot__scatterplot___t8EZL canvas{opacity:.9;pointer-events:none}.graph__graphCanvas___3bK5U path{shape-rendering:crispEdges}#graph__graphWrapper___2uUZt{position:relative}#graph__graphAttachPoint___2BNGY,.graph__graphCanvas___3bK5U,.graph__graphSVG___3hOWu{position:absolute}#graph__graphSVG___3hOWu{pointer-events:none}.graph__axis___QcLSb line,.graph__axis___QcLSb path{fill:none;stroke:#000;stroke-width:1px}circle{stroke-width:4px;stroke:#000;fill:none}.graph__hidden___3W5vy{display:none}</style></head><body><script type="text/javascript">window.CELLXGENE={},window.CELLXGENE.API={prefix:window.location.href+"api/",version:"v0.2/"}</script><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><script src="static/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="UTF-8"></script><link href="static/jspanel/dist/jspanel.css" rel="stylesheet"><script src="static/jspanel/dist/jspanel.js"></script><script src="static/jspanel/dist/extensions/modal/jspanel.modal.js"></script><script src="static/jspanel/dist/extensions/tooltip/jspanel.tooltip.js"></script><script src="static/jspanel/dist/extensions/hint/jspanel.hint.js"></script><script src="static/jspanel/dist/extensions/layout/jspanel.layout.js"></script><script src="static/jspanel/dist/extensions/contextmenu/jspanel.contextmenu.js"></script><script src="static/jspanel/dist/extensions/dock/jspanel.dock.js"></script><script>var setInnerHTML=function(e,t){e.innerHTML=t,Array.from(e.querySelectorAll("script")).forEach(e=>{const t=document.createElement("script");Array.from(e.attributes).forEach(e=>t.setAttribute(e.name,e.value)),t.appendChild(document.createTextNode(e.innerHTML)),e.parentNode.replaceChild(t,e)})},plotPanel=jsPanel.create({panelSize:"190 0",position:"left-top 160 6",dragit:{containment:[-10,-2e3,-4e3,-2e3]},boxShadow:1,border:"solid #D4DBDE thin",contentOverflow:"scroll scroll",headerControls:{close:"remove",minimize:"remove",maximize:"remove"},headerTitle:function(){return"<strong>Visualization in Plugin</strong>"},contentAjax:{url:"static/interface.html",done:function(e){setInnerHTML(e.content,this.responseText)}},onwindowresize:function(e,t){var n=parseInt(this.currentData.top),i=parseInt(this.currentData.left);(n<-10||window.innerHeight-n<10||window.innerWidth-i<10||i+parseInt(this.currentData.width)<10)&&this.reposition("left-top 160 6")},onunsmallified:function(e,t){this.reposition("center-top -370 180"),this.resize({width:740,height:function(){return Math.min(480,.6*window.innerHeight)}})},onsmallified:function(e,t){this.reposition("left-top 160 6"),this.style.width="190px"}}).smallify();plotPanel.headerbar.style.background="#D4DBDE"</script><div id="root"></div>{% for script in SCRIPTS %}<script type="text/javascript" src="{{script | safe}}"></script>{% endfor %}<script type="text/javascript">!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=110)}([function(e,t,n){"use strict";e.exports=n(111)},function(e,t,n){"use strict";var r=n(11);n.d(t,"a",(function(){return r}));var i=n(28);n.d(t,"b",(function(){return i}));var o=n(6);n.d(t,"c",(function(){return o}))},function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return a})),n.d(t,"b",(function(){return c})),n.d(t,"e",(function(){return s}));
interactivereport commented 4 years ago

Please remember to run "config.sh" that create and copy files needed by cellxgene_VIP.

LisaSikkema commented 4 years ago

Hi! Why was this issue closed?

my output for the two commands you posted are:

(cellxgene) [lisas@icbscrna ~]$ which cellxgene
~/miniconda3/envs/cellxgene/bin/cellxgene
(cellxgene) [lisas@icbscrna ~]$ grep jsPanel $(python -c "import server as _; print(_.__file__.replace('/__init__.py',''))")/common/web/templates/index.html
*/.bp3-omnibar{-webkit-filter:blur(0);filter:blur(0);opacity:1;top:20vh;left:calc(50% - 250px);z-index:21;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(16,22,26,.1),0 4px 8px rgba(16,22,26,.2),0 18px 46px 6px rgba(16,22,26,.2);box-shadow:0 0 0 1px rgba(16,22,26,.1),0 4px 8px rgba(16,22,26,.2),0 18px 46px 6px rgba(16,22,26,.2);background-color:#fff;width:500px}.bp3-omnibar.bp3-overlay-appear,.bp3-omnibar.bp3-overlay-enter{-webkit-filter:blur(20px);filter:blur(20px);opacity:.2}.bp3-omnibar.bp3-overlay-appear-active,.bp3-omnibar.bp3-overlay-enter-active{-webkit-filter:blur(0);filter:blur(0);opacity:1;-webkit-transition-property:opacity,-webkit-filter;transition-property:opacity,-webkit-filter;transition-property:filter,opacity;transition-property:filter,opacity,-webkit-filter;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,1,.75,.9);transition-timing-function:cubic-bezier(.4,1,.75,.9);-webkit-transition-delay:0;transition-delay:0}.bp3-omnibar.bp3-overlay-exit{-webkit-filter:blur(0);filter:blur(0);opacity:1}.bp3-omnibar.bp3-overlay-exit-active{-webkit-filter:blur(20px);filter:blur(20px);opacity:.2;-webkit-transition-property:opacity,-webkit-filter;transition-property:opacity,-webkit-filter;transition-property:filter,opacity;transition-property:filter,opacity,-webkit-filter;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-timing-function:cubic-bezier(.4,1,.75,.9);transition-timing-function:cubic-bezier(.4,1,.75,.9);-webkit-transition-delay:0;transition-delay:0}.bp3-omnibar .bp3-input{border-radius:0;background-color:transparent}.bp3-omnibar .bp3-input,.bp3-omnibar .bp3-input:focus{-webkit-box-shadow:none;box-shadow:none}.bp3-omnibar .bp3-menu{border-radius:0;-webkit-box-shadow:inset 0 1px 0 rgba(16,22,26,.15);box-shadow:inset 0 1px 0 rgba(16,22,26,.15);background-color:transparent;max-height:calc(60vh - 40px);overflow:auto}.bp3-omnibar .bp3-menu:empty{display:none}.bp3-dark .bp3-omnibar,.bp3-omnibar.bp3-dark{-webkit-box-shadow:0 0 0 1px rgba(16,22,26,.2),0 4px 8px rgba(16,22,26,.4),0 18px 46px 6px rgba(16,22,26,.4);box-shadow:0 0 0 1px rgba(16,22,26,.2),0 4px 8px rgba(16,22,26,.4),0 18px 46px 6px rgba(16,22,26,.4);background-color:#30404d}.bp3-omnibar-overlay .bp3-overlay-backdrop{background-color:rgba(16,22,26,.2)}.bp3-select-popover .bp3-popover-content{padding:5px}.bp3-select-popover .bp3-input-group{margin-bottom:0}.bp3-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto;padding:0}.bp3-select-popover .bp3-menu:not(:first-child){padding-top:5px}.bp3-multi-select{min-width:150px}.bp3-multi-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto}.bp3-select-popover .bp3-popover-content{padding:5px}.bp3-select-popover .bp3-input-group{margin-bottom:0}.bp3-select-popover .bp3-menu{max-width:400px;max-height:300px;overflow:auto;padding:0}.bp3-select-popover .bp3-menu:not(:first-child){padding-top:5px}@font-face{font-family:'Roboto Condensed';font-style:italic;src:url(/static/assets/RobotoCondensed-Italic-aca8cfe6a0fd2abecaa6e21a19f66eba.ttf) format('truetype');font-weight:400}@font-face{font-family:'Roboto Condensed';font-style:normal;src:url(/static/assets/RobotoCondensed-Regular-db6d916952fb988edac1e531d47ff83a.ttf) format('truetype');font-weight:400}@font-face{font-family:'Roboto Condensed';font-style:normal;src:url(/static/assets/RobotoCondensed-Bold-89a396525c0de98da36505cb04eb9373.ttf) format('truetype');font-weight:700}.container__container___g6J_y{min-height:100%}.categorical__hover___EpB01,.categorical__value___2RKaC:hover{background:rgba(167,182,194,.3)}.scatterplot__scatterplot___t8EZL{display:block}.scatterplot__scatterplot___t8EZL canvas,.scatterplot__scatterplot___t8EZL svg{font:10px sans-serif;position:absolute}.scatterplot__scatterplot___t8EZL canvas{opacity:.9;pointer-events:none}.graph__graphCanvas___3bK5U path{shape-rendering:crispEdges}#graph__graphWrapper___2uUZt{position:relative}#graph__graphAttachPoint___2BNGY,.graph__graphCanvas___3bK5U,.graph__graphSVG___3hOWu{position:absolute}#graph__graphSVG___3hOWu{pointer-events:none}.graph__axis___QcLSb line,.graph__axis___QcLSb path{fill:none;stroke:#000;stroke-width:1px}circle{stroke-width:4px;stroke:#000;fill:none}.graph__hidden___3W5vy{display:none}</style></head><body><script type="text/javascript">window.CELLXGENE={},window.CELLXGENE.API={prefix:window.location.href+"api/",version:"v0.2/"}</script><noscript>If you're seeing this message, that means <strong>JavaScript has been disabled on your browser</strong>, please <strong>enable JS</strong> to make this app work.</noscript><script src="static/jquery.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js" charset="UTF-8"></script><link href="static/jspanel/dist/jspanel.css" rel="stylesheet"><script src="static/jspanel/dist/jspanel.js"></script><script src="static/jspanel/dist/extensions/modal/jspanel.modal.js"></script><script src="static/jspanel/dist/extensions/tooltip/jspanel.tooltip.js"></script><script src="static/jspanel/dist/extensions/hint/jspanel.hint.js"></script><script src="static/jspanel/dist/extensions/layout/jspanel.layout.js"></script><script src="static/jspanel/dist/extensions/contextmenu/jspanel.contextmenu.js"></script><script src="static/jspanel/dist/extensions/dock/jspanel.dock.js"></script><script>var setInnerHTML=function(e,t){e.innerHTML=t,Array.from(e.querySelectorAll("script")).forEach(e=>{const t=document.createElement("script");Array.from(e.attributes).forEach(e=>t.setAttribute(e.name,e.value)),t.appendChild(document.createTextNode(e.innerHTML)),e.parentNode.replaceChild(t,e)})},plotPanel=jsPanel.create({panelSize:"190 0",position:"left-top 160 6",dragit:{containment:[-10,-2e3,-4e3,-2e3]},boxShadow:1,border:"solid #D4DBDE thin",contentOverflow:"scroll scroll",headerControls:{close:"remove",minimize:"remove",maximize:"remove"},headerTitle:function(){return"<strong>Visualization in Plugin</strong>"},contentAjax:{url:"static/interface.html",done:function(e){setInnerHTML(e.content,this.responseText)}},onwindowresize:function(e,t){var n=parseInt(this.currentData.top),i=parseInt(this.currentData.left);(n<-10||window.innerHeight-n<10||window.innerWidth-i<10||i+parseInt(this.currentData.width)<10)&&this.reposition("left-top 160 6")},onunsmallified:function(e,t){this.reposition("center-top -370 180"),this.resize({width:740,height:function(){return Math.min(480,.6*window.innerHeight)}})},onsmallified:function(e,t){this.reposition("left-top 160 6"),this.style.width="190px"}}).smallify();plotPanel.headerbar.style.background="#D4DBDE"</script><div id="root"></div>{% for script in SCRIPTS %}<script type="text/javascript" src="{{script | safe}}"></script>{% endfor %}<script type="text/javascript">!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=110)}([function(e,t,n){"use strict";e.exports=n(111)},function(e,t,n){"use strict";var r=n(11);n.d(t,"a",(function(){return r}));var i=n(28);n.d(t,"b",(function(){return i}));var o=n(6);n.d(t,"c",(function(){return o}))},function(e,t,n){"use strict";n.d(t,"c",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return a})),n.d(t,"b",(function(){return c})),n.d(t,"e",(function(){return s}));

Yes I ran the config.sh file before already. Ran it again just now, it says it "successfully installed cellxgene-0.15.0". Somewhere in the middle, this is printed:

Requirement already satisfied: pytz>=2017.2 in /home/lisas/miniconda3/envs/cellxgene/lib/python3.7/site-packages (from pandas>=1.0->anndata==0.7.4) (2020.1)
fatal: destination path 'scanpy' already exists and is not an empty directory.
HEAD is now at 2ea9f83... fix missing yticklabels (#1342)
Processing ./scanpy
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done

Not sure if that is a problem?

interactivereport commented 4 years ago

Sorry, wrong button was clicked.

scanpy has nothing to do with the display of VIP button.

What is the output of this command?

$(python -c "import server as _; print(_.__file__.replace('/__init__.py',''))")

Also, when you click on "Elements" tab in Developer Tools, do you see these lines with "jspanel" in it?

Screen Shot 2020-09-09 at 9 55 20 AM
interactivereport commented 4 years ago

Please schedule a meeting with baohong.zhang@biogen.com and oyoung@bioinforx.com if you still have issues.

interactivereport commented 4 years ago

I changed the way how js/css files are served. Please run these,

git pull

./update.index_template.sh

./update.VIPInterface.sh

After these, relaunch cellxgene and you should see this under "Elements" tab,

Screen Shot 2020-09-09 at 11 51 04 PM
LisaSikkema commented 4 years ago

Okay yes there is some progress now! I pulled and ran the update .sh scripts, and now I do see a VIP button. Indeed, the line starting with "<div class=" appeared in the elements tab.

However, when I click on the button, an empty Visualization in Plugin window appears:

Screenshot 2020-09-10 at 12 15 54

Any idea where that comes from?

Yes if it is easier to schedule a meeting, happy to do that!

interactivereport commented 4 years ago

Seems that your instance has issue to access files under, $(python -c "import server as ; print(.file.replace('/init.py',''))")/common/web/static. interface.html is not loaded in your case.

(base) [bzhang1@omicsoft01 cellxgene_VIP]$ ls -l $(python -c "import server as _; print(_.__file__.replace('/__init__.py',''))")/common/web/static
total 588
drwxr-xr-x 2 bzhang1 compbio    207 Jul 22 09:55 ace
drwxrwxr-x 2 bzhang1 compbio   4096 Apr 29 23:09 assets
-rwxr-xr-x 1 bzhang1 compbio  31196 Sep  3 10:51 color_brewer_diverging.png
-rwxr-xr-x 1 bzhang1 compbio  80225 Sep  3 10:51 color_brewer_sequential.png
-rw-rw-r-- 1 bzhang1 compbio  14216 Sep  3 10:51 color_map.png
drwxrwxr-x 5 bzhang1 compbio   4096 Apr 23 22:14 DataTables
-rwxrwxr-x 1 bzhang1 compbio 139893 Sep  9 23:39 interface.html
-rwxrwxr-x 1 bzhang1 compbio  88144 Sep  3 10:51 jquery.min.js
-rw-r--r-- 1 bzhang1 compbio 228077 Sep  3 10:51 jquery-ui.min.js
drwxrwxr-x 3 bzhang1 compbio    137 Apr 23 21:47 jspanel
drwxr-xr-x 2 bzhang1 compbio    102 Jul 26 17:16 stackedbar

Do you use link like this http://yourhost:yourport to access your instance?

Can you get similar thing like this by accessing http://yourhost:yourport/static/interface.html, please ignore messages of "jQuery (or d3) is not defined" as these are loaded somewhere else?

Screen Shot 2020-09-10 at 8 24 28 AM

Also, please check your version of cellxgene,

(base) [bzhang1@omicsoft01 cellxgene_VIP]$ pip show cellxgene
Name: cellxgene
Version: 0.15.0
Summary: Web application for exploration of large scale scRNA-seq datasets
Home-page: https://github.com/chanzuckerberg/cellxgene
Author: Chan Zuckerberg Initiative
Author-email: cellxgene@chanzuckerberg.com
License: MIT
Location: /opt/anaconda3/lib/python3.7/site-packages
Requires: flask-server-timing, packaging, requests, fsspec, flatbuffers, pandas, s3fs, Flask-RESTful, Flask, scipy, Flask-Compress, boto3, tiledb, click, numpy, fastobo, Flask-Cors, anndata, flatten-dict, PyYAML, flask-talisman
Required-by: cellxgene-gateway
LisaSikkema commented 4 years ago

Hi!

Thanks again for your help. Your first command, ls -l ....., gives me the same output except that I don't see the "js" file/directory.

I don't use the link you said, but a different address that I set with nginx (I'm hosting the server from ssh and set up a reverse proxy with nginx, so that I can access the cellxgene instance from any computer). When I load my cellxgene link with static/interface.html appended, I get exactly the same console output as you printed above (aside from the different http address).

Cellxgene version is 0.15.0, like yours.

This is in the Console when I load the cellxgene instance:

Screenshot 2020-09-11 at 10 37 38

interactivereport commented 4 years ago

Did you get this by accessing http://yourhost:yourport/static/assets/RobotoCondensed-Bold-89a396525c0de98da36505cb04eb9373.ttf ?

Screen Shot 2020-09-13 at 12 24 32 PM
LisaSikkema commented 4 years ago

Yes more or less, a file with the name RobotoCondensed-Bold-89a396525c0de98da36505cb04eb9373 is automatically downloaded.

interactivereport commented 4 years ago

Please provide your email address and availability for a call.

LisaSikkema commented 4 years ago

okay sent you an email!

baohongz commented 4 years ago

Fixed the issue caused by NGNIX proxy.