Rosetta Tutorial 10 翻译 | 主要为 Minimizer Tutorial 部分

Pandas入门教程(二十二):股票数据分析实战——yfinance 获取数据、技术指标与收益率分析 把 Pandas 用在真实场景,才能体会它的价值。本文以茅台股票为例,用 yfinance 获取历史行情,完成缺失值处理与列筛选,绘制收盘价曲线,计算 SMA 移动平均线与 RSI 相对强弱指数,并通过日收益率、累计收益率和波动率完成完整的量化分析流程。 阅读详情

该文档翻译自Rosetta官网的教程性文档 Rosetta Tutorials, Demos, and Protocol Captures,原文链接:https://www.rosettacommons.org/demos/latest/Home 。“😇”内的内容为译者添加。

10. Minimization: Finding Deeper Energy Wells

KEYWORDS: CORE_CONCEPTS GENERAL

Tutorial by Kristen Blacklock (kristin.blacklock@rutgers.edu). Edited by Vikram K. Mulligan (vmullig@uw.edu). Created 20 June 2016.

Updated 29 May 2017 by Vikram K. Mulligan (vmullig@uw.edu) to reflect changes to the default scorefunction.

10.1. ~ 10.2. Introduction & Goals

蛋白质绝非静态结构,而是在其构象空间中不断波动,并作为某种状态的系综而存在。蛋白质在其所有构象中的每一个快照都可以与一个能量(函数)相关联,其中一些构象具有高能量,一些具有低能量。在分子建模中,通常需要找到该能量函数的全局最小值(代表最低能量构象)。然而,这是一项非常困难的任务,因为需要采样的能量空间非常大,所以我们只能选择另一种方法:寻找局部最小值。

而最小化(Minimization)是在给定起始结构的构象和能量的情况下,寻找能量函数中最接近局部最小值的一种技术。Rosetta 有一个核心算法,叫做最小化器(minimizer),它解决了将一个结构优化到它最近的局部能量最小值的问题:通过使用某种梯度下降最小化方法,以找到能量函数中最近的局部最小值。最小化器可以使用许多不同的最小化算法,但本质上,所有最小化算法都选择一个矢量作为下降方向,沿着这个矢量前进,直到能量停止下降(线性搜索,line search),然后选择一个新的方向并重复。在本教程中,我们将使用lbfgs\_armijo\_nonmonotone算法,这是一个只需要调用一次的多步骤算法(而不是调用重复迭代来达到收敛)。

一般来说,最小化是确定的,不像依赖于蒙特卡罗搜索的方法。多次重复最小化通常没有什么用处;所产生的系综不太可能因此而变多。这也侧面说明了,最小化对于不同平台之间,甚至不同编译器之间的微小数值精度差异非常敏感。

许多 Rosetta 模块调用最小化器,但最简单的方法之一是使用可执行程序minimize。在本教程中,您将学习以三种不同的方式使用特定的最小化算法,首先允许结构中的所有残基在最小化期间移动,然后使用两种方法,只允许自由度(degrees of freedom,DOFs)的一部分发生变化。具体来说,我们将:

  • 学习通过命令行运行score和minimize程序。
  • 创建并利用 约束文件(constraints file)来阻止CA原子移动。
  • 创建并利用 movemap 来控制最小化过程中允许移动的自由度。
  • 比较和分析每种最小化类型的输出文件和结构。

10.3. How-To: Minimize

10.3.1. Analyzing the input structure

查看3HON.pdb结构。这一结构直接取自 RCSB PDB,Rosetta认为其包含的结构特征不是最优的(虽然与实验X射线数据相比可能无关紧要)。首先,让我们得到这个构象的初始分数,在命令行中输入:

cd <path_to_Rosetta>/main/demos/tutorials/minimization/

<path_to_Rosetta>/main/source/bin/score.default.linuxgccrelease -s 3hon.pdb

将会产生default.sc打分文件,内容如下(😇译者在这里给出的数据并非原教程数据(他竟然放了张图片…),因为使用的是3.13版本,所以可能在数值上略有出入😇):

SCORE:     score     fa_atr     fa_rep     fa_sol    fa_intra_rep    fa_intra_sol_xover4    lk_ball_wtd    fa_elec    pro_close    hbond_sr_bb    hbond_lr_bb    hbond_bb_sc    hbond_sc    dslf_fa13      omega     fa_dun    p_aa_pp    yhh_planarity        ref    rama_prepro    allatom_rms    gdtmm    gdtmm1_1    gdtmm2_2    gdtmm3_3    gdtmm4_3    gdtmm7_4    irms    maxsub    maxsub2.0    rms description
SCORE:   292.410   -259.925    169.436    143.593           0.834                 12.369         -4.366    -38.638       15.694         -3.538         -9.816         -1.268      -1.503        0.000      0.201    219.207     -5.243            0.000     19.622         35.751          0.000    1.000       1.000       1.000       1.000       1.000       1.000   0.000    55.000       55.000  0.000   3hon_0001

