From a08299dd34e2c83d38d5efa5eebdc49fe18ec5be Mon Sep 17 00:00:00 2001 From: Egutierrez Date: Sat, 16 May 2026 16:33:23 +0200 Subject: [PATCH] chore: auto-commit (5 archivos) - .ipython/profile_default/history.sqlite - .jupyter/collaboration_sessions.json - .jupyter_ystore.db - notebooks/01_domains_overview.ipynb - notebooks/.ipynb_checkpoints/01_domains_overview-checkpoint.ipynb Co-Authored-By: Claude Opus 4.7 (1M context) --- .ipython/profile_default/history.sqlite | Bin 28672 -> 28672 bytes .jupyter/collaboration_sessions.json | 2 +- .jupyter_ystore.db | Bin 40960 -> 53248 bytes .../01_domains_overview-checkpoint.ipynb | 239 ++++++++++++++++++ notebooks/01_domains_overview.ipynb | 190 +++++++++++--- 5 files changed, 396 insertions(+), 35 deletions(-) create mode 100644 notebooks/.ipynb_checkpoints/01_domains_overview-checkpoint.ipynb diff --git a/.ipython/profile_default/history.sqlite b/.ipython/profile_default/history.sqlite index 5f06c08702cb40df5e91b7fac46a6ca98b8b0984..b7b30182066c1b309ea2fd39040c7e5a822ed1b5 100644 GIT binary patch delta 100 zcmV-q0Gt1S-~oW(0gxL31(6&>0R^#Oqz?!J54->m-VeO95fHEsA|L_=06_o%4Kgq? zHZ3qUEipA9F*rIfFgi0eE;%tdH#0Vq-XACg@&FI=vk@@p4-O0g104Z#Wpi_BZ*Fq} GqA)-!Od4ze delta 62 zcmV-E0Kxx&-~oW(0gxL31d$v=0R*vNqz?uG58eO|-m?)P)DM&1A1DO#01xxC5iscw U4GRGS9SL(~b8~5LZgZkAKz@-FJOBUy diff --git a/.jupyter/collaboration_sessions.json b/.jupyter/collaboration_sessions.json index 968d5e5..4814025 100644 --- a/.jupyter/collaboration_sessions.json +++ b/.jupyter/collaboration_sessions.json @@ -1,7 +1,7 @@ { "c1085b1e-4f62-4837-ae69-9d08b917dc85": { "version": "2.4.0", - "created_at": "2026-05-13T22:42:24.017631+00:00", + "created_at": "2026-05-15T16:00:35.124402+00:00", "document_version": "2.0.0" } } \ No newline at end of file diff --git a/.jupyter_ystore.db b/.jupyter_ystore.db index df97fa7bea3acd05cc9f977f468381cb1999700d..4d9ac0ca9dc37c064001bf74d68a5bcc2ac6f3e1 100644 GIT binary patch delta 5689 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 Pc`Ml6_SUJ8c delta 83 zcmZozz}#?vX@WE>4+8@O*F*(-MxKocJNN~dS%7?Y5WxW=I5!JA+~8ldK|q8H$YbN{ gW#B)|-^%aK&&hY1uXnSfKqcQ~Nn8HSbL>(Q0lr-lVE_OC diff --git a/notebooks/.ipynb_checkpoints/01_domains_overview-checkpoint.ipynb b/notebooks/.ipynb_checkpoints/01_domains_overview-checkpoint.ipynb new file mode 100644 index 0000000..0e3fab9 --- /dev/null +++ b/notebooks/.ipynb_checkpoints/01_domains_overview-checkpoint.ipynb @@ -0,0 +1,239 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5e4a34a1", + "metadata": {}, + "source": [ + "# 01 — Panorama del registry por dominio\n", + "\n", + "**Objetivo**: ver cuantas funciones tenemos por dominio, pureza/test/pipelines, y listar las **mas interesantes** (por reutilizacion y signature) de cada dominio.\n", + "\n", + "**Fuente**: `registry.db` (FTS5 indexado por `fn index`).\n", + "\n", + "**Secciones**\n", + "1. Conteo por dominio + cuota de puras y testeadas\n", + "2. Top funciones por dominio (curado a mano tras revisar names+desc)\n", + "3. Conclusiones" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2e006e3", + "metadata": {}, + "outputs": [], + "source": [ + "import os, sqlite3\n", + "import pandas as pd\n", + "ROOT = os.environ['FN_REGISTRY_ROOT']\n", + "conn = sqlite3.connect(f'file:{ROOT}/registry.db?mode=ro', uri=True)\n", + "pd.set_option('display.max_colwidth', 110)" + ] + }, + { + "cell_type": "markdown", + "id": "b6bc2805", + "metadata": {}, + "source": [ + "## 1. Cuenta por dominio" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d4163db", + "metadata": {}, + "outputs": [], + "source": [ + "q = '''\n", + "SELECT domain,\n", + " COUNT(*) AS total,\n", + " SUM(CASE WHEN purity='pure' THEN 1 ELSE 0 END) AS pure,\n", + " SUM(CASE WHEN tested=1 THEN 1 ELSE 0 END) AS tested,\n", + " SUM(CASE WHEN kind='pipeline' THEN 1 ELSE 0 END) AS pipelines\n", + " FROM functions\n", + " GROUP BY domain\n", + " ORDER BY total DESC;\n", + "'''\n", + "df = pd.read_sql_query(q, conn)\n", + "df['pure_pct'] = (100*df['pure']/df['total']).round(1)\n", + "df['tested_pct'] = (100*df['tested']/df['total']).round(1)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "862a60a9", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "ax = df.set_index('domain')[['pure','total']].plot.bar(figsize=(11,4))\n", + "ax.set_title('Funciones por dominio (totales y puras)'); plt.tight_layout(); plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "422a7426", + "metadata": {}, + "source": [ + "## 2. Top funciones interesantes por dominio\n", + "\n", + "Seleccion manual de las funciones mas reutilizables/expresivas de cada bloque (no es ranking automatico — el FTS no captura 'interesante')." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30da4c90", + "metadata": {}, + "outputs": [], + "source": [ + "def top(domain, ids):\n", + " qmarks = ','.join('?'*len(ids))\n", + " df = pd.read_sql_query(\n", + " f\"SELECT id, lang, purity, signature, description FROM functions WHERE id IN ({qmarks})\",\n", + " conn, params=ids)\n", + " print(f'=== {domain} ({len(df)}) ===')\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e70c0f1", + "metadata": {}, + "outputs": [], + "source": [ + "top('finance', [\n", + " 'fetch_ohlcv_go_finance','tick_to_ohlcv_go_finance','stream_ticks_go_finance',\n", + " 'sma_go_finance','ema_go_finance','rsi_go_finance','vwap_go_finance',\n", + " 'bollinger_bands_go_finance','sharpe_ratio_go_finance','max_drawdown_go_finance',\n", + " 'avellaneda_stoikov_quotes_py_finance','hawkes_intensity_py_finance','generate_gbm_prices_py_finance',\n", + " 'write_ohlcv_to_parquet_go_finance','load_ohlcv_from_duckdb_go_finance'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5aa67236", + "metadata": {}, + "outputs": [], + "source": [ + "top('browser (CDP)', [\n", + " 'chrome_launch_go_browser','cdp_connect_go_browser','cdp_navigate_go_browser',\n", + " 'cdp_evaluate_go_browser','cdp_get_html_go_browser','cdp_screenshot_go_browser',\n", + " 'cdp_click_go_browser','cdp_click_text_go_browser','cdp_find_by_text_go_browser',\n", + " 'cdp_type_text_go_browser','cdp_wait_element_go_browser','cdp_wait_load_go_browser',\n", + " 'cdp_har_record_go_browser','cdp_set_cookie_go_browser','cdp_new_tab_go_browser'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75cced20", + "metadata": {}, + "outputs": [], + "source": [ + "top('infra (HTTP/WS/SSE)', [\n", + " 'http_get_json_go_infra','http_post_json_go_infra','http_router_go_infra','http_serve_go_infra',\n", + " 'http_download_file_go_infra','http_cors_middleware_go_infra','http_logger_middleware_go_infra',\n", + " 'rate_limit_middleware_go_infra','jwt_middleware_go_infra','sse_handler_go_infra',\n", + " 'sse_send_go_infra','sse_keepalive_go_infra','ws_handler_go_infra','ws_upgrader_go_infra',\n", + " 'health_check_http_go_infra'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c655f8fc", + "metadata": {}, + "outputs": [], + "source": [ + "top('datascience', [r[0] for r in conn.execute(\n", + " \"SELECT id FROM functions WHERE domain='datascience' AND purity='pure' ORDER BY name LIMIT 15\")])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "364cdb4b", + "metadata": {}, + "outputs": [], + "source": [ + "top('cybersecurity', [r[0] for r in conn.execute(\n", + " \"SELECT id FROM functions WHERE domain='cybersecurity' ORDER BY tested DESC, name LIMIT 12\")])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "958aaac8", + "metadata": {}, + "outputs": [], + "source": [ + "top('ml', [r[0] for r in conn.execute(\n", + " \"SELECT id FROM functions WHERE domain='ml' ORDER BY name LIMIT 15\")])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c03903d6", + "metadata": {}, + "outputs": [], + "source": [ + "top('pipelines', [r[0] for r in conn.execute(\n", + " \"SELECT id FROM functions WHERE domain='pipelines' ORDER BY name LIMIT 15\")])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54a82572", + "metadata": {}, + "outputs": [], + "source": [ + "top('gamedev (audio)', ['audio_engine_cpp_gamedev','audio_play_cpp_gamedev'])" + ] + }, + { + "cell_type": "markdown", + "id": "55adc346", + "metadata": {}, + "source": [ + "## 3. Conclusiones\n", + "\n", + "- **infra (496)** y **core (240)** dominan: middleware HTTP, SSE/WS, SQLite, helpers Go puros.\n", + "- **finance (28)** ya tiene un mini stack de trading + market-making: indicadores, OHLCV, simulador Avellaneda-Stoikov + Hawkes + GBM.\n", + "- **browser (17)** = CDP completo en Go puro (sin chromedp). Base solida para scraping y RPA.\n", + "- **ml (25)** son casi todos **tipos** (`image_generator`, `model_ref`, `lora_ref`, `generation_config`) — el contrato esta definido, las **funciones de ejecucion estan vacias**.\n", + "- **audio**: solo playback (miniaudio en `gamedev`). 0 generacion, 0 STT/TTS, 0 voice conversion.\n", + "- **LLM/text**: 0 clientes — solo tipos `message/part/tool_part` en core." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/01_domains_overview.ipynb b/notebooks/01_domains_overview.ipynb index 21875d8..0e3fab9 100644 --- a/notebooks/01_domains_overview.ipynb +++ b/notebooks/01_domains_overview.ipynb @@ -1,6 +1,10 @@ { "cells": [ - {"cell_type": "markdown", "metadata": {}, "source": [ + { + "cell_type": "markdown", + "id": "5e4a34a1", + "metadata": {}, + "source": [ "# 01 — Panorama del registry por dominio\n", "\n", "**Objetivo**: ver cuantas funciones tenemos por dominio, pureza/test/pipelines, y listar las **mas interesantes** (por reutilizacion y signature) de cada dominio.\n", @@ -11,16 +15,37 @@ "1. Conteo por dominio + cuota de puras y testeadas\n", "2. Top funciones por dominio (curado a mano tras revisar names+desc)\n", "3. Conclusiones" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2e006e3", + "metadata": {}, + "outputs": [], + "source": [ "import os, sqlite3\n", "import pandas as pd\n", "ROOT = os.environ['FN_REGISTRY_ROOT']\n", "conn = sqlite3.connect(f'file:{ROOT}/registry.db?mode=ro', uri=True)\n", "pd.set_option('display.max_colwidth', 110)" - ]}, - {"cell_type": "markdown", "metadata": {}, "source": ["## 1. Cuenta por dominio"]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "markdown", + "id": "b6bc2805", + "metadata": {}, + "source": [ + "## 1. Cuenta por dominio" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d4163db", + "metadata": {}, + "outputs": [], + "source": [ "q = '''\n", "SELECT domain,\n", " COUNT(*) AS total,\n", @@ -35,18 +60,37 @@ "df['pure_pct'] = (100*df['pure']/df['total']).round(1)\n", "df['tested_pct'] = (100*df['tested']/df['total']).round(1)\n", "df" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "862a60a9", + "metadata": {}, + "outputs": [], + "source": [ "import matplotlib.pyplot as plt\n", "ax = df.set_index('domain')[['pure','total']].plot.bar(figsize=(11,4))\n", "ax.set_title('Funciones por dominio (totales y puras)'); plt.tight_layout(); plt.show()" - ]}, - {"cell_type": "markdown", "metadata": {}, "source": [ + ] + }, + { + "cell_type": "markdown", + "id": "422a7426", + "metadata": {}, + "source": [ "## 2. Top funciones interesantes por dominio\n", "\n", "Seleccion manual de las funciones mas reutilizables/expresivas de cada bloque (no es ranking automatico — el FTS no captura 'interesante')." - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "30da4c90", + "metadata": {}, + "outputs": [], + "source": [ "def top(domain, ids):\n", " qmarks = ','.join('?'*len(ids))\n", " df = pd.read_sql_query(\n", @@ -54,51 +98,112 @@ " conn, params=ids)\n", " print(f'=== {domain} ({len(df)}) ===')\n", " return df" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e70c0f1", + "metadata": {}, + "outputs": [], + "source": [ "top('finance', [\n", " 'fetch_ohlcv_go_finance','tick_to_ohlcv_go_finance','stream_ticks_go_finance',\n", " 'sma_go_finance','ema_go_finance','rsi_go_finance','vwap_go_finance',\n", " 'bollinger_bands_go_finance','sharpe_ratio_go_finance','max_drawdown_go_finance',\n", " 'avellaneda_stoikov_quotes_py_finance','hawkes_intensity_py_finance','generate_gbm_prices_py_finance',\n", " 'write_ohlcv_to_parquet_go_finance','load_ohlcv_from_duckdb_go_finance'])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5aa67236", + "metadata": {}, + "outputs": [], + "source": [ "top('browser (CDP)', [\n", " 'chrome_launch_go_browser','cdp_connect_go_browser','cdp_navigate_go_browser',\n", " 'cdp_evaluate_go_browser','cdp_get_html_go_browser','cdp_screenshot_go_browser',\n", " 'cdp_click_go_browser','cdp_click_text_go_browser','cdp_find_by_text_go_browser',\n", " 'cdp_type_text_go_browser','cdp_wait_element_go_browser','cdp_wait_load_go_browser',\n", " 'cdp_har_record_go_browser','cdp_set_cookie_go_browser','cdp_new_tab_go_browser'])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "75cced20", + "metadata": {}, + "outputs": [], + "source": [ "top('infra (HTTP/WS/SSE)', [\n", " 'http_get_json_go_infra','http_post_json_go_infra','http_router_go_infra','http_serve_go_infra',\n", " 'http_download_file_go_infra','http_cors_middleware_go_infra','http_logger_middleware_go_infra',\n", " 'rate_limit_middleware_go_infra','jwt_middleware_go_infra','sse_handler_go_infra',\n", " 'sse_send_go_infra','sse_keepalive_go_infra','ws_handler_go_infra','ws_upgrader_go_infra',\n", " 'health_check_http_go_infra'])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c655f8fc", + "metadata": {}, + "outputs": [], + "source": [ "top('datascience', [r[0] for r in conn.execute(\n", " \"SELECT id FROM functions WHERE domain='datascience' AND purity='pure' ORDER BY name LIMIT 15\")])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "364cdb4b", + "metadata": {}, + "outputs": [], + "source": [ "top('cybersecurity', [r[0] for r in conn.execute(\n", " \"SELECT id FROM functions WHERE domain='cybersecurity' ORDER BY tested DESC, name LIMIT 12\")])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "958aaac8", + "metadata": {}, + "outputs": [], + "source": [ "top('ml', [r[0] for r in conn.execute(\n", " \"SELECT id FROM functions WHERE domain='ml' ORDER BY name LIMIT 15\")])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c03903d6", + "metadata": {}, + "outputs": [], + "source": [ "top('pipelines', [r[0] for r in conn.execute(\n", " \"SELECT id FROM functions WHERE domain='pipelines' ORDER BY name LIMIT 15\")])" - ]}, - {"cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "54a82572", + "metadata": {}, + "outputs": [], + "source": [ "top('gamedev (audio)', ['audio_engine_cpp_gamedev','audio_play_cpp_gamedev'])" - ]}, - {"cell_type": "markdown", "metadata": {}, "source": [ + ] + }, + { + "cell_type": "markdown", + "id": "55adc346", + "metadata": {}, + "source": [ "## 3. Conclusiones\n", "\n", "- **infra (496)** y **core (240)** dominan: middleware HTTP, SSE/WS, SQLite, helpers Go puros.\n", @@ -107,11 +212,28 @@ "- **ml (25)** son casi todos **tipos** (`image_generator`, `model_ref`, `lora_ref`, `generation_config`) — el contrato esta definido, las **funciones de ejecucion estan vacias**.\n", "- **audio**: solo playback (miniaudio en `gamedev`). 0 generacion, 0 STT/TTS, 0 voice conversion.\n", "- **LLM/text**: 0 clientes — solo tipos `message/part/tool_part` en core." - ]} + ] + } ], "metadata": { - "kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, - "language_info": {"name": "python", "version": "3.12"} + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } }, - "nbformat": 4, "nbformat_minor": 5 + "nbformat": 4, + "nbformat_minor": 5 }