Skip to content

Commit 39d742d

Browse files
authored
extend processing (#17)
1 parent 668edd0 commit 39d742d

File tree

19 files changed

+814
-239
lines changed

19 files changed

+814
-239
lines changed

.github/workflows/ci.yaml

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ concurrency:
1616
cancel-in-progress: true
1717

1818
jobs:
19-
test:
19+
all-tests:
2020
runs-on: ${{ matrix.os }}
2121
strategy:
2222
fail-fast: false
2323
matrix:
2424
os: [macos-latest, ubuntu-latest, windows-latest]
25-
python-version: ['3.7', '3.8', '3.9', '3.10', '3.11']
25+
python-version: ['3.8', '3.9', '3.10', '3.11']
2626
steps:
2727
- name: Clone repo
2828
uses: actions/checkout@v3
@@ -38,5 +38,26 @@ jobs:
3838
run: pip install ./
3939

4040
- name: Run tests
41-
run: nbdev_test --do_print --timing
41+
run: nbdev_test --do_print --timing --flags 'matplotlib polars'
4242

43+
minimal-tests:
44+
runs-on: ${{ matrix.os }}
45+
strategy:
46+
fail-fast: false
47+
matrix:
48+
os: [macos-latest, ubuntu-latest, windows-latest]
49+
steps:
50+
- name: Clone repo
51+
uses: actions/checkout@v3
52+
53+
- name: Set up python
54+
uses: actions/setup-python@v4
55+
with:
56+
python-version: '3.10'
57+
cache: 'pip'
58+
59+
- name: Install dependencies
60+
run: pip3 install . nbdev
61+
62+
- name: Run tests
63+
run: nbdev_test --do_print --timing --skip_file_re '(plotting|target_transforms)'

nbs/compat.ipynb

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,23 +32,15 @@
3232
"source": [
3333
"#| export\n",
3434
"try:\n",
35+
" import polars as pl\n",
3536
" from polars import DataFrame as pl_DataFrame\n",
3637
" from polars import Series as pl_Series\n",
37-
" from polars import col as pl_col\n",
38-
" from polars import concat as pl_concat\n",
39-
" from polars import lit as pl_lit\n",
4038
"\n",
4139
" POLARS_INSTALLED = True\n",
4240
"except ImportError:\n",
43-
" class pl_DataFrame: # type: ignore\n",
44-
" ...\n",
45-
"\n",
46-
" class pl_Series: # type: ignore\n",
47-
" ...\n",
48-
"\n",
49-
" pl_col = None # type: ignore\n",
50-
" pl_concat = None # type: ignore\n",
51-
" pl_lit = None # type: ignore\n",
41+
" pl = None\n",
42+
" pl_DataFrame = type(None)\n",
43+
" pl_Series = type(None)\n",
5244
"\n",
5345
" POLARS_INSTALLED = False\n",
5446
"\n",

nbs/data.ipynb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@
5555
"import numpy as np\n",
5656
"import pandas as pd\n",
5757
"\n",
58-
"from utilsforecast.compat import DataFrame"
58+
"from utilsforecast.compat import DataFrame, pl"
5959
]
6060
},
6161
{
@@ -171,8 +171,6 @@
171171
" df[cat_cols] = df[cat_cols].astype('category')\n",
172172
" df['unique_id'] = df['unique_id'].cat.as_ordered()\n",
173173
" else:\n",
174-
" import polars as pl\n",
175-
"\n",
176174
" df = pl.DataFrame(vals_dict)\n",
177175
" df = df.with_columns(pl.col('unique_id').sort())\n",
178176
" if static_as_categorical:\n",

nbs/evaluation.ipynb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"\n",
4747
"import pandas as pd\n",
4848
"\n",
49-
"from utilsforecast.compat import DataFrame, pl_concat, pl_lit"
49+
"from utilsforecast.compat import DataFrame, pl"
5050
]
5151
},
5252
{
@@ -152,14 +152,14 @@
152152
" if isinstance(result, pd.DataFrame):\n",
153153
" result['metric'] = metric_name\n",
154154
" else:\n",
155-
" result = result.with_columns(pl_lit(metric_name).alias('metric'))\n",
155+
" result = result.with_columns(pl.lit(metric_name).alias('metric'))\n",
156156
" results_per_metric.append(result)\n",
157157
" if isinstance(df, pd.DataFrame):\n",
158158
" df = pd.concat(results_per_metric).reset_index(drop=True)\n",
159159
" out_cols = [c for c in df.columns if c not in (id_col, 'metric')]\n",
160160
" df = df[[id_col, 'metric', *out_cols]]\n",
161161
" else:\n",
162-
" df = pl_concat(results_per_metric, how='diagonal')\n",
162+
" df = pl.concat(results_per_metric, how='diagonal')\n",
163163
" out_cols = [c for c in df.columns if c not in (id_col, 'metric')]\n",
164164
" df = df.select([id_col, 'metric', *out_cols])\n",
165165
" return df"
@@ -259,7 +259,6 @@
259259
"\n",
260260
"import numpy as np\n",
261261
"import pandas as pd\n",
262-
"import polars as pl\n",
263262
"\n",
264263
"from utilsforecast.losses import *\n",
265264
"from utilsforecast.data import generate_series"
@@ -272,8 +271,7 @@
272271
"metadata": {},
273272
"outputs": [],
274273
"source": [
275-
"series = generate_series(10, n_models=2, level=[80])\n",
276-
"series_pl = generate_series(10, n_models=2, level=[80], engine='polars')"
274+
"series = generate_series(10, n_models=2, level=[80])"
277275
]
278276
},
279277
{
@@ -654,6 +652,8 @@
654652
"outputs": [],
655653
"source": [
656654
"#| hide\n",
655+
"#| polars\n",
656+
"series_pl = generate_series(10, n_models=2, level=[80], engine='polars')\n",
657657
"pl_evaluation = (\n",
658658
" evaluate(\n",
659659
" series_pl,\n",

nbs/grouped_array.ipynb

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"import pandas as pd\n",
2525
"\n",
2626
"from utilsforecast.compat import DataFrame\n",
27-
"from utilsforecast.processing import DataFrameProcessor"
27+
"from utilsforecast.processing import DataFrameProcessor, group_by"
2828
]
2929
},
3030
{
@@ -168,15 +168,12 @@
168168
" if isinstance(df, pd.DataFrame):\n",
169169
" sizes = df.groupby(id_col, observed=True).size().values\n",
170170
" else:\n",
171-
" try:\n",
172-
" group_sizes = df.group_by(id_col, maintain_order=True).count()\n",
173-
" except AttributeError:\n",
174-
" group_sizes = df.groupby(id_col, maintain_order=True).count()\n",
171+
" group_sizes = group_by(df, id_col, maintain_order=True).count()\n",
175172
" sizes = group_sizes['count'].to_numpy()\n",
176173
" \n",
177174
" indptr = np.append(0, sizes.cumsum())\n",
178175
" proc = DataFrameProcessor(id_col, time_col, target_col)\n",
179-
" data = proc._value_cols_to_numpy(df)\n",
176+
" data = proc.value_cols_to_numpy(df)\n",
180177
" if data.dtype not in (np.float32, np.float64):\n",
181178
" data = data.astype(np.float32)\n",
182179
" return cls(data, indptr)\n",
@@ -232,7 +229,9 @@
232229
"metadata": {},
233230
"outputs": [],
234231
"source": [
235-
"from fastcore.test import test_eq, test_fail"
232+
"from fastcore.test import test_eq, test_fail\n",
233+
"\n",
234+
"from utilsforecast.data import generate_series"
236235
]
237236
},
238237
{
@@ -334,24 +333,15 @@
334333
{
335334
"cell_type": "code",
336335
"execution_count": null,
337-
"id": "8c28ccf5-0f75-4cae-a0d5-e880037ff3e1",
338-
"metadata": {},
339-
"outputs": [],
340-
"source": [
341-
"from utilsforecast.data import generate_series"
342-
]
343-
},
344-
{
345-
"cell_type": "code",
346-
"execution_count": null,
347-
"id": "6914dcf3-4d13-42f7-917c-242a47477740",
336+
"id": "c06325e0-8265-4a61-b936-7fc29d6396be",
348337
"metadata": {},
349338
"outputs": [],
350339
"source": [
340+
"#| polars\n",
351341
"# build from df\n",
352342
"series_pd = generate_series(10, static_as_categorical=False, engine='pandas')\n",
353-
"series_pl = generate_series(10, static_as_categorical=False, engine='polars')\n",
354343
"ga_pd = GroupedArray.from_sorted_df(series_pd, 'unique_id', 'ds', 'y')\n",
344+
"series_pl = generate_series(10, static_as_categorical=False, engine='polars')\n",
355345
"ga_pl = GroupedArray.from_sorted_df(series_pl, 'unique_id', 'ds', 'y')\n",
356346
"np.testing.assert_allclose(ga_pd.data, ga_pl.data)\n",
357347
"np.testing.assert_equal(ga_pd.indptr, ga_pl.indptr)"

nbs/imgs/index.png

0 Bytes
Loading

nbs/index.ipynb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@
207207
"metadata": {},
208208
"outputs": [],
209209
"source": [
210+
"#| matplotlib\n",
210211
"from utilsforecast.plotting import plot_series"
211212
]
212213
},
@@ -216,6 +217,7 @@
216217
"metadata": {},
217218
"outputs": [],
218219
"source": [
220+
"#| matplotlib\n",
219221
"fig = plot_series(series, plot_random=False, max_insample_length=50, engine='matplotlib')\n",
220222
"fig.savefig('imgs/index.png', bbox_inches='tight')"
221223
]

0 commit comments

Comments
 (0)