该文件的第一行是标题行,它告诉我们哪些列对应于哪些评分项。在这个文件的第二行,我们看到晶体构象的 Rosetta 总评分为 292.410 😇原教程为240.074😇,并且它有一个特别高的排斥性评分fa_rep,这意味着在这个结构中原子之间存在冲突,以及一个很高的 Dunbrack 统计评分fa_dun,这意味着这个结构中的很多 rotamers 都是低概率的😇上述两点与原教程是一致的😇。下面让我们试着用最小化器来解决这些问题。

10.3.2. Setting up the flags file

首次我们需要指定如何运行最小化器,打开minimizer_flags一探究竟:

-s 3hon.pdb
-run:min_type lbfgs_armijo_nonmonotone
-run:min_tolerance 0.001

第一个标签-s指示我们的输入结构;第二个标签-run:min_type指示所使用的最小化算法,在此我们使用 lbfgs_armijo_nonmonotone,但实际上 lbfgs_armijo_nonmonotone是默认算法,所以在此你也可以不写这一行;第三个标签-run:min_tolerance指定了最小化算法的收敛容忍度。Rosetta 对于函数最小化至少有两种容忍度,“常规”(因为没有更好的名称)容忍度和绝对容忍度。“常规”容忍度是被最小化函数值的相对值,例如 0.01 的容忍度意味着最小函数值可能在真实局部最小值的 1% 以内。绝对公差不考虑当前函数值,即 0.01 的绝对容差意味着最小函数值与真正的局部最小值相差最多 0.01 REU。最小化器默认使用“常规”容忍度;这里了解更多关于绝对容忍度的信息。一般来说,将“常规”容忍度设置为0.01是非常宽松的,因此建议指定小于 0.01 的公差设置。在本教程中我们将其设置为0.001。

10.3.3. Running the minimization command

使用minimizer_flags上述运行最小化器:

<path_to_Rosetta>/main/source/bin/minimize.default.linuxgccrelease @minimizer_flags

如果程序没报错且输出如下,那就说明最小化成功:

minimize: Score: 0  -65.9488
minimize: FinalScore: -65.9488
protocols.jd2.JobDistributor: 3hon_0001 reported success in 2 seconds
protocols.jd2.JobDistributor: no more batches to process...
protocols.jd2.JobDistributor: 1 jobs considered, 1 jobs attempted in 2 seconds

同时你将会有score.sc及3hon_0001.pdb,下一步就是分析他们。

10.3.4. Analyzing the output

score.sc内容如下:

SEQUENCE: 
SCORE: total_score dslf_fa13    fa_atr    fa_dun   fa_elec fa_intra_rep fa_intra_sol_xover4              fa_rep              fa_sol hbond_bb_sc hbond_lr_bb    hbond_sc hbond_sr_bb lk_ball_wtd       omega     p_aa_pp pro_close rama_prepro         ref yhh_planarity description 
SCORE:     -65.949     0.000  -253.841    95.084   -49.087        0.719              13.274              31.521             131.536      -3.530     -17.509      -3.513      -8.083      -8.167       3.710     -15.377     0.279      -2.612      19.622         0.025 3hon_0001

对比能量最小化与晶体结构得分:

SCORE:	total_score	dslf_fa13	fa_atr	fa_dun	fa_elec	fa_intra_rep	fa_intra_sol_xover4	fa_rep	fa_sol	hbond_bb_sc	hbond_lr_bb	hbond_sc   hbond_sr_bb	lk_ball_wtd	omega	p_aa_pp	pro_close	rama_prepro	 ref	  yhh_planarity	description
SCORE:	-65.949	    0	       -253.841	95.084	-49.087	0.719	        13.274	            31.521	131.536	  -3.53	    -17.509	    -3.513	    -8.083	   -8.167	    3.71	-15.377	 0.279	     -2.612	    19.622	    0.025	    3hon_0001
SCORE:	292.41	    0	       -259.925	219.207	-38.638	0.834	        12.369	            169.436	143.593	  -1.268	-9.816	    -1.503	    -3.538	   -4.366	    0.201	-5.243	 15.694	     35.751	    19.622	    0	        3hon

可以发现总能量、fa_dun、fa_rep有了明显下降。请注意,你所获得的精确数值可能与上面所列出的略有不同(+/- 0.5能量单位),这是因为平台与平台之间微小的数值精度差异可能会在轨迹上累积,从而在最终输出中产生明显(但仍然很小)的差异。这里可能还会有一些额外的评分项,因为评分函数可能比本教程时的版本更新。但重要的是,大多数评分项的值已经下降了!

