greta-dev / greta

simple and scalable statistical modelling in R
https://greta-stats.org
Other
527 stars 63 forks source link

better print method for calculate results #650

Open njtierney opened 2 months ago

njtierney commented 2 months ago

Current behaviour is:

library(greta)
#> 
#> Attaching package: 'greta'
#> The following objects are masked from 'package:stats':
#> 
#>     binomial, cov2cor, poisson
#> The following objects are masked from 'package:base':
#> 
#>     %*%, apply, backsolve, beta, chol2inv, colMeans, colSums, diag,
#>     eigen, forwardsolve, gamma, identity, rowMeans, rowSums, sweep,
#>     tapply
x <- normal(0,1)
#> ℹ Initialising python and checking dependencies, this may take a moment.
#> ✔ Initialising python and checking dependencies ... done!
#> 
calculate(x, nsim = 100)
#> $x
#> , , 1
#> 
#>                [,1]
#>   [1,]  0.871772868
#>   [2,]  0.306786637
#>   [3,]  1.791197869
#>   [4,]  1.112477489
#>   [5,]  0.467661927
#>   [6,] -0.611870958
#>   [7,]  0.168549749
#>   [8,]  1.522326716
#>   [9,]  0.559560693
#>  [10,]  0.010798832
#>  [11,] -0.532454980
#>  [12,] -0.312583401
#>  [13,]  0.939277589
#>  [14,] -1.027710347
#>  [15,] -0.550986206
#>  [16,]  0.476108669
#>  [17,]  0.117324528
#>  [18,]  0.382535337
#>  [19,] -0.642447783
#>  [20,] -0.358183149
#>  [21,] -2.115516615
#>  [22,] -0.272591789
#>  [23,]  0.301627679
#>  [24,]  0.004522991
#>  [25,]  0.006910879
#>  [26,]  0.324151157
#>  [27,] -0.911353546
#>  [28,] -1.933190160
#>  [29,] -1.643231391
#>  [30,] -0.015106264
#>  [31,] -1.125364481
#>  [32,] -1.632161474
#>  [33,] -0.278987896
#>  [34,] -1.725229564
#>  [35,] -1.118451115
#>  [36,]  0.285303576
#>  [37,] -0.359218106
#>  [38,]  0.690484783
#>  [39,]  1.456693098
#>  [40,] -0.152138739
#>  [41,]  1.157385941
#>  [42,]  0.644566475
#>  [43,]  0.682869074
#>  [44,]  2.125711726
#>  [45,] -0.503304401
#>  [46,]  0.721361284
#>  [47,] -0.859704923
#>  [48,] -0.472898900
#>  [49,] -0.599194173
#>  [50,]  1.141385520
#>  [51,]  0.950332785
#>  [52,]  1.587672586
#>  [53,]  0.499874158
#>  [54,]  0.182039301
#>  [55,]  1.884974786
#>  [56,] -0.036219035
#>  [57,] -0.296482902
#>  [58,] -0.958812235
#>  [59,] -1.174025824
#>  [60,]  0.285431011
#>  [61,]  0.263515811
#>  [62,] -0.099273216
#>  [63,]  0.593192435
#>  [64,]  0.098608069
#>  [65,]  0.369655545
#>  [66,] -0.350396437
#>  [67,]  0.092364272
#>  [68,] -0.011151898
#>  [69,]  0.888325762
#>  [70,]  0.866725297
#>  [71,]  0.107192904
#>  [72,]  1.206863875
#>  [73,] -0.003753086
#>  [74,] -1.673486765
#>  [75,]  0.909253050
#>  [76,] -0.990701495
#>  [77,]  1.711923927
#>  [78,]  0.168429410
#>  [79,] -1.234041007
#>  [80,]  0.249892409
#>  [81,] -1.290222760
#>  [82,]  0.259738169
#>  [83,] -1.202769092
#>  [84,] -1.020504754
#>  [85,] -0.745010296
#>  [86,]  0.843300717
#>  [87,]  0.742750244
#>  [88,] -0.965856174
#>  [89,] -0.404233310
#>  [90,]  0.036691827
#>  [91,] -0.741174505
#>  [92,] -0.264497551
#>  [93,]  0.929946596
#>  [94,]  1.118240754
#>  [95,]  1.009428812
#>  [96,]  0.399524098
#>  [97,] -0.689098699
#>  [98,]  0.513607752
#>  [99,] -0.252917597
#> [100,]  0.408466078

