[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-pavlin-policar--openTSNE":3,"tool-pavlin-policar--openTSNE":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",149489,2,"2026-04-10T11:32:46",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":77,"owner_email":78,"owner_twitter":79,"owner_website":80,"owner_url":81,"languages":82,"stars":107,"forks":108,"last_commit_at":109,"license":110,"difficulty_score":32,"env_os":111,"env_gpu":112,"env_ram":113,"env_deps":114,"category_tags":121,"github_topics":122,"view_count":32,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":128,"updated_at":129,"faqs":130,"releases":166},6378,"pavlin-policar\u002FopenTSNE","openTSNE","Extensible, parallel implementations of t-SNE","openTSNE 是一个基于 Python 构建的模块化 t-SNE 算法实现库，专为高维数据的可视化降维而设计。它有效解决了传统 t-SNE 在处理大规模数据集时速度缓慢、难以扩展以及无法在已有嵌入结果中直接添加新数据点等痛点，让百万级数据点的可视化成为可能。\n\n这款工具非常适合数据科学家、生物信息学研究人员以及需要探索复杂数据结构的开发者使用。无论是分析单细胞转录组数据，还是处理其他高维特征集，openTSNE 都能提供高效支持。\n\n其核心技术亮点在于集成了多项前沿改进：不仅通过并行计算和算法优化实现了巨大的速度提升，还支持“多尺度核技巧”以更好地保持聚类的全局结构对齐。此外，它独有的增量嵌入功能允许用户将新数据无缝映射到现有的低维空间中，无需重新计算整个模型。安装简便，支持 Conda 和 pip，并能利用 OpenMP 多线程及 FFTW3 库进一步压榨性能，是兼顾速度与精度的理想选择。","openTSNE\n========\n\n|Build Status| |ReadTheDocs Badge| |License Badge|\n\nopenTSNE is a modular Python implementation of t-Distributed Stochasitc Neighbor Embedding (t-SNE) [1]_, a popular dimensionality-reduction algorithm for visualizing high-dimensional data sets. openTSNE incorporates the latest improvements to the t-SNE algorithm, including the ability to add new data points to existing embeddings [2]_, massive speed improvements [3]_ [4]_ [5]_, enabling t-SNE to scale to millions of data points and various tricks to improve global alignment of the resulting visualizations [6]_.\n\n.. figure:: docs\u002Fsource\u002Fimages\u002Fmacosko_2015.png\n   :alt: Macosko 2015 mouse retina t-SNE embedding\n   :align: center\n\n   A visualization of 44,808 single cell transcriptomes obtained from the mouse retina [7]_ embedded using the multiscale kernel trick to better preserve the global aligment of the clusters.\n\n- `Documentation \u003Chttp:\u002F\u002Fopentsne.readthedocs.io>`__\n- `User Guide and Tutorial \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Ftsne_algorithm.html>`__\n- Examples: `basic \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F01_simple_usage\u002F01_simple_usage.html>`__, `advanced \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F02_advanced_usage\u002F02_advanced_usage.html>`__, `preserving global alignment \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F03_preserving_global_structure\u002F03_preserving_global_structure.html>`__, `embedding large data sets \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F04_large_data_sets\u002F04_large_data_sets.html>`__\n- `Speed benchmarks \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fbenchmarks.html>`__\n\nInstallation\n------------\n\nopenTSNE can be installed on all `supported versions of Python \u003Chttps:\u002F\u002Fdevguide.python.org\u002Fversions\u002F>`_.\n\nConda\n~~~~~\n\nopenTSNE can be easily installed from ``conda-forge`` with\n\n::\n\n   conda install --channel conda-forge opentsne\n\n`Conda package \u003Chttps:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fopentsne>`__\n\nPyPi\n~~~~\n\nopenTSNE is also available through ``pip`` and can be installed with\n\n::\n\n   pip install opentsne\n\n`PyPi package \u003Chttps:\u002F\u002Fpypi.org\u002Fproject\u002FopenTSNE>`__\n\nInstalling from source\n~~~~~~~~~~~~~~~~~~~~~~\n\nIf you wish to install openTSNE from source, please run\n\n::\n\n   pip install .\n\n\nin the root directory to install the appropriate dependencies and compile the necessary binary files.\n\nPlease note that openTSNE requires a C\u002FC++ compiler to be available on the system.\n\nIn order for openTSNE to utilize multiple threads, the C\u002FC++ compiler\nmust support ``OpenMP``. In practice, almost all compilers\nimplement this with the exception of older version of ``clang`` on OSX\nsystems.\n\nTo squeeze the most out of openTSNE, you may also consider installing\nFFTW3 prior to installation. FFTW3 implements the Fast Fourier\nTransform, which is heavily used in openTSNE. If FFTW3 is not available,\nopenTSNE will use numpy’s implementation of the FFT, which is slightly\nslower than FFTW. The difference is only noticeable with large data sets\ncontaining millions of data points.\n\nA hello world example\n---------------------\n\nGetting started with openTSNE is very simple. First, we'll load up some data using scikit-learn\n\n.. code:: python\n\n   from sklearn import datasets\n\n   iris = datasets.load_iris()\n   x, y = iris[\"data\"], iris[\"target\"]\n\nthen, we'll import and run\n\n.. code:: python\n\n   from openTSNE import TSNE\n\n   embedding = TSNE().fit(x)\n\nCitation\n--------\n\nIf you make use of openTSNE for your work we would appreciate it if you would cite the paper\n\n.. code::\n\n    @article{Policar2024,\n        title={openTSNE: A Modular Python Library for t-SNE Dimensionality Reduction and Embedding},\n        author={Poli{\\v c}ar, Pavlin G. and Stra{\\v z}ar, Martin and Zupan, Bla{\\v z}},\n        journal={Journal of Statistical Software},\n        year={2024},\n        volume={109},\n        number={3},\n        pages={1–30},\n        doi={10.18637\u002Fjss.v109.i03},\n        url={https:\u002F\u002Fwww.jstatsoft.org\u002Findex.php\u002Fjss\u002Farticle\u002Fview\u002Fv109i03}\n    }\n    \nopenTSNE implements two efficient algorithms for t-SNE. Please consider citing the original authors of the algorithm that you use. If you use FIt-SNE (default), then the citation is [5]_ below, but if you use Barnes-Hut the citations are [3]_ and [4]_.\n\n\nReferences\n----------\n\n.. [1] Van Der Maaten, Laurens, and Hinton, Geoffrey. `“Visualizing data using\n    t-SNE.” \u003Chttp:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume9\u002Fvandermaaten08a\u002Fvandermaaten08a.pdf>`__\n    Journal of Machine Learning Research 9.Nov (2008): 2579-2605.\n.. [2] Poličar, Pavlin G., Martin Stražar, and Blaž Zupan. `“Embedding to Reference t-SNE Space Addresses Batch Effects in Single-Cell Classification.” \u003Chttps:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10994-021-06043-1>`__ Machine Learning (2021): 1-20.\n.. [3] Van Der Maaten, Laurens. `“Accelerating t-SNE using tree-based algorithms.”\n    \u003Chttp:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume15\u002Fvandermaaten14a\u002Fvandermaaten14a.pdf>`__\n    Journal of Machine Learning Research 15.1 (2014): 3221-3245.\n.. [4] Yang, Zhirong, Jaakko Peltonen, and Samuel Kaski. `\"Scalable optimization of neighbor embedding for visualization.\" \u003Chttps:\u002F\u002Fproceedings.mlr.press\u002Fv28\u002Fyang13b.html>`__ International Conference on Machine Learning. PMLR, 2013.\n.. [5] Linderman, George C., et al. `\"Fast interpolation-based t-SNE for improved\n    visualization of single-cell RNA-seq data.\" \u003Chttps:\u002F\u002Fwww.nature.com\u002Farticles\u002Fs41592-018-0308-4>`__ Nature Methods 16.3 (2019): 243.\n.. [6] Kobak, Dmitry, and Berens, Philipp. `“The art of using t-SNE for single-cell transcriptomics.” \u003Chttps:\u002F\u002Fwww.nature.com\u002Farticles\u002Fs41467-019-13056-x>`__\n    Nature Communications 10, 5416 (2019).\n.. [7] Macosko, Evan Z., et al. `“Highly parallel genome-wide expression profiling of\n    individual cells using nanoliter droplets.”\n    \u003Chttps:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0092867415005498>`__\n    Cell 161.5 (2015): 1202-1214.\n\n.. |Build Status| image:: https:\u002F\u002Fdev.azure.com\u002Fpavlingp\u002FopenTSNE\u002F_apis\u002Fbuild\u002Fstatus\u002FTest?branchName=master\n   :target: https:\u002F\u002Fdev.azure.com\u002Fpavlingp\u002FopenTSNE\u002F_build\u002Flatest?definitionId=1&branchName=master\n.. |ReadTheDocs Badge| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fopentsne\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: Documentation Status\n.. |License Badge| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-BSD%203--Clause-blue.svg\n   :target: https:\u002F\u002Fopensource.org\u002Flicenses\u002FBSD-3-Clause\n","openTSNE\n========\n\n|构建状态| |ReadTheDocs徽章| |许可证徽章|\n\nopenTSNE 是 t-分布随机邻域嵌入 (t-SNE) [1]_ 的模块化 Python 实现，t-SNE 是一种用于可视化高维数据集的流行降维算法。openTSNE 结合了 t-SNE 算法的最新改进，包括将新数据点添加到现有嵌入的能力 [2]_、大幅的速度提升 [3]_ [4]_ [5]_（使 t-SNE 能够扩展到数百万个数据点），以及多种用于改善结果可视化全局对齐的技巧 [6]_。\n\n.. figure:: docs\u002Fsource\u002Fimages\u002Fmacosko_2015.png\n   :alt: Macosko 2015 小鼠视网膜 t-SNE 嵌入\n   :align: center\n\n来自小鼠视网膜的 44,808 个单细胞转录组的可视化结果 [7]_，使用多尺度核技巧进行嵌入，以更好地保持聚类的全局对齐。\n\n- `文档 \u003Chttp:\u002F\u002Fopentsne.readthedocs.io>`__\n- `用户指南与教程 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Ftsne_algorithm.html>`__\n- 示例：`基础 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F01_simple_usage\u002F01_simple_usage.html>`__、`高级 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F02_advanced_usage\u002F02_advanced_usage.html>`__、`保持全局对齐 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F03_preserving_global_structure\u002F03_preserving_global_structure.html>`__、`嵌入大型数据集 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fexamples\u002F04_large_data_sets\u002F04_large_data_sets.html>`__\n- `速度基准测试 \u003Chttps:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002Fbenchmarks.html>`__\n\n安装\n----\n\nopenTSNE 可以在所有 `受支持的 Python 版本 \u003Chttps:\u002F\u002Fdevguide.python.org\u002Fversions\u002F>`_ 上安装。\n\nConda\n~~~~~\n\n可以通过 ``conda-forge`` 轻松安装 openTSNE：\n\n::\n\n   conda install --channel conda-forge opentsne\n\n`Conda 包 \u003Chttps:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fopentsne>`__\n\nPyPi\n~~~~\n\nopenTSNE 也可以通过 ``pip`` 获取，并可使用以下命令安装：\n\n::\n\n   pip install opentsne\n\n`PyPI 包 \u003Chttps:\u002F\u002Fpypi.org\u002Fproject\u002FopenTSNE>`__\n\n从源代码安装\n~~~~~~~~~~~~~~\n\n如果您希望从源代码安装 openTSNE，请在根目录下运行：\n\n::\n\n   pip install .\n\n以安装必要的依赖项并编译所需的二进制文件。\n\n请注意，openTSNE 需要系统中可用 C\u002FC++ 编译器。为了使 openTSNE 能够利用多线程，C\u002FC++ 编译器必须支持 ``OpenMP``。实际上，几乎所有编译器都实现了这一点，除了较旧版本的 OSX 系统上的 ``clang``。\n\n为了充分发挥 openTSNE 的性能，您还可以考虑在安装前安装 FFTW3。FFTW3 实现了快速傅里叶变换，而快速傅里叶变换在 openTSNE 中被大量使用。如果 FFTW3 不可用，openTSNE 将使用 numpy 的 FFT 实现，其速度会略慢于 FFTW。这种差异仅在包含数百万个数据点的大规模数据集中才会明显。\n\n一个“Hello World”示例\n---------------------\n\n开始使用 openTSNE 非常简单。首先，我们使用 scikit-learn 加载一些数据：\n\n.. code:: python\n\n   from sklearn import datasets\n\n   iris = datasets.load_iris()\n   x, y = iris[\"data\"], iris[\"target\"]\n\n然后，我们导入并运行：\n\n.. code:: python\n\n   from openTSNE import TSNE\n\n   embedding = TSNE().fit(x)\n\n引用\n----\n\n如果您在工作中使用了 openTSNE，我们非常感谢您能引用以下论文：\n\n.. code::\n\n    @article{Policar2024,\n        title={openTSNE: A Modular Python Library for t-SNE Dimensionality Reduction and Embedding},\n        author={Poli{\\v c}ar, Pavlin G. and Stra{\\v z}ar, Martin and Zupan, Bla{\\v z}},\n        journal={Journal of Statistical Software},\n        year={2024},\n        volume={109},\n        number={3},\n        pages={1–30},\n        doi={10.18637\u002Fjss.v109.i03},\n        url={https:\u002F\u002Fwww.jstatsoft.org\u002Findex.php\u002Fjss\u002Farticle\u002Fview\u002Fv109i03}\n    }\n    \nopenTSNE 实现了两种高效的 t-SNE 算法。请考虑引用您所使用的算法的原始作者。如果您使用 FIt-SNE（默认），则引用为 [5]_；如果您使用 Barnes-Hut，则引用为 [3]_ 和 [4]_。\n\n参考文献\n--------\n\n.. [1] Van Der Maaten, Laurens, and Hinton, Geoffrey. `“Visualizing data using\n    t-SNE.” \u003Chttp:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume9\u002Fvandermaaten08a\u002Fvandermaaten08a.pdf>`__\n    Journal of Machine Learning Research 9.Nov (2008): 2579-2605。\n.. [2] Poličar, Pavlin G., Martin Stražar, and Blaž Zupan. `“Embedding to Reference t-SNE Space Addresses Batch Effects in Single-Cell Classification.” \u003Chttps:\u002F\u002Flink.springer.com\u002Farticle\u002F10.1007\u002Fs10994-021-06043-1>`__ Machine Learning (2021): 1-20。\n.. [3] Van Der Maaten, Laurens. `“Accelerating t-SNE using tree-based algorithms.”\n    \u003Chttp:\u002F\u002Fwww.jmlr.org\u002Fpapers\u002Fvolume15\u002Fvandermaaten14a\u002Fvandermaaten14a.pdf>`__\n    Journal of Machine Learning Research 15.1 (2014): 3221-3245。\n.. [4] Yang, Zhirong, Jaakko Peltonen, and Samuel Kaski. `\"Scalable optimization of neighbor embedding for visualization.\" \u003Chttps:\u002F\u002Fproceedings.mlr.press\u002Fv28\u002Fyang13b.html>`__ International Conference on Machine Learning. PMLR, 2013。\n.. [5] Linderman, George C., et al. `\"Fast interpolation-based t-SNE for improved\n    visualization of single-cell RNA-seq data.\" \u003Chttps:\u002F\u002Fwww.nature.com\u002Farticles\u002Fs41592-018-0308-4>`__ Nature Methods 16.3 (2019): 243。\n.. [6] Kobak, Dmitry, and Berens, Philipp. `“The art of using t-SNE for single-cell transcriptomics.” \u003Chttps:\u002F\u002Fwww.nature.com\u002Farticles\u002Fs41467-019-13056-x>`__\n    Nature Communications 10, 5416 (2019）。\n.. [7] Macosko, Evan Z., et al. `“Highly parallel genome-wide expression profiling of\n    individual cells using nanoliter droplets。”\n    \u003Chttps:\u002F\u002Fwww.sciencedirect.com\u002Fscience\u002Farticle\u002Fpii\u002FS0092867415005498>`__\n    Cell 161.5 (2015): 1202-1214。\n\n.. |Build Status| image:: https:\u002F\u002Fdev.azure.com\u002Fpavlingp\u002FopenTSNE\u002F_apis\u002Fbuild\u002Fstatus\u002FTest?branchName=master\n   :target: https:\u002F\u002Fdev.azure.com\u002Fpavlingp\u002FopenTSNE\u002F_build\u002Flatest?definitionId=1&branchName=master\n.. |ReadTheDocs Badge| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fopentsne\u002Fbadge\u002F?version=latest\n   :target: https:\u002F\u002Fopentsne.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n   :alt: 文档状态\n.. |License Badge| image:: https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-BSD%203--Clause-blue.svg\n   :target: https:\u002F\u002Fopensource.org\u002Flicenses\u002FBSD-3-Clause","# openTSNE 快速上手指南\n\nopenTSNE 是一个模块化的 Python t-SNE 实现，专为高维数据可视化设计。它集成了最新的算法改进，支持将新数据点添加到现有嵌入中，具备极高的运行速度（可处理百万级数据点），并优化了全局结构的对齐效果。\n\n## 环境准备\n\n*   **操作系统**：支持 Linux、macOS 和 Windows。\n*   **Python 版本**：支持所有当前受支持的 Python 版本。\n*   **编译依赖**：\n    *   系统需安装 C\u002FC++ 编译器。\n    *   编译器必须支持 `OpenMP` 以启用多线程加速（大多数现代编译器均支持，但 macOS 上旧版 `clang` 除外）。\n*   **可选优化**：\n    *   建议预先安装 **FFTW3** 库。openTSNE 重度依赖快速傅里叶变换（FFT），使用 FFTW3 比默认的 NumPy 实现更快，尤其在处理百万级大数据集时性能提升明显。若未安装，程序将自动回退至 NumPy 实现。\n\n## 安装步骤\n\n你可以选择通过 Conda 或 pip 进行安装。国内用户若遇到下载缓慢问题，可配置相应的国内镜像源。\n\n### 方式一：使用 Conda 安装（推荐）\n\n```bash\nconda install --channel conda-forge opentsne\n```\n\n### 方式二：使用 pip 安装\n\n```bash\npip install opentsne\n```\n\n> **提示**：国内用户使用 pip 时，可添加 `-i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple` 参数使用清华镜像源加速下载。\n\n### 方式三：从源码安装\n\n如需从源码构建（例如为了启用特定的编译优化），请克隆仓库后在根目录执行：\n\n```bash\npip install .\n```\n\n## 基本使用\n\nopenTSNE 的使用非常简洁，只需几行代码即可完成降维嵌入。以下是一个基于 scikit-learn Iris 数据集的\"Hello World\"示例：\n\n**1. 加载数据**\n\n```python\nfrom sklearn import datasets\n\niris = datasets.load_iris()\nx, y = iris[\"data\"], iris[\"target\"]\n```\n\n**2. 运行 t-SNE 嵌入**\n\n```python\nfrom openTSNE import TSNE\n\nembedding = TSNE().fit(x)\n```\n\n执行完成后，`embedding` 变量即为降维后的结果，可直接用于可视化绘图。","某生物信息学团队正在分析包含百万级单细胞转录组数据的海量数据集，试图通过降维可视化来识别不同的细胞亚群。\n\n### 没有 openTSNE 时\n- **处理速度极慢**：面对百万级数据点，传统 t-SNE 实现需要数天甚至更久才能完成计算，严重拖慢研发进度。\n- **无法增量更新**：每当实验室产生新的测序数据，必须将所有新旧数据混合后重新从头计算嵌入，资源浪费巨大。\n- **全局结构失真**：生成的可视化图表中，不同细胞簇之间的相对位置关系混乱，难以判断宏观上的生物学关联。\n- **扩展性受限**：内存占用过高，普通工作站根本无法加载如此大规模的数据矩阵，被迫依赖昂贵的高性能集群。\n\n### 使用 openTSNE 后\n- **计算效率飞跃**：借助并行加速和算法优化，openTSNE 能在数小时内完成百万数据点的嵌入，让迭代分析成为可能。\n- **支持动态添加**：利用其特有的转换功能，团队可直接将新测得的细胞数据映射到现有可视化空间中，无需重复全量计算。\n- **保留全局对齐**：通过多尺度核技巧（multiscale kernel trick），生成的图表不仅局部聚类清晰，还准确保留了细胞亚群间的全局拓扑结构。\n- **轻松应对海量数据**：优化的内存管理和多线程支持，使得在常规服务器上流畅处理大规模数据集变得轻而易举。\n\nopenTSNE 通过极致的速度优化和灵活的增量嵌入能力，将原本不可行的超大规模生物数据可视化变成了高效、精准的日常分析流程。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fpavlin-policar_openTSNE_16b94c67.png","pavlin-policar","Pavlin Poličar","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fpavlin-policar_f51c82ee.jpg","PhD student working on dimensionality reduction and temporal data.","University of Ljubljana","Slovenia",null,"pavlinpolicar","https:\u002F\u002Fpavlinpolicar.com","https:\u002F\u002Fgithub.com\u002Fpavlin-policar",[83,87,91,95,99,103],{"name":84,"color":85,"percentage":86},"Python","#3572A5",41.5,{"name":88,"color":89,"percentage":90},"Jupyter Notebook","#DA5B0B",32.3,{"name":92,"color":93,"percentage":94},"Cython","#fedf5b",11.3,{"name":96,"color":97,"percentage":98},"C++","#f34b7d",9.5,{"name":100,"color":101,"percentage":102},"TeX","#3D6117",4.3,{"name":104,"color":105,"percentage":106},"C","#555555",1.2,1618,175,"2026-04-09T07:32:59","BSD-3-Clause","Linux, macOS, Windows","未说明","未说明（处理百万级数据点时建议大内存）",{"notes":115,"python":116,"dependencies":117},"需要从源码编译，系统必须安装 C\u002FC++ 编译器且支持 OpenMP 以启用多线程（macOS 上旧版 clang 可能不支持）。可选安装 FFTW3 库以提升大规模数据集（百万级）的计算速度，否则将使用较慢的 numpy FFT 实现。","支持的 Python 版本（参考官方支持列表）",[118,119,120],"numpy","scikit-learn","FFTW3 (可选)",[14],[123,124,125,126,127],"tsne","visualization","machine-learning","dimensionality-reduction","embedding","2026-03-27T02:49:30.150509","2026-04-11T03:26:17.944378",[131,136,141,145,150,154,158,162],{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},28856,"openTSNE 与 FIt-SNE 在运行时间和内存使用上有什么区别？为什么 openTSNE 有时看起来更慢或消耗更多内存？","openTSNE 首次运行时可能会因为 Numba 的 JIT（即时）编译过程而显得较慢，这会导致第一次调用耗时稍长。关于内存问题，如果使用 pynndescent 进行大规模数据的 kNN 搜索，可能会占用大量内存（例如在 42 万条数据上超过 7GB）。用户可以通过实现或使用替代的近似最近邻库（如 Annoy）来优化性能和内存占用。有用户反馈集成 Annoy 后效果良好。","https:\u002F\u002Fgithub.com\u002Fpavlin-policar\u002FopenTSNE\u002Fissues\u002F101",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},28857,"为什么 transform() 函数的默认 exaggeration 参数设置为 2，而 momentum 设置为 0？","transform() 函数用于将新数据映射到现有的嵌入空间中。默认设置 exaggeration=2 和 momentum=0 是为了适应这种“样本外”（out-of-sample）的嵌入场景，这与训练全新模型时的参数策略不同。虽然这看起来可能有些反直觉，但对于将新点定位到现有结构中通常是有效的。如果只需要基于 k 近邻中位数的初始化而不进行迭代优化，理论上可以设置 n_iter=0，但这取决于具体的使用场景。","https:\u002F\u002Fgithub.com\u002Fpavlin-policar\u002FopenTSNE\u002Fissues\u002F62",{"id":142,"question_zh":143,"answer_zh":144,"source_url":140},28858,"如何在 openTSNE 中为 transform() 操作指定不同的距离度量（例如从欧氏距离改为相关系数距离）？","目前 openTSNE 不支持直接在 transform() 函数中传递 metric 参数来改变距离度量，因为这会导致需要重新计算最近邻对象，从而显著降低速度且使 API 变得复杂（特别是针对单细胞测序等特定领域的工作流）。推荐的解决方案是手动修改嵌入对象的 affinities 属性。具体代码如下：\n\nembedding.affinities = openTSNE.affinity.PerplexityBasedNN(x_train_genes, metric=\"cosine\")\nnew_embedding = embedding.transform(x_new_genes)\n\n虽然这需要多写两行代码，但它明确地展示了操作过程，并且易于调整参数。维护者建议通过示例笔记本（notebook）来展示这种高级用法，而不是将其硬编码到通用库的 API 中。",{"id":146,"question_zh":147,"answer_zh":148,"source_url":149},28859,"BH 算法与小数据集的性能表现如何？在什么数据规模下 BH 比 FFT 更快？","对于较小的数据集（通常指 n \u003C 10,000），BH 算法和 FFT 方法的速度都非常快（1000 次迭代通常在 1 分钟以内），因此具体的时间差异在实际应用中往往不重要。BH 在某些小数据场景下可能略快，但在大多数情况下，两者的性能差异不足以成为选择的主要依据，除非是在对时间极度敏感的特定小规模测试中。","https:\u002F\u002Fgithub.com\u002Fpavlin-policar\u002FopenTSNE\u002Fissues\u002F7",{"id":151,"question_zh":152,"answer_zh":153,"source_url":149},28860,"为什么 openTSNE 使用基于 Numba 的最近邻下降实现，而不是像 annoy 这样的成熟库？","openTSNE 最初选择了基于 Numba 的最近邻下降实现（类似于 UMAP 的做法），以追求特定的性能优化和灵活性。然而，社区用户已经成功实现了 Annoy 的集成并反馈其工作良好。如果用户发现 pynndescent 在某些情况下内存占用过高或速度不理想，可以考虑使用或贡献 Annoy 等其他近似最近邻库的支持。维护者对集成其他库持开放态度，只要它们能提供更好的性能或稳定性。",{"id":155,"question_zh":156,"answer_zh":157,"source_url":149},28861,"openTSNE 是否支持将新数据添加到现有的嵌入中（增量更新）？原理是什么？","是的，openTSNE 支持通过直接优化将新数据添加到现有嵌入中，这是其独特功能之一。其基本原理是：固定现有数据点的嵌入位置，计算扩展数据集（原始数据 + 新数据）的所有亲和度（affinities），然后在优化成本函数时，只允许新数据点的位置发生变化。这种方法可以避免重新训练整个模型，但有时较难获得完美的嵌入效果，不过具有很大的应用潜力。",{"id":159,"question_zh":160,"answer_zh":161,"source_url":149},28862,"在处理 UMI 数据进行特征选择时，阈值应该设为多少？论文中的描述是否正确？","在处理 UMI 数据集（如 Macosko 数据）进行特征选择时，正确的阈值应该是 0，而不是某些预印本论文中描述的 32。如果错误地使用 32 作为阈值，几乎不会选中任何基因。用户的代码实现是正确的，但相关论文的文本描述存在错误，需要在修订时更正。",{"id":163,"question_zh":164,"answer_zh":165,"source_url":149},28863,"PCA 主成分的符号（正负）是如何确定的？为什么代码中会对某些分量取反？","主成分（PCA eigenvectors）的符号在数学上是任意的。为了提高图表的可复现性，openTSNE 遵循以下规则固定前两个主成分的符号：检查每个 PCA 特征向量的值之和，如果和为负数，则将该向量的所有值翻转符号（乘以 -1），确保总和为正。代码行 `U[:, np.sum(V,axis=1)\u003C0] *= -1` 正是执行这一逻辑，以保证结果的一致性。",[167,172,177,182,187,192,197,202,207,212],{"id":168,"version":169,"summary_zh":170,"released_at":171},197691,"v1.0.2","常规维护，以使 openTSNE 与 Python 版本及依赖项保持同步。\n\n## 变更\n\n- 为 Python 3.12 构建轮子包 (#255)\n- 将最低 Python 版本更新为 3.9 (4e86511b1a2c041d122cb2869480b0c96af79d63)\n- 添加对 NumPy 2.x 的支持 (aa3d76c2d86055caae0601cec10dd53db7769b8e)","2024-08-13T11:02:28",{"id":173,"version":174,"summary_zh":175,"released_at":176},197692,"v1.0.1","## 变更\r\n\r\n- 维护 setup.py 文件 (#249)\r\n- 移除对 Python 3.6 的支持 (#249)\r\n- 在精确黑洞实现中正确实现 dof 参数 (#246)","2023-11-29T14:50:50",{"id":178,"version":179,"summary_zh":180,"released_at":181},197693,"v1.0.0","鉴于 openTSNE 长期以来的稳定性，发布 v1.0.0 版本可谓水到渠成。\n\n## 变更\n\n- 修复了与初始化、动量和学习率相关的多处文档问题 (#243)\n- 将 Python 3.11 纳入测试和构建矩阵\n- 统一亲和力核现在支持 `mean` 和 `max` 模式 (#242)","2023-05-24T13:51:37",{"id":183,"version":184,"summary_zh":185,"released_at":186},197694,"v0.7.1","# 错误修复\n\n- （紧急）修复包含重复行的数据中的内存错误 (#236)","2023-02-20T15:45:58",{"id":188,"version":189,"summary_zh":190,"released_at":191},197695,"v0.7.0","## 变更\n- 默认情况下，我们现在会为非随机初始化方案添加抖动。这几乎不会影响最终的可视化效果，但有助于避免在点被初始化到完全相同位置时可能出现的问题（#225）。\n- 默认情况下，学习率现在计算为 `N\u002Fexaggeration`。这将加快嵌入的收敛速度。需要注意的是，EE 阶段的学习率与标准阶段的学习率不同。此外，我们在两个阶段都将 `momentum` 设置为 0.8。此前，EE 阶段为 0.5，标准阶段为 0.8。这也同样加快了收敛速度（#220）。\n- 添加 `PrecomputedAffinities` 来封装方阵形式的亲和力矩阵（#217）。\n\n## 构建变更\n- 构建支持 ARM 的 `universal2` macOS 轮子（#226）。\n\n## Bug 修复\n- 修复较小数据集上的 BH 收缩问题（#235）。\n- 修复优化器中的 `updates` 在多次优化调用之间未能正确存储的问题（#229）。\n- 修复在某些罕见用例中，`inplace=True` 优化会改变初始值本身的问题（#225）。\n\n一如既往，特别感谢 @dkobak 在几乎所有这些 bug 和变更中提供的帮助。","2023-02-15T15:07:54",{"id":193,"version":194,"summary_zh":195,"released_at":196},197696,"v0.6.2","## 变更\n- 默认情况下，我们现在使用 `MultiscaleMixture` 亲和力模型，允许传入一个困惑度列表，而不是单个困惑度值。这完全向后兼容。\n- 以前，困惑度值会根据数据集进行调整。例如，当我们传入 `perplexity=100` 且 `N=150` 时，`TSNE.perplexity` 会被设置为 50。现在则保持该值不变，并添加一个 `effective_perplexity_` 属性（遵循 scikit-learn 的惯例，用于存储经过校正的困惑度值）。\n- 修复了一个 bug：在转换过程中即使使用 BH 优化，也会准备插值网格。\n- 允许使用预计算的距离调用 `.transform` 方法。在这种情况下，数据矩阵将被视为距离矩阵。\n\n## 构建变更\n- 使用 `oldest-supported-numpy` 进行构建。\n- 遵循 NumPy 的做法，将 Linux 轮包构建平台从 `manylinux2010` 更改为 `manylinux2014`。\n- 将 macOS 轮包构建平台从 Azure VM 上的 `macOS-10.14` 更改为 `macOS-10.15`。\n- 修复了与 clang-13 相关的潜在问题：clang-13 在启用 `-ffast-math` 标志时确实会对无穷大进行优化处理。","2022-03-18T13:55:30",{"id":198,"version":199,"summary_zh":200,"released_at":201},197697,"v0.6.0","变更：\n- 从 `TSNE` 构造函数中移除 `affinites` 参数，在 `.fit` 方法中允许自定义亲和力和初始化方式。这在处理非表格数据时改进了 API，但不向后兼容。\n- 添加 `metric=\"precomputed\"` 参数。同时新增 `openTSNE.nearest_neighbors.PrecomputedDistanceMatrix` 和 `openTSNE.nearest_neighbors.PrecomputedNeighbors` 类。\n- 向 `openTSNE.affinity` 类添加 `knn_index` 参数。\n- 添加针对 Annoy 对象序列化的（不太理想的）变通方案。\n- 将推荐的 FFTW box 范围扩展至 1000。\n- 移除已弃用的 `openTSNE.nearest_neighbors.BallTree`。\n- 移除已弃用的 `openTSNE.callbacks.ErrorLogger`。\n- 移除已弃用的 `TSNE.neighbors_method` 属性。\n- 新增并设为默认值的 `negative_gradient_method=\"auto\"`。","2021-04-25T19:32:11",{"id":203,"version":204,"summary_zh":205,"released_at":206},197698,"v0.5.0","主要变更：\n- 为 macOS 10.6 目标平台构建轮子包\n- 更新至 annoy v1.17.0，这将显著提升多线程性能。","2020-12-24T11:58:16",{"id":208,"version":209,"summary_zh":210,"released_at":211},197699,"v0.4.0","**重大变更：**\n- 移除 numba 依赖，改用 Annoy 近邻搜索。Pynndescent 现在是可选的，需手动安装后方可使用。\n- 通过固定参考插值网格大幅加速变换过程，并将新点限制在以参考嵌入为中心的圆内。\n- 实现可变自由度。\n\n**次要变更：**\n- 添加基于扩散图的谱初始化方法。\n- 将繁琐的 `ErrorLogger` 回调替换为 `verbose` 标志。\n- 将默认迭代次数改为 750 次。\n- 增加 `learning_rate=\"auto\"` 选项。\n- 移除 `min_grad_norm` 参数。\n\n**错误修复：**\n- 修复 KL 散度有时会报告为 NaN 的情况。","2020-05-04T12:45:49",{"id":213,"version":214,"summary_zh":215,"released_at":216},197700,"v0.2.0","为使使用尽可能简便，并去除对 FFTW 的外部依赖（此前需在本地安装），本次更新将 FFTW 替换为 NumPy 的 FFT 实现。","2018-09-11T09:56:58"]