galaaz 0.5.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -0
- data/LICENSE +0 -0
- data/README.md +1360 -636
- data/Rakefile +61 -41
- data/bin/galaaz-bootstrap +137 -0
- data/bin/galaaz-jruby +14 -0
- data/bin/galaaz_jruby_env.inc.sh +6 -0
- data/bin/gbookdown +64 -0
- data/bin/gknit +84 -13
- data/bin/gknit-draft.rb +0 -0
- data/bin/gstudio +5 -3
- data/bin/gstudio_irb.rb +0 -0
- data/bin/gstudio_pry.rb +0 -0
- data/bin/install-tinytex +6 -0
- data/bin/run_all_rspec +43 -0
- data/bin/run_example +14 -0
- data/bin/run_old_rspec +19 -0
- data/bin/run_rspec +23 -0
- data/bin/run_rspec_subset +38 -0
- data/bin/run_slow_rspec +19 -0
- data/blogs/R-on-Rails-Planning-Document.md +940 -0
- data/blogs/README.md +100 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot.Rmd +38 -66
- data/blogs/galaaz_ggplot/galaaz_ggplot.log +754 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot.md +115 -155
- data/blogs/galaaz_ggplot/galaaz_ggplot.tex +607 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/midwest_rb.png +0 -0
- data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/scatter_plot_rb.png +0 -0
- data/blogs/galaaz_ggplot/midwest.Rmd +3 -3
- data/blogs/galaaz_ggplot/midwest_external_png +0 -0
- data/blogs/gknit/gknit.Rmd +47 -52
- data/blogs/gknit/gknit.md +1430 -0
- data/blogs/gknit/gknit_files/figure-html/bubble-1.png +0 -0
- data/blogs/gknit/gknit_files/figure-html/diverging_bar.png +0 -0
- data/blogs/gknit/lst.rds +0 -0
- data/blogs/gknit/model.rb +1 -1
- data/blogs/gknit/stats.bib +0 -0
- data/blogs/manual/include_model_local_repro.Rmd +14 -0
- data/blogs/manual/include_model_local_repro.md +75 -0
- data/blogs/manual/lst.rds +0 -0
- data/blogs/manual/manual.Rmd +852 -239
- data/blogs/manual/manual.log +1786 -0
- data/blogs/manual/manual.md +1360 -636
- data/blogs/manual/manual.tex +1883 -1161
- data/blogs/manual/manual_files/figure-html/bubble-1.png +0 -0
- data/blogs/manual/manual_files/figure-html/diverging_bar.png +0 -0
- data/blogs/manual/manual_files/figure-latex/bubble-1.png +0 -0
- data/blogs/manual/model.rb +1 -1
- data/blogs/nse_dplyr/nse_dplyr.Rmd +84 -111
- data/blogs/nse_dplyr/nse_dplyr.log +928 -0
- data/blogs/nse_dplyr/nse_dplyr.md +198 -229
- data/blogs/oh_my/not_so.rb +0 -0
- data/blogs/oh_my/oh_my.Rmd +1234 -25
- data/blogs/oh_my/oh_my.log +804 -0
- data/blogs/oh_my/oh_my.md +1663 -86
- data/blogs/oh_my/oh_my.tex +821 -0
- data/blogs/oh_my/old.Rmd +15 -14
- data/blogs/ruby_plot/ruby_plot.Rmd +58 -82
- data/blogs/ruby_plot/ruby_plot.log +885 -0
- data/blogs/ruby_plot/ruby_plot.md +71 -102
- data/blogs/ruby_plot/ruby_plot.tex +940 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_decorations.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
- data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
- data/blogs/test/test.Rmd +14 -0
- data/examples/50Plots_MasterList/Images/midwest-scatterplot.PNG +0 -0
- data/examples/50Plots_MasterList/ScatterPlot.rb +0 -0
- data/examples/50Plots_MasterList/scatter_plot.rb +0 -0
- data/examples/Bibliography/master.bib +0 -0
- data/examples/Bibliography/stats.bib +0 -0
- data/examples/R/calc.R +0 -0
- data/examples/R/java_interop.R +0 -0
- data/examples/bioconductor_deseq2_airway/Documentation/DESeq2-airway-walkthrough.md +56 -0
- data/examples/bioconductor_deseq2_airway/bench_galaaz_three_same_process.rb +53 -0
- data/examples/bioconductor_deseq2_airway/bench_r_three_same_process.R +34 -0
- data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz.rb +33 -0
- data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz_optimized.rb +34 -0
- data/examples/bioconductor_deseq2_airway/deseq2_airway_minimal.R +30 -0
- data/examples/bioconductor_deseq2_airway/deseq2_airway_pipeline_for_bench.R +36 -0
- data/examples/islr/all.rb +13 -0
- data/examples/islr/ch2.spec.rb +37 -7
- data/examples/islr/ch3.spec.rb +11 -2
- data/examples/islr/ch3_boston.rb +27 -0
- data/examples/islr/ch3_multiple_regression.rb +0 -0
- data/examples/islr/ch6.spec.rb +24 -1
- data/examples/islr/x_y_rnorm.jpg +0 -0
- data/examples/latex_templates/Test-acm_article/acm_proc_article-sp.cls +0 -0
- data/examples/latex_templates/Test-acm_article/sigproc.bib +0 -0
- data/examples/latex_templates/Test-acs_article/acs-Test-acs_article.bib +0 -0
- data/examples/latex_templates/Test-acs_article/acs-my_output.bib +0 -0
- data/examples/latex_templates/Test-aea_article/BibFile.bib +0 -0
- data/examples/latex_templates/Test-aea_article/Test-aea_article.Rmd +0 -0
- data/examples/latex_templates/Test-aea_article/references.bib +0 -0
- data/examples/latex_templates/Test-amq_article/Test-amq_article.Rmd +0 -0
- data/examples/latex_templates/Test-amq_article/Test-amq_article.pdfsync +0 -0
- data/examples/latex_templates/Test-ieee_article/IEEEtran.bst +0 -0
- data/examples/latex_templates/Test-ieee_article/mybibfile.bib +0 -0
- data/examples/latex_templates/Test-rjournal_article/RJournal.sty +0 -0
- data/examples/latex_templates/Test-rjournal_article/RJreferences.bib +0 -0
- data/examples/latex_templates/Test-rjournal_article/Test-rjournal_article.Rmd +0 -0
- data/examples/misc/baseball.csv +0 -0
- data/examples/misc/ggplot.rb +3 -2
- data/examples/misc/moneyball.rb +0 -0
- data/examples/misc/subsetting.rb +0 -0
- data/examples/multithread_shards_to_r/shards_to_r.rb +67 -0
- data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.Rmd +0 -0
- data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.Rmd +0 -0
- data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.Rmd +0 -0
- data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.Rmd +0 -0
- data/examples/rmarkdown/svm-rmarkdown-syllabus-example/attend-grade-relationships.csv +0 -0
- data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.Rmd +0 -0
- data/examples/rmarkdown/svm-xaringan-example/svm-xaringan-example.Rmd +0 -0
- data/examples/sthda_ggplot/README.md +0 -0
- data/examples/sthda_ggplot/RUN.md +41 -0
- data/examples/sthda_ggplot/all.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/density_gg.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/geom_area.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/geom_density.rb +2 -0
- data/examples/sthda_ggplot/one_variable_continuous/geom_dotplot.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/geom_freqpoly.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/geom_histogram.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/histogram_density.rb +0 -0
- data/examples/sthda_ggplot/one_variable_continuous/stat.rb +0 -0
- data/examples/sthda_ggplot/one_variable_discrete/bar.rb +0 -0
- data/examples/sthda_ggplot/qplots/box_violin_dot.rb +0 -0
- data/examples/sthda_ggplot/qplots/scatter_plots.rb +0 -0
- data/examples/sthda_ggplot/scatter_gg.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_bin2d.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_density2d.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_hex.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_cont/geom_point.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_cont/geom_smooth.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_cont/misc.rb +0 -0
- data/examples/sthda_ggplot/two_variables_cont_function/geom_area.rb +4 -3
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_bar.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_boxplot.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_dotplot.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_jitter.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_line.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_cont/geom_violin.rb +0 -0
- data/examples/sthda_ggplot/two_variables_disc_disc/geom_jitter.rb +0 -0
- data/examples/sthda_ggplot/two_variables_error/geom_crossbar.rb +0 -0
- data/ext/new_bridge/Makefile +46 -0
- data/ext/new_bridge/galaaz_gatekeeper_phase0.cpp +12 -0
- data/ext/new_bridge/galaaz_gatekeeper_phase1.cpp +1639 -0
- data/lib/R_interface/galaaz_device.R +20 -0
- data/lib/R_interface/include_engine.R +109 -0
- data/lib/R_interface/new_bridge_adapter.rb +824 -0
- data/lib/R_interface/r.rb +177 -25
- data/lib/R_interface/r_arrow.rb +113 -0
- data/lib/R_interface/r_libs.R +3 -3
- data/lib/R_interface/r_methods.rb +13 -126
- data/lib/R_interface/r_module_s.rb +0 -0
- data/lib/R_interface/rbinary_operators.rb +20 -2
- data/lib/R_interface/rclosure.rb +5 -1
- data/lib/R_interface/rdata_frame.rb +34 -70
- data/lib/R_interface/rdevice.rb +125 -0
- data/lib/R_interface/rdevices.R +0 -0
- data/lib/R_interface/renvironment.rb +10 -4
- data/lib/R_interface/rexpression.rb +5 -1
- data/lib/R_interface/rindexed_object.rb +41 -13
- data/lib/R_interface/rlanguage.rb +20 -62
- data/lib/R_interface/rlist.rb +115 -25
- data/lib/R_interface/rlogical_operators.rb +0 -0
- data/lib/R_interface/rmatrix.rb +2 -11
- data/lib/R_interface/rmd_indexed_object.rb +5 -1
- data/lib/R_interface/robject.rb +348 -290
- data/lib/R_interface/rpkg.rb +0 -0
- data/lib/R_interface/rsupport.rb +609 -328
- data/lib/R_interface/rsupport_scope.rb +2 -1
- data/lib/R_interface/rsymbol.rb +50 -0
- data/lib/R_interface/ruby_callback.rb +2 -3
- data/lib/R_interface/ruby_extensions.rb +225 -175
- data/lib/R_interface/runary_operators.rb +0 -0
- data/lib/R_interface/rvector.rb +147 -31
- data/lib/galaaz.rb +0 -0
- data/lib/galaaz_jruby.rb +22 -0
- data/lib/gknit/diagnostics.rb +50 -0
- data/lib/gknit/draft.rb +23 -17
- data/lib/gknit/include_engine.rb +15 -7
- data/lib/gknit/knitr_engine.rb +223 -74
- data/lib/gknit/rb_engine.rb +3 -3
- data/lib/gknit/ruby_engine.rb +0 -0
- data/lib/gknit.rb +1 -0
- data/lib/new_bridge/bootstrap/windows_bootstrap.rb +285 -0
- data/lib/new_bridge/envelope.rb +51 -0
- data/lib/new_bridge/eval_result.rb +26 -0
- data/lib/new_bridge/framing.rb +39 -0
- data/lib/new_bridge/instance_pool_client.rb +38 -0
- data/lib/new_bridge/r_instance_manager.rb +404 -0
- data/lib/new_bridge/session_client.rb +530 -0
- data/lib/new_bridge/tcp_framed.rb +44 -0
- data/lib/new_bridge.rb +9 -0
- data/lib/util/exec_ruby.rb +95 -20
- data/lib/util/inline_file.rb +35 -30
- data/new_bridge_specs/benchmark_phase5_5_unboxing_spec.rb +96 -0
- data/new_bridge_specs/eval_r_async_spec.rb +113 -0
- data/new_bridge_specs/integration_phase5_1_concurrent_spec.rb +50 -0
- data/new_bridge_specs/integration_phase5_1_eval_spec.rb +16 -0
- data/new_bridge_specs/integration_phase5_1_r_api_spec.rb +25 -0
- data/new_bridge_specs/integration_phase5_1_smoke_spec.rb +31 -0
- data/new_bridge_specs/integration_phase5_2_dataframe_unboxing_spec.rb +19 -0
- data/new_bridge_specs/integration_phase5_2_handle_eval_unboxing_spec.rb +25 -0
- data/new_bridge_specs/integration_phase5_3_callback_args_spec.rb +28 -0
- data/new_bridge_specs/integration_phase5_3_callback_error_spec.rb +22 -0
- data/new_bridge_specs/integration_phase5_3_callback_timeout_spec.rb +28 -0
- data/new_bridge_specs/integration_phase5_3_callbacks_smoke_spec.rb +22 -0
- data/new_bridge_specs/integration_phase5_3_edge_cases_spec.rb +52 -0
- data/new_bridge_specs/integration_phase5_3_nested_spec.rb +30 -0
- data/new_bridge_specs/integration_phase5_4_concurrent_sessions_spec.rb +53 -0
- data/new_bridge_specs/integration_phase5_4_nested_session_callbacks_spec.rb +49 -0
- data/new_bridge_specs/integration_phase5_4_session_routing_spec.rb +38 -0
- data/new_bridge_specs/integration_phase5_5_stress_concurrency_spec.rb +52 -0
- data/new_bridge_specs/integration_phase5_5_unbox_walk_spec.rb +46 -0
- data/new_bridge_specs/phase0_protocol_spec.rb +96 -0
- data/new_bridge_specs/phase1_req_ret_spec.rb +66 -0
- data/new_bridge_specs/phase2_multi_instance_spec.rb +67 -0
- data/new_bridge_specs/phase3_callbacks_spec.rb +71 -0
- data/new_bridge_specs/phase4_2_hardening_spec.rb +252 -0
- data/new_bridge_specs/phase4_3_r_instance_manager_spec.rb +85 -0
- data/new_bridge_specs/phase4_nested_callbacks_spec.rb +123 -0
- data/r_requires/ggplot.rb +0 -0
- data/r_requires/knitr.rb +0 -0
- data/specs/all.rb +15 -11
- data/specs/arrow_from_ruby_batches_spec.rb +50 -0
- data/specs/arrow_semantics_spec.rb +64 -0
- data/specs/bridge_concurrent_spec.rb +46 -0
- data/specs/bridge_nested_spec.rb +25 -0
- data/specs/dataframe_semantics_spec.rb +122 -0
- data/specs/dataframe_single_index_logical_filter_spec.rb +21 -0
- data/specs/dispatch_probe_cache_spec.rb +38 -0
- data/specs/dispatch_probe_error_class_fallback_spec.rb +20 -0
- data/specs/dispatch_probe_fallback_spec.rb +18 -0
- data/specs/environment_semantics_spec.rb +89 -0
- data/specs/field_access_spec.rb +31 -0
- data/specs/figures/bg.jpeg +0 -0
- data/specs/figures/bg.png +0 -0
- data/specs/figures/bg.svg +168 -57
- data/specs/figures/dose_len.png +0 -0
- data/specs/figures/no_args.jpeg +0 -0
- data/specs/figures/no_args.png +0 -0
- data/specs/figures/no_args.svg +168 -57
- data/specs/figures/width_height.jpeg +0 -0
- data/specs/figures/width_height.png +0 -0
- data/specs/figures/width_height_units1.jpeg +0 -0
- data/specs/figures/width_height_units1.png +0 -0
- data/specs/figures/width_height_units2.jpeg +0 -0
- data/specs/figures/width_height_units2.png +0 -0
- data/specs/formula_semantics_spec.rb +81 -0
- data/specs/galaaz_util_exec_ruby_spec.rb +85 -0
- data/specs/galaaz_util_inline_file_spec.rb +54 -0
- data/specs/gknit_cli_option_permutation_spec.rb +24 -0
- data/specs/gknit_include_engine_spec.rb +72 -0
- data/specs/gknit_install_timeout_report_spec.rb +69 -0
- data/specs/gknit_internal_error_report_spec.rb +57 -0
- data/specs/gknit_vector_map_output_spec.rb +59 -0
- data/specs/globalenv_guardrail_spec.rb +52 -0
- data/specs/language_expression_semantics_spec.rb +145 -0
- data/specs/list_semantics_spec.rb +111 -0
- data/specs/new_bridge_bulk_dataframe_transfer_spec.rb +44 -0
- data/specs/new_bridge_bulk_vector_transfer_spec.rb +73 -0
- data/specs/new_bridge_callback_timeout_spec.rb +69 -0
- data/specs/new_bridge_eval_r_fallback_spec.rb +55 -0
- data/specs/nil_null_spec.rb +42 -0
- data/specs/object_build_phase2_spec.rb +53 -0
- data/specs/phase1_callback_bridge_spec.rb +84 -0
- data/specs/phase2_gknit_generic_rendering_guardrail_spec.rb +46 -0
- data/specs/phase2_gknit_no_raw_code_leakage_spec.rb +43 -0
- data/specs/phase3_gknit_generic_graphics_capture_spec.rb +71 -0
- data/specs/plot_device_semantics_spec.rb +28 -0
- data/specs/plot_snapshot_semantics_spec.rb +58 -0
- data/specs/protocol_result_spec.rb +236 -0
- data/specs/r_batch_fail_fast_spec.rb +47 -0
- data/specs/r_bridge_bootstrap_spec.rb +11 -0
- data/specs/r_devices.spec.rb +1 -1
- data/specs/r_eval.spec.rb +16 -18
- data/specs/r_function.spec.rb +1 -1
- data/specs/r_instance_manager_spec.rb +285 -0
- data/specs/r_list_apply.spec.rb +15 -15
- data/specs/r_matrix.spec.rb +0 -0
- data/specs/r_nse.spec.rb +5 -5
- data/specs/r_object_send_dispatch_spec.rb +13 -0
- data/specs/r_vector_comparator_spec.rb +8 -0
- data/specs/r_vector_creation.spec.rb +0 -0
- data/specs/r_vector_functions.spec.rb +0 -0
- data/specs/r_vector_object.spec.rb +0 -0
- data/specs/r_vector_operators.spec.rb +0 -0
- data/specs/r_vector_structured_scalar_reads_spec.rb +35 -0
- data/specs/r_vector_subsetting.spec.rb +0 -0
- data/specs/range_helper_spec.rb +21 -0
- data/specs/rsupport_scope_spec.rb +28 -0
- data/specs/rsupport_var_name_thread_safety_spec.rb +24 -0
- data/specs/scalar_character_spec.rb +44 -0
- data/specs/scoped_symbol_dsl_refinement_spec.rb +40 -0
- data/specs/session_env_bridge_spec.rb +25 -0
- data/specs/simplecov_bootstrap_spec.rb +10 -0
- data/specs/spec_helper.rb +10 -0
- data/specs/tmp.rb +0 -0
- data/specs/unboxing_recursion_regression_spec.rb +30 -0
- data/specs/unboxing_spec.rb +49 -0
- data/specs/verify_callbacks.rb +42 -0
- data/sty/galaaz.sty +0 -0
- data/version.rb +1 -1
- metadata +194 -64
- data/blogs/galaaz_ggplot/galaaz_ggplot.html +0 -520
- data/blogs/galaaz_ggplot/galaaz_ggplot.pdf +0 -0
- data/blogs/galaaz_ggplot/midwest.html +0 -188
- data/blogs/gknit/gknit.html +0 -2266
- data/blogs/gknit/gknit.pdf +0 -0
- data/blogs/manual/manual.html +0 -4638
- data/blogs/manual/manual.pdf +0 -0
- data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
- data/blogs/nse_dplyr/nse_dplyr.html +0 -878
- data/blogs/nse_dplyr/nse_dplyr.pdf +0 -0
- data/blogs/oh_my/oh_my.html +0 -568
- data/blogs/ruby_plot/ruby_plot.html +0 -544
- data/blogs/ruby_plot/ruby_plot.pdf +0 -0
- data/examples/latex_templates/Test-acs_article/Test-acs_article.pdf +0 -0
- data/examples/latex_templates/Test-aea_article/Test-aea_article.pdf +0 -0
- data/examples/latex_templates/Test-amq_article/Test-amq_article.pdf +0 -0
- data/examples/latex_templates/Test-amq_article/pics/Figure2.pdf +0 -0
- data/examples/latex_templates/Test-asa_article/Test-asa_article.pdf +0 -0
- data/examples/latex_templates/Test-ieee_article/Test-ieee_article.pdf +0 -0
- data/examples/latex_templates/Test-rjournal_article/RJwrapper.pdf +0 -0
- data/examples/latex_templates/Test-springer_article/Test-springer_article.pdf +0 -0
- data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.pdf +0 -0
- data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.pdf +0 -0
- data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.pdf +0 -0
- data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.pdf +0 -0
- data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.pdf +0 -0
- data/specs/r_dataframe.spec.rb +0 -379
- data/specs/r_environment.spec.rb +0 -140
- data/specs/r_formula.spec.rb +0 -232
- data/specs/r_language.spec.rb +0 -112
- data/specs/r_list.spec.rb +0 -293
- data/specs/r_plots.spec.rb +0 -72
- data/specs/ruby_expression.spec.rb +0 -316
data/blogs/README.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Galaaz blogs (gknit)
|
|
2
|
+
|
|
3
|
+
These are R Markdown (`.Rmd`) documents that use **gknit** to run Ruby/Galaaz chunks and render HTML (or other formats).
|
|
4
|
+
|
|
5
|
+
**Published renders** (HTML/PDF) are on GitHub Pages:
|
|
6
|
+
https://rbotafogo.github.io/galaaz/
|
|
7
|
+
|
|
8
|
+
The gem ships blog/manual **sources** (and examples/specs); it does not pack `.html` / `.pdf` or prebuilt `.so` / `.o` files.
|
|
9
|
+
|
|
10
|
+
## Generate a single blog
|
|
11
|
+
|
|
12
|
+
From the **project root**:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
bin/gknit blogs/<blog_dir>/<blog_dir>.Rmd
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
bin/gknit blogs/oh_my/oh_my.Rmd
|
|
22
|
+
bin/gknit blogs/gknit/gknit.Rmd
|
|
23
|
+
bin/gknit blogs/galaaz_ggplot/galaaz_ggplot.Rmd
|
|
24
|
+
bin/gknit blogs/manual/manual.Rmd
|
|
25
|
+
bin/gknit blogs/nse_dplyr/nse_dplyr.Rmd
|
|
26
|
+
bin/gknit blogs/ruby_plot/ruby_plot.Rmd
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Output (e.g. `oh_my.html`) is written in the same directory as the `.Rmd` unless you pass `-d` / `--output_dir`.
|
|
30
|
+
|
|
31
|
+
## Generate blogs via Rake
|
|
32
|
+
|
|
33
|
+
From the project root:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
rake blog:oh_my
|
|
37
|
+
rake blog:gknit
|
|
38
|
+
rake blog:galaaz_ggplot
|
|
39
|
+
rake blog:manual
|
|
40
|
+
rake blog:nse_dplyr
|
|
41
|
+
rake blog:ruby_plot
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Each task runs `bin/gknit` on `blogs/<name>/<name>.Rmd`.
|
|
45
|
+
|
|
46
|
+
## gknit options
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
bin/gknit -h
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Useful options:
|
|
53
|
+
|
|
54
|
+
- `-f FILE` / `--filename FILE` – input `.Rmd` (or pass the path as first argument).
|
|
55
|
+
- `-o FILE` / `--output_file` – output filename.
|
|
56
|
+
- `-d DIR` / `--output_dir` – output directory.
|
|
57
|
+
- `--output_format FORMAT` – e.g. `html_document` (default is from the YAML header).
|
|
58
|
+
|
|
59
|
+
Example with options:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
bin/gknit blogs/oh_my/oh_my.Rmd -d /tmp/out --output_format html_document
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Debugging R and monitoring R independently
|
|
66
|
+
|
|
67
|
+
R runs as a **separate process**. With `--debugR` you can capture what Galaaz sends to R and what R prints, then inspect or replay it on your own.
|
|
68
|
+
|
|
69
|
+
### Turn on R debugging
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
bin/gknit --debugR blogs/oh_my/oh_my.Rmd
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Or set the env var for any Galaaz command:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
GALAAZ_DEBUG_R=1 bin/run_example examples/sthda_ggplot/all.rb
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Log files (written in current directory when `GALAAZ_DEBUG_R=1`)
|
|
82
|
+
|
|
83
|
+
| File | Content |
|
|
84
|
+
|------|--------|
|
|
85
|
+
| **logs/galaaz_r_scripts.log** | Every R script sent to the bridge (full tryCatch wrapper), in order. |
|
|
86
|
+
| **logs/galaaz_r_stdout.log** | Raw stdout from the R process (everything R printed), in order. |
|
|
87
|
+
| **logs/galaaz_r_pid.txt** | R process PID (so you can attach or inspect the process). |
|
|
88
|
+
| **logs/galaaz_r_stderr.log** | R stderr (always written, not only with `--debugR`). |
|
|
89
|
+
|
|
90
|
+
### Monitoring R independently
|
|
91
|
+
|
|
92
|
+
- **See what R ran:** Open `logs/galaaz_r_scripts.log` and `logs/galaaz_r_stdout.log` in another terminal (e.g. `tail -f logs/galaaz_r_stdout.log`) while the job runs.
|
|
93
|
+
- **Replay in a separate R session:** Start R in another terminal. Copy script blocks from `logs/galaaz_r_scripts.log` (or `source('/dev/shm/galaaz_cmd_N.R')` if the temp files still exist) and run them in order. Then inspect `.GlobalEnv`, `ls()`, `traceback()`, etc.
|
|
94
|
+
- **Inspect the live R process:** Use the PID from `logs/galaaz_r_pid.txt` with OS tools (e.g. `/proc/<pid>/` on Linux) or attach a debugger if needed.
|
|
95
|
+
|
|
96
|
+
## Requirements
|
|
97
|
+
|
|
98
|
+
- **JRuby** (same as specs/examples).
|
|
99
|
+
- **R** with packages used by the document (e.g. `rmarkdown`, `knitr`, `ggplot2`).
|
|
100
|
+
- Run from the project root so `lib` and `bin` resolve correctly.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "Ruby Plotting with Galaaz"
|
|
3
|
-
subtitle: "An example of tightly coupling Ruby and R
|
|
3
|
+
subtitle: "An example of tightly coupling Ruby and R (JRuby + GNU R, Galaaz 2.0)"
|
|
4
4
|
author: "Rodrigo Botafogo"
|
|
5
|
-
tags: [Galaaz, Ruby, R,
|
|
6
|
-
date: "16 October 2018"
|
|
5
|
+
tags: [Galaaz, Ruby, R, JRuby, "GNU R", ggplot2]
|
|
6
|
+
date: "16 October 2018 (narrative updated for Galaaz 2.0, 2026)"
|
|
7
7
|
output:
|
|
8
8
|
html_document:
|
|
9
9
|
self_contained: true
|
|
@@ -30,42 +30,19 @@ Galaaz is a system for tightly coupling Ruby and R. Ruby is a powerful language
|
|
|
30
30
|
a large community, a very large set of libraries and great for web development. However,
|
|
31
31
|
it lacks libraries for data science, statistics, scientific plotting and machine learning.
|
|
32
32
|
On the other hand, R is considered one of the most powerful languages for solving all of the
|
|
33
|
-
above problems.
|
|
34
|
-
|
|
33
|
+
above problems. **Python** is a strong competitor: NumPy, pandas, SciPy, and scikit-learn are
|
|
34
|
+
widely used examples among **many thousands** of packages on PyPI for numerical and ML work.
|
|
35
35
|
|
|
36
|
-
With Galaaz we do not intend to re-implement any of the scientific libraries in R
|
|
36
|
+
With Galaaz we do not intend to re-implement any of the scientific libraries in R; we allow
|
|
37
37
|
for very tight coupling between the two languages to the point that the Ruby developer does
|
|
38
|
-
not need to
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
GraalVM removes the isolation between programming languages and enables
|
|
46
|
-
interoperability in a shared runtime. It can run either standalone or in
|
|
47
|
-
the context of OpenJDK, Node.js, Oracle Database, or MySQL.
|
|
48
|
-
|
|
49
|
-
GraalVM allows you to write polyglot applications with a seamless way to
|
|
50
|
-
pass values from one language to another. With GraalVM there is no copying
|
|
51
|
-
or marshaling necessary as it is with other polyglot systems. This lets
|
|
52
|
-
you achieve high performance when language boundaries are crossed. Most
|
|
53
|
-
of the time there is no additional cost for crossing a language boundary
|
|
54
|
-
at all.
|
|
55
|
-
|
|
56
|
-
Often developers have to make uncomfortable compromises that require them
|
|
57
|
-
to rewrite their software in other languages. For example:
|
|
58
|
-
|
|
59
|
-
* “That library is not available in my language. I need to rewrite it.”
|
|
60
|
-
* “That language would be the perfect fit for my problem, but we cannot
|
|
61
|
-
run it in our environment.”
|
|
62
|
-
* “That problem is already solved in my language, but the language is
|
|
63
|
-
too slow.”
|
|
64
|
-
|
|
65
|
-
With GraalVM we aim to allow developers to freely choose the right language
|
|
66
|
-
for the task at hand without making compromises.
|
|
38
|
+
not need to think about R syntax for every call. **Galaaz 2.0** does this with **[JRuby](https://www.jruby.org/)**
|
|
39
|
+
and **GNU R**: a **bridge** evaluates R from Ruby and exchanges data between processes.
|
|
40
|
+
|
|
41
|
+
An **earlier** Galaaz prototype used Oracle’s **GraalVM** with **TruffleRuby** and **FastR** in one JVM.
|
|
42
|
+
That stack is **historical**; today’s documentation and tooling assume **JRuby + GNU R** (see the
|
|
43
|
+
project manual and **`bin/galaaz-jruby`** / **`bin/gknit`**).
|
|
67
44
|
|
|
68
|
-
|
|
45
|
+
For background on the old stack:
|
|
69
46
|
|
|
70
47
|
* [GraalVM Home](https://www.graalvm.org/)
|
|
71
48
|
* [TruffleRuby](https://github.com/oracle/truffleruby)
|
|
@@ -89,11 +66,10 @@ Galaaz is the Portuguese name for "Galahad". From Wikipedia:
|
|
|
89
66
|
|
|
90
67
|
# Galaaz Demo
|
|
91
68
|
|
|
92
|
-
## Prerequisites
|
|
69
|
+
## Prerequisites (Galaaz 2.0)
|
|
93
70
|
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
* FastR
|
|
71
|
+
* **JRuby** and a compatible **JDK**
|
|
72
|
+
* **GNU R** on your `PATH`
|
|
97
73
|
|
|
98
74
|
The following R packages will be automatically installed when necessary, but could be installed prior
|
|
99
75
|
to the demo if desired:
|
|
@@ -101,8 +77,8 @@ to the demo if desired:
|
|
|
101
77
|
* ggplot2
|
|
102
78
|
* gridExtra
|
|
103
79
|
|
|
104
|
-
Installation of R packages requires a development environment.
|
|
105
|
-
|
|
80
|
+
Installation of R packages requires a development environment. On Linux, a typical build toolchain
|
|
81
|
+
(GCC, headers) is usually enough. On macOS, Apple’s **Xcode Command Line Tools** are commonly required.
|
|
106
82
|
|
|
107
83
|
In order to run the 'specs' the following Ruby package is necessary:
|
|
108
84
|
|
|
@@ -114,25 +90,21 @@ In order to run the 'specs' the following Ruby package is necessary:
|
|
|
114
90
|
|
|
115
91
|
## Running the demo
|
|
116
92
|
|
|
117
|
-
The ggplot for this
|
|
93
|
+
The ggplot examples for this demo were adapted from: http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html.
|
|
118
94
|
|
|
119
|
-
|
|
95
|
+
At the shell, from a suitable Galaaz environment:
|
|
120
96
|
|
|
121
|
-
|
|
97
|
+
galaaz master_list:scatter_plot
|
|
122
98
|
|
|
123
99
|
## Running other demos
|
|
124
100
|
|
|
125
|
-
|
|
101
|
+
Running
|
|
126
102
|
|
|
127
|
-
|
|
103
|
+
galaaz -T
|
|
128
104
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
In order to run
|
|
133
|
-
this example just do 'galaaz sthda:bar'. Doing 'galaaz sthda:all' will run all demos in the sthda
|
|
134
|
-
cathegory. Some of the examples require 'rspec' do be available. To install 'rspec' just do
|
|
135
|
-
'gem install rspec'.
|
|
105
|
+
lists available demo tasks. To run a demo, use **`galaaz`** where you would otherwise invoke **`rake`**.
|
|
106
|
+
For example, if the list shows `rake sthda:bar`, run `galaaz sthda:bar`. To run every demo in the **sthda**
|
|
107
|
+
category, use `galaaz sthda:all`. Some examples require **rspec**; install it with `gem install rspec`.
|
|
136
108
|
|
|
137
109
|
# The demo code
|
|
138
110
|
|
|
@@ -335,7 +307,7 @@ And this is the final code for making the scatter plot with the midwest data
|
|
|
335
307
|
require 'galaaz'
|
|
336
308
|
require 'ggplot'
|
|
337
309
|
|
|
338
|
-
sp = ScatterPlot.new(
|
|
310
|
+
sp = ScatterPlot.new(~R[:midwest], x: :area, y: :poptotal)
|
|
339
311
|
sp.title = "Midwest Dataset - Scatterplot"
|
|
340
312
|
sp.subtitle = "Area Vs Population"
|
|
341
313
|
sp.caption = "Source: midwest"
|
|
@@ -351,16 +323,16 @@ sp.plot
|
|
|
351
323
|
|
|
352
324
|
R is a very powerful language for statistical analysis, data analytics, machine learning, plotting
|
|
353
325
|
and many other scientific applications with a very large package ecosystem. However R is often
|
|
354
|
-
considered hard to learn and lacking modern
|
|
355
|
-
classes, modules,
|
|
356
|
-
|
|
326
|
+
considered hard to learn and lacking modern language features such as object-oriented
|
|
327
|
+
classes, modules, and first-class functions. For that reason, many teams have standardized on
|
|
328
|
+
Python (or stayed entirely inside R) rather than mixing ecosystems.
|
|
357
329
|
|
|
358
330
|
With Galaaz, R programmers can almost transparently migrate from R to Ruby, since syntax is
|
|
359
|
-
almost identical and
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
For the Ruby developer, Galaaz allows the immediate use of R functions
|
|
364
|
-
shown in the second example above, class ScatterPlot
|
|
365
|
-
|
|
366
|
-
|
|
331
|
+
almost identical and **GNU R** remains the engine for statistics and **ggplot2**. Further, by using
|
|
332
|
+
Galaaz the R developer can start (slowly if needed) using Ruby’s constructs and libraries that
|
|
333
|
+
nicely complement R packages.
|
|
334
|
+
|
|
335
|
+
For the Ruby developer, Galaaz allows the immediate use of R functions with minimal ceremony. As
|
|
336
|
+
shown in the second example above, class `ScatterPlot` hides most R call details from the Ruby
|
|
337
|
+
developer. **JRuby** provides **real parallel threads** on the Ruby side and access to the JVM
|
|
338
|
+
ecosystem when you need it.
|