Created on 2024-07-30 with reprex v2.1.0

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.4.0 (2024-04-24) #> os macOS Sonoma 14.5 #> system aarch64, darwin20 #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz Australia/Hobart #> date 2024-07-30 #> pandoc 3.2.1 @ /opt/homebrew/bin/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> package * version date (UTC) lib source #> backports 1.5.0 2024-05-23 [1] CRAN (R 4.4.0) #> base64enc 0.1-3 2015-07-28 [1] CRAN (R 4.4.0) #> callr 3.7.6 2024-03-25 [1] CRAN (R 4.4.0) #> cli 3.6.3 2024-06-21 [1] CRAN (R 4.4.0) #> coda 0.19-4.1 2024-01-31 [1] CRAN (R 4.4.0) #> codetools 0.2-20 2024-03-31 [2] CRAN (R 4.4.0) #> crayon 1.5.3 2024-06-20 [1] CRAN (R 4.4.0) #> digest 0.6.36 2024-06-23 [1] CRAN (R 4.4.0) #> evaluate 0.24.0 2024-06-10 [1] CRAN (R 4.4.0) #> fastmap 1.2.0 2024-05-15 [1] CRAN (R 4.4.0) #> fs 1.6.4.9000 2024-06-26 [1] Github (r-lib/fs@714990b) #> future 1.33.2 2024-03-26 [1] CRAN (R 4.4.0) #> globals 0.16.3 2024-03-08 [1] CRAN (R 4.4.0) #> glue 1.7.0 2024-01-09 [1] CRAN (R 4.4.0) #> greta * 0.4.5.9000 2024-07-29 [1] local #> hms 1.1.3 2023-03-21 [1] CRAN (R 4.4.0) #> htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.4.0) #> jsonlite 1.8.8 2023-12-04 [1] CRAN (R 4.4.0) #> knitr 1.48 2024-07-07 [1] CRAN (R 4.4.0) #> lattice 0.22-6 2024-03-20 [2] CRAN (R 4.4.0) #> lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.4.0) #> listenv 0.9.1 2024-01-29 [1] CRAN (R 4.4.0) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.4.0) #> Matrix 1.7-0 2024-03-22 [2] CRAN (R 4.4.0) #> parallelly 1.37.1 2024-02-29 [1] CRAN (R 4.4.0) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.4.0) #> png 0.1-8 2022-11-29 [1] CRAN (R 4.4.0) #> prettyunits 1.2.0 2023-09-24 [1] CRAN (R 4.4.0) #> processx 3.8.4 2024-03-16 [1] CRAN (R 4.4.0) #> progress 1.2.3 2023-12-06 [1] CRAN (R 4.4.0) #> ps 1.7.7 2024-07-02 [1] CRAN (R 4.4.0) #> purrr 1.0.2 2023-08-10 [1] CRAN (R 4.4.0) #> R.cache 0.16.0 2022-07-21 [1] CRAN (R 4.4.0) #> R.methodsS3 1.8.2 2022-06-13 [1] CRAN (R 4.4.0) #> R.oo 1.26.0 2024-01-24 [1] CRAN (R 4.4.0) #> R.utils 2.12.3 2023-11-18 [1] CRAN (R 4.4.0) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.4.0) #> Rcpp 1.0.12 2024-01-09 [1] CRAN (R 4.4.0) #> reprex 2.1.0 2024-01-11 [1] CRAN (R 4.4.0) #> reticulate 1.36.1 2024-04-22 [1] CRAN (R 4.4.0) #> rlang 1.1.4 2024-06-04 [1] CRAN (R 4.4.0) #> rmarkdown 2.27 2024-05-17 [1] CRAN (R 4.4.0) #> rstudioapi 0.16.0 2024-03-24 [1] CRAN (R 4.4.0) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.4.0) #> styler 1.10.3 2024-04-07 [1] CRAN (R 4.4.0) #> tensorflow 2.16.0 2024-04-15 [1] CRAN (R 4.4.0) #> tfautograph 0.3.2 2021-09-17 [1] CRAN (R 4.4.0) #> tfruns 1.5.3 2024-04-19 [1] CRAN (R 4.4.0) #> vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.4.0) #> whisker 0.4.1 2022-12-05 [1] CRAN (R 4.4.0) #> withr 3.0.0 2024-01-16 [1] CRAN (R 4.4.0) #> xfun 0.45 2024-06-16 [1] CRAN (R 4.4.0) #> yaml 2.3.9 2024-07-05 [1] CRAN (R 4.4.0) #> #> [1] /Users/nick/Library/R/arm64/4.4/library #> [2] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library #> #> ─ Python configuration ─────────────────────────────────────────────────────── #> python: /Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2/bin/python #> libpython: /Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2/lib/libpython3.11.dylib #> pythonhome: /Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2:/Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2 #> version: 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:34:54) [Clang 16.0.6 ] #> numpy: /Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2/lib/python3.11/site-packages/numpy #> numpy_version: 1.26.4 #> tensorflow: /Users/nick/Library/r-miniconda-arm64/envs/greta-env-tf2/lib/python3.11/site-packages/tensorflow #> #> NOTE: Python version was forced by use_python() function #> #> ────────────────────────────────────────────────────────────────────────────── ```

This output floods the console and it can sometimes be confusing as a new user to know how to access calculate results.

A new print method would:

Related to #481

njtierney commented 2 months ago

note that as @hrlai says in #481, there are different outputs for calculate depending on whether the values arg is used. Which makes me think that calculate could be split into two functions. One for using values to simulate from, one where you need to provide nsim.