From 7a2aa99bf4d9392558dda60f3a47f94b1ca78936 Mon Sep 17 00:00:00 2001 From: Kushagra Srivastav <76401345+Kushagra7777@users.noreply.github.com> Date: Thu, 20 Nov 2025 13:44:47 +0530 Subject: [PATCH 1/3] tested h=1 on flowstate I found no bug. May be the issue #242mentioned by the user is very specific to their dataset. Check out the notebook `forecaster-quickstart.ipynb` last cell. h=1 works fine. --- docs/examples/forecaster-quickstart.ipynb | 120 +++++++++++++++++++++- 1 file changed, 116 insertions(+), 4 deletions(-) diff --git a/docs/examples/forecaster-quickstart.ipynb b/docs/examples/forecaster-quickstart.ipynb index 6239177a..15ccff10 100644 --- a/docs/examples/forecaster-quickstart.ipynb +++ b/docs/examples/forecaster-quickstart.ipynb @@ -247,15 +247,127 @@ ] }, { - "cell_type": "markdown", - "id": "6a8ae523", + "cell_type": "code", + "execution_count": 6, + "id": "9d08da3e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "h = 2 \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", + "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", + "100%|██████████| 1/1 [00:00<00:00, 1.28it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " unique_id ds FlowState\n", + "0 Black Friday 2025-09-07 98.772888\n", + "1 Black Friday 2025-09-14 6.484253\n", + "2 Cyber Monday 2025-09-07 502.096191\n", + "3 Cyber Monday 2025-09-14 20.447998\n", + "4 Halloween 2025-09-07 9163.925781\n", + " h = 1 \n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", + "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", + "100%|██████████| 1/1 [00:00<00:00, 1.33it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " unique_id ds FlowState\n", + "0 Black Friday 2025-09-07 98.772888\n", + "1 Cyber Monday 2025-09-07 502.096191\n", + "2 Halloween 2025-09-07 9163.925781\n", + "3 Oktoberfest 2025-09-07 2700.528320\n", + "4 Pride Month 2025-09-07 2290.789795\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "from timecopilot import TimeCopilotForecaster\n", + "from timecopilot.models.foundation.flowstate import FlowState\n", + "\n", + "\n", + "\n", + "df = pd.read_csv(\n", + " \"https://timecopilot.s3.amazonaws.com/public/data/events_pageviews.csv\",\n", + " parse_dates=[\"ds\"],\n", + ")\n", + "\n", + "df_w = (\n", + " df\n", + " .set_index(\"ds\")\n", + " .groupby(\"unique_id\")[\"y\"]\n", + " .resample(\"W\")\n", + " .sum()\n", + " .reset_index()\n", + ")\n", + "\n", + "\n", + "\n", + "tcf = TimeCopilotForecaster(\n", + " models=[\n", + " FlowState(), \n", + " ]\n", + ")\n", + "\n", + "print(\"h = 2 \")\n", + "fcst_h2 = tcf.forecast(\n", + " df=df_w,\n", + " h=2,\n", + " freq=\"W\",\n", + ")\n", + "print(fcst_h2.head())\n", + "\n", + "print(\" h = 1 \")\n", + "fcst_h1 = tcf.forecast(\n", + " df=df_w,\n", + " h=1,\n", + " freq=\"W\",\n", + ")\n", + "print(fcst_h1.head())\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37ba8935", "metadata": {}, + "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "myenv", "language": "python", "name": "python3" }, @@ -269,7 +381,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.12" + "version": "3.10.11" } }, "nbformat": 4, From 78ff376a69a82b2ce0e01c8e4d7e5caaf9c4fb9d Mon Sep 17 00:00:00 2001 From: Kushagra Srivastav <76401345+Kushagra7777@users.noreply.github.com> Date: Wed, 26 Nov 2025 11:17:34 +0530 Subject: [PATCH 2/3] fix flowstate h=1 crash removed extra squeeze in _predict_batch so flowstate returns 2D arrays for h=1 with single unique_id. --- Brent_v3.M.xlsx | Bin 0 -> 13628 bytes docs/examples/forecaster-quickstart.ipynb | 217 ++++++++++++++++++--- timecopilot/models/foundation/flowstate.py | 3 +- 3 files changed, 195 insertions(+), 25 deletions(-) create mode 100644 Brent_v3.M.xlsx diff --git a/Brent_v3.M.xlsx b/Brent_v3.M.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..694dff96a1098b688899c5967e099a8fbc25e18f GIT binary patch literal 13628 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