使用Pymol打开并对比3hon.pdb及3hon_0001.pdb,可以发现:

 Executive: RMSD =    0.654 (44 to 44 atoms)

在这里插入图片描述

同时,loop区域的最后9个残基与原来的构象相比有了很大的变化,大多数残基的 rotamers 已经不再是它们原来的构象了😇绿色为晶体结构,蓝色为最小化结构,stick 的展示方式略😇。有时在起始构象中允许如此大的移动可能是不可取的。为此,我们可以使用带有约束的最小化来最小化我们的输入结构,其中某些原子的运动将被分数函数惩罚。

10.4. How-To: Minimization with Constraints

现在,我们将在3HON C末端尾部 9 个残基的主链重原子上应用调和坐标约束(coordinate constraints, csts)。你可以把这些约束想象成“松紧带”或“橡皮筋”,它们在最小化轨迹中轻轻地把每个主骨架重原子拉回原来的位置。实际上,约束是在整体能量函数中添加的一个额外的、人工的势能(一系列惩罚偏离输入坐标的谐波势能)。

10.4.1. Setting up the flags file and constraints file

我们需要在标志文件中添加额外的选项,以便让 Rosetta 读取保持原子位置的约束信息。此外,我们需要告诉 Rosetta 在它正在使用的能量函数中添加额外的约束势。为此,我们在权重文件中为约束评分项设置非零权重,见minwithcsts_flags:

-s 3hon.pdb
-run:min_type lbfgs_armijo_nonmonotone
-run:min_toleranace 0.001
-constraints:cst_file cstfile
-score:weights ref2015_cst
-out:suffix _minwithcsts

前三个标签已经讲解过;第四个标签constraints:cst_file指明所使用约束文件的名称;第五个标签score:weights指定能量函数使用哪一组权重,在本教程中,我们指定了ref2015_cst权重文件,这是 Rosetta 数据库中预定义的权重文件,它添加了chainbreak、coordinate_constraint、atom_pair_constraint、angle_constraint、dihedral_constraint和res_type_constraint,其余与ref2015相同,每一个都是 1.0 权重;第六个标签-out:suffix设置后缀。

10.4.2. Running the minimization command

运行:

<path_to_Rosetta>/main/source/bin/minimize.default.linuxgccrelease @minwithcsts_flags

此时,注意 log 中输出的core.scoring.constraints行,这说明我们的约束成功施加上了:

core.scoring.constraints.util: Constraint choice: cstfile
core.scoring.constraints.ConstraintsIO: read constraints from cstfile
core.scoring.constraints.ConstraintsIO: Read in 39 constraints
···
minimize: Score: 0  -44.3008
minimize: FinalScore: -44.3008
protocols.jd2.JobDistributor: 3hon_minwithcsts_0001 reported success in 2 seconds
protocols.jd2.JobDistributor: no more batches to process...
protocols.jd2.JobDistributor: 1 jobs considered, 1 jobs attempted in 2 seconds

运行成功会得到score_minwithcsts.sc及3hon_minwithcsts_0001.pdb,下面来分析。

10.4.3. Analyzing the output

score_minwithcsts.sc内容如下:

SEQUENCE: 
SCORE: total_score angle_constraint atom_pair_constraint chainbreak coordinate_constraint dihedral_constraint dslf_fa13    fa_atr    fa_dun   fa_elec fa_intra_rep fa_intra_sol_xover4              fa_rep              fa_sol hbond_bb_sc hbond_lr_bb    hbond_sc hbond_sr_bb lk_ball_wtd metalbinding_constraint                   omega                 p_aa_pp pro_close rama_prepro         ref res_type_constraint yhh_planarity description 
SCORE:     -44.301            0.000                0.000      0.000                 1.485               0.000     0.000  -252.596   103.538   -52.550        0.700              12.855              31.165             137.396      -4.217     -16.796      -6.144      -7.241      -7.208                   0.000                   5.180                 -13.616     1.013       3.093      19.622               0.000         0.021 3hon_minwithcsts_0001
SCORE:	total_score	dslf_fa13	fa_atr	fa_dun	fa_elec	fa_intra_rep	fa_intra_sol_xover4	fa_rep	fa_sol	hbond_bb_sc	hbond_lr_bb	hbond_sc   hbond_sr_bb	lk_ball_wtd	omega	p_aa_pp	pro_close	rama_prepro	 ref	  yhh_planarity	description
SCORE:	-44.301	    0	       -252.596	103.538	-52.55	0.7	            12.855	            31.165	137.396	  -4.217	-16.796	    -6.144	    -7.241	   -7.208	    5.18	-13.616	 1.013	     3.093	    19.622	    0.021	    3hon_minwithcsts_0001
SCORE:	-65.949	    0	       -253.841	95.084	-49.087	0.719	        13.274	            31.521	131.536	  -3.53	    -17.509	    -3.513	    -8.083	   -8.167	    3.71	-15.377	 0.279	     -2.612	    19.622	    0.025	    3hon_0001
SCORE:	292.41	    0	       -259.925	219.207	-38.638	0.834	        12.369	            169.436	143.593	  -1.268	-9.816	    -1.503	    -3.538	   -4.366	    0.201	-5.243	 15.694	     35.751	    19.622	    0	        3hon

