[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-dauparas--ProteinMPNN":3,"tool-dauparas--ProteinMPNN":65},[4,23,32,40,49,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85013,2,"2026-04-06T11:09:19",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[17,13,20,19,18],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",75097,"2026-04-07T22:51:14",[19,13,20,18],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"status":22},3215,"awesome-machine-learning","josephmisiti\u002Fawesome-machine-learning","awesome-machine-learning 是一份精心整理的机器学习资源清单，汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点，这份清单按编程语言（如 Python、C++、Go 等）和应用场景（如计算机视觉、自然语言处理、深度学习等）进行了系统化分类，帮助使用者快速定位高质量项目。\n\n它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库，还是资深工程师对比不同语言的技术选型，都能从中获得极具价值的参考。此外，清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源，构建了从学习到实践的全链路支持体系。\n\n其独特亮点在于严格的维护标准：明确标记已停止维护或长期未更新的项目，确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”，awesome-machine-learning 以开源协作的方式持续更新，旨在降低技术探索门槛，让每一位从业者都能高效地站在巨人的肩膀上创新。",72149,1,"2026-04-03T21:50:24",[20,18],{"id":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":46,"last_commit_at":55,"category_tags":56,"status":22},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65697,"2026-04-07T23:34:58",[20,18,14],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":10,"last_commit_at":63,"category_tags":64,"status":22},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[20,14,18],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":79,"owner_location":80,"owner_email":79,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":29,"env_os":101,"env_gpu":102,"env_ram":101,"env_deps":103,"category_tags":109,"github_topics":79,"view_count":10,"oss_zip_url":79,"oss_zip_packed_at":79,"status":22,"created_at":110,"updated_at":111,"faqs":112,"releases":147},5339,"dauparas\u002FProteinMPNN","ProteinMPNN","Code for the ProteinMPNN paper","ProteinMPNN 是一款基于深度学习的开源工具，专为蛋白质序列设计而生。它核心解决了“逆折叠”难题：在已知蛋白质三维骨架结构的前提下，精准预测出能够稳定折叠成该结构的最优氨基酸序列。这对于人工设计新型酶、药物靶点及功能蛋白至关重要。\n\n该工具主要面向生物计算研究人员、合成生物学家及相关领域的开发者。用户只需提供蛋白质的 PDB 结构文件，即可利用预训练模型快速生成多条高成功率候选序列，同时也支持对现有序列进行稳定性评分或概率分析。\n\nProteinMPNN 的技术亮点在于其高效的图神经网络架构，不仅推理速度极快，且在序列恢复率等关键指标上显著优于传统方法。它提供了多种预训练权重，包括适用于完整骨架的高精度模型、仅依赖 Cα原子的简化模型，以及专门针对可溶性蛋白优化的版本。此外，项目配套了丰富的辅助脚本，支持灵活设定固定残基、添加氨基酸偏好及调整采样温度，既适合通过 Google Colab 快速上手，也便于专业用户进行本地化大规模定制开发。","# ProteinMPNN\n![ProteinMPNN](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdauparas_ProteinMPNN_readme_15b341d8b00e.png)\nRead [ProteinMPNN paper](https:\u002F\u002Fwww.biorxiv.org\u002Fcontent\u002F10.1101\u002F2022.06.03.494563v1).\n\nTo run ProteinMPNN clone this github repo and install Python>=3.0, PyTorch, Numpy. \n\nFull protein backbone models: `vanilla_model_weights\u002Fv_48_002.pt, v_48_010.pt, v_48_020.pt, v_48_030.pt`, `soluble_model_weights\u002Fv_48_010.pt, v_48_020.pt`.\n\nCA only models: `ca_model_weights\u002Fv_48_002.pt, v_48_010.pt, v_48_020.pt`. Enable flag `--ca_only` to use these models.\n\nHelper scripts: `helper_scripts` - helper functions to parse PDBs, assign which chains to design, which residues to fix, adding AA bias, tying residues etc.\n\nCode organization:\n* `protein_mpnn_run.py` - the main script to initialialize and run the model.\n* `protein_mpnn_utils.py` - utility functions for the main script.\n* `examples\u002F` - simple code examples.\n* `inputs\u002F` - input PDB files for examples\n* `outputs\u002F` - outputs from examples\n* `colab_notebooks\u002F` - Google Colab examples\n* `training\u002F` - code and data to retrain the model\n-----------------------------------------------------------------------------------------------------\nInput flags for `protein_mpnn_run.py`:\n```\n    argparser.add_argument(\"--suppress_print\", type=int, default=0, help=\"0 for False, 1 for True\")\n    argparser.add_argument(\"--ca_only\", action=\"store_true\", default=False, help=\"Parse CA-only structures and use CA-only models (default: false)\")\n    argparser.add_argument(\"--path_to_model_weights\", type=str, default=\"\", help=\"Path to model weights folder;\")\n    argparser.add_argument(\"--model_name\", type=str, default=\"v_48_020\", help=\"ProteinMPNN model name: v_48_002, v_48_010, v_48_020, v_48_030; v_48_010=version with 48 edges 0.10A noise\")\n    argparser.add_argument(\"--use_soluble_model\", action=\"store_true\", default=False, help=\"Flag to load ProteinMPNN weights trained on soluble proteins only.\")\n    argparser.add_argument(\"--seed\", type=int, default=0, help=\"If set to 0 then a random seed will be picked;\")\n    argparser.add_argument(\"--save_score\", type=int, default=0, help=\"0 for False, 1 for True; save score=-log_prob to npy files\")\n    argparser.add_argument(\"--path_to_fasta\", type=str, default=\"\", help=\"score provided input sequence in a fasta format; e.g. GGGGGG\u002FPPPPS\u002FWWW for chains A, B, C sorted alphabetically and separated by \u002F\")\n    argparser.add_argument(\"--save_probs\", type=int, default=0, help=\"0 for False, 1 for True; save MPNN predicted probabilites per position\")\n    argparser.add_argument(\"--score_only\", type=int, default=0, help=\"0 for False, 1 for True; score input backbone-sequence pairs\")\n    argparser.add_argument(\"--conditional_probs_only\", type=int, default=0, help=\"0 for False, 1 for True; output conditional probabilities p(s_i given the rest of the sequence and backbone)\")\n    argparser.add_argument(\"--conditional_probs_only_backbone\", type=int, default=0, help=\"0 for False, 1 for True; if true output conditional probabilities p(s_i given backbone)\")\n    argparser.add_argument(\"--unconditional_probs_only\", type=int, default=0, help=\"0 for False, 1 for True; output unconditional probabilities p(s_i given backbone) in one forward pass\")\n    argparser.add_argument(\"--backbone_noise\", type=float, default=0.00, help=\"Standard deviation of Gaussian noise to add to backbone atoms\")\n    argparser.add_argument(\"--num_seq_per_target\", type=int, default=1, help=\"Number of sequences to generate per target\")\n    argparser.add_argument(\"--batch_size\", type=int, default=1, help=\"Batch size; can set higher for titan, quadro GPUs, reduce this if running out of GPU memory\")\n    argparser.add_argument(\"--max_length\", type=int, default=200000, help=\"Max sequence length\")\n    argparser.add_argument(\"--sampling_temp\", type=str, default=\"0.1\", help=\"A string of temperatures, 0.2 0.25 0.5. Sampling temperature for amino acids. Suggested values 0.1, 0.15, 0.2, 0.25, 0.3. Higher values will lead to more diversity.\")\n    argparser.add_argument(\"--out_folder\", type=str, help=\"Path to a folder to output sequences, e.g. \u002Fhome\u002Fout\u002F\")\n    argparser.add_argument(\"--pdb_path\", type=str, default='', help=\"Path to a single PDB to be designed\")\n    argparser.add_argument(\"--pdb_path_chains\", type=str, default='', help=\"Define which chains need to be designed for a single PDB \")\n    argparser.add_argument(\"--jsonl_path\", type=str, help=\"Path to a folder with parsed pdb into jsonl\")\n    argparser.add_argument(\"--chain_id_jsonl\",type=str, default='', help=\"Path to a dictionary specifying which chains need to be designed and which ones are fixed, if not specied all chains will be designed.\")\n    argparser.add_argument(\"--fixed_positions_jsonl\", type=str, default='', help=\"Path to a dictionary with fixed positions\")\n    argparser.add_argument(\"--omit_AAs\", type=list, default='X', help=\"Specify which amino acids should be omitted in the generated sequence, e.g. 'AC' would omit alanine and cystine.\")\n    argparser.add_argument(\"--bias_AA_jsonl\", type=str, default='', help=\"Path to a dictionary which specifies AA composion bias if neededi, e.g. {A: -1.1, F: 0.7} would make A less likely and F more likely.\")\n    argparser.add_argument(\"--bias_by_res_jsonl\", default='', help=\"Path to dictionary with per position bias.\")\n    argparser.add_argument(\"--omit_AA_jsonl\", type=str, default='', help=\"Path to a dictionary which specifies which amino acids need to be omited from design at specific chain indices\")\n    argparser.add_argument(\"--pssm_jsonl\", type=str, default='', help=\"Path to a dictionary with pssm\")\n    argparser.add_argument(\"--pssm_multi\", type=float, default=0.0, help=\"A value between [0.0, 1.0], 0.0 means do not use pssm, 1.0 ignore MPNN predictions\")\n    argparser.add_argument(\"--pssm_threshold\", type=float, default=0.0, help=\"A value between -inf + inf to restric per position AAs\")\n    argparser.add_argument(\"--pssm_log_odds_flag\", type=int, default=0, help=\"0 for False, 1 for True\")\n    argparser.add_argument(\"--pssm_bias_flag\", type=int, default=0, help=\"0 for False, 1 for True\")\n    argparser.add_argument(\"--tied_positions_jsonl\", type=str, default='', help=\"Path to a dictionary with tied positions\")\n\n```\n-----------------------------------------------------------------------------------------------------\nFor example to make a conda environment to run ProteinMPNN:\n* `conda create --name mlfold` - this creates conda environment called `mlfold`\n* `source activate mlfold` - this activate environment\n* `conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch` - install pytorch following steps from https:\u002F\u002Fpytorch.org\u002F\n-----------------------------------------------------------------------------------------------------\nThese are provided `examples\u002F`:\n* `submit_example_1.sh` - simple monomer example \n* `submit_example_2.sh` - simple multi-chain example\n* `submit_example_3.sh` - directly from the .pdb path\n* `submit_example_3_score_only.sh` - return score only (model's uncertainty)\n* `submit_example_3_score_only_from_fasta.sh` - return score only (model's uncertainty) loading sequence from fasta files\n* `submit_example_4.sh` - fix some residue positions\n* `submit_example_4_non_fixed.sh` - specify which positions to design\n* `submit_example_5.sh` - tie some positions together (symmetry)\n* `submit_example_6.sh` - homooligomer example\n* `submit_example_7.sh` - return sequence unconditional probabilities (PSSM like)\n* `submit_example_8.sh` - add amino acid bias\n* `submit_example_pssm.sh` - use PSSM bias when designing sequences\n-----------------------------------------------------------------------------------------------------\nOutput example:\n```\n>3HTN, score=1.1705, global_score=1.2045, fixed_chains=['B'], designed_chains=['A', 'C'], model_name=v_48_020, git_hash=015ff820b9b5741ead6ba6795258f35a9c15e94b, seed=37\nNMYSYKKIGNKYIVSINNHTEIVKALNAFCKEKGILSGSINGIGAIGELTLRFFNPKTKAYDDKTFREQMEISNLTGNISSMNEQVYLHLHITVGRSDYSALAGHLLSAIQNGAGEFVVEDYSERISRTYNPDLGLNIYDFER\u002FNMYSYKKIGNKYIVSINNHTEIVKALNAFCKEKGILSGSINGIGAIGELTLRFFNPKTKAYDDKTFREQMEISNLTGNISSMNEQVYLHLHITVGRSDYSALAGHLLSAIQNGAGEFVVEDYSERISRTYNPDLGLNIYDFER\n>T=0.1, sample=1, score=0.7291, global_score=0.9330, seq_recovery=0.5736\nNMYSYKKIGNKYIVSINNHTEIVKALKKFCEEKNIKSGSVNGIGSIGSVTLKFYNLETKEEELKTFNANFEISNLTGFISMHDNKVFLDLHITIGDENFSALAGHLVSAVVNGTCELIVEDFNELVSTKYNEELGLWLLDFEK\u002FNMYSYKKIGNKYIVSINNHTDIVTAIKKFCEDKKIKSGTINGIGQVKEVTLEFRNFETGEKEEKTFKKQFTISNLTGFISTKDGKVFLDLHITFGDENFSALAGHLISAIVDGKCELIIEDYNEEINVKYNEELGLYLLDFNK\n>T=0.1, sample=2, score=0.7414, global_score=0.9355, seq_recovery=0.6075\nNMYKYKKIGNKYIVSINNHTEIVKAIKEFCKEKNIKSGTINGIGQVGKVTLRFYNPETKEYTEKTFNDNFEISNLTGFISTYKNEVFLHLHITFGKSDFSALAGHLLSAIVNGICELIVEDFKENLSMKYDEKTGLYLLDFEK\u002FNMYKYKKIGNKYVVSINNHTEIVEALKAFCEDKKIKSGTVNGIGQVSKVTLKFFNIETKESKEKTFNKNFEISNLTGFISEINGEVFLHLHITIGDENFSALAGHLLSAVVNGEAILIVEDYKEKVNRKYNEELGLNLLDFNL\n```\n* `score` - average over residues that were designed negative log probability of sampled amino acids\n* `global score` - average over all residues in all chains negative log probability of sampled\u002Ffixed amino acids\n* `fixed_chains` - chains that were not designed (fixed)\n* `designed_chains` - chains that were redesigned\n* `model_name\u002FCA_model_name` - model name that was used to generate results, e.g. `v_48_020`\n* `git_hash` - github version that was used to generate outputs\n* `seed` - random seed\n* `T=0.1` - temperature equal to 0.1 was used to sample sequences\n* `sample` - sequence sample number 1, 2, 3...etc\n-----------------------------------------------------------------------------------------------------\n```\n@article{dauparas2022robust,\n  title={Robust deep learning--based protein sequence design using ProteinMPNN},\n  author={Dauparas, Justas and Anishchenko, Ivan and Bennett, Nathaniel and Bai, Hua and Ragotte, Robert J and Milles, Lukas F and Wicky, Basile IM and Courbet, Alexis and de Haas, Rob J and Bethel, Neville and others},\n  journal={Science},\n  volume={378},\n  number={6615},  \n  pages={49--56},\n  year={2022},\n  publisher={American Association for the Advancement of Science}\n}\n```\n-----------------------------------------------------------------------------------------------------\n","# ProteinMPNN\n![ProteinMPNN](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdauparas_ProteinMPNN_readme_15b341d8b00e.png)\n请阅读 [ProteinMPNN 论文](https:\u002F\u002Fwww.biorxiv.org\u002Fcontent\u002F10.1101\u002F2022.06.03.494563v1)。\n\n要运行 ProteinMPNN，请克隆此 GitHub 仓库，并安装 Python>=3.0、PyTorch 和 Numpy。\n\n完整蛋白质骨架模型：`vanilla_model_weights\u002Fv_48_002.pt, v_48_010.pt, v_48_020.pt, v_48_030.pt`，`soluble_model_weights\u002Fv_48_010.pt, v_48_020.pt`。\n\n仅 CA 模型：`ca_model_weights\u002Fv_48_002.pt, v_48_010.pt, v_48_020.pt`。启用 `--ca_only` 标志以使用这些模型。\n\n辅助脚本：`helper_scripts` - 用于解析 PDB 文件、指定哪些链需要设计、哪些残基需要固定、添加氨基酸偏好、约束残基等的辅助函数。\n\n代码组织：\n* `protein_mpnn_run.py` - 用于初始化和运行模型的主脚本。\n* `protein_mpnn_utils.py` - 主脚本的实用函数。\n* `examples\u002F` - 简单的代码示例。\n* `inputs\u002F` - 示例输入的 PDB 文件。\n* `outputs\u002F` - 示例输出。\n* `colab_notebooks\u002F` - Google Colab 示例。\n* `training\u002F` - 用于重新训练模型的代码和数据。\n-----------------------------------------------------------------------------------------------------\n`protein_mpnn_run.py` 的输入参数：\n```\n    argparser.add_argument(\"--suppress_print\", type=int, default=0, help=\"0 表示 False，1 表示 True\")\n    argparser.add_argument(\"--ca_only\", action=\"store_true\", default=False, help=\"解析仅 CA 结构并使用仅 CA 模型（默认：False）\")\n    argparser.add_argument(\"--path_to_model_weights\", type=str, default=\"\", help=\"模型权重文件夹路径；\")\n    argparser.add_argument(\"--model_name\", type=str, default=\"v_48_020\", help=\"ProteinMPNN 模型名称：v_48_002、v_48_010、v_48_020、v_48_030；v_48_010 是带有 48 条边且噪声为 0.10Å 的版本\")\n    argparser.add_argument(\"--use_soluble_model\", action=\"store_true\", default=False, help=\"标志，用于加载仅在可溶性蛋白质上训练的 ProteinMPNN 权重。\")\n    argparser.add_argument(\"--seed\", type=int, default=0, help=\"如果设置为 0，则会随机选择一个种子；\")\n    argparser.add_argument(\"--save_score\", type=int, default=0, help=\"0 表示 False，1 表示 True；将得分=-log_prob 保存为 npy 文件\")\n    argparser.add_argument(\"--path_to_fasta\", type=str, default=\"\", help=\"以 FASTA 格式提供评分用的输入序列；例如 GGGGGG\u002FPPPPS\u002FWWW，分别对应按字母顺序排列并用 \u002F 分隔的 A、B、C 链\")\n    argparser.add_argument(\"--save_probs\", type=int, default=0, help=\"0 表示 False，1 表示 True；保存 MPNN 预测的每个位置的概率\")\n    argparser.add_argument(\"--score_only\", type=int, default=0, help=\"0 表示 False，1 表示 True；仅对输入的骨架-序列对进行评分\")\n    argparser.add_argument(\"--conditional_probs_only\", type=int, default=0, help=\"0 表示 False，1 表示 True；输出条件概率 p(s_i 给定序列和骨架的其余部分)\")\n    argparser.add_argument(\"--conditional_probs_only_backbone\", type=int, default=0, help=\"0 表示 False，1 表示 True；如果为真，则输出条件概率 p(s_i 给定骨架)\")\n    argparser.add_argument(\"--unconditional_probs_only\", type=int, default=0, help=\"0 表示 False，1 表示 True；在一次前向传播中输出无条件概率 p(s_i 给定骨架)\")\n    argparser.add_argument(\"--backbone_noise\", type=float, default=0.00, help=\"添加到骨架原子上的高斯噪声的标准差\")\n    argparser.add_argument(\"--num_seq_per_target\", type=int, default=1, help=\"每个目标生成的序列数量\")\n    argparser.add_argument(\"--batch_size\", type=int, default=1, help=\"批大小；对于 Titan 或 Quadro 显卡可以设置得更高，如果显存不足则应降低该值\")\n    argparser.add_argument(\"--max_length\", type=int, default=200000, help=\"最大序列长度\")\n    argparser.add_argument(\"--sampling_temp\", type=str, default=\"0.1\", help=\"温度字符串，如 0.2 0.25 0.5。用于氨基酸采样的温度。建议值为 0.1、0.15、0.2、0.25、0.3。较高的值会导致更多多样性。\")\n    argparser.add_argument(\"--out_folder\", type=str, help=\"输出序列的文件夹路径，例如 \u002Fhome\u002Fout\u002F\")\n    argparser.add_argument(\"--pdb_path\", type=str, default='', help=\"待设计的单个 PDB 文件路径\")\n    argparser.add_argument(\"--pdb_path_chains\", type=str, default='', help=\"定义单个 PDB 中哪些链需要设计\")\n    argparser.add_argument(\"--jsonl_path\", type=str, help=\"包含已解析为 jsonl 格式的 PDB 文件的文件夹路径\")\n    argparser.add_argument(\"--chain_id_jsonl\",type=str, default='', help=\"指定哪些链需要设计、哪些链固定不变的字典文件路径；若未指定，则所有链都将被设计。\")\n    argparser.add_argument(\"--fixed_positions_jsonl\", type=str, default='', help=\"包含固定位置的字典文件路径\")\n    argparser.add_argument(\"--omit_AAs\", type=list, default='X', help=\"指定在生成的序列中应省略哪些氨基酸，例如 'AC' 将省略丙氨酸和半胱氨酸。\")\n    argparser.add_argument(\"--bias_AA_jsonl\", type=str, default='', help=\"指定氨基酸组成偏好的字典文件路径，例如 {A: -1.1, F: 0.7} 会使 A 出现的可能性降低，而 F 出现的可能性增加。\")\n    argparser.add_argument(\"--bias_by_res_jsonl\", default='', help=\"包含按位置偏好的字典文件路径。\")\n    argparser.add_argument(\"--omit_AA_jsonl\", type=str, default='', help=\"包含在特定链索引处需要从设计中省略哪些氨基酸的字典文件路径\")\n    argparser.add_argument(\"--pssm_jsonl\", type=str, default='', help=\"包含 PSSM 的字典文件路径\")\n    argparser.add_argument(\"--pssm_multi\", type=float, default=0.0, help=\"一个介于 [0.0, 1.0] 之间的值，0.0 表示不使用 PSSM，1.0 表示忽略 MPNN 的预测\")\n    argparser.add_argument(\"--pssm_threshold\", type=float, default=0.0, help=\"一个介于负无穷到正无穷之间的值，用于限制每个位置可能出现的氨基酸\")\n    argparser.add_argument(\"--pssm_log_odds_flag\", type=int, default=0, help=\"0 表示 False，1 表示 True\")\n    argparser.add_argument(\"--pssm_bias_flag\", type=int, default=0, help=\"0 表示 False，1 表示 True\")\n    argparser.add_argument(\"--tied_positions_jsonl\", type=str, default='', help=\"包含约束位置关系的字典文件路径\")\n\n```\n-----------------------------------------------------------------------------------------------------\n例如，要创建一个用于运行 ProteinMPNN 的 conda 环境：\n* `conda create --name mlfold` - 这将创建名为 `mlfold` 的 conda 环境\n* `source activate mlfold` - 激活该环境\n* `conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch` - 按照 https:\u002F\u002Fpytorch.org\u002F 上的步骤安装 PyTorch\n-----------------------------------------------------------------------------------------------------\n以下是在 `examples\u002F` 目录中提供的示例脚本：\n* `submit_example_1.sh` - 简单的单体示例\n* `submit_example_2.sh` - 简单的多链示例\n* `submit_example_3.sh` - 直接从 .pdb 文件路径输入\n* `submit_example_3_score_only.sh` - 仅返回得分（模型不确定性）\n* `submit_example_3_score_only_from_fasta.sh` - 仅返回得分（模型不确定性），从 FASTA 文件加载序列\n* `submit_example_4.sh` - 固定某些残基位置\n* `submit_example_4_non_fixed.sh` - 指定需要设计的特定位置\n* `submit_example_5.sh` - 将某些位置绑定在一起（对称性）\n* `submit_example_6.sh` - 同源寡聚体示例\n* `submit_example_7.sh` - 返回序列的无条件概率（类似 PSSM）\n* `submit_example_8.sh` - 添加氨基酸偏好\n* `submit_example_pssm.sh` - 在序列设计时使用 PSSM 偏好\n-----------------------------------------------------------------------------------------------------\n输出示例：\n```\n>3HTN, score=1.1705, global_score=1.2045, fixed_chains=['B'], designed_chains=['A', 'C'], model_name=v_48_020, git_hash=015ff820b9b5741ead6ba6795258f35a9c15e94b, seed=37\nNMYSYKKIGNKYIVSINNHTEIVKALNAFCKEKGILSGSINGIGAIGELTLRFFNPKTKAYDDKTFREQMEISNLTGNISSMNEQVYLHLHITVGRSDYSALAGHLLSAIQNGAGEFVVEDYSERISRTYNPDLGLNIYDFER\u002FNMYSYKKIGNKYIVSINNHTEIVKALNAFCKEKGILSGSINGIGAIGELTLRFFNPKTKAYDDKTFREQMEISNLTGNISSMNEQVYLHLHITVGRSDYSALAGHLLSAIQNGAGEFVVEDYSERISRTYNPDLGLNIYDFER\n>T=0.1, sample=1, score=0.7291, global_score=0.9330, seq_recovery=0.5736\nNMYSYKKIGNKYIVSINNHTEIVKALKKFCEEKNIKSGSVNGIGSIGSVTLKFYNLETKEEELKTFNANFEISNLTGFISSMHDNKVFLDLHITIGDENFSALAGHLLSAVVNGTCELIVEDFNELVSTKYNEELGLWLLDFEK\u002FNMYSYKKIGNKYIVSINNHTDIVTAIKKFCEDKKIKSGTINGIGQVKEVTLEFRNFETGEKEEKTFKKQFTISNLTGFISTKDGKVFLDLHITFGDENFSALAGHLLSAIVDGKCELIIEDYNEEINVKYNEELGLYLLDFNK\n>T=0.1, sample=2, score=0.7414, global_score=0.9355, seq_recovery=0.6075\nNMYKYKKIGNKYIVSINNHTEIVKAIKEFCKEKNIKSGTINGIGQVGKVTLRFYNPETKEYTEKTFNDNFEISNLTGFISTYKNEVFLHLHITFGKSDFSALAGHLLSAIVNGICELIVEDFKENLSMKYDEKTGLYLLDFEK\u002FNMYKYKKIGNKYVVSINNHTEIVEALKAFCEDKKIKSGTVNGIGQVSKVTLKFFNIETKESKEKTFNKNFEISNLTGFISEINGEVFLHLHITIGDENFSALAGHLLSAVVNGEAILIVEDYKEKVNRKYNEELGLNLLDFNL\n```\n* `score` - 对所有被设计的残基，采样到的氨基酸的负对数概率的平均值\n* `global score` - 对所有链中的所有残基，采样或固定的氨基酸的负对数概率的平均值\n* `fixed_chains` - 未被设计、保持固定的链\n* `designed_chains` - 被重新设计的链\n* `model_name\u002FCA_model_name` - 用于生成结果的模型名称，例如 `v_48_020`\n* `git_hash` - 用于生成输出的 GitHub 版本号\n* `seed` - 随机种子\n* `T=0.1` - 使用温度 0.1 来采样序列\n* `sample` - 序列样本编号，如 1、2、3 等\n-----------------------------------------------------------------------------------------------------\n```\n@article{dauparas2022robust,\n  title={Robust deep learning--based protein sequence design using ProteinMPNN},\n  author={Dauparas, Justas and Anishchenko, Ivan and Bennett, Nathaniel and Bai, Hua and Ragotte, Robert J and Milles, Lukas F and Wicky, Basile IM and Courbet, Alexis and de Haas, Rob J and Bethel, Neville and others},\n  journal={Science},\n  volume={378},\n  number={6615},  \n  pages={49--56},\n  year={2022},\n  publisher={American Association for the Advancement of Science}\n}\n```\n-----------------------------------------------------------------------------------------------------","# ProteinMPNN 快速上手指南\n\nProteinMPNN 是一个基于深度学习的蛋白质序列设计工具，能够根据给定的蛋白质骨架结构生成高概率的氨基酸序列。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 需通过 WSL 运行)\n*   **Python**: 版本 >= 3.0 (推荐 3.8+)\n*   **硬件**: 推荐使用 NVIDIA GPU 以加速推理（支持 CUDA）\n*   **核心依赖**:\n    *   PyTorch\n    *   NumPy\n\n## 2. 安装步骤\n\n推荐使用 `conda` 创建独立的虚拟环境以避免依赖冲突。以下是标准的安装流程：\n\n### 2.1 克隆代码库\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN.git\ncd ProteinMPNN\n```\n\n### 2.2 创建并激活 Conda 环境\n```bash\nconda create --name mlfold python=3.9 -y\nconda activate mlfold\n```\n\n### 2.3 安装 PyTorch 和其他依赖\n**注意**：国内用户建议使用清华源或中科大源加速下载。请根据您的 CUDA 版本选择合适的命令（以下为 CUDA 11.3 示例）：\n\n```bash\n# 使用清华源安装 PyTorch (CUDA 11.3 版本)\npip install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcu113\n\n# 如果不需要 GPU 支持，可使用 CPU 版本：\n# pip install torch torchvision torchaudio --index-url https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Fcpu\n\n# 安装其他基础依赖\npip install numpy\n```\n\n## 3. 基本使用\n\nProteinMPNN 的核心脚本是 `protein_mpnn_run.py`。使用前请确保当前目录下有模型权重文件（通常位于 `vanilla_model_weights\u002F` 文件夹中）。\n\n### 3.1 最简单的单体蛋白设计示例\n\n假设您有一个名为 `example.pdb` 的蛋白质结构文件，想要对其所有链进行序列设计，生成 1 条序列：\n\n```bash\npython protein_mpnn_run.py \\\n    --pdb_path .\u002Finputs\u002Fexample.pdb \\\n    --out_folder .\u002Foutputs \\\n    --num_seq_per_target 1 \\\n    --sampling_temp \"0.1\" \\\n    --path_to_model_weights .\u002Fvanilla_model_weights \\\n    --model_name v_48_020\n```\n\n### 3.2 关键参数说明\n\n*   `--pdb_path`: 输入 PDB 文件的路径。\n*   `--out_folder`: 输出结果文件夹路径。\n*   `--num_seq_per_target`: 每个目标结构生成的序列数量。\n*   `--sampling_temp`: 采样温度。建议值：`0.1` (保守), `0.2`, `0.3` (多样性更高)。\n*   `--model_name`: 选择的模型版本。常用选项：\n    *   `v_48_002`: 噪声最小，最保守。\n    *   `v_48_020`: **推荐默认值**，平衡性能与多样性。\n    *   `v_48_030`: 噪声最大，多样性最高。\n*   `--ca_only`: 如果输入结构仅包含 Cα 原子，请添加此标志并使用 `ca_model_weights` 中的模型。\n\n### 3.3 输出结果解读\n\n运行完成后，输出文件夹中将包含 `.fa` 格式的文件。内容示例如下：\n\n```text\n>3HTN, score=1.1705, global_score=1.2045, fixed_chains=['B'], designed_chains=['A', 'C'], model_name=v_48_020\nNMYSYKKIGNKYIVSINNHTEIVKALNAFCKEKGILSGSINGIGAIGELTLRFFNPKTKAYDDKTFREQMEISNLTGNISSMNEQVYLHLHITVGRSDYSALAGHLLSAIQNGAGEFVVEDYSERISRTYNPDLGLNIYDFER\n```\n\n*   **score**: 设计残基的平均负对数概率（越低越好）。\n*   **global_score**: 所有残基（包括固定和设计部分）的平均负对数概率。\n*   **designed_chains**: 被重新设计的链 ID。\n*   **序列行**: 生成的氨基酸序列，多条链之间用 `\u002F` 分隔。\n\n### 3.4 进阶场景提示\n\n*   **固定特定链**: 使用 `--pdb_path_chains` 指定要设计的链，或使用 `--chain_id_jsonl` 进行更复杂的控制。\n*   **固定特定残基**: 使用 `--fixed_positions_jsonl` 传入字典，指定哪些位置保持不变。\n*   **仅评分**: 若已有序列想评估其合理性，设置 `--score_only 1` 并提供 `--path_to_fasta`。\n*   **对称性设计**: 对于同源寡聚体，可使用 `--tied_positions_jsonl` 强制对称位置生成相同氨基酸。\n\n更多详细用例脚本请参考项目自带的 `examples\u002F` 目录下的 `.sh` 文件。","某生物制药公司的研发团队正致力于优化一种新型抗癌抗体蛋白的热稳定性，需要在保持其结合活性的前提下，重新设计部分不稳定的氨基酸序列。\n\n### 没有 ProteinMPNN 时\n- **试错成本极高**：研究人员主要依赖经验法则或简单的能量函数进行突变预测，往往需要合成并测试数百个变体才能找到一个稳定结构，耗时数月。\n- **序列多样性匮乏**：传统方法生成的候选序列过于保守，难以跳出局部最优解，导致发现全新高稳定性序列的概率极低。\n- **忽略骨架灵活性**：现有工具难以在考虑蛋白质主链（Backbone）微小噪声的情况下生成序列，导致设计出的蛋白在实际折叠中容易失败。\n- **计算资源浪费**：为了获得可靠结果，团队不得不运行大量的分子动力学模拟来验证每一个手动设计的序列，算力消耗巨大。\n\n### 使用 ProteinMPNN 后\n- **生成效率飞跃**：利用 ProteinMPNN 的 `v_48_020` 模型，团队输入抗体 PDB 结构并固定关键结合位点，几分钟内即可生成数千个高概率的稳定序列候选者。\n- **精准可控设计**：通过 `--conditional_probs_only` 参数，研究人员能精确计算特定位置的条件概率，只替换那些对稳定性贡献低且不影响功能的残基。\n- **鲁棒性显著增强**：开启 `--backbone_noise` 参数引入主链噪声进行采样，使得生成的序列不仅能适应理想结构，还能容忍实际实验中的构象波动，成功率大幅提升。\n- **筛选流程简化**：借助 `--save_score` 功能直接输出序列的对数概率评分，快速筛选出前 5% 的高分序列进行湿实验验证，将研发周期从数月缩短至两周。\n\nProteinMPNN 通过将复杂的蛋白质逆折叠问题转化为高效的概率生成任务，彻底改变了理性蛋白设计的速度与成功率。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdauparas_ProteinMPNN_88c3ad5e.png","dauparas","Justas Dauparas","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdauparas_679d9320.jpg",null,"Seattle, WA","JustasDauparas","https:\u002F\u002Fdauparas.github.io\u002F","https:\u002F\u002Fgithub.com\u002Fdauparas",[85,89,93],{"name":86,"color":87,"percentage":88},"Jupyter Notebook","#DA5B0B",84.4,{"name":90,"color":91,"percentage":92},"Python","#3572A5",15.5,{"name":94,"color":95,"percentage":96},"Shell","#89e051",0.1,1692,455,"2026-04-07T10:36:20","MIT","未说明","非绝对必需（可调整 batch_size 适应），示例命令建议安装 cudatoolkit=11.3，适用于 Titan\u002FQuadro 等 NVIDIA GPU",{"notes":104,"python":105,"dependencies":106},"建议使用 conda 创建虚拟环境（如示例中的 mlfold）；可通过降低 --batch_size 参数在显存较小的 GPU 上运行；支持仅使用 CA 原子模型（需添加 --ca_only 标志）；提供多种预训练权重（全长骨架模型和可溶性蛋白模型）。",">=3.0",[107,108],"PyTorch","Numpy",[18],"2026-03-27T02:49:30.150509","2026-04-08T12:17:54.636255",[113,118,123,128,133,138,142],{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},24213,"为什么序列设计脚本需要输入蛋白质序列，而不仅仅是骨架结构？","模型的 `model.forward` 函数需要输入序列，因为它是自回归模型，建模过程为 `p(AA_n|backbone, AA_1, AA_2,...,AA_{n-1})`。在训练或评分时使用输入序列上下文（称为 Teacher Forcing）。如果您想仅基于骨架结构生成新序列而不依赖输入序列，应使用 `model.sample` 函数，该函数可以独立生成新序列。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F37",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},24214,"如何在异源寡聚体中让部分链（如 A、B、C）序列相同，而另一部分链（如 D、E、F）序列不同但内部相同？","可以通过 `--tied_positions_jsonl` 参数传递一个 JSON 字典来实现。对于想要序列相同的残基位置，需在字典中将它们关联起来。格式示例如下：`{\"protein_name\": [{\"A\": [1], \"B\": [1]}, {\"C\": [1], \"D\": [1]}, {\"A\": [2], \"B\": [2]}, ...]}`。这表示链 A 和 B 的第 1 位残基序列必须相同，链 C 和 D 的第 1 位残基序列必须相同，以此类推。请确保将此字典保存为 JSON 文件并传给 `protein_mpnn_run.py` 脚本。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F76",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},24215,"输出结果中出现异常氨基酸 'X' 是什么原因？","这通常是因为输入的 PDB 文件中存在残基跳跃（residue jumps）或缺失，这些位置在原始文件中可能被标记为 \"-\"， ProteinMPNN 将其输出为 \"X\"（表示未定义的氨基酸）。如果后续需要将序列用于 AlphaFold 或 ESM 等工具，通常可以直接移除这些 \"X\" 字符。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F25",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},24216,"如何使用可溶性模型（soluble model）优化膜蛋白以进行可溶性表达？","如果遇到生成的序列疏水性仍然过高的问题，建议更新到最新版本的 ProteinMPNN，因为维护者已经更新了 solubleMPNN 的模型权重。使用新权重并结合 `--use_soluble_model` 标志，通常能显著减少表面疏水残基并提高评分。此外，也可以尝试结合 AF2seq 修改输入起始序列来进一步优化。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F47",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},24217,"如何评估模型性能或与论文结果进行对比？","不应直接比较采样得到的序列恢复率（sequence recovery），而应比较困惑度（perplexity）。您可以参考论文中的 Table 1 (PDB Test Perplexity)，并使用类似 NeurIPS19 代码库中的方法来计算困惑度，以便在相同基准下评估模型表现。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F3",{"id":139,"question_zh":140,"answer_zh":141,"source_url":127},24218,"输出结果中的分数（score）、全局分数（global_score）和序列恢复率（seq_recovery）是越高越好还是越低越好？","分数（score，即负对数概率）是越低越好，它代表模型对预测结果的不确定性，分数越低表示模型越确定。至于序列恢复率（seq_recovery），通常是越高越好，表示设计序列与天然序列的相似度越高。",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},24219,"是否有脚本可以自动生成用于训练的 .pt 文件（如 PDBID_CHAINID.pt）？","官方仓库可能没有直接提供该脚本，但社区已有实现。例如，HyperMPNN 仓库（https:\u002F\u002Fgithub.com\u002Fmeilerlab\u002FHyperMPNN\u002Ftree\u002Fmain\u002Fmpnn_retrain_docu）已经实现并文档化了如何在预测结构的 PDB 文件上进行 MPNN 训练，您可以参考其代码来自定义训练脚本以直接从 PDB 文件加载数据。","https:\u002F\u002Fgithub.com\u002Fdauparas\u002FProteinMPNN\u002Fissues\u002F42",[148,153],{"id":149,"version":150,"summary_zh":151,"released_at":152},145801,"v1.0.1","将 Vanilla 版本和 CA 版本合并到一个脚本中！","2022-08-19T04:02:22",{"id":154,"version":155,"summary_zh":156,"released_at":157},145802,"v1.0.0","蛋白质MPNN初始代码版本。","2022-07-29T17:16:28"]