ICalico

From IPRE Wiki
(Redirected from Icalico)
Jump to: navigation, search

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. Technically, ICalico is a "IPython kernel". However, IPython can operate using any of a number of languages, including the Calico stable of languages.

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

Installation

  1. 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
  2. Install Calico version 3.0.0 or greater
    • Calico Download
    • Put Calico where it will live before going on (IPython will look for it at this location in the future)
  3. Start IPython with Calico profile
    • icalico
  4. 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).

Calico Notebook Extensions

There are three collections of notebook extensions. Below you can see demonstrations and installation instructions.

Spell Checking:

The Calico Spell Check extension checks the spelling of words in Markdown and Heading cells as you type. It is very fast, and expands to about 700k after download.

Demonstration of use: https://www.youtube.com/watch?v=Km3AtRynWFQ

Document Tools:

The Calico Document Tools extensions adds section moving, heading numbering, table of contents, and bibliography support.

Demonstration of use: https://www.youtube.com/watch?v=YbM8rrj-Bms

Cell Tools:

The Calico Cell Tools extension adds tabbed Input/Output views to individual code cells, and two columns to individual cells.

Demonstration of use: https://www.youtube.com/watch?v=WwoTzvOkEJQ

Installation

To install notebook extensions, run each of the following commands once for each extension you wish to install (no need to click the links).

Spell Checking:

!ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-spell-check-1.0.zip

Video installation on Windows: https://www.youtube.com/watch?v=o4xCp3b4oCw

Document Tools:

!ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-document-tools-1.0.zip

Video installation on Windows: https://www.youtube.com/watch?v=LRzUSilYEks

Cell Tools:

!ipython install-nbextension https://bitbucket.org/ipre/calico/downloads/calico-cell-tools-1.0.zip

Video installation on Windows: https://www.youtube.com/watch?v=dBB1TCWQgBg

After successfully installing the package, you can run the following command in your notebook to load the desired extensions for that notebook only:

%%javascript
IPython.load_extensions('calico-spell-check', 'calico-document-tools', 'calico-cell-tools');

OR you can add the following line to the end of your custom.js file (located: .ipython/profile_default/static/custom) to load the extensions for all of your notebooks:

IPython.load_extensions('calico-spell-check', 'calico-document-tools', 'calico-cell-tools');

Troubleshooting

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:

  1. the purple Calico butterfly logo in the upper-left corner
  2. 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, language Python>

If a webpage does not open, some things to check:

  1. Is ipython on your path?
  2. Do you have a default web browser?
  3. 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. In a Terminal:

  1. cd Calico
  2. 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
    • If the cell is marked Code, then you can enter commands (from Python by default). Press shift/control/alt Enter to evaluate.
  • Markdown
    • If the cell is marked as Markdown, then you can use Markdown syntax, including some LaTeX commands (surround the math expression with dollar signs, e.g., $\mu$).
  • Raw text
  • Heading 1 through 6

You can change what type of data is in a cell by changing it in the menu selection.

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.

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; options may include {"preprocess": False} to skip the dot processing
%%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
%%rich_display output the cell data/return value as HTML
%%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 default language for rest of notebook (until changed again)
%%%time turn on/off "sticky time"; when on will use %%time for each cell, until turned off
%%%rich_display turn on/off "sticky rich display"; when on will use HTML for lists, arrays, and dictionaries


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}

Shell Commands

If you start a line with "!" (the bang character) then the rest of the line will be used as a shell command and arguments. You can have as many of these at the top of a call as you like, mixed with magics.

Unix Examples:

%%time
!ls
!ls | cat -n
!pwd

DOS Examples:

!dir

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.

  1. AccordionWidget
  2. BoundedFloatTextWidget
  3. BoundedIntTextWidget
  4. ButtonWidget
  5. CameraWidget
  6. CheckboxWidget
  7. ContainerWidget
  8. DropdownWidget
  9. FloatProgressWidget
  10. FloatSliderWidget
  11. FloatTextWidget
  12. HTMLWidget
  13. ImageWidget
  14. IntProgressWidget
  15. IntSliderWidget
  16. IntTextWidget
  17. LatexWidget
  18. PasswordWidget
  19. PopupWidget
  20. RadioButtonsWidget
  21. SelectWidget
  22. TabWidget
  23. TextWidget
  24. TextareaWidget
  25. ToggleButtonWidget
  26. ToggleButtonsWidget