同样,大多数来自约束最小化结构的分数都低于晶体结构的分数,还要注意新增加的约束最小化结构的能量项列表中的坐标约束项。比较最小化结构和约束最小化结构,我们看到总能量的增加主要是由fa_atr和fa_dun项的差异引起的。这有两个原因。首先,我们看到坐标约束项本身给分数增加了一个小的正值,因为主链重原子已经从它们的起始坐标稍微移动了;第二,因为这次的结构没有被允许移动太远,小的冲突和缺陷不能完全解决,导致分数比以前略高;所以在保持结构接近晶体结构和深入挖掘到最近的局部能量最小值之间有一个权衡。现在让我们来看看用csts最小化的结构,看看它与我们之前的结构有什么不同:
在这里插入图片描述
在这里插入图片描述

可见9个羧基端CA原子的位置几乎没有移动,😇其余骨架部分由轻微移动,但部分残基的 rotamer 被优化了;绿色为晶体结构,蓝色为最小化结构,黄色为约束最小化结构;下图由上图绕X轴旋转 180° 得😇。

10.5. How-To: Minimization with a MoveMap

在某些情况下,用户可能希望在最小化期间防止某些残基的内部几何形状移动,而不是原子的 XYZ 坐标。为了不允许主链 phi/psi 角和/或侧链 chi 角的移动,我们可以为最小化器提供一个 MoveMap,指定允许改变这些自由度中的哪些。

10.5.1. Some Concepts

10.5.1.1 MoveMap

movemap 是 Rosetta 最小化中的一个重要概念。它允许用户控制在最小化过程中哪些自由度可以改变,哪些自由度是固定的。例如,你可能不希望在建模中移动高度保守的侧链,或者希望在设计应用程序中保留某些相互作用。调用 Rosetta 最小化器的某些 protocols 接受用户定义的 movemap 文件。

在最小化器的使用中,movemap 允许用户指定主链骨架扭转角(phi和psi,在α-氨基酸残基的情况下)和/或侧链扭转角(chi)是否允许在能量函数最小化期间移动。此外,如果输入结构有多个链,movemap 还可以指定是否允许不同链之间的相对移动。注意:即使一个残基的主链和侧链的扭转运动在 movemap 中被关闭,它相对于其他残基的相对位置仍然可能根据折叠树(foldtree)上游的残基的运动而改变。

10.5.1.2 FoldTree

折叠树(foldtree)是与最小化相关的另一个重要概念。虽然折叠树的操作将在另一篇教程中更详细地介绍,但我们将在这里简要概述这个概念。当最小化时,自由度会改变,这可能会对结构产生模糊的后果。例如,如果我将残基5的扭转值从-60改为-50,可能会有几种情况:残基1到4可以保持不变,从5开始的所有残基都可以移动;残基1到4可以移动,5保持固定;残基5中的原子可以移动,但蛋白质中其余的原子保持不变,这意味着蛋白质的键合几何形状将严重扭曲;或者是上述三者的组合。折叠树建立了一个姿态中残基之间的层次关系,从而定义了自由度变化的影响。每个残基都有一个唯一的父残基(除了那个根残基, root residue),每个残基可以有一个或多个子残基(循环依赖是禁止的,例如,如果残基3是残基4的父残基,残基4就不能是残基3的父残基)。残基自由度的变化可以传播到残基的所有子残基,但不影响父残基。虽然典型姿态中的大多数残基是通过键连接联系在一起的,但两个残基可以通过一个贯穿空间的刚体变换(😇rigid body transform,有关刚体变换可以参考这篇专栏,这句话的意思是如果两个结构之间没有约束,他们可以发生刚性的相对运动而联系在一起,不过这教程说的真抽象😇称为跳跃,jump)联系在一起。如果存在两个单独的链(没有键连接它们),就需要至少有一个跳跃,将第一个链中的残基与第二个链中的残基联系起来 😇所以哪怕对于单独一条链你也可以自己设置跳跃的位置,从而允许/禁止跳跃所分割的两段结构的相对运动😇。

