ICalico
ICalico is a new method of interacting with Calico. In addition, a host of new functionality is available.
What is ICalico? It is a graphical user interface (GUI) to Calico through a web browser. Everything currently runs locally, so it isn't something on the world wide web, but rather a interface to write code using the browser as the GUI. You'll need ipython and Calico 3 or greater to use.
To get an idea of what ICalico is, see the sample notebooks here:
http://nbviewer.ipython.org/urls/bitbucket.org/ipre/calico/raw/master/notebooks/Index.ipynb
Contents
Installation
- Install IPython version 2.0.0 or greater
- http://ipython.org/install.html - We suggest using the Anaconda installer for its ease of use
- If you do not use Anaconda, you may have to build zmq from source
- Make sure that ipython is in your path (type "ipython" at a console prompt)
- Anaconda will do this for you. You may have to logout, close/open terminal window, or reboot after installing
- On Windows, if you need to manually set your path, use something like:
PATH=%PATH%;c:\Python27\Scripts
- http://ipython.org/install.html - We suggest using the Anaconda installer for its ease of use
- Install Calico version 3.0.0 or greater
- Calico Download
- Put Calico where it will live before going on
- Start IPython with Calico profile
-
icalico
-
- To Stop IPython Server
- Make sure to save your notebook in browser (control+s)
- Shutdown server in console window: control+break on Windows; control+c on Linux/Mac
A web page should open up which will allow you to enter scripts and Calico "magic" commands (see below).
Trouble shooting
If a webpage opens, you should be able to open a Notebook (either old or make a new one. On the new Notebook page, you should see:
- the purple Calico butterfly logo in the upper-left corner
- if you type
calico
in a cell and evaluate it (control+enter) it should respond back with the Calico version number, like <Calico version 3.0.0>
If a webpage does not open, some things to check:
- Is
ipython
on your path? - Do you have a default web browser?
- On Linux and Mac, is
mono
on your path?
Other questions? Please ask on the calico-users mailing list.
NOTE: If you move the Calico folder, you should re-create a new Calico profile:
-
cd Calico
-
calico --create-profile
Getting Started
For an introduction to this manner of interacting with programs, please see:
http://nbviewer.ipython.org/urls/bitbucket.org/ipre/calico/raw/master/notebooks/Index.ipynb
Editing
Each cell in a notebook can be one of the following:
- Code
- Markdown
- Raw text
- Heading 1 through 6
You can change what type of data is in a cell by changing it in the menu selection.
Code
If the cell is marked Code, then you can enter commands (from Python by default). Press shift/control/alt Enter to evaluate.
Magics
You can also enter a "magic" command. These are proceeded by:
- a single-percent sign for magic-line commands
- two percent signs for magic-cell commands
- three percent signs for magic sticky, notebook commands
The magic line commands are:
%connect_info | show ICalico JSON connection information |
%download url [file] | download a URL to a file |
%edit FILENAME | edit a file in an external editor |
%lang | get information on current language |
%lang LANG EXPRESSION | evaluate the EXPRESSION in the given LANGUAGE |
%magic | get information on magic meta-commands |
%nuget COMMAND ARGS... | perform a NuGet command, such as install. See http://www.nuget.org/ for more details. |
%qtconsole | start a qtconsole |
%run FILENAME | run a file (language determined by extension) |
The magic cell commands are:
%%dot [options] | create a GraphViz dot diagram with contents of cell |
%%file FILENAME | create a filename with contents of cell |
%%html | treat the cell as HTML |
%%javascript | treat the cell as Javascript data |
%%latex | treat the cell as Latex |
%%lang LANGUAGE | change language for just this cell |
%%svg | treat the cell as SVG data |
%%time | time how long it takes to run this cell |
The magic notebook commands are:
%%%lang LANGUAGE - change language for rest of cells (or until another %%%lang command)
If the cell is marked as Markdown, then you can use Markdown syntax, including some LaTeX commands.
Documentation
Technically, ICalico is a "IPython kernel". However, of course ICalico can operate using any of a number of languages.
Editing Notebooks
You can drag and drop images onto a notebook when editing.
Starting with ICalico 3.0.1, the last statement in a Python cell is also an output result.
Magics
ICalico magics are "meta" commands: commands for the ICalico system, separate from any Calico language.
- One preceding percent sign indicates a "magic line command" (applies to just the line)
- Two preceding percent signs indicates a "magic cell command" (applies to just the cell)
- Three preceding percent sign indicates a "magic notebook command" (applies from here to rest of notebook)
Any cell can have any number of magic commands, but they must all appear first, before any code.
%connect_info - show ICalico JSON connection information %download url [file] - download a URL to a file %%dot [options] - create a [http://www.graphviz.org/doc/info/lang.html GraphViz dot] diagram with contents of cell %edit FILENAME - edit a file in an external editor %%file FILENAME - create a filename with contents of cell %%html - treat the cell as HTML %%javascript - treat the cell as Javascript data %lang - get information on current language %lang LANG EXPR - execute EXPR in given LANG %%lang LANGUAGE - change language for just this cell %%%lang LANGUAGE - change language for rest of cells %magic - get information on magic meta-commands %nuget COMMAND ARGS - execute a nuget command %qtconsole - start a qtconsole %run FILENAME - run a file (language determined by extension) %%svg - treat the cell as SVG data %%time - time how long it takes to run this cell
Examples:
%%latex \begin{eqnarray} \nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\ \nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\ \nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\ \nabla \cdot \vec{\mathbf{B}} & = 0 \end{eqnarray}
Display Functions
These are available from the Calico: calico object:
- animate(item[, item]*) - redisplay one or more items with little jitter (for animating a display)
- display(item[, item]*) - display one or more items to the notebook output area
- display_html(item)
- display_javascript(item)
- display_json(item)
- display_svg(item)
- display_png(item)
- display_jpeg(item)
- display_latex(item)
- display_pdf(item)
Examples:
for i in range(10): calico.animate(image) calico.display_json(json_data)
Rich Media Objects
All of the rich media objects are available from the Calico: calico object.
- Audio(URI)
- HTML(string)
- Javascript(string)
- Latex(string)
- Math(string)
- Table()
- Image(URI)
- YouTubeVideo(id, width, height)
- IFrame(src)
- SVG(xml)
- FileLink(filename)
- FileLinks(directory)
- VimeoVideo(id)
Examples:
calico.display(calico.HTML("<b>This is bold!</b>"))
calico.HTML('<iframe src=http://en.mobile.wikipedia.org/?useformat=mobile width=700 height=350></iframe>')
calico.Latex(""" \\begin{eqnarray} \\nabla \\times \\vec{\\mathbf{B}} -\\, \\frac1c\, \\frac{\\partial\\vec{\\mathbf{E}}}{\\partial t} & = \\frac{4\\pi}{c}\\vec{\\mathbf{j}} \\\\ \\nabla \\cdot \\vec{\\mathbf{E}} & = 4 \\pi \\rho \\\\ \\nabla \\times \vec{\\mathbf{E}}\\, +\\, \\frac1c\\, \\frac{\\partial\\vec{\\mathbf{B}}}{\\partial t} & = \\vec{\\mathbf{0}} \\\\ \\nabla \\cdot \\vec{\\mathbf{B}} & = 0 \\end{eqnarray} """)
Widgets
Widgets allow for creating interactive interfaces, when connected to an executing kernel. All of the widgets are available from the Calico: calico object.
- BoundedFloatTextWidget
- BoundedIntTextWidget
- ButtonWidget
- CameraWidget
- CheckboxWidget
- ContainerWidget
- DropdownWidget
- FloatProgressWidget
- FloatSliderWidget
- FloatTextProgressWidget
- FloatTextWidget
- HTMLWidget
- ImageWidget
- IntProgressWidget
- IntSliderWidget
- IntTextWidget
- LatexWidget
- PasswordWidget
- PopupWidget
- RadioButtonsWidget
- SelectWidget
- SelectionWidget
- TextWidget
- TextareaWidget
- ToggleButtonWidget
- ToggleButtonsWidget
Container widgets:
- ContainerWidget
- PopupWidget
- AccordionWidget
- TabWidget
Widget().display()
Charts
In addition, there are Javascript-based widgets:
- GeoChart - https://google-developers.appspot.com/chart/interactive/docs/gallery/geochart#Configuration_Options
- LineChart - https://google-developers.appspot.com/chart/interactive/docs/gallery/linechart#Configuration_Options
- ScatterChart - https://google-developers.appspot.com/chart/interactive/docs/gallery/scatterchart#Configuration_Options
Examples:
from Widgets import Lines lines = Lines(3) # three lines for label, line in [["Money", [1, 2, 3]], ["Power", [5, 6, 7]], ["Wealth", [2, 4, 5]]]: lines = Lines(lines, line, label) calico.LineChart(lines, {"width": 800, "height": 300, "chartArea": {"width": 300}}).display()