red_amber 0.4.1 → 0.5.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/.rubocop.yml +11 -5
- data/CHANGELOG.md +93 -1
- data/Gemfile +5 -6
- data/README.ja.md +252 -0
- data/README.md +30 -23
- data/benchmark/basic.yml +1 -1
- data/benchmark/group.yml +12 -5
- data/doc/CODE_OF_CONDUCT.md +1 -1
- data/docker/.env +4 -0
- data/docker/Dockerfile +66 -0
- data/docker/Gemfile +26 -0
- data/docker/Gemfile.lock +118 -0
- data/docker/docker-compose.yml +21 -0
- data/docker/example +86 -0
- data/docker/notebook/examples_of_red_amber.ipynb +8562 -0
- data/docker/notebook/red-amber.ipynb +188 -0
- data/docker/readme.md +118 -0
- data/lib/red_amber/data_frame.rb +78 -4
- data/lib/red_amber/data_frame_combinable.rb +147 -119
- data/lib/red_amber/data_frame_displayable.rb +6 -5
- data/lib/red_amber/data_frame_selectable.rb +49 -0
- data/lib/red_amber/group.rb +190 -89
- data/lib/red_amber/helper.rb +26 -0
- data/lib/red_amber/subframes.rb +166 -66
- data/lib/red_amber/vector.rb +43 -24
- data/lib/red_amber/vector_aggregation.rb +26 -0
- data/lib/red_amber/vector_binary_element_wise.rb +54 -25
- data/lib/red_amber/vector_selectable.rb +74 -23
- data/lib/red_amber/vector_string_function.rb +211 -0
- data/lib/red_amber/vector_unary_element_wise.rb +4 -0
- data/lib/red_amber/vector_updatable.rb +28 -0
- data/lib/red_amber/version.rb +1 -1
- data/lib/red_amber.rb +2 -1
- data/red_amber.gemspec +4 -4
- metadata +20 -9
data/docker/Dockerfile
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# x86-64/Ubuntu-22.04/python-3.10.9/lab-3.6.1/notebook-6.5.3/2023-03-13
|
2
|
+
ARG BASE_IMAGE_TAG=295612d3ade4
|
3
|
+
|
4
|
+
FROM jupyter/minimal-notebook:$BASE_IMAGE_TAG
|
5
|
+
|
6
|
+
USER root
|
7
|
+
|
8
|
+
RUN set -eux; \
|
9
|
+
apt update; \
|
10
|
+
apt install -y --no-install-recommends \
|
11
|
+
curl \
|
12
|
+
\
|
13
|
+
# For Apache Arrow
|
14
|
+
ca-certificates \
|
15
|
+
lsb-release \
|
16
|
+
\
|
17
|
+
# Ruby 3.0.2
|
18
|
+
ruby-dev \
|
19
|
+
\
|
20
|
+
# For iruby
|
21
|
+
libczmq-dev \
|
22
|
+
libzmq3-dev
|
23
|
+
|
24
|
+
# Apache Arrow
|
25
|
+
ARG ARROW_DEB_TMP=/tmp/apache-arrow-apt-source-latest.deb
|
26
|
+
|
27
|
+
RUN set -eux; \
|
28
|
+
apt update; \
|
29
|
+
curl -sfSL -o ${ARROW_DEB_TMP} \
|
30
|
+
https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb; \
|
31
|
+
apt install -y --no-install-recommends \
|
32
|
+
${ARROW_DEB_TMP}; \
|
33
|
+
rm -f ${ARROW_DEB_TMP}; \
|
34
|
+
apt update; \
|
35
|
+
apt install -y \
|
36
|
+
libarrow-dev \
|
37
|
+
libarrow-glib-dev \
|
38
|
+
libparquet-dev \
|
39
|
+
libparquet-glib-dev \
|
40
|
+
libgirepository1.0-dev; \
|
41
|
+
rm -rf /var/lib/apt/lists/*
|
42
|
+
|
43
|
+
USER $NB_UID
|
44
|
+
|
45
|
+
WORKDIR $HOME
|
46
|
+
|
47
|
+
ENV PATH $HOME/.local/share/gem/bin:$HOME/.local/share/gem/ruby/3.0.0/bin:$PATH
|
48
|
+
|
49
|
+
# IRuby
|
50
|
+
RUN set -eux; \
|
51
|
+
gem install --user-install \
|
52
|
+
rake \
|
53
|
+
bundler \
|
54
|
+
iruby; \
|
55
|
+
iruby register --force
|
56
|
+
|
57
|
+
COPY --chown=$NB_UID:$NB_GID Gemfile $HOME
|
58
|
+
COPY --chown=$NB_UID:$NB_GID Gemfile.lock $HOME
|
59
|
+
|
60
|
+
ENV GEM_HOME=$HOME/.local/share/gem
|
61
|
+
ENV BUNDLE_PATH=$HOME/.local/share/gem
|
62
|
+
ENV BUNDLE_BIN=$HOME/.local/share/gem/bin
|
63
|
+
|
64
|
+
RUN bundle install --jobs=4
|
65
|
+
|
66
|
+
COPY --chown=$NB_UID:$NB_GID example $HOME
|
data/docker/Gemfile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gem 'irb'
|
6
|
+
|
7
|
+
gem 'numo-narray'
|
8
|
+
gem 'red-arrow', '~> 12.0.0'
|
9
|
+
gem 'red-arrow-numo-narray'
|
10
|
+
gem 'red-parquet', '~> 12.0.0'
|
11
|
+
|
12
|
+
gem 'red_amber', path: '../'
|
13
|
+
gem 'red-amber-view'
|
14
|
+
gem 'rover-df'
|
15
|
+
|
16
|
+
gem 'red-datasets'
|
17
|
+
gem 'red-datasets-arrow'
|
18
|
+
|
19
|
+
gem 'benchmark_driver'
|
20
|
+
gem 'benchmark-ips'
|
21
|
+
|
22
|
+
gem 'charty'
|
23
|
+
gem 'faker'
|
24
|
+
gem 'matplotlib'
|
25
|
+
gem 'pycall'
|
26
|
+
gem 'unicode_plot'
|
data/docker/Gemfile.lock
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ..
|
3
|
+
specs:
|
4
|
+
red_amber (0.5.0.pre.HEAD)
|
5
|
+
red-arrow (~> 12.0.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
benchmark-ips (2.12.0)
|
11
|
+
benchmark_driver (0.16.3)
|
12
|
+
bigdecimal (3.1.4)
|
13
|
+
charty (0.2.12)
|
14
|
+
matplotlib (>= 1.2.0)
|
15
|
+
pandas (>= 0.3.5)
|
16
|
+
playwright-ruby-client
|
17
|
+
red-colors (>= 0.3.0)
|
18
|
+
red-datasets (>= 0.1.2)
|
19
|
+
red-palette (>= 0.5.0)
|
20
|
+
concurrent-ruby (1.2.2)
|
21
|
+
csv (3.2.6)
|
22
|
+
enumerable-statistics (2.0.7)
|
23
|
+
extpp (0.1.1)
|
24
|
+
faker (3.1.1)
|
25
|
+
i18n (>= 1.8.11, < 2)
|
26
|
+
fiddle (1.1.1)
|
27
|
+
gio2 (4.1.4)
|
28
|
+
fiddle
|
29
|
+
gobject-introspection (= 4.1.4)
|
30
|
+
glib2 (4.1.4)
|
31
|
+
native-package-installer (>= 1.0.3)
|
32
|
+
pkg-config (>= 1.3.5)
|
33
|
+
gobject-introspection (4.1.4)
|
34
|
+
glib2 (= 4.1.4)
|
35
|
+
i18n (1.12.0)
|
36
|
+
concurrent-ruby (~> 1.0)
|
37
|
+
io-console (0.6.0)
|
38
|
+
irb (1.6.4)
|
39
|
+
reline (>= 0.3.0)
|
40
|
+
libui (0.0.15)
|
41
|
+
matplotlib (1.3.0)
|
42
|
+
pycall (>= 1.0.0)
|
43
|
+
matrix (0.4.2)
|
44
|
+
mime-types (3.4.1)
|
45
|
+
mime-types-data (~> 3.2015)
|
46
|
+
mime-types-data (3.2023.0218.1)
|
47
|
+
native-package-installer (1.1.5)
|
48
|
+
numo-narray (0.9.2.1)
|
49
|
+
numpy (0.4.0)
|
50
|
+
pycall (>= 1.2.0.beta1)
|
51
|
+
pandas (0.3.8)
|
52
|
+
numpy
|
53
|
+
pycall (>= 1.0.0)
|
54
|
+
pkg-config (1.5.1)
|
55
|
+
playwright-ruby-client (1.31.1)
|
56
|
+
concurrent-ruby (>= 1.1.6)
|
57
|
+
mime-types (>= 3.0)
|
58
|
+
pycall (1.4.2)
|
59
|
+
red-amber-view (0.0.1)
|
60
|
+
libui
|
61
|
+
red-arrow
|
62
|
+
red_amber
|
63
|
+
red-arrow (12.0.0)
|
64
|
+
bigdecimal (>= 3.1.0)
|
65
|
+
extpp (>= 0.1.1)
|
66
|
+
gio2 (>= 3.5.0)
|
67
|
+
native-package-installer
|
68
|
+
pkg-config
|
69
|
+
red-arrow-numo-narray (0.0.6)
|
70
|
+
numo-narray
|
71
|
+
red-arrow
|
72
|
+
red-colors (0.3.0)
|
73
|
+
matrix
|
74
|
+
red-datasets (0.1.5)
|
75
|
+
csv (>= 3.2.4)
|
76
|
+
rexml
|
77
|
+
rubyzip
|
78
|
+
red-datasets-arrow (0.0.3)
|
79
|
+
red-arrow
|
80
|
+
red-datasets (>= 0.0.3)
|
81
|
+
red-palette (0.5.0)
|
82
|
+
red-colors (>= 0.3.0)
|
83
|
+
red-parquet (12.0.0)
|
84
|
+
red-arrow (= 12.0.0)
|
85
|
+
reline (0.3.3)
|
86
|
+
io-console (~> 0.5)
|
87
|
+
rexml (3.2.5)
|
88
|
+
rover-df (0.3.4)
|
89
|
+
numo-narray (>= 0.9.1.9)
|
90
|
+
rubyzip (2.3.2)
|
91
|
+
unicode_plot (0.0.5)
|
92
|
+
enumerable-statistics (>= 2.0.1)
|
93
|
+
|
94
|
+
PLATFORMS
|
95
|
+
x86_64-darwin-20
|
96
|
+
x86_64-linux
|
97
|
+
|
98
|
+
DEPENDENCIES
|
99
|
+
benchmark-ips
|
100
|
+
benchmark_driver
|
101
|
+
charty
|
102
|
+
faker
|
103
|
+
irb
|
104
|
+
matplotlib
|
105
|
+
numo-narray
|
106
|
+
pycall
|
107
|
+
red-amber-view
|
108
|
+
red-arrow (~> 12.0.0)
|
109
|
+
red-arrow-numo-narray
|
110
|
+
red-datasets
|
111
|
+
red-datasets-arrow
|
112
|
+
red-parquet (~> 12.0.0)
|
113
|
+
red_amber!
|
114
|
+
rover-df
|
115
|
+
unicode_plot
|
116
|
+
|
117
|
+
BUNDLED WITH
|
118
|
+
2.4.12
|
@@ -0,0 +1,21 @@
|
|
1
|
+
version: '3'
|
2
|
+
|
3
|
+
services:
|
4
|
+
minimal-redamber:
|
5
|
+
build:
|
6
|
+
context: .
|
7
|
+
dockerfile: Dockerfile
|
8
|
+
image: red_amber-minimal-notebook
|
9
|
+
container_name: red_amber-minimal-notebook
|
10
|
+
user: root
|
11
|
+
environment:
|
12
|
+
- GRANT_SUDO=yes
|
13
|
+
- NB_USER=$NB_USER
|
14
|
+
- CHOWN_HOME=yes
|
15
|
+
- TZ=$TZ
|
16
|
+
working_dir: /home/$NB_USER/work
|
17
|
+
ports:
|
18
|
+
- '8888:8888'
|
19
|
+
volumes:
|
20
|
+
- ./notebook:/home/$NB_USER/work
|
21
|
+
command: start-notebook.sh --NotebookApp.token=$TOKEN
|
data/docker/example
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
print "starting.\r"
|
5
|
+
|
6
|
+
Dir.chdir(__dir__) { require 'bundler/setup' }
|
7
|
+
|
8
|
+
print "starting..\r"
|
9
|
+
require 'red_amber'
|
10
|
+
include RedAmber
|
11
|
+
|
12
|
+
print "starting...\r"
|
13
|
+
require 'datasets-arrow'
|
14
|
+
|
15
|
+
print "reading penguins...\r"
|
16
|
+
penguins = DataFrame.new(Datasets::Penguins.new)
|
17
|
+
|
18
|
+
print "reading diamonds...\r"
|
19
|
+
diamonds = DataFrame.new(Datasets::Diamonds.new)
|
20
|
+
|
21
|
+
print "reading starwars...\r"
|
22
|
+
starwars = DataFrame.new(Datasets::Rdataset.new('dplyr', 'starwars'))
|
23
|
+
|
24
|
+
print "reading openintro/simpsons_paradox_covid...\r"
|
25
|
+
ds = Datasets::Rdataset.new('openintro', 'simpsons_paradox_covid')
|
26
|
+
simpsons_paradox_covid = DataFrame.new(ds.to_arrow)
|
27
|
+
|
28
|
+
print "reading mtcars... \r"
|
29
|
+
mtcars = DataFrame.new(Datasets::Rdatasets.new('datasets', 'mtcars'))
|
30
|
+
|
31
|
+
print "reading iris... \r"
|
32
|
+
iris = DataFrame.new(Datasets::Iris.new)
|
33
|
+
|
34
|
+
print "reading band_members...\r"
|
35
|
+
band_members = DataFrame.new(Datasets::Rdatasets.new('dplyr', 'band_members'))
|
36
|
+
|
37
|
+
print "reading band_instruments...\r"
|
38
|
+
band_instruments = DataFrame.new(Datasets::Rdatasets.new('dplyr', 'band_instruments'))
|
39
|
+
|
40
|
+
print "reading band_instruments2...\r"
|
41
|
+
band_instruments2 = DataFrame.new(Datasets::Rdatasets.new('dplyr', 'band_instruments2'))
|
42
|
+
|
43
|
+
print "reading import_cars... \r"
|
44
|
+
import_cars = DataFrame.load(Arrow::Buffer.new(<<~TSV), format: :tsv)
|
45
|
+
Year Audi BMW BMW_MINI Mercedes-Benz VW
|
46
|
+
2017 28336 52527 25427 68221 49040
|
47
|
+
2018 26473 50982 25984 67554 51961
|
48
|
+
2019 24222 46814 23813 66553 46794
|
49
|
+
2020 22304 35712 20196 57041 36576
|
50
|
+
2021 22535 35905 18211 51722 35215
|
51
|
+
TSV
|
52
|
+
|
53
|
+
print "reading comecome... \r"
|
54
|
+
comecome = DataFrame.load(Arrow::Buffer.new(<<~CSV), format: :csv)
|
55
|
+
name,age
|
56
|
+
Yasuko,68
|
57
|
+
Rui,49
|
58
|
+
Hinata,28
|
59
|
+
CSV
|
60
|
+
|
61
|
+
print "reading rubykaigi... \r"
|
62
|
+
rubykaigi = DataFrame.load(Arrow::Buffer.new(<<~CSV), format: :csv)
|
63
|
+
year,venue,prefecture,city,venue_en
|
64
|
+
2015,ベルサール汐留,東京都,中央区,"Bellesalle Shiodome"
|
65
|
+
2016,京都国際会議場,京都府,京都市左京区,"Kyoto International Conference Center"
|
66
|
+
2017,広島国際会議場,広島県,広島市中区,"International Conference Center Hiroshima"
|
67
|
+
2018,仙台国際センター,宮城県,仙台市青葉区,"Sendai International Center"
|
68
|
+
2019,福岡国際会議場,福岡県,福岡市博多区,"Fukuoka International Congress Center"
|
69
|
+
2022,三重県総合文化センター,三重県,津市,"Mie Center for the Arts"
|
70
|
+
2023,松本市民芸術館,長野県,松本市,"Matsumoto Performing Arts Centre"
|
71
|
+
CSV
|
72
|
+
|
73
|
+
print "reading general dataframe and subframes...\r"
|
74
|
+
dataframe = DataFrame.new(
|
75
|
+
x: [*1..6],
|
76
|
+
y: %w[A A B B B C],
|
77
|
+
z: [false, true, false, nil, true, false]
|
78
|
+
)
|
79
|
+
subframes = SubFrames.new(dataframe, [[0, 1], [2, 3, 4], [5]])
|
80
|
+
|
81
|
+
# Welcome to RedAmber example!
|
82
|
+
# This environment will offer these pre-loaded datasets:
|
83
|
+
# penguins, diamonds, iris, starwars, simpsons_paradox_covid,
|
84
|
+
# mtcars, band_members, band_instruments, band_instruments2
|
85
|
+
# import_cars, comecome, rubykaigi, dataframe, subframes
|
86
|
+
binding.irb
|