升级 NUPACK 4.1 并支持混合材料设计

This commit is contained in:
Lihatoo 2026-08-20 16:33:16 +08:00
parent 5daa60a464
commit c6189d857d
33 changed files with 5830 additions and 466 deletions

View file

@ -107,13 +107,15 @@
<nav class="toc">
<a class="button" href="#quick-start">快速跑通</a>
<a class="button" href="#targets">Targets 怎么填</a>
<a class="button" href="#mixed">混合材料 Design</a>
<a class="button" href="#hard">Hard constraints</a>
<a class="button" href="#soft">Soft constraints</a>
<a class="button" href="#staged">分阶段计算</a>
<a class="button" href="#speed">为什么会慢</a>
<a class="button" href="/#design-targets">跳到主界面 Targets</a>
<a class="button" href="/#design-hard">跳到主界面 Hard</a>
<a class="button" href="/#design-soft">跳到主界面 Soft</a>
<a class="button" href="/#history">跳到历史记录</a>
<a class="button" href="/workspace#design-targets">跳到工作台 Targets</a>
<a class="button" href="/workspace#design-hard">跳到工作台 Hard</a>
<a class="button" href="/workspace#design-soft">跳到工作台 Soft</a>
<a class="button" href="/cloud">打开云端记录</a>
</nav>
<section id="quick-start" class="card">
@ -151,8 +153,18 @@ target tube:
</table>
</section>
<section id="mixed" class="card">
<h2>3. 混合材料 Design</h2>
<p>选择 <code>rna-dna06</code><code>rna-merna06</code>Domain 约束必须显式标注小写材料前缀。点击“插入混合片段模板”可生成可直接编辑的起点:</p>
<pre><code>RNA/DNA: mixed1 = rN6dN6
RNA/2OMe: mixed1 = rN6mN6
材料也可设计: mixed1 = wN12</code></pre>
<p><code>r</code><code>d</code><code>m</code> 分别表示 RNA、DNA、2OMe-RNA<code>w</code> 表示 wildcard material。材料前缀不计入碱基长度IUPAC 约束与计数仍可组合,例如 <code>rS4dN8</code></p>
<p>链输入仍推荐填写 Domain composition例如 <code>A = mixed1</code><code>B = ~mixed1</code>。反向互补由所选模型的 material alphabet 计算,结果和“载入为 Analysis”都会保留材料前缀。</p>
</section>
<section id="hard" class="card">
<h2>3. Hard constraints 怎么用</h2>
<h2>4. Hard constraints 怎么用</h2>
<p>Hard constraint 是“必须满足”的约束,写错会让设计空间为空,或直接报错。</p>
<table>
<thead>
@ -170,13 +182,29 @@ target tube:
</section>
<section id="soft" class="card">
<h2>4. Soft constraints 和 weights</h2>
<h2>5. Soft constraints 和 weights</h2>
<p>Soft constraint 不会替代 ensemble defect只是给优化目标增加加权惩罚。权重越大设计器越偏向满足它但也可能变慢。</p>
<p>Defect weights 用来告诉设计器哪些 domain、strand、complex 或 tube 更重要。初学时建议先不填,确认 target 能跑通后再逐步添加。</p>
</section>
<section id="staged" class="card">
<h2>6. 推荐的分阶段流程</h2>
<p>复杂体系不要一开始就把搜索条件设到最终验证强度。推荐把“找候选序列”和“验证候选序列”分开:</p>
<table>
<thead>
<tr><th>阶段</th><th>建议设置</th><th>目的</th></tr>
</thead>
<tbody>
<tr><td>输入检查</td><td>1 trialmax size 2<code>f_stop=0.10.2</code>,填写明确的最大时间</td><td>先确认 targets、结构和约束可行并快速暴露填写错误。</td></tr>
<tr><td>正式设计</td><td>从已验证输入逐步收紧 <code>f_stop</code>;确有需要时再增加 trials</td><td>获得候选序列。每个 trial 都是一次完整随机搜索,不是免费的重复采样。</td></tr>
<tr><td>最终验证</td><td>把设计结果载入 Analysis以 max size 34 检查更大的复合物集合</td><td>保留严格的最终热力学验证,同时避免在每一步优化迭代中反复枚举大集合。</td></tr>
</tbody>
</table>
<p class="warn">分阶段流程会改变“在哪个阶段计算哪些集合”,但不会偷减最终验证。若研究目标明确要求在优化目标中直接包含 size 34 off-target应保留该设置并给任务填写最大时间。</p>
</section>
<section id="speed" class="card">
<h2>5. 为什么 Design 会慢</h2>
<h2>7. 为什么 Design 会慢</h2>
<p>NUPACK design 是优化问题,不是一次性的结构分析。影响耗时的主要因素:</p>
<ul>
<li><strong>off-target max size</strong> 越大,需要考虑的非目标复合物越多。</li>
@ -184,7 +212,9 @@ target tube:
<li><strong>trials</strong> 大于 1 时会跑多个随机种子NUPACK 源码里会并行提交多个 trial。</li>
<li><strong>hard constraints</strong> 太多或互相矛盾,会反复搜索甚至失败。</li>
</ul>
<p>当前服务已显式设置 NUPACK 的 <code>config.threads</code>,不再只依赖 <code>OMP_NUM_THREADS</code>。本地 NUPACK 源码里有 <code>NUPACK_CUDA</code> 编译选项,但当前 wheel/镜像不是 CUDA 构建;直接“打开 GPU”不能生效除非重新编译 NUPACK 的 CUDA 版本并替换镜像里的 wheel。</p>
<p>页面的“设计预检”会实时显示可变碱基数、固定目标数和复合物上限,并提醒无限时长、严格停止阈值、多 trial 与大 off-target 集合。它只做估算和提示,不会改写提交参数。</p>
<p>当前服务会按 CPU 和内存自动限制同时运行的任务数,并已显式设置 NUPACK 的 <code>config.threads</code>。这些调度参数不改变模型、约束或结果目标;它们主要用于防止多个 89 GB 任务把机器内存耗尽。增加线程不保证单个 design 等比例加速,因为部分优化阶段主要使用单核;多任务通常比单任务更容易占满多核。增加内存本身也不会让搜索更快,只会减少 OOM、换页和缓存压力。</p>
<p>当前 NUPACK 4.1.0.1 wheel/镜像不是 CUDA 构建,且官方分发包中没有附带 <code>source/</code> 源码树直接填写环境变量或安装显卡不能生效。GPU 路线需要重新编译或替换核心 wheel并对结果一致性与稳定性重新测试。</p>
</section>
</main>
</body>