j1-template 2022.5.0.rc4 → 2022.5.1.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/_includes/themes/j1/modules/attics/generator.html +5 -13
- data/_includes/themes/j1/procedures/global/date-german.proc +67 -0
- data/assets/data/banner.html +2 -2
- data/assets/data/menu.html +1 -1
- data/assets/data/mmenu.html +36 -36
- data/assets/themes/j1/adapter/js/attic.js +114 -62
- data/assets/themes/j1/adapter/js/cookieConsent.js +42 -25
- data/assets/themes/j1/adapter/js/masterslider.js +2 -2
- data/assets/themes/j1/adapter/js/mmenu.js +2 -2
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.css +28 -3
- data/assets/themes/j1/core/css/themes/unolight/bootstrap.min.css +1 -1
- data/assets/themes/j1/modules/backstretch/js/backstretch.js +5 -5
- data/assets/themes/j1/modules/backstretch/js/backstretch.min.js +1 -1
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.js +1696 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.16/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.js +1627 -0
- data/assets/themes/j1/modules/backstretch/js/v2.1.18/backstretch.min.js +20 -0
- data/assets/themes/j1/modules/cryptoJS/js/rc4.js +2 -2
- data/assets/themes/j1/modules/mmenuLight/README.md +22 -0
- data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.css +224 -243
- data/assets/themes/j1/modules/mmenuLight/css/mmenu-light.min.css +3 -3
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.css +95 -55
- data/assets/themes/j1/modules/mmenuLight/css/theme/uno/mmenu.min.css +1 -1
- data/assets/themes/j1/modules/mmenuLight/js/mmenu.js +57 -440
- data/assets/themes/j1/modules/mmenuLight/js/mmenu.min.js +4 -15
- data/assets/themes/j1/modules/{twemoji/js/picker → themeSwitcher}/LICENSE +21 -21
- data/assets/themes/j1/modules/themeSwitcher/README.md +166 -0
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.js +2 -2
- data/assets/themes/j1/modules/themeSwitcher/js/switcher.min.js +1 -1
- data/lib/j1/version.rb +1 -1
- data/lib/starter_web/Gemfile +1 -1
- data/lib/starter_web/README.md +440 -175
- data/lib/starter_web/_config.yml +2 -2
- data/lib/starter_web/_data/blocks/banner.yml +1 -1
- data/lib/starter_web/_data/modules/attics.yml +12 -0
- data/lib/starter_web/_data/modules/defaults/attics.yml +16 -1
- data/lib/starter_web/_data/modules/defaults/cookies.yml +1 -1
- data/lib/starter_web/_data/modules/navigator_menu.yml +31 -25
- data/lib/starter_web/_includes/attributes.asciidoc +2 -0
- data/lib/starter_web/_plugins/lunr_index.rb +1 -1
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ben-kolde.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/braden-collum.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/ev.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/firmbee-com.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/1920x1280/max-harlynking.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/guillaume-bolduc-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/images/modules/attics/spacex-1920x1280.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/{still → present_videos/still}/underground-broadway.jpg +0 -0
- data/lib/starter_web/assets/videos/headers/present_videos/underground-broadway.mp4 +0 -0
- data/lib/starter_web/collections/asciidoc_skeletons/simple-post/_posts/yyyy-mm-dd-your-post-name.asciidoc +3 -1
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-01-01-about-cookies.adoc +3 -0
- data/lib/starter_web/collections/posts/public/featured/_posts/2021-02-01-site-generators.adoc +2 -3
- data/lib/starter_web/collections/posts/public/featured/_posts/2022-02-01-about-j1.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-01-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-02-post-wiki-series.adoc +3 -0
- data/lib/starter_web/collections/posts/public/series/_posts/2020-01-03-post-wiki-series.adoc +3 -0
- data/lib/starter_web/index.html +68 -12
- data/lib/starter_web/package.json +2 -2
- data/lib/starter_web/pages/public/about/features.adoc +119 -0
- data/lib/starter_web/pages/public/about/reporting_issues.adoc +78 -0
- data/lib/starter_web/pages/public/about/{about_site.adoc → site.adoc} +20 -15
- data/lib/starter_web/pages/public/asciidoc_skeletons/documentation/documentation.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/multi-document/multi.adoc +3 -0
- data/lib/starter_web/pages/public/asciidoc_skeletons/simple-document/simple.adoc +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/categoryview.html +3 -0
- data/lib/starter_web/pages/public/blog/navigator/archive/dateview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive/tagview.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/archive.html +4 -1
- data/lib/starter_web/pages/public/blog/navigator/index.html +4 -1
- data/lib/starter_web/pages/public/features/general.adoc +5 -1
- data/lib/starter_web/pages/public/features/template.adoc +4 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-circular-times-table.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-common-used-widgets.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/distributed/j1-odes-in-python.adoc +3 -0
- data/lib/starter_web/pages/public/jupyter/examples/localized/j1_climate-change-forecast.adoc +3 -0
- data/lib/starter_web/pages/public/learn/quickstart.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_images.adoc +4 -1
- data/lib/starter_web/pages/public/learn/roundtrip/100_present_videos.adoc +16 -5
- data/lib/starter_web/pages/public/learn/roundtrip/200_typography.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/300_icon_fonts.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/400_asciidoc_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/410_bs_modals_extentions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/420_responsive_tables_extensions.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/500_themes.adoc +3 -0
- data/lib/starter_web/pages/public/learn/roundtrip/600_quicksearch.adoc +6 -2
- data/lib/starter_web/pages/public/learn/where_to_go.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_copyright.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/100_impress.adoc +3 -0
- data/lib/starter_web/pages/public/legal/de/300_privacy.adoc +142 -0
- data/lib/starter_web/pages/public/legal/de/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/legal/en/100_copyright.adoc +9 -1
- data/lib/starter_web/pages/public/legal/en/200_impress.adoc +10 -2
- data/lib/starter_web/pages/public/legal/en/300_privacy.adoc +66 -3
- data/lib/starter_web/pages/public/legal/en/400_comment_policy.adoc +3 -0
- data/lib/starter_web/pages/public/panels/intro_panel/panel.adoc +3 -0
- data/lib/starter_web/pages/public/plans/plans.adoc +3 -0
- data/lib/starter_web/pages/public/previewer/preview_bootstrap_theme.adoc +4 -0
- data/lib/starter_web/pages/public/se/se-fake.adoc +4 -0
- data/lib/starter_web/utilsrv/_defaults/package.json +1 -1
- data/lib/starter_web/utilsrv/package.json +1 -1
- metadata +22 -372
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.css +0 -153
- data/assets/themes/j1/modules/twemoji/css/picker/twemoji-picker.min.css +0 -19
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.js +0 -304
- data/assets/themes/j1/modules/twemoji/js/picker/twemoji-picker.min.js +0 -322
- data/assets/themes/j1/modules/twemoji/js/twemoji.js +0 -580
- data/assets/themes/j1/modules/twemoji/js/twemoji.min.js +0 -19
- data/lib/starter_web/assets/videos/headers/still/victoria-oskolovich-on-vimeo.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/attributes.asciidoc +0 -67
- data/lib/starter_web/pages/public/_jupyter/docs/_includes/documents/j1_docs_example_static.asciidoc +0 -232
- data/lib/starter_web/pages/public/_jupyter/docs/binderhub.adoc +0 -631
- data/lib/starter_web/pages/public/_jupyter/docs/j1-nbinteract.adoc +0 -638
- data/lib/starter_web/pages/public/_jupyter/docs/jupyterhub.adoc +0 -248
- data/lib/starter_web/pages/public/_jupyter/docs/nbinteract-widget-manual.adoc +0 -928
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-circular-times-table.adoc +0 -139
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-common-used-widgets.adoc +0 -229
- data/lib/starter_web/pages/public/_jupyter/examples/distributed/j1-odes-in-python.adoc +0 -112
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-altair/j1-altair-visualisations.adoc +0 -142
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bokeh-visualisations.adoc +0 -171
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-bokeh/j1-bqplot-eamples.adoc +0 -111
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1-plotly/j1-plotly-visualisations.adoc +0 -94
- data/lib/starter_web/pages/public/_jupyter/examples/localized/j1_climate-change-forecast.adoc +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16260
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_bgplot_line_plot-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-Copy1-checkpoint.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-checkpoint.ipynb +0 -12387
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_circular_times_table-short-checkpoint.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_climate_change_forecast-checkpoint.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_docs_example_dynamic-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-Copy1-checkpoint.ipynb +0 -379
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_interactive_widgets-checkpoint.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets-checkpoint.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.line_charts-checkpoint.ipynb +0 -84
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets.questions-checkpoint.ipynb +0 -194
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-Copy1-checkpoint.ipynb +0 -164
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts-checkpoint.ipynb +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_bar_charts.1-checkpoint.ipynb +0 -256
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_barcharts-checkpoint.ipynb +0 -126
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_hist_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_chart-checkpoint.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_line_charts-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_multiple_choice-checkpoint.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_question_short_answer-checkpoint.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_questions-checkpoint.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_chart-checkpoint.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_charts-checkpoint.ipynb +0 -175
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_nbi_widgets_scatter_drag_chart-checkpoint.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_ode_selected-checkpoint.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/.ipynb_checkpoints/j1_odes_in_python-checkpoint.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/factor_by_factor.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_circular_times_table.ipynb +0 -12382
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_climate_change_forecast.ipynb +0 -1058
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_docs_example_dynamic.ipynb +0 -14478
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_interactive_widgets.ipynb +0 -442
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets.ipynb +0 -523
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_bar_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_hist_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_line_chart.ipynb +0 -90
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_multiple_choice.ipynb +0 -64
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_question_short_answer.ipynb +0 -122
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_chart.ipynb +0 -89
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_nbi_widgets_scatter_drag_chart.ipynb +0 -87
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/j1_odes_in_python.ipynb +0 -15227
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/line_by_line.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1/point_by_point.mp4 +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_interactive-checkpoint.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/.ipynb_checkpoints/j1_altair_non_interactive-checkpoint.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_interactive.ipynb +0 -16296
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-altair-tutorial/j1_altair_non_interactive.ipynb +0 -15385
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/00 - Introduction and Setup-checkpoint.ipynb +0 -717
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/01 - Basic Plotting-checkpoint.ipynb +0 -1381
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/02 - Styling and Theming-checkpoint.ipynb +0 -1440
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/03 - Data Sources and Transformations-checkpoint.ipynb +0 -927
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/04 - Adding Annotations-checkpoint.ipynb +0 -1105
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/05 - Presentation Layouts-checkpoint.ipynb +0 -578
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/06 - Linking and Interactions-checkpoint.ipynb +0 -1196
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/07 - Bar and Categorical Data Plots-checkpoint.ipynb +0 -1681
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/08 - Graph and Network Plots-checkpoint.ipynb +0 -680
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/09 - Geographic Plots-checkpoint.ipynb +0 -693
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/10 - Exporting and Embedding-checkpoint.ipynb +0 -751
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/11 - Running Bokeh Applications-checkpoint.ipynb +0 -770
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/bokeh_tut_00_introduction_and_setup-checkpoint.ipynb +0 -666
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_01_basic_plotting-checkpoint.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_02_styling_and_theming-checkpoint.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_03_data_sources_and_transformations-checkpoint.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_04_adding_annotations-checkpoint.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_05_presentation_layouts-checkpoint.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_06_linking_and_interactions-checkpoint.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_07_bar_and_categorical_data_plots-checkpoint.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_08_graph_and_network_plots-checkpoint.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_09_geographic_plots-checkpoint.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.ipynb +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding-checkpoint.org +0 -726
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_10_exporting_and_embedding.new-checkpoint.ipynb +0 -560
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/.ipynb_checkpoints/j1_bokeh_11_running_bokeh_applications-checkpoint.ipynb +0 -716
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_01_basic_plotting.ipynb +0 -1365
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_02_styling_and_theming.ipynb +0 -1405
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_03_data_sources_and_transformations.ipynb +0 -856
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_04_adding_annotations.ipynb +0 -1167
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_05_presentation_layouts.ipynb +0 -601
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_06_linking_and_interactions.ipynb +0 -1356
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_07_bar_and_categorical_data_plots.ipynb +0 -1742
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_08_graph_and_network_plots.ipynb +0 -625
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bokeh-tutorial/j1_bokeh_09_geographic_plots.ipynb +0 -685
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/.ipynb_checkpoints/j1_mathplot_vs_bqplot-checkpoint.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/advanced/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_bgplot_line_plot.ipynb +0 -244
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_circular_times_table-short.ipynb +0 -12170
- data/lib/starter_web/pages/public/_jupyter/notebooks/j1-bqplot/j1_mathplot_vs_bqplot.ipynb +0 -336
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Index-checkpoint.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/.ipynb_checkpoints/Tutorials-checkpoint.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Advanced Plotting.ipynb +0 -289
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Animations.ipynb +0 -266
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Axis Properties.ipynb +0 -396
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Advanced Plotting/Plotting Dates.ipynb +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/Time Series.ipynb +0 -158
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Equity Index Performance/spx_prices.csv +0 -6799
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Feature_Vector_Distribution-Iris-Digits.ipynb +0 -470
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Index.ipynb +0 -49
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Logs Analytics/Logs Dashboard.ipynb +0 -378
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Mobile Patent Suits.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Neural Network.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Outlier Detection.ipynb +0 -311
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Bubble Chart.ipynb +0 -255
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/Choropleth.ipynb +0 -275
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/nations.json +0 -1
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Applications/Wealth Of Nations/world_map_codes.csv +0 -234
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Basic Plotting-checkpoint.ipynb +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Pyplot-checkpoint.ipynb +0 -794
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Basic Plotting.ipynb +0 -261
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Basic Plotting/Pyplot.ipynb +0 -1489
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Index.ipynb +0 -163
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Interaction Layer.ipynb +0 -966
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Mark Interactions.ipynb +0 -476
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Interactions/Selectors.ipynb +0 -427
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Introduction.ipynb +0 -528
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bars.ipynb +0 -480
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Bins.ipynb +0 -217
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Boxplot.ipynb +0 -253
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Candles.ipynb +0 -225
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/FlexLine.ipynb +0 -123
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Graph.ipynb +0 -357
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/GridHeatMap.ipynb +0 -422
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/HeatMap.ipynb +0 -157
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Hist.ipynb +0 -176
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Image.ipynb +0 -195
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Label.ipynb +0 -189
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Lines.ipynb +0 -565
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Map.ipynb +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Market Map.ipynb +0 -315
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Pie.ipynb +0 -465
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Object Model/Scatter.ipynb +0 -835
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bars.ipynb +0 -362
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Bins.ipynb +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Boxplot.ipynb +0 -273
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Candles.ipynb +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/GridHeatMap.ipynb +0 -417
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/HeatMap.ipynb +0 -155
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Hist.ipynb +0 -238
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Image.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Label.ipynb +0 -206
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Lines.ipynb +0 -474
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Map.ipynb +0 -181
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Pie.ipynb +0 -310
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Marks/Pyplot/Scatter.ipynb +0 -702
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Scales/Color Scales.ipynb +0 -495
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Feature_Vector_Distribution-Iris-Digits-checkpoint.ipynb +0 -433
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Linking Plots With Widgets-checkpoint.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-Copy1-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/.ipynb_checkpoints/Updating Plots-checkpoint.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Brush Interval Selector.ipynb +0 -154
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Fast Interval Selector.ipynb +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density Widget.ipynb +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Gaussian Density.ipynb +0 -113
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Linking Plots With Widgets.ipynb +0 -326
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Object Model.ipynb +0 -179
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Pyplot.ipynb +0 -174
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials/Updating Plots.ipynb +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/Tutorials.ipynb +0 -51
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/country_codes.csv +0 -213
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/gdp_per_capita.csv +0 -56
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/state_codes.csv +0 -52
- data/lib/starter_web/pages/public/_jupyter/notebooks/martin_renou_bqplot/data_files/trees.jpg +0 -0
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_central_limit_theorem-checkpoint.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_examples_variability_of_the_sample_mean-checkpoint.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_graphing-checkpoint.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_interactive_questions-checkpoint.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_recipes_layout-checkpoint.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_interact-checkpoint.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/.ipynb_checkpoints/nbi_docs_tutorial_monty_hall-checkpoint.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_central_limit_theorem.ipynb +0 -247
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_correlation.ipynb +0 -651
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_empirical_distributions.ipynb +0 -773
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_linear_regression.ipynb +0 -111
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_probability_distribution_plots.ipynb +0 -199
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_sampling_from_a_population.ipynb +0 -421
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_examples_variability_of_the_sample_mean.ipynb +0 -323
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_graphing.ipynb +0 -387
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_interactive_questions.ipynb +0 -185
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_recipes_layout.ipynb +0 -384
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_interact.ipynb +0 -254
- data/lib/starter_web/pages/public/_jupyter/notebooks/nbi-docs/nbi_docs_tutorial_monty_hall.ipynb +0 -732
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Advanced Plotting.html +0 -373
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Animations.html +0 -361
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Axis Properties.html +0 -569
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bars.html +0 -487
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Basic Plotting.html +0 -341
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bins.html +0 -259
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Boxplot.html +0 -277
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Brush Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Bubble Chart.html +0 -299
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Candles.html +0 -252
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Choropleth.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Color Scales.html +0 -514
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Fast Interval Selector.html +0 -182
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Feature_Vector_Distribution-Iris-Digits.html +0 -479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/FlexLine.html +0 -128
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density Widget.html +0 -152
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Gaussian Density.html +0 -137
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Graph.html +0 -484
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/GridHeatMap.html +0 -483
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/HeatMap.html +0 -170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Hist.html +0 -349
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Image.html +0 -177
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Index.html +0 -29
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Interaction Layer.html +0 -1372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Introduction.html +0 -749
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Label.html +0 -268
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Lines.html +0 -704
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Linking Plots With Widgets.html +0 -389
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Logs Dashboard.html +0 -455
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Map.html +0 -229
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mark Interactions.html +0 -613
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Market Map.html +0 -413
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Mobile Patent Suits.html +0 -131
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Neural Network.html +0 -190
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Object Model.html +0 -193
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Outlier Detection.html +0 -363
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pie.html +0 -367
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Plotting Dates.html +0 -337
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Pyplot.html +0 -196
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Scatter.html +0 -948
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Selectors.html +0 -489
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Time Series.html +0 -173
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Tutorials.html +0 -40
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/Updating Plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_interactive.html +0 -2216
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_altair_non_interactive.html +0 -1170
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bgplot_line_plot.html +0 -318
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_01_basic_plotting.html +0 -1479
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_02_styling_and_theming.html +0 -1524
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_03_data_sources_and_transformations.html +0 -983
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_04_adding_annotations.html +0 -1280
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_05_presentation_layouts.html +0 -660
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_06_linking_and_interactions.html +0 -1563
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_07_bar_and_categorical_data_plots.html +0 -1888
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_08_graph_and_network_plots.html +0 -689
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_bokeh_09_geographic_plots.html +0 -767
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table-short.html +0 -475
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_circular_times_table.html +0 -747
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_climate_change_forecast.html +0 -1250
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_docs_example_dynamic.html +0 -186
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_interactive_widgets.html +0 -512
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_mathplot_vs_bqplot.html +0 -407
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets.html +0 -629
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_bar_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_hist_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_line_chart.html +0 -96
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_multiple_choice.html +0 -70
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_question_short_answer.html +0 -156
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_chart.html +0 -95
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_nbi_widgets_scatter_drag_chart.html +0 -93
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/j1_odes_in_python.html +0 -955
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_central_limit_theorem.html +0 -290
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_correlation.html +0 -818
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_empirical_distributions.html +0 -351
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_linear_regression.html +0 -106
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_probability_distribution_plots.html +0 -228
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_sampling_from_a_population.html +0 -518
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_examples_variability_of_the_sample_mean.html +0 -372
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_graphing.html +0 -473
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_interactive_questions.html +0 -242
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_recipes_layout.html +0 -496
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_interact.html +0 -329
- data/lib/starter_web/pages/public/_jupyter/notebooks/textbooks/nbi_docs_tutorial_monty_hall.html +0 -866
- data/lib/starter_web/pages/public/_jupyter/where_to_go.adoc +0 -270
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_images.adoc +0 -313
- data/lib/starter_web/pages/public/learn/_roundtrip/100_present_videos.adoc +0 -281
- data/lib/starter_web/pages/public/learn/_roundtrip/200_typography.adoc +0 -253
- data/lib/starter_web/pages/public/learn/_roundtrip/300_icon_fonts.adoc +0 -579
- data/lib/starter_web/pages/public/learn/_roundtrip/400_asciidoc_extensions.adoc +0 -718
- data/lib/starter_web/pages/public/learn/_roundtrip/410_bs_modals_extentions.adoc +0 -91
- data/lib/starter_web/pages/public/learn/_roundtrip/420_responsive_tables_extensions.adoc +0 -420
- data/lib/starter_web/pages/public/learn/_roundtrip/500_themes.adoc +0 -250
- data/lib/starter_web/pages/public/learn/_roundtrip/600_quicksearch.adoc +0 -425
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/attributes.asciidoc +0 -118
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/100_gistblock.asciidoc +0 -28
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_info.asciidoc +0 -14
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_left_warning.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_bottom_right_danger.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_central_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_full_height_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_table_bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_left_info.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/410_top_right_success.asciidoc +0 -11
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/419_advanced_modals_demo.asciidoc +0 -337
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/documents/tables/bs_modal_examples.asciidoc +0 -47
- data/lib/starter_web/pages/public/learn/_roundtrip/_includes/google-ad.js +0 -130
@@ -1,378 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "markdown",
|
5
|
-
"metadata": {},
|
6
|
-
"source": [
|
7
|
-
"## Logs Analytics Dashboard\n",
|
8
|
-
"This dashboard can be used for performing visual analytics on the server log files. You can interact with any chart in the dashboard, like so:\n",
|
9
|
-
"\n",
|
10
|
-
"1. Click on a bar in any bar chart to filter the whole dataset by that bar's value\n",
|
11
|
-
"2. Click on a slice of any pie chart to filter the whole dataset by that pie slices value\n",
|
12
|
-
"\n",
|
13
|
-
"Fun things to try:\n",
|
14
|
-
"1. Select any specific day in the `Daily Events` bar chart (for e.g. why do first and last days have fewer events?)\n",
|
15
|
-
"2. Find out which product queries resulted in server error (click on `Server Error` slice of `Events By Status` pie chart)\n"
|
16
|
-
]
|
17
|
-
},
|
18
|
-
{
|
19
|
-
"cell_type": "code",
|
20
|
-
"execution_count": null,
|
21
|
-
"metadata": {},
|
22
|
-
"outputs": [],
|
23
|
-
"source": [
|
24
|
-
"import numpy as np\n",
|
25
|
-
"import pandas as pd\n",
|
26
|
-
"\n",
|
27
|
-
"import ipywidgets as widgets\n",
|
28
|
-
"import bqplot as bq\n",
|
29
|
-
"import bqplot.pyplot as plt"
|
30
|
-
]
|
31
|
-
},
|
32
|
-
{
|
33
|
-
"cell_type": "code",
|
34
|
-
"execution_count": null,
|
35
|
-
"metadata": {},
|
36
|
-
"outputs": [],
|
37
|
-
"source": [
|
38
|
-
"def get_status_code(x):\n",
|
39
|
-
" \"\"\"\n",
|
40
|
-
" map integer http status to string status code\n",
|
41
|
-
" \"\"\"\n",
|
42
|
-
" if x >= 200 and x < 300:\n",
|
43
|
-
" return \"SUCCESS\"\n",
|
44
|
-
" elif x >= 300 and x < 400:\n",
|
45
|
-
" return \"REDIRECT\"\n",
|
46
|
-
" elif x >= 400 and x < 500:\n",
|
47
|
-
" return \"CLIENT ERROR\"\n",
|
48
|
-
" elif x >= 500:\n",
|
49
|
-
" return \"SERVER ERROR\""
|
50
|
-
]
|
51
|
-
},
|
52
|
-
{
|
53
|
-
"cell_type": "code",
|
54
|
-
"execution_count": null,
|
55
|
-
"metadata": {},
|
56
|
-
"outputs": [],
|
57
|
-
"source": [
|
58
|
-
"def get_events_by_hour(log_data_slice):\n",
|
59
|
-
" \"\"\"\n",
|
60
|
-
" get event counts by hour\n",
|
61
|
-
" \"\"\"\n",
|
62
|
-
" return (\n",
|
63
|
-
" log_data_slice[\"status_code\"]\n",
|
64
|
-
" .groupby(lambda x: x.hour)\n",
|
65
|
-
" .count()\n",
|
66
|
-
" .reindex(np.arange(24))\n",
|
67
|
-
" .fillna(0)\n",
|
68
|
-
" )"
|
69
|
-
]
|
70
|
-
},
|
71
|
-
{
|
72
|
-
"cell_type": "code",
|
73
|
-
"execution_count": null,
|
74
|
-
"metadata": {},
|
75
|
-
"outputs": [],
|
76
|
-
"source": [
|
77
|
-
"# load data into pandas and do some munging\n",
|
78
|
-
"log_data = pd.read_csv(\"access.log\", sep=\" \", header=None)\n",
|
79
|
-
"log_data.drop([1, 2], axis=1, inplace=True)\n",
|
80
|
-
"log_data.columns = [\n",
|
81
|
-
" \"ip_address\",\n",
|
82
|
-
" \"timestamp\",\n",
|
83
|
-
" \"request\",\n",
|
84
|
-
" \"status\",\n",
|
85
|
-
" \"col1\",\n",
|
86
|
-
" \"url\",\n",
|
87
|
-
" \"agent\",\n",
|
88
|
-
" \"col2\",\n",
|
89
|
-
"]\n",
|
90
|
-
"\n",
|
91
|
-
"log_data.index = pd.to_datetime(\n",
|
92
|
-
" log_data[\"timestamp\"].str.replace(\"[\\[\\]]\", \"\"), format=\"%d/%b/%Y:%H:%M:%S\"\n",
|
93
|
-
")\n",
|
94
|
-
"log_data.drop(\"timestamp\", axis=1, inplace=True)\n",
|
95
|
-
"\n",
|
96
|
-
"# add extra columns for easy querying\n",
|
97
|
-
"log_data[\"status_code\"] = log_data[\"status\"].map(get_status_code)\n",
|
98
|
-
"log_data[\"category\"] = log_data[\"request\"].str.extract(\"categoryId=(.*)&\", expand=False)\n",
|
99
|
-
"log_data[\"product\"] = log_data[\"request\"].str.extract(\"productId=(.*)&\", expand=False)\n",
|
100
|
-
"log_data[\"hour\"] = log_data.index.map(lambda x: x.hour)\n",
|
101
|
-
"log_data[\"day\"] = log_data.index.strftime(\"%Y-%m-%d\")"
|
102
|
-
]
|
103
|
-
},
|
104
|
-
{
|
105
|
-
"cell_type": "code",
|
106
|
-
"execution_count": null,
|
107
|
-
"metadata": {},
|
108
|
-
"outputs": [],
|
109
|
-
"source": [
|
110
|
-
"all_days = log_data[\"day\"].value_counts().index\n",
|
111
|
-
"all_hours = np.arange(24)\n",
|
112
|
-
"all_categories = list(log_data[\"category\"].value_counts().index)\n",
|
113
|
-
"all_products = list(log_data[\"product\"].value_counts().index)\n",
|
114
|
-
"all_status_codes = list(log_data[\"status_code\"].value_counts().index)\n",
|
115
|
-
"\n",
|
116
|
-
"category_colors = dict(zip(all_categories, bq.CATEGORY10))\n",
|
117
|
-
"status_label_colors = dict(\n",
|
118
|
-
" [(\"SUCCESS\", \"#006d2c\"), (\"CLIENT ERROR\", \"#fc8d59\"), (\"SERVER ERROR\", \"#a63603\")]\n",
|
119
|
-
")"
|
120
|
-
]
|
121
|
-
},
|
122
|
-
{
|
123
|
-
"cell_type": "code",
|
124
|
-
"execution_count": null,
|
125
|
-
"metadata": {
|
126
|
-
"scrolled": true
|
127
|
-
},
|
128
|
-
"outputs": [],
|
129
|
-
"source": [
|
130
|
-
"# daily events bar chart\n",
|
131
|
-
"daily_events_fig = plt.figure(\n",
|
132
|
-
" title=\"Daily Events\",\n",
|
133
|
-
" animation_duration=1000,\n",
|
134
|
-
" layout=widgets.Layout(width=\"900px\", height=\"500px\"),\n",
|
135
|
-
")\n",
|
136
|
-
"\n",
|
137
|
-
"plt.scales(scales={\"x\": bq.DateScale()})\n",
|
138
|
-
"\n",
|
139
|
-
"# intsel = BrushIntervalSelector(scale=, marks=[hist])\n",
|
140
|
-
"bar_axes_options = {\"x\": {\"grid_lines\": \"none\"}, \"y\": {\"tick_format\": \",\"}}\n",
|
141
|
-
"common_bar_options = dict(\n",
|
142
|
-
" interactions={\"click\": \"select\"},\n",
|
143
|
-
" selected_style={\"stroke\": \"Red\", \"stroke-width\": 4},\n",
|
144
|
-
" axes_options=bar_axes_options,\n",
|
145
|
-
")\n",
|
146
|
-
"daily_events_bar = plt.bar(\n",
|
147
|
-
" pd.to_datetime(all_days),\n",
|
148
|
-
" [],\n",
|
149
|
-
" colors=[\"dodgerblue\"],\n",
|
150
|
-
" opacities=[0.8] * len(all_days),\n",
|
151
|
-
" **common_bar_options\n",
|
152
|
-
")\n",
|
153
|
-
"\n",
|
154
|
-
"num_days = len(all_days)\n",
|
155
|
-
"filtered_daily_events_bar = plt.bar(\n",
|
156
|
-
" pd.to_datetime(all_days),\n",
|
157
|
-
" np.zeros(num_days),\n",
|
158
|
-
" colors=[\"lightgreen\"],\n",
|
159
|
-
" opacities=[0.8] * num_days,\n",
|
160
|
-
" axes_options=bar_axes_options,\n",
|
161
|
-
")\n",
|
162
|
-
"\n",
|
163
|
-
"# hourly events line chart\n",
|
164
|
-
"hourly_events_fig = plt.figure(\n",
|
165
|
-
" title=\"Hourly Events\",\n",
|
166
|
-
" animation_duration=1000,\n",
|
167
|
-
" layout=widgets.Layout(width=\"600px\", height=\"500px\"),\n",
|
168
|
-
")\n",
|
169
|
-
"\n",
|
170
|
-
"plt.scales(scales={\"x\": bq.OrdinalScale()})\n",
|
171
|
-
"hourly_events_bar = plt.bar(\n",
|
172
|
-
" all_hours,\n",
|
173
|
-
" [],\n",
|
174
|
-
" colors=[\"goldenrod\"],\n",
|
175
|
-
" opacities=[0.8] * 24,\n",
|
176
|
-
" padding=0.2,\n",
|
177
|
-
" **common_bar_options\n",
|
178
|
-
")\n",
|
179
|
-
"\n",
|
180
|
-
"filtered_hourly_events_bar = plt.bar(\n",
|
181
|
-
" all_hours,\n",
|
182
|
-
" [],\n",
|
183
|
-
" colors=[\"lightgreen\"],\n",
|
184
|
-
" opacities=[0.8] * 24,\n",
|
185
|
-
" padding=0.2,\n",
|
186
|
-
" axes_options=bar_axes_options,\n",
|
187
|
-
")\n",
|
188
|
-
"\n",
|
189
|
-
"products_fig = plt.figure(\n",
|
190
|
-
" title=\"Events By Product\",\n",
|
191
|
-
" animation_duration=1000,\n",
|
192
|
-
" fig_margin=dict(top=60, bottom=20, left=100, right=40),\n",
|
193
|
-
" layout=widgets.Layout(width=\"550px\", height=\"500px\"),\n",
|
194
|
-
")\n",
|
195
|
-
"products_bar = plt.bar(\n",
|
196
|
-
" all_products,\n",
|
197
|
-
" [],\n",
|
198
|
-
" colors=[\"salmon\"],\n",
|
199
|
-
" orientation=\"horizontal\",\n",
|
200
|
-
" opacities=[0.8] * len(all_products),\n",
|
201
|
-
" padding=0.2,\n",
|
202
|
-
" **common_bar_options\n",
|
203
|
-
")\n",
|
204
|
-
"\n",
|
205
|
-
"common_pie_args = dict(\n",
|
206
|
-
" display_labels=\"outside\",\n",
|
207
|
-
" interactions={\"click\": \"select\"},\n",
|
208
|
-
" selected_style={\"stroke\": \"white\", \"stroke-width\": 3},\n",
|
209
|
-
" inner_radius=80,\n",
|
210
|
-
" apply_clip=False,\n",
|
211
|
-
")\n",
|
212
|
-
"# categories pie chart\n",
|
213
|
-
"categories_fig = plt.figure(\n",
|
214
|
-
" title=\"Events By Category\",\n",
|
215
|
-
" animation_duration=1000,\n",
|
216
|
-
" layout=widgets.Layout(width=\"550px\", height=\"500px\"),\n",
|
217
|
-
")\n",
|
218
|
-
"categories_pie = plt.pie([], labels=all_categories, **common_pie_args)\n",
|
219
|
-
"\n",
|
220
|
-
"# status codes pie chart\n",
|
221
|
-
"status_codes_fig = plt.figure(\n",
|
222
|
-
" title=\"Events By Status\",\n",
|
223
|
-
" animation_duration=1000,\n",
|
224
|
-
" layout=widgets.Layout(width=\"550px\", height=\"500px\"),\n",
|
225
|
-
")\n",
|
226
|
-
"status_codes_pie = plt.pie([], labels=all_status_codes, **common_pie_args)\n",
|
227
|
-
"\n",
|
228
|
-
"# buttons for updating and resetting filters\n",
|
229
|
-
"update_btn = widgets.Button(description=\"Update\", button_style=\"Success\")\n",
|
230
|
-
"reset_btn = widgets.Button(description=\"Reset\", button_style=\"Success\")"
|
231
|
-
]
|
232
|
-
},
|
233
|
-
{
|
234
|
-
"cell_type": "code",
|
235
|
-
"execution_count": null,
|
236
|
-
"metadata": {},
|
237
|
-
"outputs": [],
|
238
|
-
"source": [
|
239
|
-
"fields = [\"day\", \"hour\", \"product\", \"category\", \"status_code\"]\n",
|
240
|
-
"field_vals = [all_days, all_hours, all_products, all_categories, all_status_codes]\n",
|
241
|
-
"plots = [\n",
|
242
|
-
" daily_events_bar,\n",
|
243
|
-
" hourly_events_bar,\n",
|
244
|
-
" products_bar,\n",
|
245
|
-
" categories_pie,\n",
|
246
|
-
" status_codes_pie,\n",
|
247
|
-
"]"
|
248
|
-
]
|
249
|
-
},
|
250
|
-
{
|
251
|
-
"cell_type": "code",
|
252
|
-
"execution_count": null,
|
253
|
-
"metadata": {},
|
254
|
-
"outputs": [],
|
255
|
-
"source": [
|
256
|
-
"def generate_filters():\n",
|
257
|
-
" filters_dict = {}\n",
|
258
|
-
" for field, field_val, plot in zip(fields, field_vals, plots):\n",
|
259
|
-
" if plot.selected:\n",
|
260
|
-
" selected_vals = [field_val[i] for i in plot.selected]\n",
|
261
|
-
" filters_dict[field] = selected_vals\n",
|
262
|
-
" return filters_dict"
|
263
|
-
]
|
264
|
-
},
|
265
|
-
{
|
266
|
-
"cell_type": "code",
|
267
|
-
"execution_count": null,
|
268
|
-
"metadata": {},
|
269
|
-
"outputs": [],
|
270
|
-
"source": [
|
271
|
-
"def apply_filters(df, filters):\n",
|
272
|
-
" filtered_df = df\n",
|
273
|
-
"\n",
|
274
|
-
" for k, v in filters.items():\n",
|
275
|
-
" if v and len(v) > 0:\n",
|
276
|
-
" filtered_df = filtered_df[filtered_df[k].isin(v)]\n",
|
277
|
-
" return filtered_df"
|
278
|
-
]
|
279
|
-
},
|
280
|
-
{
|
281
|
-
"cell_type": "code",
|
282
|
-
"execution_count": null,
|
283
|
-
"metadata": {},
|
284
|
-
"outputs": [],
|
285
|
-
"source": [
|
286
|
-
"def update_plots(*args):\n",
|
287
|
-
" global filters, filtered_log_data\n",
|
288
|
-
" filters = generate_filters()\n",
|
289
|
-
" filtered_log_data = apply_filters(log_data, filters)\n",
|
290
|
-
"\n",
|
291
|
-
" daily_events = (\n",
|
292
|
-
" filtered_log_data.resample(\"D\")\n",
|
293
|
-
" .count()[\"status_code\"]\n",
|
294
|
-
" .reindex(pd.to_datetime(all_days))\n",
|
295
|
-
" .fillna(0)\n",
|
296
|
-
" )\n",
|
297
|
-
" daily_events_bar.y = daily_events\n",
|
298
|
-
"\n",
|
299
|
-
" hourly_events_bar.y = get_events_by_hour(filtered_log_data)\n",
|
300
|
-
"\n",
|
301
|
-
" products_bar.y = (\n",
|
302
|
-
" filtered_log_data[\"product\"].value_counts().reindex(all_products).fillna(0)\n",
|
303
|
-
" )\n",
|
304
|
-
"\n",
|
305
|
-
" events_by_category = filtered_log_data[\"category\"].value_counts()\n",
|
306
|
-
"\n",
|
307
|
-
" with categories_pie.hold_sync():\n",
|
308
|
-
" categories_pie.labels = list(events_by_category.index)\n",
|
309
|
-
" categories_pie.sizes = events_by_category\n",
|
310
|
-
" categories_pie.colors = [category_colors[d] for d in categories_pie.labels]\n",
|
311
|
-
"\n",
|
312
|
-
" events_by_status_code = filtered_log_data[\"status_code\"].value_counts()\n",
|
313
|
-
"\n",
|
314
|
-
" with status_codes_pie.hold_sync():\n",
|
315
|
-
" status_codes_pie.labels = list(events_by_status_code.index)\n",
|
316
|
-
" status_codes_pie.sizes = events_by_status_code.values\n",
|
317
|
-
" status_codes_pie.colors = [\n",
|
318
|
-
" status_label_colors[d] for d in status_codes_pie.labels\n",
|
319
|
-
" ]"
|
320
|
-
]
|
321
|
-
},
|
322
|
-
{
|
323
|
-
"cell_type": "code",
|
324
|
-
"execution_count": null,
|
325
|
-
"metadata": {},
|
326
|
-
"outputs": [],
|
327
|
-
"source": [
|
328
|
-
"def reset_filters(*args):\n",
|
329
|
-
" for plot in plots:\n",
|
330
|
-
" plot.selected = None\n",
|
331
|
-
" update_plots(None)\n",
|
332
|
-
"\n",
|
333
|
-
"\n",
|
334
|
-
"update_btn.on_click(lambda btn: update_plots(None))\n",
|
335
|
-
"reset_btn.on_click(lambda btn: reset_filters())\n",
|
336
|
-
"btns_layout = widgets.VBox(\n",
|
337
|
-
" [update_btn, reset_btn], layout=widgets.Layout(overflow_x=\"hidden\")\n",
|
338
|
-
")"
|
339
|
-
]
|
340
|
-
},
|
341
|
-
{
|
342
|
-
"cell_type": "code",
|
343
|
-
"execution_count": null,
|
344
|
-
"metadata": {
|
345
|
-
"scrolled": true
|
346
|
-
},
|
347
|
-
"outputs": [],
|
348
|
-
"source": [
|
349
|
-
"update_plots(None)\n",
|
350
|
-
"\n",
|
351
|
-
"parent_plots = widgets.HBox([daily_events_fig, hourly_events_fig])\n",
|
352
|
-
"child_plots = widgets.HBox([products_fig, categories_fig, status_codes_fig])\n",
|
353
|
-
"widgets.VBox([widgets.HBox([parent_plots, btns_layout]), child_plots])"
|
354
|
-
]
|
355
|
-
}
|
356
|
-
],
|
357
|
-
"metadata": {
|
358
|
-
"kernelspec": {
|
359
|
-
"display_name": "Python 3",
|
360
|
-
"language": "python",
|
361
|
-
"name": "python3"
|
362
|
-
},
|
363
|
-
"language_info": {
|
364
|
-
"codemirror_mode": {
|
365
|
-
"name": "ipython",
|
366
|
-
"version": 3
|
367
|
-
},
|
368
|
-
"file_extension": ".py",
|
369
|
-
"mimetype": "text/x-python",
|
370
|
-
"name": "python",
|
371
|
-
"nbconvert_exporter": "python",
|
372
|
-
"pygments_lexer": "ipython3",
|
373
|
-
"version": "3.8.2"
|
374
|
-
}
|
375
|
-
},
|
376
|
-
"nbformat": 4,
|
377
|
-
"nbformat_minor": 1
|
378
|
-
}
|
@@ -1,123 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "code",
|
5
|
-
"execution_count": null,
|
6
|
-
"metadata": {},
|
7
|
-
"outputs": [],
|
8
|
-
"source": [
|
9
|
-
"from itertools import chain\n",
|
10
|
-
"\n",
|
11
|
-
"from bqplot import OrdinalColorScale, Figure, Graph\n",
|
12
|
-
"from ipywidgets import Layout"
|
13
|
-
]
|
14
|
-
},
|
15
|
-
{
|
16
|
-
"cell_type": "code",
|
17
|
-
"execution_count": null,
|
18
|
-
"metadata": {},
|
19
|
-
"outputs": [],
|
20
|
-
"source": [
|
21
|
-
"# mobile patent suits - http://bl.ocks.org/mbostock/1153292\n",
|
22
|
-
"suits = [\n",
|
23
|
-
" {\"source\": \"Microsoft\", \"target\": \"Amazon\", \"type\": \"licensing\"},\n",
|
24
|
-
" {\"source\": \"Microsoft\", \"target\": \"HTC\", \"type\": \"licensing\"},\n",
|
25
|
-
" {\"source\": \"Samsung\", \"target\": \"Apple\", \"type\": \"suit\"},\n",
|
26
|
-
" {\"source\": \"Motorola\", \"target\": \"Apple\", \"type\": \"suit\"},\n",
|
27
|
-
" {\"source\": \"Nokia\", \"target\": \"Apple\", \"type\": \"resolved\"},\n",
|
28
|
-
" {\"source\": \"HTC\", \"target\": \"Apple\", \"type\": \"suit\"},\n",
|
29
|
-
" {\"source\": \"Kodak\", \"target\": \"Apple\", \"type\": \"suit\"},\n",
|
30
|
-
" {\"source\": \"Microsoft\", \"target\": \"Barnes & Noble\", \"type\": \"suit\"},\n",
|
31
|
-
" {\"source\": \"Microsoft\", \"target\": \"Foxconn\", \"type\": \"suit\"},\n",
|
32
|
-
" {\"source\": \"Oracle\", \"target\": \"Google\", \"type\": \"suit\"},\n",
|
33
|
-
" {\"source\": \"Apple\", \"target\": \"HTC\", \"type\": \"suit\"},\n",
|
34
|
-
" {\"source\": \"Microsoft\", \"target\": \"Inventec\", \"type\": \"suit\"},\n",
|
35
|
-
" {\"source\": \"Samsung\", \"target\": \"Kodak\", \"type\": \"resolved\"},\n",
|
36
|
-
" {\"source\": \"LG\", \"target\": \"Kodak\", \"type\": \"resolved\"},\n",
|
37
|
-
" {\"source\": \"RIM\", \"target\": \"Kodak\", \"type\": \"suit\"},\n",
|
38
|
-
" {\"source\": \"Sony\", \"target\": \"LG\", \"type\": \"suit\"},\n",
|
39
|
-
" {\"source\": \"Kodak\", \"target\": \"LG\", \"type\": \"resolved\"},\n",
|
40
|
-
" {\"source\": \"Apple\", \"target\": \"Nokia\", \"type\": \"resolved\"},\n",
|
41
|
-
" {\"source\": \"Qualcomm\", \"target\": \"Nokia\", \"type\": \"resolved\"},\n",
|
42
|
-
" {\"source\": \"Apple\", \"target\": \"Motorola\", \"type\": \"suit\"},\n",
|
43
|
-
" {\"source\": \"Microsoft\", \"target\": \"Motorola\", \"type\": \"suit\"},\n",
|
44
|
-
" {\"source\": \"Motorola\", \"target\": \"Microsoft\", \"type\": \"suit\"},\n",
|
45
|
-
" {\"source\": \"Huawei\", \"target\": \"ZTE\", \"type\": \"suit\"},\n",
|
46
|
-
" {\"source\": \"Ericsson\", \"target\": \"ZTE\", \"type\": \"suit\"},\n",
|
47
|
-
" {\"source\": \"Kodak\", \"target\": \"Samsung\", \"type\": \"resolved\"},\n",
|
48
|
-
" {\"source\": \"Apple\", \"target\": \"Samsung\", \"type\": \"suit\"},\n",
|
49
|
-
" {\"source\": \"Kodak\", \"target\": \"RIM\", \"type\": \"suit\"},\n",
|
50
|
-
" {\"source\": \"Nokia\", \"target\": \"Qualcomm\", \"type\": \"suit\"},\n",
|
51
|
-
"]"
|
52
|
-
]
|
53
|
-
},
|
54
|
-
{
|
55
|
-
"cell_type": "code",
|
56
|
-
"execution_count": null,
|
57
|
-
"metadata": {},
|
58
|
-
"outputs": [],
|
59
|
-
"source": [
|
60
|
-
"# transform data into nodes and links\n",
|
61
|
-
"nodes = list(set(chain(*((suit[\"source\"], suit[\"target\"]) for suit in suits))))\n",
|
62
|
-
"\n",
|
63
|
-
"# set custom node attrs\n",
|
64
|
-
"node_data = [\n",
|
65
|
-
" {\"label\": node, \"shape_attrs\": {\"r\": 6}, \"label_display\": \"outside\"}\n",
|
66
|
-
" for node in nodes\n",
|
67
|
-
"]\n",
|
68
|
-
"# for links, source and target should be indices into the nodes list\n",
|
69
|
-
"nodes_index_map = {node: i for i, node in enumerate(nodes)}\n",
|
70
|
-
"link_data = [\n",
|
71
|
-
" {\n",
|
72
|
-
" \"source\": nodes_index_map[s[\"source\"]],\n",
|
73
|
-
" \"target\": nodes_index_map[s[\"target\"]],\n",
|
74
|
-
" \"value\": s[\"type\"],\n",
|
75
|
-
" }\n",
|
76
|
-
" for s in suits\n",
|
77
|
-
"]\n",
|
78
|
-
"\n",
|
79
|
-
"# encode suit type with link color\n",
|
80
|
-
"link_color_scale = OrdinalColorScale(\n",
|
81
|
-
" domain=[\"licensing\", \"suit\", \"resolved\"],\n",
|
82
|
-
" colors=[\"limegreen\", \"dodgerblue\", \"orangered\"],\n",
|
83
|
-
")\n",
|
84
|
-
"graph = Graph(\n",
|
85
|
-
" node_data=node_data,\n",
|
86
|
-
" link_data=link_data,\n",
|
87
|
-
" link_type=\"arc\",\n",
|
88
|
-
" scales={\"link_color\": link_color_scale},\n",
|
89
|
-
" colors=[\"gray\"],\n",
|
90
|
-
" directed=True,\n",
|
91
|
-
" link_distance=100,\n",
|
92
|
-
" charge=-600,\n",
|
93
|
-
")\n",
|
94
|
-
"Figure(\n",
|
95
|
-
" marks=[graph],\n",
|
96
|
-
" layout=Layout(height=\"900px\", width=\"1000px\"),\n",
|
97
|
-
" title=\"Mobile Patent Suits\",\n",
|
98
|
-
")"
|
99
|
-
]
|
100
|
-
}
|
101
|
-
],
|
102
|
-
"metadata": {
|
103
|
-
"kernelspec": {
|
104
|
-
"display_name": "Python 3",
|
105
|
-
"language": "python",
|
106
|
-
"name": "python3"
|
107
|
-
},
|
108
|
-
"language_info": {
|
109
|
-
"codemirror_mode": {
|
110
|
-
"name": "ipython",
|
111
|
-
"version": 3
|
112
|
-
},
|
113
|
-
"file_extension": ".py",
|
114
|
-
"mimetype": "text/x-python",
|
115
|
-
"name": "python",
|
116
|
-
"nbconvert_exporter": "python",
|
117
|
-
"pygments_lexer": "ipython3",
|
118
|
-
"version": "3.7.6"
|
119
|
-
}
|
120
|
-
},
|
121
|
-
"nbformat": 4,
|
122
|
-
"nbformat_minor": 2
|
123
|
-
}
|
@@ -1,177 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"cells": [
|
3
|
-
{
|
4
|
-
"cell_type": "markdown",
|
5
|
-
"metadata": {},
|
6
|
-
"source": [
|
7
|
-
"This application demonstrates how to build a simple neural network using the Graph mark.\n",
|
8
|
-
"Interactions can be enabled by adding event handlers (click, hover etc) on the nodes of the network.\n",
|
9
|
-
"See the [Mark Interactions notebook](../Interactions/Mark%20Interactions.ipynb) and the [Scatter Notebook](../Marks/Object%20Model/Scatter.ipynb) for details."
|
10
|
-
]
|
11
|
-
},
|
12
|
-
{
|
13
|
-
"cell_type": "code",
|
14
|
-
"execution_count": 4,
|
15
|
-
"metadata": {},
|
16
|
-
"outputs": [],
|
17
|
-
"source": [
|
18
|
-
"from itertools import chain, product\n",
|
19
|
-
"\n",
|
20
|
-
"import numpy as np\n",
|
21
|
-
"from bqplot import LinearScale, Graph, Figure"
|
22
|
-
]
|
23
|
-
},
|
24
|
-
{
|
25
|
-
"cell_type": "code",
|
26
|
-
"execution_count": 5,
|
27
|
-
"metadata": {},
|
28
|
-
"outputs": [],
|
29
|
-
"source": [
|
30
|
-
"class NeuralNet(Figure):\n",
|
31
|
-
" def __init__(self, **kwargs):\n",
|
32
|
-
" self.height = kwargs.get(\"height\", 600)\n",
|
33
|
-
" self.width = kwargs.get(\"width\", 960)\n",
|
34
|
-
" self.directed_links = kwargs.get(\"directed_links\", False)\n",
|
35
|
-
"\n",
|
36
|
-
" self.num_inputs = kwargs[\"num_inputs\"]\n",
|
37
|
-
" self.num_hidden_layers = kwargs[\"num_hidden_layers\"]\n",
|
38
|
-
" self.nodes_output_layer = kwargs[\"num_outputs\"]\n",
|
39
|
-
" self.layer_colors = kwargs.get(\n",
|
40
|
-
" \"layer_colors\", [\"Orange\"] * (len(self.num_hidden_layers) + 2)\n",
|
41
|
-
" )\n",
|
42
|
-
"\n",
|
43
|
-
" self.build_net()\n",
|
44
|
-
" super(NeuralNet, self).__init__(**kwargs)\n",
|
45
|
-
"\n",
|
46
|
-
" def build_net(self):\n",
|
47
|
-
" # create nodes\n",
|
48
|
-
" self.layer_nodes = []\n",
|
49
|
-
" self.layer_nodes.append([\"x\" + str(i + 1) for i in range(self.num_inputs)])\n",
|
50
|
-
"\n",
|
51
|
-
" for i, h in enumerate(self.num_hidden_layers):\n",
|
52
|
-
" self.layer_nodes.append(\n",
|
53
|
-
" [\"h\" + str(i + 1) + \",\" + str(j + 1) for j in range(h)]\n",
|
54
|
-
" )\n",
|
55
|
-
" self.layer_nodes.append(\n",
|
56
|
-
" [\"y\" + str(i + 1) for i in range(self.nodes_output_layer)]\n",
|
57
|
-
" )\n",
|
58
|
-
"\n",
|
59
|
-
" self.flattened_layer_nodes = list(chain(*self.layer_nodes))\n",
|
60
|
-
"\n",
|
61
|
-
" # build link matrix\n",
|
62
|
-
" i = 0\n",
|
63
|
-
" node_indices = {}\n",
|
64
|
-
" for layer in self.layer_nodes:\n",
|
65
|
-
" for node in layer:\n",
|
66
|
-
" node_indices[node] = i\n",
|
67
|
-
" i += 1\n",
|
68
|
-
"\n",
|
69
|
-
" n = len(self.flattened_layer_nodes)\n",
|
70
|
-
" self.link_matrix = np.empty((n, n))\n",
|
71
|
-
" self.link_matrix[:] = np.nan\n",
|
72
|
-
"\n",
|
73
|
-
" for i in range(len(self.layer_nodes) - 1):\n",
|
74
|
-
" curr_layer_nodes_indices = [node_indices[d] for d in self.layer_nodes[i]]\n",
|
75
|
-
" next_layer_nodes = [node_indices[d] for d in self.layer_nodes[i + 1]]\n",
|
76
|
-
" for s, t in product(curr_layer_nodes_indices, next_layer_nodes):\n",
|
77
|
-
" self.link_matrix[s, t] = 1\n",
|
78
|
-
"\n",
|
79
|
-
" # set node x locations\n",
|
80
|
-
" self.nodes_x = np.repeat(\n",
|
81
|
-
" np.linspace(0, 100, len(self.layer_nodes) + 1, endpoint=False)[1:],\n",
|
82
|
-
" [len(n) for n in self.layer_nodes],\n",
|
83
|
-
" )\n",
|
84
|
-
"\n",
|
85
|
-
" # set node y locations\n",
|
86
|
-
" self.nodes_y = np.array([])\n",
|
87
|
-
" for layer in self.layer_nodes:\n",
|
88
|
-
" n = len(layer)\n",
|
89
|
-
" ys = np.linspace(0, 100, n + 1, endpoint=False)[1:]\n",
|
90
|
-
" self.nodes_y = np.append(self.nodes_y, ys[::-1])\n",
|
91
|
-
"\n",
|
92
|
-
" # set node colors\n",
|
93
|
-
" n_layers = len(self.layer_nodes)\n",
|
94
|
-
" self.node_colors = np.repeat(\n",
|
95
|
-
" np.array(self.layer_colors[:n_layers]),\n",
|
96
|
-
" [len(layer) for layer in self.layer_nodes],\n",
|
97
|
-
" ).tolist()\n",
|
98
|
-
"\n",
|
99
|
-
" xs = LinearScale(min=0, max=100)\n",
|
100
|
-
" ys = LinearScale(min=0, max=100)\n",
|
101
|
-
"\n",
|
102
|
-
" self.graph = Graph(\n",
|
103
|
-
" node_data=[\n",
|
104
|
-
" {\"label\": d, \"label_display\": \"none\"}\n",
|
105
|
-
" for d in self.flattened_layer_nodes\n",
|
106
|
-
" ],\n",
|
107
|
-
" link_matrix=self.link_matrix,\n",
|
108
|
-
" link_type=\"line\",\n",
|
109
|
-
" colors=self.node_colors,\n",
|
110
|
-
" directed=self.directed_links,\n",
|
111
|
-
" scales={\"x\": xs, \"y\": ys},\n",
|
112
|
-
" x=self.nodes_x,\n",
|
113
|
-
" y=self.nodes_y,\n",
|
114
|
-
" # color=2 * np.random.rand(len(self.flattened_layer_nodes)) - 1\n",
|
115
|
-
" )\n",
|
116
|
-
" self.graph.hovered_style = {\"stroke\": \"1.5\"}\n",
|
117
|
-
" self.graph.unhovered_style = {\"opacity\": \"0.4\"}\n",
|
118
|
-
"\n",
|
119
|
-
" self.graph.selected_style = {\n",
|
120
|
-
" \"opacity\": \"1\",\n",
|
121
|
-
" \"stroke\": \"red\",\n",
|
122
|
-
" \"stroke-width\": \"2.5\",\n",
|
123
|
-
" }\n",
|
124
|
-
" self.marks = [self.graph]\n",
|
125
|
-
" self.title = \"Neural Network\"\n",
|
126
|
-
" self.layout.width = str(self.width) + \"px\"\n",
|
127
|
-
" self.layout.height = str(self.height) + \"px\""
|
128
|
-
]
|
129
|
-
},
|
130
|
-
{
|
131
|
-
"cell_type": "code",
|
132
|
-
"execution_count": 6,
|
133
|
-
"metadata": {},
|
134
|
-
"outputs": [
|
135
|
-
{
|
136
|
-
"data": {
|
137
|
-
"application/vnd.jupyter.widget-view+json": {
|
138
|
-
"model_id": "b2d75468c39d4bcf896561f72febb74d",
|
139
|
-
"version_major": 2,
|
140
|
-
"version_minor": 0
|
141
|
-
},
|
142
|
-
"text/plain": [
|
143
|
-
"NeuralNet(fig_margin={'top': 60, 'bottom': 60, 'left': 60, 'right': 60}, layout=Layout(height='600px', width='…"
|
144
|
-
]
|
145
|
-
},
|
146
|
-
"metadata": {},
|
147
|
-
"output_type": "display_data"
|
148
|
-
}
|
149
|
-
],
|
150
|
-
"source": [
|
151
|
-
"NeuralNet(num_inputs=3, num_hidden_layers=[10, 10, 8, 5], num_outputs=1)"
|
152
|
-
]
|
153
|
-
}
|
154
|
-
],
|
155
|
-
"metadata": {
|
156
|
-
"input_collapsed": false,
|
157
|
-
"kernelspec": {
|
158
|
-
"display_name": "Python 3",
|
159
|
-
"language": "python",
|
160
|
-
"name": "python3"
|
161
|
-
},
|
162
|
-
"language_info": {
|
163
|
-
"codemirror_mode": {
|
164
|
-
"name": "ipython",
|
165
|
-
"version": 3
|
166
|
-
},
|
167
|
-
"file_extension": ".py",
|
168
|
-
"mimetype": "text/x-python",
|
169
|
-
"name": "python",
|
170
|
-
"nbconvert_exporter": "python",
|
171
|
-
"pygments_lexer": "ipython3",
|
172
|
-
"version": "3.7.6"
|
173
|
-
}
|
174
|
-
},
|
175
|
-
"nbformat": 4,
|
176
|
-
"nbformat_minor": 2
|
177
|
-
}
|