diff --git a/M2/Clustering In Practice/VAT.ipynb b/M2/Clustering In Practice/VAT.ipynb index 9c4367b..8136f30 100644 --- a/M2/Clustering In Practice/VAT.ipynb +++ b/M2/Clustering In Practice/VAT.ipynb @@ -7,7 +7,7 @@ "metadata": {}, "outputs": [], "source": [ - "from pyclustertend import hopkins, vat\n", + "from pyclustertend import hopkins, ivat, vat\n", "\n", "import numpy as np\n", "\n", @@ -72,9 +72,30 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "id": "cb2cc242", "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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Pn1k69at5nG1eGjmzJnSuXNn/Xh+fr7s27dPnOrs2bMyY8YM6d69ux7PpZdeKs8884zHBV7cMOaNGzfKqFGj9Glo1e/yihUrPB73Z4zHjh2TgoICfYa8lJQUmThxopw4cUKcOu7Tp0/L448/rn/H27Vrp4+5++679WnunTzujU38X9vdd999+pi5c+eG5ZgdGRh88MEHUlRUpNeBfvPNN3LllVfK8OHDpaqqStzgyy+/1G9+paWlsmbNGv2HdP3110ttba05Ztq0afLZZ5/JsmXL9PHqj+rWW28Vt9iyZYu88cYb0rdvX4/73Tjun3/+Wa655hqJjY2Vzz//XH744Qd5+eWX5aKLLjLHvPjiizJv3jxZtGiRbN68Wb+gqt95FSg50ezZs2XhwoXy2muvya5du/S+GuP8+fNdNWb1N6ten9QHGW/8GaN6o9i5c6d+LVi5cqV+A5o0aZI4ddy//vqrft1WgaG6/fjjj/UHn5tvvtnjOKeNu7aJ/+sGy5cv16/tKoBoLGzGbDlQTk6ONXnyZLN/9uxZKyMjwyouLrbcqKqqSn2Msr788ku9X11dbcXGxlrLli0zx+zatUsfU1JSYjndL7/8Yl122WXWmjVrrP/7v/+zHn74YVeP+/HHH7eGDBni8/H6+norPT3d+utf/2ruUz+L+Ph467333rOcaOTIkdY999zjcd+tt95qFRQUuHbM6vd0+fLlZt+fMf7www/667Zs2WKO+fzzz62oqCjr8OHDlhPH7U1ZWZk+7sCBA64Yt68x/+tf/7K6dOli7dixw+rWrZs1Z84c81g4jdlxGYNTp05JeXm5TrnZL6qk9ktKSsSNjh8/rm87dOigb9X4VRbB/jPIysrSV5p0w89AZUtGjhzpMT43j/vTTz+VAQMGyO23365LR/3795e33nrLPL5//36prKz0GLe6GIoqoTl13IMHD5a1a9fK3r179f53330nmzZtkhEjRrh2zI35M0Z1q1LK6vejgTpeveapDIObXuNUal2N1a3jrq+vl7vuukseffRRueKKK855PJzG7LirK/7000+6PpmWluZxv9rfvXu3uI36ZVI1dpVq7t27t75PvZjExcWZPyL7z0A95mTvv/++Ti+qUkJjbh13RUWFTqur8tif/vQnPfaHHnpIj3XChAlmbN5+55067ieeeEJfHVUFdm3atNF/088995xOpSpuHHNj/oxR3apg0S4mJkZ/SHDLz0GVTdScgzvuuMNcadCN4549e7Yeg/rb9iacxuy4wCDSqE/PO3bs0J+m3E5dm/zhhx/W9TU1qTRSqOBPfUp4/vnn9b7KGKj/c1V3VoGBG3344YeyZMkSWbp0qf70tG3bNh0Aq7qrW8eMc6kM4Lhx4/QkTBUcu1V5ebm8+uqr+kOPyoyEO8eVEjp16qQ/YTSeia7209PTxU2mTJmiJ6CsX79eLr74YnO/GqcqqVRXV7vqZ6D+eNQE0quuukpHympTEwzV5CzVVp+k3DhuNSP98ssv97ivV69ecvDgQd1uGJubfudVOlVlDcaPH69np6sUq5pYqlbkuHXMjfkzRnXbeFL1mTNn9Ox1p/8cGoKCAwcO6A8DDdkCN477q6++0uNRZc+G1zY17kceeUSvrgu3MTsuMFDp1ezsbF2ftH/iUvu5ubniBip6VkGBmr26bt06vaTLTo1fzWC3/wzUrF71RuLkn8GwYcPk+++/158eGzb1SVqllxvabhy3KhM1Xo6qau/dunXTbfX/r14Y7ONWaXhVd3TquNXMdFU7tVMBv/pbduuYG/NnjOpWBcIqaG6gXhPUz0nNRXB6UKCWZn7xxRd6ma6d28Z91113yfbt2z1e21R2TAXIq1evDr8xWw70/vvv65m777zzjp7JOWnSJCslJcWqrKy03OD++++3kpOTrQ0bNlj//ve/zfbrr7+aY+677z6ra9eu1rp166ytW7daubm5enMb+6oEt45bzciOiYmxnnvuOWvfvn3WkiVLrN/85jfWP/7xD3PMCy+8oH/HP/nkE2v79u3W6NGjre7du1v/+9//LCeaMGGCnp29cuVKa//+/dbHH39sderUyXrsscdcNWa1wubbb7/Vm3q5feWVV3S7Yfa9P2O84YYbrP79+1ubN2+2Nm3apFfs3HHHHZZTx33q1Cnr5ptvti6++GJr27ZtHq9xdXV1jh33L038XzfWeFVCOI3ZkYGBMn/+fP0GERcXp5cvlpaWWm6hfqm8bYsXLzbHqBeOBx54wLrooov0m8gtt9yi/7DcHhi4ddyfffaZ1bt3bx3wZmVlWW+++abH42pp24wZM6y0tDR9zLBhw6w9e/ZYTlVTU6P/X9XfcEJCgtWjRw/rz3/+s8cbgxvGvH79eq9/yyow8neM//3vf/WbQ2JiopWUlGQVFhbqNyGnjlsFgr5e49TXOXXc65v4v/YnMAiXMUepf1o3RwEAAMKV4+YYAACA4CEwAAAABoEBAAAwCAwAAIBBYAAAAAwCAwAAYBAYAAAAg8AAAAAYBAYAAMAgMAAAAAaBAQAAkAb/Dx8JyJ+w1M7sAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "ivat(iris.data, figure_size=(6, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7cca46cb", + "metadata": {}, "outputs": [], "source": [] } diff --git a/M2/Reinforcement Learning/project/pyproject.toml b/M2/Reinforcement Learning/project/pyproject.toml index 4d95570..e34be37 100644 --- a/M2/Reinforcement Learning/project/pyproject.toml +++ b/M2/Reinforcement Learning/project/pyproject.toml @@ -8,4 +8,5 @@ dependencies = [ "ale-py>=0.11.2", "numpy>=2.2.5", "pyclustertend>=1.4.9", + "sequenzo>=0.1.20", ] diff --git a/uv.lock b/uv.lock index ce7f2d4..a82642c 100644 --- a/uv.lock +++ b/uv.lock @@ -456,6 +456,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] +[[package]] +name = "cython" +version = "3.2.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/85/7574c9cd44b69a27210444b6650f6477f56c75fee1b70d7672d3e4166167/cython-3.2.4.tar.gz", hash = "sha256:84226ecd313b233da27dc2eb3601b4f222b8209c3a7216d8733b031da1dc64e6", size = 3280291, upload-time = "2026-01-04T14:14:14.473Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/b5/1cfca43b7d20a0fdb1eac67313d6bb6b18d18897f82dd0f17436bdd2ba7f/cython-3.2.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:28e8075087a59756f2d059273184b8b639fe0f16cf17470bd91c39921bc154e0", size = 2960506, upload-time = "2026-01-04T14:15:16.733Z" }, + { url = "https://files.pythonhosted.org/packages/71/bb/8f28c39c342621047fea349a82fac712a5e2b37546d2f737bbde48d5143d/cython-3.2.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:03893c88299a2c868bb741ba6513357acd104e7c42265809fd58dce1456a36fc", size = 3213148, upload-time = "2026-01-04T14:15:18.804Z" }, + { url = "https://files.pythonhosted.org/packages/7a/d2/16fa02f129ed2b627e88d9d9ebd5ade3eeb66392ae5ba85b259d2d52b047/cython-3.2.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f81eda419b5ada7b197bbc3c5f4494090e3884521ffd75a3876c93fbf66c9ca8", size = 3375764, upload-time = "2026-01-04T14:15:20.817Z" }, + { url = "https://files.pythonhosted.org/packages/91/3f/deb8f023a5c10c0649eb81332a58c180fad27c7533bb4aae138b5bc34d92/cython-3.2.4-cp313-cp313-win_amd64.whl", hash = "sha256:83266c356c13c68ffe658b4905279c993d8a5337bb0160fa90c8a3e297ea9a2e", size = 2754238, upload-time = "2026-01-04T14:15:23.001Z" }, + { url = "https://files.pythonhosted.org/packages/ee/d7/3bda3efce0c5c6ce79cc21285dbe6f60369c20364e112f5a506ee8a1b067/cython-3.2.4-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d4b4fd5332ab093131fa6172e8362f16adef3eac3179fd24bbdc392531cb82fa", size = 2971496, upload-time = "2026-01-04T14:15:25.038Z" }, + { url = "https://files.pythonhosted.org/packages/89/ed/1021ffc80b9c4720b7ba869aea8422c82c84245ef117ebe47a556bdc00c3/cython-3.2.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3b5ac54e95f034bc7fb07313996d27cbf71abc17b229b186c1540942d2dc28e", size = 3256146, upload-time = "2026-01-04T14:15:26.741Z" }, + { url = "https://files.pythonhosted.org/packages/0c/51/ca221ec7e94b3c5dc4138dcdcbd41178df1729c1e88c5dfb25f9d30ba3da/cython-3.2.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f43be4eaa6afd58ce20d970bb1657a3627c44e1760630b82aa256ba74b4acb", size = 3383458, upload-time = "2026-01-04T14:15:28.425Z" }, + { url = "https://files.pythonhosted.org/packages/79/2e/1388fc0243240cd54994bb74f26aaaf3b2e22f89d3a2cf8da06d75d46ca2/cython-3.2.4-cp314-cp314-win_amd64.whl", hash = "sha256:983f9d2bb8a896e16fa68f2b37866ded35fa980195eefe62f764ddc5f9f5ef8e", size = 2791241, upload-time = "2026-01-04T14:15:30.448Z" }, + { url = "https://files.pythonhosted.org/packages/0a/8b/fd393f0923c82be4ec0db712fffb2ff0a7a131707b842c99bf24b549274d/cython-3.2.4-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:36bf3f5eb56d5281aafabecbaa6ed288bc11db87547bba4e1e52943ae6961ccf", size = 2875622, upload-time = "2026-01-04T14:15:39.749Z" }, + { url = "https://files.pythonhosted.org/packages/73/48/48530d9b9d64ec11dbe0dd3178a5fe1e0b27977c1054ecffb82be81e9b6a/cython-3.2.4-cp39-abi3-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:6d5267f22b6451eb1e2e1b88f6f78a2c9c8733a6ddefd4520d3968d26b824581", size = 3210669, upload-time = "2026-01-04T14:15:41.911Z" }, + { url = "https://files.pythonhosted.org/packages/5e/91/4865fbfef1f6bb4f21d79c46104a53d1a3fa4348286237e15eafb26e0828/cython-3.2.4-cp39-abi3-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3b6e58f73a69230218d5381817850ce6d0da5bb7e87eb7d528c7027cbba40b06", size = 2856835, upload-time = "2026-01-04T14:15:43.815Z" }, + { url = "https://files.pythonhosted.org/packages/fa/39/60317957dbef179572398253f29d28f75f94ab82d6d39ea3237fb6c89268/cython-3.2.4-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e71efb20048358a6b8ec604a0532961c50c067b5e63e345e2e359fff72feaee8", size = 2994408, upload-time = "2026-01-04T14:15:45.422Z" }, + { url = "https://files.pythonhosted.org/packages/8d/30/7c24d9292650db4abebce98abc9b49c820d40fa7c87921c0a84c32f4efe7/cython-3.2.4-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:28b1e363b024c4b8dcf52ff68125e635cb9cb4b0ba997d628f25e32543a71103", size = 2891478, upload-time = "2026-01-04T14:15:47.394Z" }, + { url = "https://files.pythonhosted.org/packages/86/70/03dc3c962cde9da37a93cca8360e576f904d5f9beecfc9d70b1f820d2e5f/cython-3.2.4-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:31a90b4a2c47bb6d56baeb926948348ec968e932c1ae2c53239164e3e8880ccf", size = 3225663, upload-time = "2026-01-04T14:15:49.446Z" }, + { url = "https://files.pythonhosted.org/packages/b1/97/10b50c38313c37b1300325e2e53f48ea9a2c078a85c0c9572057135e31d5/cython-3.2.4-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e65e4773021f8dc8532010b4fbebe782c77f9a0817e93886e518c93bd6a44e9d", size = 3115628, upload-time = "2026-01-04T14:15:51.323Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b1/d6a353c9b147848122a0db370863601fdf56de2d983b5c4a6a11e6ee3cd7/cython-3.2.4-cp39-abi3-win32.whl", hash = "sha256:2b1f12c0e4798293d2754e73cd6f35fa5bbdf072bdc14bc6fc442c059ef2d290", size = 2437463, upload-time = "2026-01-04T14:15:53.787Z" }, + { url = "https://files.pythonhosted.org/packages/2d/d8/319a1263b9c33b71343adfd407e5daffd453daef47ebc7b642820a8b68ed/cython-3.2.4-cp39-abi3-win_arm64.whl", hash = "sha256:3b8e62049afef9da931d55de82d8f46c9a147313b69d5ff6af6e9121d545ce7a", size = 2442754, upload-time = "2026-01-04T14:15:55.382Z" }, + { url = "https://files.pythonhosted.org/packages/ff/fa/d3c15189f7c52aaefbaea76fb012119b04b9013f4bf446cb4eb4c26c4e6b/cython-3.2.4-py3-none-any.whl", hash = "sha256:732fc93bc33ae4b14f6afaca663b916c2fdd5dcbfad7114e17fb2434eeaea45c", size = 1257078, upload-time = "2026-01-04T14:14:12.373Z" }, +] + [[package]] name = "dataclasses-json" version = "0.6.7" @@ -540,6 +566,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" }, ] +[[package]] +name = "docutils" +version = "0.22.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/b6/03bb70946330e88ffec97aefd3ea75ba575cb2e762061e0e62a213befee8/docutils-0.22.4.tar.gz", hash = "sha256:4db53b1fde9abecbb74d91230d32ab626d94f6badfc575d6db9194a49df29968", size = 2291750, upload-time = "2025-12-18T19:00:26.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl", hash = "sha256:d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de", size = 633196, upload-time = "2025-12-18T19:00:18.077Z" }, +] + [[package]] name = "et-xmlfile" version = "2.0.0" @@ -588,6 +623,23 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/05/2c/ffc08c54c05cdce6fbed2aeebc46348dbe180c6d2c541c7af7ba0aa5f5f8/Farama_Notifications-0.0.4-py3-none-any.whl", hash = "sha256:14de931035a41961f7c056361dc7f980762a143d05791ef5794a751a2caf05ae", size = 2511, upload-time = "2023-02-27T18:28:39.447Z" }, ] +[[package]] +name = "fastcluster" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/1e/417892546cb92e71f5bcaeffc8d89b47716fd811805a8ae559b91f754015/fastcluster-1.3.0.tar.gz", hash = "sha256:d5233aeba5c3faa949c7fa6a39345a09f716ccebbd748541e5735c866696df02", size = 173065, upload-time = "2025-05-06T17:45:30.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/87/07ff592bcf14e6fcace16f639f623fd4298ddd3538bbd4f0c0ee697f2edd/fastcluster-1.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:07b7cb3a831958f3039064be193a7c125657861e57b257965245c755d41ac031", size = 62797, upload-time = "2025-05-06T17:45:23.13Z" }, + { url = "https://files.pythonhosted.org/packages/89/b5/d72b995d254457e015057ca7ef0bbb34e85d45afb71f88d03f847879d711/fastcluster-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:34f0be433cfe0f5c5f3f71052e1850a99fe712f625889adb08d8d1ae851fe7ec", size = 38879, upload-time = "2025-05-06T17:45:24.208Z" }, + { url = "https://files.pythonhosted.org/packages/40/2a/69c313ffc9521d5bd6a32250ac0222289ef6192b4ce524bb8d42796967ef/fastcluster-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:400213bdc7d5135c4282fdb7ad6b0579d5a041c16e67ef69bd9d6749335256fd", size = 34785, upload-time = "2025-05-06T17:45:25.236Z" }, + { url = "https://files.pythonhosted.org/packages/ea/48/5d043913451576248ac026e9659f4fffb5356f7e2556e115fe3941f7fe03/fastcluster-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c71b7236288b9067d329359639789060e030285e8da2724fcdacd55ae751947", size = 184257, upload-time = "2025-05-06T17:45:26.722Z" }, + { url = "https://files.pythonhosted.org/packages/59/f3/f71552b94a39509b62e72c4a26b6e4440bb9ce6decacf90af2916829e69e/fastcluster-1.3.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dce31ace6f8e08c5400d6e19492fe09aba2b050f78a7aa6943ba2ae50dcd1b0", size = 193944, upload-time = "2025-05-06T17:45:27.866Z" }, + { url = "https://files.pythonhosted.org/packages/b1/64/78709a98a17f33feb960c6547c33e7e4838e49d4998b3a318f255757fe68/fastcluster-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:e7c78f0e9e05c6f380d3d018ef5106d4526461abfd764fe7c0a7b53911b36c7d", size = 37354, upload-time = "2025-05-06T17:45:29.056Z" }, +] + [[package]] name = "fastjsonschema" version = "2.21.2" @@ -1730,6 +1782,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] +[[package]] +name = "missingno" +version = "0.5.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "seaborn" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/f9/e20220b851bc6d7abf70b403a3080d6af946ed4b13b2bf91ef4e74d2aec9/missingno-0.5.2.tar.gz", hash = "sha256:4a4baa9ca9f9e4e0d9402455df26b656632e94b99e87fa64c0cdbbbc722837ac", size = 17489, upload-time = "2023-02-26T20:10:29.329Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/22/cd5cf999af21c2f97486622c551ac3d07361ced8125121e907f588ff5f24/missingno-0.5.2-py3-none-any.whl", hash = "sha256:55782621ce09ba0f0a1d08e5bd6d6fe1946469fb03951fadf7d209911ca5b072", size = 8704, upload-time = "2023-02-26T20:10:26.042Z" }, +] + [[package]] name = "ml-dtypes" version = "0.5.3" @@ -2466,6 +2533,7 @@ dependencies = [ { name = "ale-py" }, { name = "numpy" }, { name = "pyclustertend" }, + { name = "sequenzo" }, ] [package.metadata] @@ -2473,6 +2541,7 @@ requires-dist = [ { name = "ale-py", specifier = ">=0.11.2" }, { name = "numpy", specifier = ">=2.2.5" }, { name = "pyclustertend", specifier = ">=1.4.9" }, + { name = "sequenzo", specifier = ">=0.1.20" }, ] [[package]] @@ -2672,6 +2741,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259, upload-time = "2025-03-28T02:41:19.028Z" }, ] +[[package]] +name = "pybind11" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/7b/a6d8dcb83c457e24a9df1e4d8fd5fb8034d4bbc62f3c324681e8a9ba57c2/pybind11-3.0.1.tar.gz", hash = "sha256:9c0f40056a016da59bab516efb523089139fcc6f2ba7e4930854c61efb932051", size = 546914, upload-time = "2025-08-22T20:09:27.265Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/8a/37362fc2b949d5f733a8b0f2ff51ba423914cabefe69f1d1b6aab710f5fe/pybind11-3.0.1-py3-none-any.whl", hash = "sha256:aa8f0aa6e0a94d3b64adfc38f560f33f15e589be2175e103c0a33c6bce55ee89", size = 293611, upload-time = "2025-08-22T20:09:25.235Z" }, +] + [[package]] name = "pyclustertend" version = "1.4.9" @@ -3257,6 +3335,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097, upload-time = "2025-08-27T12:15:03.961Z" }, ] +[[package]] +name = "rpy2" +version = "3.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging", marker = "sys_platform == 'win32'" }, + { name = "rpy2-rinterface" }, + { name = "rpy2-robjects" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/ba/393d5aaf21204d7678e59f7e7cd54d9a929d5f7ad8218f172100c8c7a6c8/rpy2-3.6.4.tar.gz", hash = "sha256:a24e8dda5c5ff8cbd2b8ebd1ccf6f1a5a0a576623700cf91e2cce98d41a79fd3", size = 53247, upload-time = "2025-09-26T00:31:37.986Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/93/d49eccd6662ff5cec439f9de716e6520c990cec031fcdd8d08e7fd530681/rpy2-3.6.4-py3-none-any.whl", hash = "sha256:edf437d6637b89311f860fb3e44144ea5eff286a65c48645805833baff090621", size = 9895, upload-time = "2025-09-26T00:31:36.841Z" }, +] + +[[package]] +name = "rpy2-rinterface" +version = "3.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "packaging", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ff/2a/6ced3b62a9cbfd1f3c24f7005f6eca492d906a4b6a6d56d097a116f14539/rpy2_rinterface-3.6.3.tar.gz", hash = "sha256:477bc2f51d007ad1b8567c5d4ba1af0f59951686ee7f10576a06d0834de5776f", size = 79406, upload-time = "2025-09-04T22:50:50.048Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/ee/0c5774b75862b148ae9e0f97feed2b6abf899c652f0df8cc5556c149f6dc/rpy2_rinterface-3.6.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:62c6bc4a4566d4cd227a377c95c2a2be0e30bfb7b9ed3d5bea58e1c4cdfdf024", size = 173477, upload-time = "2025-09-04T22:52:34.57Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0e/f0463f33815875e3b7da58c6f13df1d4e416d4abe57aa9261a31910ef6ca/rpy2_rinterface-3.6.3-cp313-cp313-win_amd64.whl", hash = "sha256:b6eb511a07e30d7253b6fc401c14dbc9cc94efd70abdaa421f5101654c012d68", size = 174531, upload-time = "2025-09-04T22:53:32.97Z" }, +] + +[[package]] +name = "rpy2-robjects" +version = "3.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "packaging", marker = "sys_platform == 'win32'" }, + { name = "rpy2-rinterface" }, + { name = "tzlocal" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/58/107252dab2d342eb77bd84d672abc6ecb57428758e251cfccf841c4b6a69/rpy2_robjects-3.6.3.tar.gz", hash = "sha256:731aa1a4905c4b25c0564d72cbfd85f9230102f989e7a22515885e91d4df3d40", size = 105849, upload-time = "2025-09-26T00:31:27.792Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/af/a794c935ddd3dd8b47a8931e0c8cee1b756ff983db288284786ad29a8bf8/rpy2_robjects-3.6.3-py3-none-any.whl", hash = "sha256:de58c7126dbcd66c4692e7aef91d3cc57a96134828d37a268669f78ee64b974d", size = 125862, upload-time = "2025-09-26T00:31:26.623Z" }, +] + [[package]] name = "rsa" version = "4.9.1" @@ -3375,6 +3496,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/40/d0/3b2897ef6a0c0c801e9fecca26bcc77081648e38e8c772885ebdd8d7d252/sentence_transformers-5.2.0-py3-none-any.whl", hash = "sha256:aa57180f053687d29b08206766ae7db549be5074f61849def7b17bf0b8025ca2", size = 493748, upload-time = "2025-12-11T14:12:29.516Z" }, ] +[[package]] +name = "sequenzo" +version = "0.1.20" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, + { name = "cython" }, + { name = "docutils" }, + { name = "fastcluster" }, + { name = "joblib" }, + { name = "matplotlib" }, + { name = "missingno" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pillow" }, + { name = "pybind11" }, + { name = "rpy2" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/9a/9d17d523401ec2888419e352008a0a805b6a361c5251c7e960a88a9922a1/sequenzo-0.1.20.tar.gz", hash = "sha256:abc7f6ff1a5f7d9a5e9619a272619ba20e886dc3cf5cccbb617f6789a59112ae", size = 1092197, upload-time = "2025-10-07T20:33:17.657Z" } + [[package]] name = "setuptools" version = "80.9.0"