如上所述,调用最小化器时,特别是使用 MoveMap 时,应该注意折叠树。默认的 foldtree 以链A的残基1作为根,残基2是1的子残基,残基3是2的子残基,以此类推,并且跳转到任何其他链的第一个残基。任何可移动自由度都会影响折叠树中它下游的每个残基,即使该残基的自由度是由 MoveMap 固定的。例如,让我们考虑一个使用默认折叠树的20残基的姿态的情况,使用 MoveMap 阻止从8到20的残基的骨架重原子的移动;能量最小化将改变残基1到7的主自由度,使残基8到20在过程中在空间中摆动(尽管在这种情况下,残基8到20不能彼此相对移动)。

10.5.1.3 The MoveMap File Format

movemap 文件中的每一行都标识一个跳跃、残基或残基范围,后面跟着允许的自由度:

RESIDUE <#> <BB/CHI/BBCHI/NO>         # 单个残基 <#> 的单个限制选项
RESIDUE <#1> <#2> <BB/CHI/BBCHI/NO>   # 一系列残基 <#1> ~ <#2> 的单个限制选项
JUMP <#> <YES/NO>                     # 单个跳跃 <#> 的单个限制选项

例如:

RESIDUE 35 BB        # 允许残基 35 的骨架扭转角运动
RESIDUE 32 48 BBCHI  # 允许残基 32 ~ 48 的骨架及侧链扭转角运动
JUMP * YES           # 允许所有由任意 jump 分割的两结构之间的刚性运动,*代表任意

如果一个残基出现不止一次,最后一次出现在文件中的标识决定了它的自由度(即 movemap 的行是不可交换的,不像用于控制打包器的TaskOperations——参见打包教程)。例如,上面指定的 movemap 中残基 35 出现在了第一及第二行中,最终其自由度为允许残基骨架及侧链扭转角运动,即第二行。

需要注意的是:如果在 movemap 中没有指定残基或跳跃,它将恢复到默认行为,这个默认行为是特定于 protocol 的。在许多但不是所有的情况下,默认行为是允许所有扭转自由度(BB, CHI)和所有刚体自由度(跳跃)移动的。当有疑问时,最好明确用户请求的行为。

10.5.2. Setting up the flagsfile and movemap file

对于下一个最小化演示,我们需要在 flags 文件中添加一个选项来告诉 Rosetta 读取 movemap 文件。新标志文件minwithmm_flags的内容如下:

-s 3hon.pdb
-run:min_type lbfgs_armijo_nonmonotone
-run:min_toleranace 0.001
-movemap movemapfile
-out:suffix _minwithmm

新标签-movemap指定所使用的 movemap 文件,其内容如下 😇请读者自行理解😇:

RESIDUE * BBCHI
RESIDUE 47 55 NO

10.5.3. Running the minimization command

运行:

<path_to_Rosetta>/main/source/bin/minimize.default.linuxgccrelease @minwithmm_flags

出现:

minimize: Initializing movemap from file movemapfile
···
minimize: Score: 0  -6.55532
minimize: FinalScore: -6.55532
protocols.jd2.JobDistributor: 3hon_minwithmm_0001 reported success in 2 seconds
protocols.jd2.JobDistributor: no more batches to process...
protocols.jd2.JobDistributor: 1 jobs considered, 1 jobs attempted in 2 seconds

10.5.4. Analyzing the output

首先分析打分文件:

SCORE:	total_score	dslf_fa13	fa_atr	fa_dun	fa_elec	fa_intra_rep	fa_intra_sol_xover4	fa_rep	fa_sol	hbond_bb_sc	hbond_lr_bb	hbond_sc   hbond_sr_bb	lk_ball_wtd	omega	p_aa_pp	pro_close	rama_prepro	 ref	  yhh_planarity	description
SCORE:	-6.555	    0	       -246.327	124.744	-45.004	0.735	        13.304	            31.952	126.09	  -4.161	-16.462	    -3.044	    -6.751	   -8.12	    4.612	-13.914	 12.2	     3.929	    19.622	    0.039	    3hon_minwithmm_0001
SCORE:	-44.301	    0	       -252.596	103.538	-52.55	0.7	            12.855	            31.165	137.396	  -4.217	-16.796	    -6.144	    -7.241	   -7.208	    5.18	-13.616	 1.013	     3.093	    19.622	    0.021	    3hon_minwithcsts_0001
SCORE:	-65.949	    0	       -253.841	95.084	-49.087	0.719	        13.274	            31.521	131.536	  -3.53	    -17.509	    -3.513	    -8.083	   -8.167	    3.71	-15.377	 0.279	     -2.612	    19.622	    0.025	    3hon_0001
SCORE:	292.41	    0	       -259.925	219.207	-38.638	0.834	        12.369	            169.436	143.593	  -1.268	-9.816	    -1.503	    -3.538	   -4.366	    0.201	-5.243	 15.694	     35.751	    19.622	    0	        3hon

可以发现,带 movemap 的最小化结构的总得分仍然低于晶体结构,但其能量高于其他两个,这主要是由于pro_close项(与脯氨酸环闭合相关的能量)和fa_dun项的差异。接下来是结构分析:将带 movemap 的最小化结构与晶体结构对比后(😇蓝色为晶体结构,玫红色为带 movemap 的最小化结构😇),可以看出 9 个C末端残基发生了移动。然而,当我们只对 9 个C末端残基进行比对时,很明显,最小化器并没有改变他们的主链或侧链角度。

# whole structure
Executive: RMSD =    2.251 (55 to 55 atoms)
# nine C-terminal residues
Executive: RMSD =    0.000 (9 to 9 atoms)

在这里插入图片描述

在这里插入图片描述

10.6. More detailed algorithm overview (for advanced users)

😇该部分为机翻,尚未检查😇

新手和普通用户可能会跳过本教程的这一部分;它的目的是让高级用户更深入地了解工具的工作方式,希望这将帮助他们更有效地使用工具。如前所述,最小化器通过变异体在梯度下降最小化中工作。Rosetta中的所有能量项不仅定义了一种根据系统自由度的当前值计算能量值的方法,而且还定义了一种根据自由度的当前值计算空间自由度导数的方法。最小化器使用这些导数函数来计算总体梯度向量,∇E。这是一个偏导向量:∇E = dE/dx1, dE/dx2,…, dE/dxN,其中x1…xN是可移动的自由度,计算自由度的当前值。该矢量在构象空间中指向“上坡”方向,其负值指向“下坡”方向。然后,最小化器向“下坡”方向“行进”(这意味着它将-ε∇E添加到当前的自由度矢量中,其中ε是某个任意小的标量值),只有当能量停止减少并开始增加时,才会停止这种“线搜索”。在这一点上,它重新计算∇E(现在它将指向一个稍微不同的方向)并重复搜索。这将继续,直到梯度足够平坦(即足够小的量级),如最小阈值所定义的。

这里有一个稍微复杂的地方。上面描述的方法是在使用“linmin_iterated”风格时发生的。不幸的是,这是相对低效的:如果同时使用一阶和二阶导数信息来选择线搜索方向,最小化可以更快地收敛。正确而准确地做到这一点(牛顿法)意味着计算和反求Hessian矩阵,它是给定N个移动自由度的偏二阶导数的NxN矩阵。由于计算、反求和更新这个大矩阵会大大减慢最小化器的速度,所以折衷的方法是使用最后几个计算得到的梯度值“∇E”来估计Hessian矩阵的逆矩阵。为了达到这一目的,已经提出了许多准牛顿方法,包括Davidon-Fletcher-Powell (DFP)方法和Broyden-Fletcher-Goldfarb-Shanno (BFGS)方法。Rosetta具有后一种方法的两种特点:标准BFGS方法(不准确地命名为“dfpmin”)和低内存、性能更好的变体(称为“lbfgs”)。它们的变化也存在,它们使用不同的停止条件,并以微妙的不同方式进行线路搜索。Rosetta中当前的默认样式是“lbfgs_armijo_nonmonotone”,基准测试已经显示为大蛋白质产生最佳性能。

非常小的系统(例如小肽)可能表现出更好的“dfpmin_armijo_nonmonotone”行为。使用较慢但更准确的“linmin_iterated”风格也可以避免使用逆Hessian近似的某些罕见的工件(在调试行为怪异的protocol时,这是一件好事)。

ROSETTA软件及详细中文操作说明(配演示数据) ROSETTA软件及详细中文操作说明(配演示数据)。 此操作说明不同于其他资源的那种简易说明,步骤很详细,适合初学者快速入门。 ROSETTA软件是一个很好的Rough set软件,可以进行属性约简,属性值约简,规则提起,离散化等处理。 立即下载

相关推荐

Rosetta+软件基本用法中文指导书

Rosetta+软件基本用法中文指导书,roseetta注明的粗糙集软件