lpO(cge;JM~$N1 zLB_2==y+ZYX33LlMi%Fiq$5xVZp)q`p?H%5F`+56+ad`RN%jIU1usl*gHYSSySZa! ztzLE?)q?f$`=IgU@*Yiy7tXbgz)lE(OWhkHo&2l#gZb%=5Ygx;W%GCx%VbK4XLL(e z{Ld%%JzImPn&mcA6PwQYA&k{+1OA~7ouRiR+PG2D({urxB9*sDPEoA5I%DFZ?3zxb zYCkeXQV+{6$CZs!`vx1o9Fq*dyG}_2;_wk-b{R;atRXggp&tn_;^H>Jj~kh*wX8FZ z6NfQs=@#kS&m+2SREzqp^x3jr0cHGG*2w542wlr`uG~^Rk(;wbv*-W3d7@29q=mpFaA3P1!w*@jg$` z&hCe+`5F@Uj&z1&Xapu_K$9;vOPv>mF+G?W}XD)x#j7 zE9HIm_%4N^S-{%6Une_Mz^7(Md6(2ORw1lkp2Dg06_?`+a5cygUFzlrgtbFvLA>oz zaVWuY{64}UN$RwUbiP=ILqjfpoTCt9^<*J7Ob@^YKonZ zW8!E71$h~fDgJ@@{Nw@KJK=bYU+t~K)9U_JtuxS!7?KJq{X-j>n+XKQ#37t!O?fF# z%?K*>-18U6H@s^m1$&4$WPtuqENl~(&NwGh2P>C$jXf{ZE#t zzpSTLx$@XJWt{(bOFy-vt|)hL8`zyacxD3i}UdDZ3$me2sILFi1o4=>Hj_!hA?KQ>^@Y;G9do8$g7qw zmocZVY%I{jeD_ikN$sg}OX1r?NBpt1wcvhFpn^<`(E1Pf@bOR&p@ws?f-JaHHU-G% zH~f9ql;Rzvx(MyBc#u;d_ih;{k30N^+emv(hucWEftDZHP6!&s6JU2jbw(*)LykD=N9e;GfRU$(YPEz&lIf6>F}(7rv;FgFQDZ? z3LibX6zMM%;-<<=qOI`=SGzjGsz7JCz%`*4i3D311k|Yzl1vXv5cRC{s9^cB>boA{ z5=7Zn{@7B(9S@Vq#jD^GK)X9jS@-;E+f*~kIXKR~_99_E15e1J*E}G_a-By zNMl1_$dP0g&v3$|%d-`T`XlVUuUnKM6S1d5sNo>31y6zjVwpnLAY0Z7!5=7>Rf_Lq zC$_Do;Hz0XuFFJ2?Ta{;e!3nby0XCTSoA(Ai`)Fcs1&uZq6nyhKA7U)R!`Zv;pss9<#{qkXHPKYuIopO*zKSp`g611+l&;`2j<$J{7+2dX7$XbVL@H`c%A z&NUbvUNl9vi#}5IpGb#zKl!^-&tk>c4G;K7MEBIkPIh@ztkYD--4x6Vm5{Os5 zq#q8eh`7#V6GGP` zPIgKcp-zov4;2NFrATW(P6qY9lS0RyQmlPB_qm#9tg)CHaM0CTb$fY~C|@o(d2zKY zqZh%;ao@3*ql9N$UULuCdRt`&xFv;nfAA)laRHO^yW$o6EwMIai|+j)AK*CzFlEh$ zo&GgNRX{X>VQvj0(lPvv(HV`e_pY3owntuZy5$B1jigd@^{H&6SlcI`k$fZQVV93A zSTvGfo^c@tji6gRZJ0*TU*h!#sQkR%{Cs&QtR2dH$*CpigXK#HMgBuvshMqovI~V% zOCcT}v$I!LUq37*nRlnb6rp&gZX7PoB!Og*r{VXUM$k7(U%uAUT6$SLSVEqHD(HS_ zi*bcPj2vJ>R_OwxC7xU?cuLA_GVruP{ehpy{II%Gt5E&$Q;WkwIiRE=wnnHQTLkm98uIz=a5uP*|uF1F=F zFyG4#2)>P4GL&wGq@8UM!Ck@FRYo$&*;OllyV6IYh)(fCQ;E;uXunqPwEAm~YAa-h z^|)$jJRIj1jRE)8AUI=Dd9u8!!Hh)mZdccDw`%g1zP#gW)A-!f-lZwmPLc^O5!4`_ zH}EqZym-BN1@je`2hF83?b?Z-y&ukxp7*Zy*G{o91B|{L6enKA72MxUo@tlD#|V-t z-bU=*8LXU%EIv0#{To@sS=AG%>w+D9hi9b224CN zu`^b3u(Nk$GPZLt{X1p)|M+HL*G0s(f+@pTL9XwX$<8z8_eiHcs36QMyj8D(?>3vO zw-H|#uOmAOUWJ)`1BHnMg{H9#L2VxXzJYte z&eC+FD)G$5QC5*`y>@d%_HogS3O|`Ukh@^UM`+3C$zjT)=hDMueOK{}q=gB-wg!jz zw7{z6yb!&QPhkrkrmaq|`*Z;6;4<3M-!Ej{c3TrbMCnGRl|1=(CW5(m93DrW$2%s8XZO?v${RqR(iYl#&wwNZag8# zG7W(;0Bf^uPO4@Fy0r>$lW!1H^X5Luj8PuZ>`f>ndPs3eWEosYERIN2eZ3OOk$Qh- z(X2;t45+(W#zklcgYZA$DHG}9od*5}6MQ;~{;%*fw7361bb?{|_bV;7Lt&8_J@_Qv zEu`P|x3&&hjYGt^N_V!p=6q1|fgC4Jq|KaI%>uBT!442L4!4@UO3W+M9UGM4k(&H6 zb24TeJ}GZpjbp^Rj1A%)(1ulb_|@RtQKo?#LQOAQsQaVDRjGpEoeM3R;1`KY2yy~x ze2E6N3Idj4ZpEfx$$W%?$Zvyvl4P}?M!eMVQFioKI9H=dx9(U%Q2gn#`H`E2Ip2-y zJg$uYI*4S_E3fnO&F4nyASjKtrD-Q1_BzKl%j6;`Sv6KhU&6SwVQ+|UT;0&1udQM( z_^3^jDttQQ*8n}uV3RE;r&7ahEs`6h%_?MJBSrsEhT+5wW3A3UNM`6I@h=>Gql<3IKMNj?3irV}uO;SVC} zpTd6<68|ZTgY-A*!=LoTKQ;Wx`TM7atG{XZlL7drfHl#o{HK?NQcy$2) PMDWWOoaVo?zJB_D(V`Y+ literal 0 HcmV?d00001 diff --git a/docs/examples/forecaster-quickstart.ipynb b/docs/examples/forecaster-quickstart.ipynb index 15ccff10..7bb7053d 100644 --- a/docs/examples/forecaster-quickstart.ipynb +++ b/docs/examples/forecaster-quickstart.ipynb @@ -248,7 +248,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 1, "id": "9d08da3e", "metadata": {}, "outputs": [ @@ -256,6 +256,7 @@ "name": "stdout", "output_type": "stream", "text": [ + " See https://github.com/google-research/timesfm/blob/master/README.md for updated APIs.\n", "h = 2 \n" ] }, @@ -263,21 +264,18 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", - "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", - "100%|██████████| 1/1 [00:00<00:00, 1.28it/s]\n" + "INFO:p-29740:t-25856:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", + "INFO:p-29740:t-25856:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", + "100%|██████████| 1/1 [00:00<00:00, 1.74it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " unique_id ds FlowState\n", - "0 Black Friday 2025-09-07 98.772888\n", - "1 Black Friday 2025-09-14 6.484253\n", - "2 Cyber Monday 2025-09-07 502.096191\n", - "3 Cyber Monday 2025-09-14 20.447998\n", - "4 Halloween 2025-09-07 9163.925781\n", + " unique_id ds FlowState\n", + "0 brent 2025-09-14 -10.250992\n", + "1 brent 2025-09-21 -7.985748\n", " h = 1 \n" ] }, @@ -285,21 +283,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", - "INFO:p-8436:t-25124:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", - "100%|██████████| 1/1 [00:00<00:00, 1.33it/s]" + "INFO:p-29740:t-25856:modeling_flowstate.py:__init__:Number of encoder parameters: 7885.8240000000005k\n", + "INFO:p-29740:t-25856:modeling_flowstate.py:__init__:Number of dencoder parameters: 1181.952k (14.99%)\n", + "100%|██████████| 1/1 [00:00<00:00, 2.07it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ - " unique_id ds FlowState\n", - "0 Black Friday 2025-09-07 98.772888\n", - "1 Cyber Monday 2025-09-07 502.096191\n", - "2 Halloween 2025-09-07 9163.925781\n", - "3 Oktoberfest 2025-09-07 2700.528320\n", - "4 Pride Month 2025-09-07 2290.789795\n" + " unique_id ds FlowState\n", + "0 brent 2025-09-14 -10.250992\n" ] }, { @@ -317,8 +311,9 @@ "\n", "\n", "\n", - "df = pd.read_csv(\n", - " \"https://timecopilot.s3.amazonaws.com/public/data/events_pageviews.csv\",\n", + "df = pd.read_excel(\n", + " # \"https://timecopilot.s3.amazonaws.com/public/data/events_pageviews.csv\",\n", + " 'D:/AO/timecopilot/Brent_v3.M.xlsx',\n", " parse_dates=[\"ds\"],\n", ")\n", "\n", @@ -358,11 +353,185 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "id": "37ba8935", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " unique_id ds y\n", + "0 brent 2005-09-01 63.48\n", + "1 brent 2005-10-01 58.10\n", + "2 brent 2005-11-01 55.05\n", + "3 brent 2005-12-01 58.98\n", + "4 brent 2006-01-01 65.99\n", + ".. ... ... ...\n", + "236 brent 2025-05-01 63.90\n", + "237 brent 2025-06-01 67.61\n", + "238 brent 2025-07-01 72.53\n", + "239 brent 2025-08-01 68.12\n", + "240 brent 2025-09-01 66.75\n", + "\n", + "[241 rows x 3 columns]\n", + " unique_id ds y\n", + "0 Oktoberfest 2020-01-31 25376\n", + "1 Oktoberfest 2020-02-29 28470\n", + "2 Oktoberfest 2020-03-31 23816\n", + "3 Oktoberfest 2020-04-30 46186\n", + "4 Oktoberfest 2020-05-31 31213\n", + ".. ... ... ...\n", + "403 Thanksgiving 2025-04-30 47655\n", + "404 Thanksgiving 2025-05-31 48667\n", + "405 Thanksgiving 2025-06-30 56856\n", + "406 Thanksgiving 2025-07-31 38935\n", + "407 Thanksgiving 2025-08-31 50620\n", + "\n", + "[408 rows x 3 columns]\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_excel('D:/AO/timecopilot/Brent_v3.M.xlsx')\n", + "print(df)\n", + "\n", + "\n", + "import pandas as pd\n", + "df = pd.read_csv('https://timecopilot.s3.amazonaws.com/public/data/events_pageviews.csv')\n", + "print(df)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0fb3f02c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
unique_iddsy
0Oktoberfest2020-01-3125376
1Oktoberfest2020-02-2928470
2Oktoberfest2020-03-3123816
3Oktoberfest2020-04-3046186
4Oktoberfest2020-05-3131213
............
403Thanksgiving2025-04-3047655
404Thanksgiving2025-05-3148667
405Thanksgiving2025-06-3056856
406Thanksgiving2025-07-3138935
407Thanksgiving2025-08-3150620
\n", + "

408 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " unique_id ds y\n", + "0 Oktoberfest 2020-01-31 25376\n", + "1 Oktoberfest 2020-02-29 28470\n", + "2 Oktoberfest 2020-03-31 23816\n", + "3 Oktoberfest 2020-04-30 46186\n", + "4 Oktoberfest 2020-05-31 31213\n", + ".. ... ... ...\n", + "403 Thanksgiving 2025-04-30 47655\n", + "404 Thanksgiving 2025-05-31 48667\n", + "405 Thanksgiving 2025-06-30 56856\n", + "406 Thanksgiving 2025-07-31 38935\n", + "407 Thanksgiving 2025-08-31 50620\n", + "\n", + "[408 rows x 3 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] } ], "metadata": { diff --git a/timecopilot/models/foundation/flowstate.py b/timecopilot/models/foundation/flowstate.py index 172bd0be..e3d40e09 100644 --- a/timecopilot/models/foundation/flowstate.py +++ b/timecopilot/models/foundation/flowstate.py @@ -167,7 +167,8 @@ def _predict_batch( batch_first=False, ).prediction_outputs fcst = fcst.squeeze(-1).transpose(-1, -2) # now shape is (batch, h, quantiles) - fcst_mean = fcst[..., supported_quantiles.index(0.5)].squeeze() + # fcst_mean = fcst[..., supported_quantiles.index(0.5)].squeeze() + fcst_mean = fcst[..., supported_quantiles.index(0.5)] fcst_mean_np = fcst_mean.detach().numpy() fcst_quantiles_np = fcst.detach().numpy() if quantiles is not None else None return fcst_mean_np, fcst_quantiles_np From ebd6de45f9285eba0a5a637f1e07e6a4ad88806a Mon Sep 17 00:00:00 2001 From: Kushagra Srivastav <76401345+Kushagra7777@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:27:54 +0530 Subject: [PATCH 3/3] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index a1c811c6..528cb207 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +myenv # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod]