Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can a Jupyter / IPython notebook take arguments in the URL?

Is it possible to write an Jupyter notebook such that parameters can be passed in via the URL of the notebook?

Example, for a URL such as this:

http://jupyter.example.com/user/me/notebooks/notebook1.ipynb?Variable1=Value1&Variable2=Value2

how could access Variable1 and Variable2 inside the Jupyter cell?

like image 500
John Schmitt Avatar asked Aug 04 '15 19:08

John Schmitt


People also ask

How do you check arguments in Jupyter Notebook?

Jupyter Notebook can show that documentation of the function you are calling. Press Shift+Tab to view the documentation.

How do I open a Jupyter Notebook from URL?

By default, a notebook server runs locally at 127.0.0.1:8888 and is accessible only from localhost . You may access the notebook server from the browser using http://127.0.0.1:8888 .


2 Answers

You need to find out the URL using JavaScript and pass it to the IPython kernel:

from IPython.display import HTML
HTML('''
    <script type="text/javascript">
        IPython.notebook.kernel.execute("URL = '" + window.location + "'")
    </script>''')

or:

%%javascript
IPython.notebook.kernel.execute("URL = '" + window.location + "'");

Then in the next cell:

print(URL)

After this you can use the tools in the standard library (or plain string operations) to pull out the query parameters.

like image 116
akaihola Avatar answered Oct 21 '22 15:10

akaihola


You just need to take the values with javascript and push them to the ipython kernel like in the John Schmitt's link.

Cell [1]:

%%javascript
function getQueryStringValue (key)
{  
    return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
}
IPython.notebook.kernel.execute("Var1='".concat(getQueryStringValue("Variable1")).concat("'"));
IPython.notebook.kernel.execute("Var2='".concat(getQueryStringValue("Variable2")).concat("'")); 

And in another cell you can retrieve the python variables named Var1 and Var2:

>>>print Var1
Value1

And:

>>>print Var2
Value2
like image 36
vperezb Avatar answered Oct 21 '22 16:10

vperezb