Those above that are container widgets:

  • AccordionWidget
  • ContainerWidget
  • PopupWidget
  • TabWidget

All of these widgets have display() and animate() methods.

widget.display()
widget.animate()
w1 = calico.AccordionWidget(children=[calico.ButtonWidget()])
w2 = calico.BoundedFloatTextWidget(description="BoundedFloatTextWidget")
w3 = calico.BoundedIntTextWidget(description="BoundedIntTextWidget")
w4 = calico.ButtonWidget(description="ButtonWidget")
w5 = calico.CameraWidget() # broken
w6 = calico.CheckboxWidget("CheckboxWidget")
w7 = calico.ContainerWidget(children=[calico.ButtonWidget()])
w8 = calico.DropdownWidget("DropDownWidget") 
w9 = calico.FloatProgressWidget(description="FloatProgressWidget")
w10 = calico.FloatSliderWidget(description="FloatSliderWidget")
w11 = calico.FloatTextWidget(description="FloatTextWidget")
w12 = calico.HTMLWidget("<b>Hello World!</b>", "HTMLWidget")
w13 = calico.ImageWidget(format="svg", _b64value="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")
w14 = calico.IntProgressWidget(description="IntProgressWidget")
w15 = calico.IntSliderWidget(description="IntSliderWidget")
w16 = calico.IntTextWidget(description="IntTextWidget")
w17 = calico.LatexWidget("$x = \\frac{1}{2}$", description="LatexWidget") 
w18 = calico.PasswordWidget(description="PasswordWidget") #broken
w19 = calico.PopupWidget(description="PopupWidget", children=[calico.ButtonWidget()])
w20 = calico.RadioButtonsWidget(description="RadioButtonsWidget")
w21 = calico.SelectWidget(description="SelectWidget")
w22 = calico.TabWidget(children=[calico.ButtonWidget("B1"), calico.ButtonWidget("B2")])
w23 = calico.TextWidget(description="TextWidget")
w24 = calico.TextareaWidget(description="TextareaWidget")
w25 = calico.ToggleButtonWidget(description="ToggleButtonWidget")
w26 = calico.ToggleButtonsWidget(description="ToggleButtonsWidget")


for i in range(1, 27):
    var = "w%s" % i
    calico.display(globals()[var])

See http://nbviewer.ipython.org/urls/bitbucket.org/ipre/calico/raw/master/notebooks/Python/Sprites%20and%20Widgets.ipynb for an example.

Charts

In addition, there is Javascript-based charting thanks to Google:

data = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 10124]
l = calico.GoogleChart("LineChart", data, {'vAxis': {'logScale': 1}})
calico.display(l)

data = [(i, 2*i + 5) for i in range(100)]
c = calico.GoogleChart("ColumnChart", ['x', 'y'], data)
calico.display(c)

The format is

GoogleChart(TYPE-OF-CHART, KEY-LIST, DATA-LIST, OPTION-DICTIONARY)
  • TYPE-OF-CHART: A string that corresponds to the kind of chart: "ScatterChart", "LineChart", "BarChart", "ColumnChart", "PieChart", "Histogram", and most of the other charts google makes available.
  • KEY-LIST: A list of column titles. This argument is optional.
  • DATA-LIST: The data you want to graph as either a one-dimensional or two-dimensional list (an IList) of items. The google charts expect the data as a table.
  • OPTIONS-DICTIONARY: A dictionary (an IDictionary) of the options for the chart (e.g. color, size). This argument is optional.

More examples can be found in this example notebook.

ICalico

ICalico is a full IPython kernel. "icalico" will install a Calico profile into IPython. That means you can do the following:

To use ICalico in a console (similar to "calico --repl" but with all magics, etc):

ipython console --profile calico

To use ICalico in a graphical console (similar to notebook, but without browser):

ipython qtconsole --profile calico

Qtconsole.jpg

ICalico Development