{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%run ../code/init_mooc_nb.ipy" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Performing the necessary imports.\n", "\n", "from __future__ import division, print_function\n", "import numpy as np\n", "import matplotlib\n", "import kwant\n", "\n", "import ipywidgets\n", "from IPython.html.widgets import interact\n", "from ipywidgets import StaticInteract, RangeWidget, DropDownWidget\n", "from IPython.display import display_html\n", "from matplotlib import pyplot as plt\n", "\n", "import pfaffian as pf\n", "from edx_components import *\n", "\n" ] }, { "html": [ "\n", "\n", "\n", "
Press this button to show/hide the code used in the notebook:\n", "
\n", "" ], "metadata": {}, "output_type": "display_data" }, { "javascript": [ "/**\n", " * Calico Jupyter Notebooks Extensions\n", " *\n", " * Copyright (c) The Calico Project\n", " * http://calicoproject.org/ICalico\n", " *\n", " * Released under the BSD Simplified License\n", " *\n", " **/\n", "\n", "function ip_version() {\n", " if (IPython.version[0] === \"2\")\n", "\treturn 2;\n", " else if (IPython.version[0] === \"3\")\n", "\treturn 3;\n", " else\n", "\tthrow \"IPython version not supported\";\n", "}\n", "\n", "function break_into_sections(index) {\n", " if (ip_version() === 2)\n", "\treturn 0;\n", " var cells = IPython.notebook.get_cells();\n", " var count = 0; // count below index, or -1\n", " // go in reverse order to keep index accurate\n", " for (var i = cells.length - 1; i > -1; i--) {\n", "\tvar cell = cells[i];\n", "\tvar rendered = cell.rendered;\n", "\t// consider it for breaking:\n", "\tif (cell.cell_type === \"markdown\") {\n", "\t var text = cell.get_text();\n", "\t if (text.match(/^#+Table of Contents/)) \n", "\t\tcontinue;\n", "\t var lines = text.split(/\\n/g);\n", "\t if (lines.length > 1) {\n", "\t\t// possibly break up\n", "\t\tvar state = \"ok\";\n", "\t\tvar current = \"\";\n", "\t\tvar cell_texts = [];\n", "\t\tfor (var line_no in lines) {\n", "\t\t var line = lines[line_no];\n", "\t\t if (state === \"ok\") {\n", "\t\t\tif (line.indexOf('```') === 0) {\n", " // set state to fence: allows for longer fences\n", "\t\t\t state = line.substr(0, line.search(\"[^`]\"));\n", "\t\t\t current += line + \"\\n\";\n", "\t\t\t} else if (line.indexOf('#') === 0) {\n", "\t\t\t if (current !== \"\") {\n", "\t\t\t\tcell_texts.push(current.trim());\n", "\t\t\t }\n", "\t\t\t current = \"\";\n", "\t\t\t cell_texts.push(line);\n", "\t\t\t} else {\n", "\t\t\t current += line + \"\\n\";\n", "\t\t\t}\n", "\t\t } else { // in block\n", "\t\t\tif (line.indexOf(state) === 0) {\n", "\t\t\t state = \"ok\";\n", "\t\t\t current += line + \"\\n\";\n", "\t\t\t cell_texts.push(current.trim());\n", "\t\t\t current = \"\";\n", "\t\t\t} else {\n", "\t\t\t current += line + \"\\n\";\n", "\t\t\t}\n", "\t\t }\n", "\t\t} // for\n", "\t\t// anything left over:\n", "\t\tif (current.trim() !== \"\") {\n", "\t\t cell_texts.push(current.trim());\n", "\t\t}\n", "\t\tif (cell_texts.length > 1) {\n", "\t\t var current_cell = IPython.notebook.get_cell(i);\n", "\t\t var added = 0;\n", "\t\t for (var j = 0; j < cell_texts.length; j++) {\n", "\t\t\tif (cell_texts[j].trim() !== \"\") {\n", "\t\t\t if (added === 0) {\n", "\t\t\t\tcurrent_cell.set_text(cell_texts[j]);\n", "\t\t\t\tif (rendered) {\n", "\t\t\t\t current_cell.render();\n", "\t\t\t\t}\t\t\t\t\t\n", "\t\t\t } else {\n", "\t\t\t\tif (i === index) {\n", "\t\t\t\t count = -1; // nope, can't do it\n", "\t\t\t\t} else if (i < index && count !== -1) {\n", "\t\t\t\t count++;\n", "\t\t\t\t}\n", "\t\t\t\tvar new_cell = IPython.notebook.insert_cell_below(\"markdown\", i + added - 1);\n", "\t\t\t\tnew_cell.set_text(cell_texts[j]);\n", " if (rendered) {\n", "\t\t\t\t new_cell.render();\n", "\t\t\t\t}\n", "\t\t\t }\n", "\t\t\t added++;\n", "\t\t\t}\n", "\t\t }\n", "\t\t}\n", "\t }\n", "\t}\n", " }\n", " return count;\n", "}\n", "\n", "function is_heading(cell) {\n", " if (ip_version() === 2)\n", "\treturn (cell.cell_type === \"heading\");\n", " else \n", "\treturn (cell.cell_type === \"markdown\" && cell.get_text().indexOf(\"#\") === 0)\n", "}\n", "\n", "function get_heading_text(cell) {\n", " if (ip_version() === 2)\n", "\treturn cell.get_text();\n", " else if (cell.get_text().indexOf(\"######\") === 0)\n", "\treturn cell.get_text().substring(6).trim();\n", " else if (cell.get_text().indexOf(\"#####\") === 0)\n", "\treturn cell.get_text().substring(5).trim();\n", " else if (cell.get_text().indexOf(\"####\") === 0)\n", "\treturn cell.get_text().substring(4).trim();\n", " else if (cell.get_text().indexOf(\"###\") === 0)\n", "\treturn cell.get_text().substring(3).trim();\n", " else if (cell.get_text().indexOf(\"##\") === 0)\n", "\treturn cell.get_text().substring(2).trim();\n", " else if (cell.get_text().indexOf(\"#\") === 0)\n", "\treturn cell.get_text().substring(1).trim();\n", " else return \"\";\n", "}\n", "\n", "function repeat(pattern, count) {\n", " if (count < 1) return '';\n", " var result = '';\n", " while (count > 1) {\n", " if (count & 1) result += pattern;\n", " count >>= 1, pattern += pattern;\n", " }\n", " return result + pattern;\n", "}\n", "\n", "function set_heading_text(cell, text) {\n", " var rendered = cell.rendered;\n", " cell.unrender();\n", " if (ip_version() === 2)\n", "\tcell.set_text(text);\n", " else {\n", "\tvar level = get_level(cell);\n", "\tcell.set_text( repeat(\"#\", level) + \" \" + text)\n", " }\n", " if (rendered) {\n", " cell.render();\n", " }\n", "}\n", "\n", "function get_level(cell) {\n", " if (ip_version() === 2)\n", "\treturn cell.level;\n", " else if (cell.get_text().indexOf(\"######\") === 0)\n", "\treturn 6;\n", " else if (cell.get_text().indexOf(\"#####\") === 0)\n", "\treturn 5;\n", " else if (cell.get_text().indexOf(\"####\") === 0)\n", "\treturn 4;\n", " else if (cell.get_text().indexOf(\"###\") === 0)\n", "\treturn 3;\n", " else if (cell.get_text().indexOf(\"##\") === 0)\n", "\treturn 2;\n", " else if (cell.get_text().indexOf(\"#\") === 0)\n", "\treturn 1;\n", " else return 0;\n", "}\n", "\n", "function get_last_cell_index_in_section(level, index) {\n", " var current = index;\n", " while (IPython.notebook.is_valid_cell_index(current + 1)) {\n", "\tvar cell = IPython.notebook.get_cell(current + 1);\n", "\tif (is_heading(cell) && get_level(cell) <= level) {\n", "\t return current;\n", "\t}\n", "\tcurrent++;\n", " }\n", " return current;\n", "}\n", "\n", "function get_index_level_above(level, index) {\n", " var current = current = index - 1;\n", " while (IPython.notebook.is_valid_cell_index(current)) {\n", "\tvar cell = IPython.notebook.get_cell(current);\n", "\tif (is_heading(cell) && get_level(cell) <= level) {\n", "\t return current;\n", "\t}\n", "\tcurrent--;\n", " }\n", " return undefined;\n", "}\n", "\n", "function get_index_level_below(level, index) {\n", " var current = current = index + 1;\n", " while (IPython.notebook.is_valid_cell_index(current)) {\n", "\tvar cell = IPython.notebook.get_cell(current);\n", "\tif (is_heading(cell) && get_level(cell) <= level) {\n", "\t return current;\n", "\t}\n", "\tcurrent++;\n", " }\n", " return undefined;\n", "}\n", "\n", "function section_label() {\n", " // Label headings with numbers, or toggle them off\n", " // If there is a table of contents, re-do it\n", " break_into_sections();\n", " var cells = IPython.notebook.get_cells();\n", " var levels = [0,0,0,0,0,0];\n", " var current_level = 1;\n", " var flag = false;\n", " var alert_text = \"\";\n", " var alert_flag = false;\n", " var remove_numbering = true;\n", " \n", " for (var i = 0; i < cells.length; i++) {\n", "\tvar cell = cells[i];\n", "\tif (is_heading(cell)) {\n", "\t if (cell.get_text().match(/^#+Table of Contents/)) \n", "\t\tcontinue;\n", "\t if (cell.get_text().match(/^#+References/)) \n", "\t\tcontinue;\n", "\t var level = get_level(cell);\n", "\t \n", "\t if (level >= current_level) { //just keep incrementing\n", "\t\tcurrent_level = level;\n", "\t\tlevels[level-1]++;\n", "\t } else { //went back a level\n", "\t\tlevels[current_level-1] = 0;\n", "\t\t\n", "\t\tif (current_level-level > 1) { //Skipped levels in between\n", "\t\t for (var j = 1; j < current_level-level; j++) { //back-prop the zeros\n", "\t\t\tlevels[current_level - 1 - j] = 0;\n", "\t\t }\n", "\t\t}\n", "\t\t\n", "\t\tlevels[level -1]++;\n", "\t\tcurrent_level = level;\n", "\t }\n", "\t \n", "\t var error = false;\n", "\t var error_no_begin = 0;\n", "\t var error_no_end = 0;\n", "\t var error_heading_label = \"\";\n", "\t var heading_label = \"\"; //Generate the appropriate number for the heading\n", "\t for (var k = 0; k < level; k++) {\n", "\t\tif (levels[k] == 0) {\n", "\t\t if (!error) {\n", "\t\t\terror_heading_label = heading_label;\n", "\t\t\terror = true;\n", "\t\t\terror_no_begin = k;\n", "\t\t } else {\n", "\t\t\terror_no_end = k + 2;\n", "\t\t }\n", "\t\t}\n", "\t\theading_label += levels[k];\n", "\t\tif (level-k == 1 && level > 1) {\n", "\t\t break;\n", "\t\t}\n", "\t\theading_label += \".\";\n", "\t }\n", "\t \n", "\t if (error) {\n", "\t\tif (error_no_end == 0) {\n", "\t\t error_no_end = error_no_begin + 2;\n", "\t\t}\n", "\t\tif (error_heading_label == \"\") {\n", "\t\t if (!flag) {\n", "\t\t\tvar temp1 = \"Notebook begins with a Header \" + error_no_end + \" cell.\" + \"\\n\";\n", "\t\t\talert_text += temp1;\n", "\t\t\talert_flag = true;\n", "\t\t\tflag = true;\n", "\t\t }\n", "\t\t} else{\n", "\t\t var temp = \"You placed a Header \" + error_no_end + \" cell under a Header \" + error_no_begin + \" cell in section \" + error_heading_label +\"\\n\";\n", "\t\t alert_text += temp;\n", "\t\t alert_flag = true;\n", "\t\t}\n", "\t }\n", "\t \n", "\t var heading_text = get_heading_text(cell);\n", "\t var old_header = heading_text;\n", "\t var re = /(?:\\d*\\.*)*\\s*(.*)/;\n", "\t var match = heading_text.match(re);\n", "\t \n", "\t if (match) {\n", "\t\theading_text = heading_label + \" \" + match[1];\n", "\t } else {\n", "\t\theading_text = heading_label;\n", "\t }\n", "\t \n", "\t if (old_header != heading_text) {\n", "\t\tremove_numbering = false;\n", "\t\treplace_links(old_header, heading_text);\n", "\t }\n", "\t \n", "\t heading_text = heading_text.trim();\n", "\t set_heading_text(cell, heading_text);\n", "\t}\n", " }\n", " \n", " if (alert_flag) {\n", "\talert(alert_text);\n", " }\n", " \n", " if (remove_numbering) {\n", "\tfor (var i = 0; i < cells.length; i++) {\n", "\t var cell = cells[i];\n", "\t if (is_heading(cell)) {\n", "\t\tif (cell.get_text().match(/^#+Table of Contents/)) \n", "\t\t continue;\n", "\t\tif (cell.get_text().match(/^#+References/)) \n", "\t\t continue;\n", "\t\tvar heading_text = get_heading_text(cell);\n", "\t\told_header = heading_text;\n", "\t\tvar re = /(?:\\d*\\.*)*\\s*(.*)/;\n", "\t\tvar match = heading_text.match(re);\n", "\t\tif (match) {\n", "\t\t heading_text = match[1];\n", "\t\t}\n", "\t\tset_heading_text(cell, heading_text);\n", "\t\treplace_links(old_header, heading_text);\n", "\t }\n", "\t}\n", " }\n", " \n", " // If there is a Table of Contents, replace it:\n", " var cells = IPython.notebook.get_cells();\n", " for (var i = 0; i < cells.length; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type == \"markdown\") {\n", "\t var cell_text = cell.get_text();\n", "\t var match = cell_text.match(/^#+Table of Contents/);\n", "\t if (match) {\n", "\t\ttable_of_contents();\n", "\t\tbreak;\n", "\t }\n", "\t}\n", " }\n", "}\n", "\n", "function replace_links(old_header, new_header) {\n", " // Replace an old internal link with new link\n", " new_header = new_header.trim();\n", " var cells = IPython.notebook.get_cells();\n", " for (var i = 0; i < cells.length; i++) {\n", " var cell = cells[i];\n", " if (cell.cell_type == \"markdown\") {\n", "\t var cell_text = cell.get_text();\n", "\t // Skip over table of contents:\n", "\t if (cell_text.match(/^#+Table of Contents/)) {\n", "\t\tcontinue;\n", "\t }\n", "\t var re_string = old_header;\n", "\t re_string = re_string.replace(/\\\\/g, \"\\\\\\\\\");\n", "\t re_string = re_string.replace(/\\//g, \"\\\\/\");\n", "\t re_string = re_string.replace(/\\^/g, \"\\\\^\");\n", "\t re_string = re_string.replace(/\\$/g, \"\\\\$\");\n", "\t re_string = re_string.replace(/\\*/g, \"\\\\*\");\n", "\t re_string = re_string.replace(/\\+/g, \"\\\\+\");\n", "\t re_string = re_string.replace(/\\?/g, \"\\\\?\");\n", "\t re_string = re_string.replace(/\\./g, \"\\\\.\");\n", "\t re_string = re_string.replace(/\\)/g, \"%29\");\n", "\t re_string = re_string.replace(/\\|/g, \"\\\\|\");\n", "\t re_string = re_string.replace(/\\[/g, \"\\\\[\");\n", "\t re_string = re_string.replace(/\\]/g, \"\\\\]\");\n", "\t re_string = re_string.replace(/\\(/g, \"?:\\\\(|%28\");\n", "\t re_string = re_string.replace(/\\s/g, \"-\");\n", "\t re_string = \"(\\\\[.*\\\\](?::\\\\s*|\\\\()#)\" + re_string + \"(.*\\\\)|(.*)$)\";\n", "\t \n", "\t var re = new RegExp(re_string, \"gm\");\n", "\t var link_text = new_header.replace(/\\s+$/g, \"\"); //Delete trailing spaces before they become \"-\"\n", "\t link_text = link_text.replace(/\\(/g, \"%28\"); //Replace left parentheses with their encoding\n", "\t link_text = link_text.replace(/\\)/g, \"%29\"); //Replace right parentheses with their encoding\n", "\t link_text = link_text.replace(/ /g, \"-\"); //Replace all spaces with dashes to create links\n", "\t \n", "\t var match = cell_text.match(re);\n", "\t if (match) {\n", " var new_text = cell_text.replace(re, \"$1\" + link_text + \"$2\");\n", " cell.unrender();\n", " cell.set_text(new_text);\n", " cell.render();\n", "\t }\n", " }\n", " }\n", "}\n", "\n", "function find_cell(cell_type, text) {\n", " // Finds first cell of cell_type that starts with text\n", " // cell_type and text are interpreted as a regular expression\n", " var cell = undefined;\n", " var cells = IPython.notebook.get_cells();\n", " for (var x = 0; x < cells.length; x++) {\n", "\tvar temp = cells[x];\n", "\tif (temp.cell_type.match(cell_type) != undefined) {\n", "\t var temp_text = temp.get_text();\n", "\t var re = new RegExp(\"^\" + text);\n", "\t if (re.test(temp_text)) {\n", "\t\tcell = cells[x];\n", "\t\tbreak;\n", "\t }\n", "\t}\n", " }\n", " return cell;\n", "}\n", "\n", "function table_of_contents() {\n", " break_into_sections();\n", " // Create and/or replace Table of Contents\n", " var cells = IPython.notebook.get_cells();\n", " var toc_cell = find_cell(\"markdown\", \"#+Table of Contents\");\n", " // Default to top-level heading\n", " var toc_text = \"#Table of Contents\\n\";\n", " if (toc_cell == undefined) {\n", "\t//Create a new markdown cell at the top of the Notebook\n", "\ttoc_cell = IPython.notebook.select(0).insert_cell_below(\"markdown\"); \n", " } else {\n", "\t// already exists:\n", "\ttoc_text = toc_cell.get_text().match(/^#+Table of Contents/)[0] + \"\\n\";\n", " }\n", " var prev_lev = 0;\n", " for (var i = 0; i < cells.length; i++) {\n", "\tvar cell = cells[i];\n", "\tif (is_heading(cell)) {\n", "\t if (cell.get_text().match(/^#+Table of Contents/)) \n", "\t\tcontinue;\n", "\t if (cell.get_text().match(/^#+References/)) \n", "\t\tcontinue;\n", "\t if (get_level(cell) - prev_lev > 1) { //Skipped levels. Enter Dummy levels\n", "\t\tfor (var x = 0; x < ((get_level(cell) - prev_lev) - 1); x++) {\n", "\t\t for (var y = 0; y < (prev_lev + x); y++) {\n", "\t\t\ttoc_text += \"\\t\";\n", "\t\t }\n", "\t\t toc_text += \"* \\n\";\n", "\t\t}\n", "\t }\n", "\t var cell_text = get_heading_text(cell);\n", "\t for (var j = 0; j < get_level(cell) -1; j++) { //Loop to add the proper amount of tabs based on header level\n", "\t\ttoc_text += \"\\t\";\n", "\t }\n", "\t toc_text += \"* [\";\n", "\t toc_text += cell_text;\n", "\t toc_text += \"](#\";\n", "\t var link_text = cell_text.replace(/\\s+$/g, \"\"); //Delete trailing spaces before they become \"-\"\n", "\t link_text = link_text.replace(/\\(/g, \"%28\"); //Replace left parentheses with their encoding\n", "\t link_text = link_text.replace(/\\)/g, \"%29\"); //Replace right parentheses with their encoding\n", "\t link_text = link_text.replace(/ /g, \"-\"); //Replace all spaces with dashes to create links\n", "\t toc_text += link_text;\n", "\t toc_text += \")\\n\";\n", "\t prev_lev = get_level(cell);\n", "\t}\n", " }\n", " toc_cell.unrender();\n", " toc_cell.set_text(toc_text);\n", " toc_cell.render();\n", "}\n", "$([IPython.events]).on('status_started.Kernel notebook_loaded.Notebook', table_of_contents);" ], "metadata": {}, "output_type": "display_data" } ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Table of Contents\n", "* [Simulations: Topic](#Simulations:-Topic)\n", "* [Review assignment](#Review-assignment)\n" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Simulations: Topic" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As usual, start by grabbing the notebooks of this week (`w8_general`). They are once again over [here](http://tiny.cc/topocm_smc)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Title\n", "\n", "description" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Title\n", "\n", "description" ] }, { "cell_type": "code", "collapsed": false, "input": [ "MoocSelfAssessment()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "MoocSelfAssessment description
\n", "In the live version of the course, you would need to share your solution and grade yourself.
" ], "metadata": {}, "output_type": "pyout", "text": [ "MoocSelfAssessment(**{'openassessment_self': 'Discussion entitled 'XXX' is available in the online version of the course.
" ], "metadata": {}, "output_type": "pyout", "text": [ "MoocDiscussion(**{'discussion_category': 'Labs', 'discussion_target': 'XXX', 'display_name': 'XXX', 'discussion_id': '62e326c8849cd46fe04e227e94b5a70c'})" ] } ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Review assignment" ] }, { "cell_type": "code", "collapsed": false, "input": [ "display_html(PreprintReference('', description=\"\"))\n", "display_html(PreprintReference('', description=\"\"))\n", "display_html(PreprintReference('', description=\"\"))\n", "display_html(PreprintReference('', description=\"\"))" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bonus: Find your own paper to review!\n", "\n", "Do you know of another paper that fits into the topics of this week, and you think is good?\n", "Then you can get bonus points by reviewing that paper instead!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "MoocPeerAssessment()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "Read one of the above papers and see how it is\n", "related to the current topic.
\n", "In the live version of the course, you would need to write a summary which is then assessed by your peers.
" ], "metadata": {}, "output_type": "pyout", "text": [ "MoocPeerAssessment(**{'must_be_graded_by': 3, 'url_name': None, 'due': 9, 'review_due': 16, 'must_grade': 5, 'openassessment_peer': 'Discussion entitled 'XXX' is available in the online version of the course.
" ], "metadata": {}, "output_type": "pyout", "text": [ "MoocDiscussion(**{'discussion_category': 'Reviews', 'discussion_target': 'XXX', 'display_name': 'XXX', 'discussion_id': '879ea49da6fa319ba7ba8a2619d9dcf6'})" ] } ] } ], "metadata": {} } ] }