Rosetta中文教程(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、教程1. Minimizer1.介绍2.目标3. How-To: Minimize分析输入结构设置flags文件运行minimization命令分析输出4. How-To: Minimization with Constraints设置flags文件和约束文件运行minimization命令分析输出5. How-To: Minimization with a MoveMapThe MoveMap关于FoldTree的说明mo

qq_41858644的博客 9740

Rosetta(附使用教程)

Rosetta软件+中文简易使用说明书+官方原版英文说明书,对于初学者和开发者都有一定的参考价值.

Rosetta基础4:Finding Local Energy Minima Using the Minimizer

Rosetta

li1guangjun的博客 1018

Retinanet训练自己的数据(2):模型准备

  在上一篇博客中,我们已经处理好了模型需要的数据集,下一步就是准备模型去训练数据。这里提醒一句,在制作数据时,最好将训练集和测试集人为分开。像Google tensorflow API,在制作数据时可以按比例自动生成,但是在上一篇文章中产生的数据(annotation.csv )其实都是用来训练的,如果你把自己的数据集全都转换了,那么恭喜你,最后你会发现没有数据集去测试了。   下面开始模型准...

mingyang_wang的博客 5884

Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题

之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor.

weixin_42825962的博客 1万+

Rosetta中文教程(二)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Rosetta中重要概念的介绍1. Rosetta philosophy2. Pose3.Conformation4. ResidueChemical Layer5. ResidueType6. AtomTypeKinematic Layer7. FoldTreeThe fold treeJump edges vs "peptide" edgesCutpointsFoldTree output8. AtomTree9. Ener

qq_41858644的博客 3144

从‘最长白列’到‘八邻域’:智能车图像巡线算法怎么选?我的踩坑经验分享

本文深入探讨了全国大学生智能汽车竞赛中图像巡线算法的选型与优化,对比了最长白列法、八邻域算法等五种主流方法的性能与适用场景。通过实战数据和代码示例,分析了各算法在直道、弯道及特殊赛道元素中的表现,并提供了内存优化、参数调整等实用技巧,帮助参赛团队提升智能车的巡线精度与效率。

weixin_30374009的博客 632

centos7离线安装gcc_2019最新Rosetta安装完全手册

作者: 吴炜坤 本文均在CentOS7(release 7.6.1810)版本下进行过的测试 我推荐使用Clang3.4.2的编译方法。前言:针对目前国内Rosetta中文资源甚少、零散、求助难的问题,我搭建了一个Rosetta中文社区论坛(beta)。我们的初衷:- 致力于降低新人入门的门槛,开通问题求助的渠道;- 收集目前零散的文章和发布高质量教程/资源,打造国内一流的Rosetta学习资源;...

weixin_39586353的博客 470

ubunut 系统安装k8s集群

修改配置文件 kube-metrics-server.yaml 添加监控数据采集容器启动参数,启动 tls 证书验证,否则监控容器接口验证不通过,无法采集监控数据。kube-metrics-server.yaml 140行左右添加参数 --kubelet-insecure-tls。服务器添加配置(配置三台阿里云时间同步服务器作为时间源,本机作为时间同步服务器)客户端配置(第一个源选用集群内的 192.168.10.20 )时间同步配置文件参考如下。

weixin_57489252的博客 1329

字符串替换—牛客网(C++实现)

一.题目描述 请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数列表的字符数大于占位符个数。则将剩下的参数字符添加到字符串的结尾。 给定一个字符串A,同时给定它的长度n及参数字符数组arg,请返回替换后的字符串。保证参数个数大于等于占位符个数。保证原串由大小写英文字母组成,同时长度小于等于500。 测试样例: “A%sC%sE”,7,[‘...

qq_38358582的博客 1522

Rosetta中文教程(三)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录约束文件一、概述二、Constraint Types1. Single constraintsAtomPair:三、Function Types四、Code for Reading Constraints 约束文件 一、概述 Rosetta约束是对scorefunction的补充。(这相当于其他程序中的“约束”。)它们被用来对结构的几何和其他特征进行评分,而这些特征可能无法用标准评分术语来评估。例如,添加一个基于实验知识的评分偏差

qq_41858644的博客 1883

Kaggle赛题总结:Enefit - Predict Energy Behavior of Prosumers

竞赛旨在解决能源不平衡的问题,即预计使用的能源与实际使用或产生的能源不符。自发自用者是既消耗又产生能源的个体,他们在造成能源不平衡方面起到了重要作用。尽管他们只占所有能源消费者的一小部分,但他们不可预测的能源使用行为给能源公司带来了物流和财务问题。如果不加以解决,可能会导致运营成本增加、电网不稳定以及能源资源的低效利用。如果这个问题得到有效解决,将显著降低不平衡成本,提高电网的可靠性,并使自发自用者更高效和可持续地融入能源系统中。

猫敷雪 741

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 405

《YOLOv8:从入门到实战》专栏介绍 & 专栏目录

本专栏涵盖了丰富的YOLOv8算法从入门到实战系列教程,专为学习YOLOv8的同学而设计,堪称全网最详细的教程!🌈🌈🌈

小哥谈 6489

YOLOv8改进-bifpn

跨尺度连接通过添加一个跳跃连接和双向路径来实现,自此实现了加权融合和双向跨尺度连接。该结构是加权且双向连接的,即自顶向下和自底向上结构,通过构造双向通道实现跨尺度连接,将特征提取网络中的特征直接与自下而上路径中的相对大小特征融合,保留了更浅的语义信息,而不会丢失太多的深层语义信息。传统的特征融合时将尺度不同的特征图以相同权重进行加权,但是当输入的特征图分辨率不同时,以相同的权重进行加权对输出的特征图不平等。所以BiFPN根据不同输入特征的重要性设置不同的权重,同时反复采用这种结构来加强特征融合。

weixin_45303602的博客 8139

从一段视频到可漫游的 4D 有声场景:思路拆解与最小复现手记

只需一段手机视频,你就能生成可"走进去"的 4D 有声场景:转头时狗叫声方向随之变化,走近时声音更清晰。本文拆解 Video-to-4DAVScene 的核心思路,手把手带你用几十行 Python 搭出最小管线,把视频中的运动物体变成带空间位置的声源,并附上三个真实踩坑的排障经验,代码可直接跑。🎧

helloagent的博客 234

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【每天一个 Python 小案例30】Python 基础知识综合小项目:我的工具盒

作为系列收官,本篇把前 29 篇的知识点合成一个能直接用的命令行工具"我的工具盒":计算器(用 ast 解析表达式,不碰 eval)、单位换算与温度转换(一张换算表 + 特例分支)、记账与分类统计(Decimal + JSON 持久化)、以及用"字典当命令表"把菜单和业务逻辑解耦的主循环。文中对比了 eval 的安全隐患与 ast 白名单的做法,解释了 lambda 闭包在字典里的写法与晚绑定陷阱,并在最后给出整个系列的知识地图,把变量、数据结构、控制流、函数、类、异常、文件、标准库八块内容对应到具体篇目。

xinjiyaya的博客 426

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Python+Agent入门笔记(二):列表推导式、模块和异常,这些写 Agent 前得会

接上一篇《Python+Agent入门笔记(一)》。基础语法跑通之后,这篇聊几块日常写脚本绕不开的东西。还是按 JS/Go 开发者的视角写,尽量记录我实际卡过的地方。

qq_41241612的博客 430

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

详解Python条件语句

在 Python 中,if...else 是一种条件语句,可以根据给定的条件执行不同的操作。这个语句通常用于控制程序的流程。

2601_96798737的博客 206

Python3 协程:异步编程的核心机制与实战

协程是解决I/O密集型任务等待瓶颈的高效机制,相比线程更轻量、无锁开销。从yield到async/await的演进,使异步编程语义清晰、易于理解。通过async/await可实现并发执行多个任务(如gather、create_task),显著提升网络请求、爬虫等场景性能。关键在于使用异步库(如aiohttp)替代同步库,避免阻塞事件循环。合理控制超时与并发数,才能发挥协程最大优势。

Lxn2zh的博客 159

python如何控制浏览器

Python 可以通过 Selenium、Playwright 等工具实现浏览器自动化,从打开网页到执行复杂交互操作均可脚本化完成。Selenium生态成熟

2601_96797912的博客 76

torch.compile 差异仅 1e-6,边界样本预测为何翻转

torch.compile 加速后输出与 eager 不一致,部分预测翻转。逐层对比与 graph break 分析定位到动态分支翻转根因。容差回归仅适用于无分支翻转场景,零容忍场景应禁用编译。

昨日种种,皆成今我。今日种种,皆成新我。 159

二进制木马免杀-Python 分离免杀与 Web 挂马

二进制木马免杀-Python 分离免杀与 Web 挂马

2503_94637398的博客 268

Python 100讲课程导航:第08篇《Python input 与类型转换:构建可靠的交互程序》

本文详解Python中input()的返回类型为字符串,强调必须通过int()、float()等函数进行类型转换。重点讲解了输入验证的重要性,结合try-except处理ValueError等异常,实现可靠的交互程序。通过购物预算计算器实战,演示如何防范非法输入、处理边界值,并推荐使用Decimal避免浮点精度问题,提升程序健壮性。

铭渊老黄 134

【Python】国家中小学智慧教育平台电子教材批量下载与 PDF 合成实战

成果:两本语文电子课本(一年级上册 118 页 / 23MB、三年级上册 130 页 / 30.3MB),合计 248 页、约 54MB,单本下载加合成 40~60 秒,PDF 页数校验全部通过。经验教训SPA 站点的数据接口优先从 bundle 里挖,比抓页面稳得多;资源链接要按 private/public 分组看待,只取平台公开部分;页数、目录名这类“可推断”的信息,永远用实际响应验证一次;受限环境里“能不能跑浏览器”要在方案定稿前确认。后续计划:这版 PDF 是图片版,没有文字层;

木头大左的博客 134
上一篇: Rosetta Tutorial 5/7/9 翻译 | 主要为 Scoring & Packer Tutorial 部分
下一篇: Rosetta Tutorial 11 & 12 翻译 | 主要为 Relax 部分
CocoCream
博客等级 码龄6年 195粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值