TNT:P

来自MalacoKnowledge
Malacology留言 | 贡献2023年8月7日 (一) 09:52的版本 (创建页面,内容为“= procedure = 重定向输入 <code>XXX;</code> 从文件<code>XXX</code>中取命令 <code>/</code> 关闭输入文件(在文件结尾处包含) <code>& XXX</code> 读取Fasta文件<code>XXX</code>。它必须align。如果不align,所有序列都可以通过在末尾添加gap,如果<code>&</code>后跟<code>=N</code>将其“均衡”到<code>N</code>个性状,(或者<code>=N</code>可以放置在文件的开头) <code>[XXX</code> 将…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

procedure

重定向输入

XXX; 从文件XXX中取命令

/ 关闭输入文件(在文件结尾处包含)

& XXX 读取Fasta文件XXX。它必须align。如果不align,所有序列都可以通过在末尾添加gap,如果&后跟=N将其“均衡”到N个性状,(或者=N可以放置在文件的开头)

[XXX 将文件XXX读成Newick树(例如RAxML树)

请注意,输入也可以自动重定向(几乎在任何上下文中),使用@@filename tagname;(从标记为label tagname的点开始阅读,以@@结尾的自动重定向的结束;如果使用_ - 代替tagname,则从文件的开头开始)

pause

= 在输出上启用暂停

- 不要(默认)

pcrprune

通过迭代 PCR 提高合意 (Pol & Escapa, 2009)

N/L\U 提高树 N 的合意,排除列表 L 中的类群,但不删除 U 中的类群。

树列表之前可以是:

=C 一次最多可以削减最多分类单元(默认值=全部)

:K 将分类单元移除的成本分配给K(0-100)(更高的K需要更多节点才能作为改进接受,默认值= 0.5)。

>N 仅显示改进 N 个或更多节点的剪枝(prunings)(仅用于严格合意树,不适用于MR树)

[N] 仅改进合意树的节点 N (仅用于严格合意树,不适用于MR树)

& 仅对于剪切严格合意树。当发现所有树中都存在三分叉时,尝试与先前检查的三分叉结合以推断尚未检查的三分叉的分辨率。 对于大量树木而言速度更快,但类群较少时有所不同

对于树的数量较大,差异在少数分类单元内的情况下更快,在之后加 >N 之后,所有剪枝都会添加到N个分类单元中(请注意,该选项需要显式树列表,否则它将被解释为仅显示改进N个节点的选项;请参见上文)。

合意类型可以用括号表示,在树状列表前也可以:

(majority F) 启发式地尝试改进MR树,考虑频率F或更高出现的三分叉是“兼容”的(50<=F<=100,默认=50)

(nelsen) 改进严格合意树(默认)

pfijo

运行 pinon fijo(一种对非常大的数据集有用的搜索算法)。 该算法从树中的扇区创建简化的数据集(但它不像 sectsch 那样使用 htu,而是以一定的概率使用内部节点的后代的下行状态)。 基本节点的状态(为缩减的数据集产生精确的分数评估)被选择的概率最高,而后代节点随后具有较小的概率。 缩减数据集的外组节点是从组外的终端之一中选择的(随机选择)。 缩减后的数据集通过三个RAS+TBR进行分析,然后将这三个树与原始的一棵树融合。 通常,这会生成一棵与原始树不同的树,这对于完整的数据集来说不是最优的(即某些 HTU 不由其下传状态表示,根状态不同),然后将此扰动树用于 TBR 以及三个周期的轻度树木漂流。 可选地,生成的树可以每隔一定的轮数融合。 这是一种棘轮,其中的扰动不是通过性状重新加权而是通过选择分类单元的子集来提供的。 选择的扇区是大的、独占的扇区(选择的大小使其低于或高于两个扇区,扇区大小为 500;可以使用chunksize更改此大小 - 请参阅下面的语法); 实际选择取决于当前的随机种子。 选择 HTU 状态的概率是通过以下方式确定的:将 HTU 的后裔 L 个节点向上列出,生成随机数 R (0-99),并根据用户设置的常数 K,将表达式 i 转换为整数 ( L * (1000 - (10*K) ) / ( (100 - (10*K)) + R )。然后,列表中第 i 个元素的下传递状态(或观察到的状态,如果是终端分支) 后裔被选出代表 HTU 状态。

语法是 pfijo N = [options] ;

如果将=替换为:, 则仅更改设置。N是pfijo要启动的树(如果未指定N,则按顺序地将内存中的每棵树进行pinon fijo)。

选项

phtu K 更改HTU替换的概率。K是一个实数0<0<100,较大的值使得实际HTU状态被选择的可能性更大,即较低的值会更强烈地扰动(默认值K=95)

numsels N 表示要执行的循环次数(默认值N=30)。

[no]goback 表示是否返回原始树(在全局TBR和drift后),如果新树比原始树更差,默认不返回。

[no]keepall 表示是否在循环进行过程中保存所有树或仅保存最佳树(默认:保存)

autofuse N R 表示每隔N个循环(R轮)融合所产生的树。

drift N F R 表示在扰动后,要进行N漂移循环,其中拟合差异为F,相对拟合差异为R(默认值为drift 3 3 0.1)。

chunksize N 表示选择近似大小为N的部分。

slack N 表示使用额外的N%内存来创建减少的数据集。

piwe

- 关闭隐含加权(=默认)

=N 使用加权常数N(0 < N <= 1000)来开启隐含加权

:N 仅设定加权常数

[ 后跟权重列表,为隐含加权设置相对权重(从0开始的额外步骤)。在分号后显示当前相对隐含权重。

|N 报告隐含加权(即不将第一步缩放为1)下的N步同质性的绝对成本。

] 取消用户定义的隐含权重

+N 使用自动加权优化代替隐含权重,并带有加权常数N。这在性状状态转换的层面上进行了隐含加权;对于具有许多分类单元和/或状态的数据集来说,这可能非常耗时。自动加权的一般选项和参数由slfwt命令设置。

<R 对于手头R矩阵,将凹性(concavitiy)设置为一个值,以便隐含权重的最大比率为 (这取决于矩阵的最大可能步骤;请参见Goloboff et al. 2008)。如果R后面跟着另一个数字N,则选择凹性以使达到N步同质性。

& 当使用多个凹面时,请为每个性状显示K值(如果未使用用户定义的加权函数),或者为性状提供shift(对于shift为S的性状,将同质的N步增加一步的成本等同于使用用户定义的加权函数时S.N步的性状增加一步的成本。如果在后提供了性状列表L,则为L中的性状提供将一个不同数量的额外步骤添加到其上的相对成本(如在piwe [;中)。

pruncom

查找修剪的可组合组的合意树。语法和 prunnelsen 一样,但是 + 不被允许

prunmajor

使用快速且不精确的启发式算法来识别要修剪的分类单元,以改善MRT或频率差异树。它通过参考特定组(即出现在参考树中的组)进行检查。

语法:prunmaj T N1 N2 N3 .. Nn / S / L \ U ;

其中T是参考树数量[必填],N1-Nn是节点编号[全部],S是要考虑的树的集合[全部],L是要排除的分类群列表[无],U是不能从树中排除的分类群列表。

可以在参考树数量之前添加的其他参数

&P 组比例[0.333]。仅设置,不运行。

[X Y 去除内部( X )和外部( Y )的成本[1,1]。仅设置,不运行。

+ 显示树T的每个节点的pruns[不显示]

=N 显示最佳N值[1]

* 尝试改善频率差异,而不仅仅是频率。

可以通过最终参数添加/删除分类群

>G 向组G添加最佳N值的分类群。

<G 同上,移除分类群。

这些值以任意重新缩放的0到1之间的值呈现,预计具有更高得分的分类群将最大程度地改善结果(请记住,这是一种启发式方法!)。

prunnelsen

=P N/L 展示修剪最多 P 分类单元后的修剪树,用于树N的一致性,不包括分类单元L。检查是否出现其他组。如果您希望强制包含某些分类单元,请在末尾列出以\L列出它们。

>N 仅显示比N节点更多的修剪

[J] 一样,但是是合意的J节点

& 显示合意的改进修剪列表

* 存储改进合意的修剪(剪切分类单元放置在树的基部)

在分类单元列表后使用> G(或<G),则删除的分类单元将添加到(或从)分类单元组G

以下两个选项计算一致性子树

+ 完全计算一致性子树(不能与=[N]>一起使用,但可以与*&一起使用)。 一致性子树最大化共享分类单元的数量,而不是共享组的数量。

! 仅用于输入的二叉树的一致性子树的近似计算(仅用于二叉树)。如果与+中间使用,则单独快速,保存或者列出一个单独的树。

pruntax

N/L 从树N中修剪出分类单元L。如果使用符号!作为分类单元列表,则修剪所有非活性分类单元。如果使用*代替树列表,则从标签树中修剪分类单元;使用=xxx;代替分类单元列表,则修剪所有标记为xxx的终端分支。

prupdn

尝试对指定组中的分类单元进行修剪的组合,以改善MRT或频率差异,并将最佳集合放置在输出的分类单元组中。它使用一个最优度值来评估修剪,其中E = ( Sum(v) + P ) / ( T - 2 ),其中Sum(v)是修剪树所有支路的支持值之和,P =修剪的惩罚值,T =可以最少修剪的分类单元数量。

P被定义为R * 100 * ( 1 - F^2),其中R是修剪的分类单元数量,F是惩罚去除的因子(值越大,惩罚越强;默认值为0.5)。它可以进行“向下”或“向上”操作(因此命令的名称); 向下从没有修剪开始,尝试修剪的组合以改善 E(将在一阶段修剪的分类群移动到输出分类群组),向上以所有分类群修剪开始,在每个阶段找到最佳的分类群组组合来取消修剪。

在每个阶段,它尝试修剪或取消修剪最多M个分类群。

该命令适用于从更多启发式命令(例如chkmovesprunmajorpcrpruneprunnelsen)中得出的分类群组,并使用更详尽和基于最优性的评估对修剪进行精细化。

用法:prupdn G1 G2 options L / N

将获取组G1中的分类(将结果放置在组G2中),用于列表L中的树,忽略列表N中分类单元的位置,并指定选项。

选项是

[T] 使用树T的组作为参考(默认值=列表L中树的大多数或GC)。

> 使用“向下”修剪(=默认)

< 使用“向上”修剪

:FF用作罚分因素(0 <= F <= 100)(默认值= 0.5)。

* 使用频率差异而非原始频率

=M 在每个阶段,最多使用M个经过修剪的(或未修剪的)分类单元;在每个阶段,最佳的修剪(或未修剪)集合从可能的修剪(或未修剪)集合中删除(默认值为3)。

&N 使用N作为截止值(例如N=100,改进严格合意)

|S 使用S作为分隔值。这样,两个由支持值为S或更多的节点分隔的分类单元永远不会在组合时被修剪(因为一起消除它们的可能性较小会改善树);这加快了计算速度,但可能会错过一些改进(合法值为0≤S≤100)。在“向下”模式中,默认值为使用75的分隔符(使用0表示没有分隔符,即实际评估所有组合);在“向上”模式中,不使用分隔符,默认情况下,只有在明确指示时才使用分隔符。

ptnt

多线程管理运行(仅适用于MPI版本)。请注意,16383个或更少分类的版本不能与超过16383个分类的版本通信(混合32位和64位版本应该可以)。

again

再次发送指令给从设备,而无需重新发送数据。有了这个,就可以节省通信时间。语法是
ptnt again jobname tasklist /trees N S /deltrees /swap N

    = ...new slave commands...; return;  
如果没有给出任务列表,则重新设置工作名称的所有任务;如果未指定`trees`(并且未指定`swap`),则不发送树;如果指定了`deltrees`,则删除从设备中的树。如果指定了`swap N`,则它交换树`N`(删除任务中的任何现有树);如果要并行交换多个树,则最好使用`again`而不是`begin`交换每个树,因为`again`不需要重新发送数据到任务(`begin`需要!)。使用`...`作为指示,则重复从设备的先前指示。

begin

始开始一个作业。最多可同时运行32个作业;每个作业最多可有1000个任务。语法是
begin name numt hosts = tnt commands ; return 
`name`是作业的标识符,`numt`是要运行的进程的副本数,`hosts`是要运行的主机列表(可以使用PVM使用的名称或数字;当前主机被标识为`myself`,父进程的主机(如果存在)被标识为`parent`(这使脚本更易于移植;另外,在主机列表中,运行主TNT的机器始终是数字0,而在该从属机中运行的从属机本身始终是数字1);`master`标识主节点(即TNT启动的位置)。当未给出主机列表时,如果执行进程是主节点,则使用除当前进程以外的所有主机,或者如果进程是从属进程,则使用除父进程运行的主机以外的所有主机。如果没有给出 `numtasks` 和 `hostlist`,将使用每个可用从机主机一个任务(除了独占部门,它生成与选择数目相同的任务)。如果想要指定要在主机(或主机组)中生成的任务数量,请在主机(或主机组的名称)后面的括号中包含任务数(请注意,这指定在组的每个主机中启动任务的数量)。如果指定了几个任务数量,则最后一个生效(无数字 = 1)。当前(或减少的)数据会自动传递给每个子进程(每个子进程都有不同的随机种子)。`=` 符号可以在一个或多个斜杠`/`之前,指示:



`ram N`     N:每个从机使用的 RAM,以 MB 为单位。

默认情况下,TNT 指令每个从机分配足够大的 RAM 以完成大多数当前数据集的操作。

`ram xN`    slave 使用 `N` 倍默认 RAM

`trees N S` 将 S(一组树)中随机选择的 N 棵树随机发送给每个 salve

`trees *`   分发树组,发送任务 `i` 组 `i` 中的所有树

`sector N S`    从树集 S 中随机选择大小为 N 的选项(与任务一样多的选择;每个任务从从 S 中随机挑选的树中获取一个扇区)

`sector*N T`    从树 `T` 创建 `N` 个独占扇区(大小设置为`taxa/N`,任务设置为 `N`)。 如果`*`后跟`-`,则允许更宽松(部分随机)的选择。 如果 `N` 之后是扇区列表(在方括号内),则只有这些扇区才会有效启动。 当仅启动一些扇区并且恢复/监视结果时,每个从站中的最佳树的两个副本(树的其余部分被分解)被放置在树组`TreeSector_i_xxx`中(其中i,task number 和 job name)。 这可用于将扇区的分辨率重新插入主树中,或使用`freqdifs`命令组合连续扇区分析的结果(即简化树的两个副本和原始树的单个副本, 产生替代品;确保为此关闭临时折叠树)。

        注意: 在 `sec:chkroot` 下,此选项创建的扇区数量在运行时确定; 使用 `treeparts` 表达式预先查找数量。



`sector d N X`   选择在节点 `N` 周围的节点 (树被指定为 `/trees`),距离 `N` 不超过 `X` 个分支。

`sector !N >X <Y T` 选择树 T 中的节点 N 和其直接后代; 如果一个后代聚合度大于 Y,或小于 X,则使用它; 否则,使用节点的直接后代 (这避免了从不良或未解决的类群中创建 HTU)。为了创建 HTU,如有必要,树进行二分。

`swap N`    在树 `N` 上并行执行 TBR 交换。完成后,任务 0 拥有最终树(如果没有发生错误,则该树是 TBR 最优的)。 如果发生一些错误(例如,作为进程 0 dead 的机器),那么树就会丢失。 当树最接近最优时(即仅当某些任务找到更好的树时才需要通信时间),这种方法效果最好。 当使用`swap`时,从属任务的指令将被忽略(任务仅交换树,并返回)。 选项: `-N` 不排序交换; `+N` 使用进程作为控制器(控制器不交换)。

`dskdata`   从磁盘读取数据,而不是从PVM读取(数据必须在`ptnt setdata`中设置)。

如果指示了几个`trees`选择,则保证选择i从每个集合`Si`中至少取出`Ni`棵树; 每个作业最多可以指示 8 个树选择。 如果每个选择 `i` 的集合不相交,则发送到每个从属设备的树总数将是各个 `Ni` 的总和; 否则,可能会更少。

从机可以开始其他并行作业;如果这样做,请给`...`作为TNT命令列表,简单地复制当前作业的命令(请谨慎使用:必须有一种方法最终停止从父进程生成更多作业,例如使用`plevel`表达式--父进程数)。使用单引号(`'0'`)时,用户变量在本地主机上解释,在从机主机上使用双引号(`"0"`)解释。性状串`return`可跟随关键字`[no]trees`、`txt`、`value N`或`tgroups`(如果独占选择扇形,选项`polytree`和`nopolytree`确定是否返回多分叉树;否则,仅当初始分数优于/匹配时才发送多分叉树)。

catchout

仅适用于PVM。从从机的stderr捕获输出(使用`nocatchout`断开连接)。从机使用`lquote>;`将内容写入到stderr。必须在启动作业(s)之前给出`catchout`选项。

cleansig

上一个`wait`留下的任何带有信息的信号中删除。如果需要对已完成的作业应用`goto`或`again`,并且要再次等待作业,则可能需要这样做。建议在中断的从属节点(停止)执行并准备进行进一步并行TBR时运行此(带`again`)。

close

终止所有活动作业并使 TNT 与 PVM 脱离。 这样,PVM 可以停止,TNT 继续正常运行。 如果 PVM 停止且 TNT 处于并行模式,TNT 将被终止。

cmdname

定义要由父进程显示的命令名称(复制直到找到分号为止;`-`未定义)。

commitime

设置通信时间(信号周期)。

encode

设置与从站通信的 PVM 编码类型。 选项有“原始”和“默认”(适用于单机/多机架构)。也必须在从属进程中设置。 默认情况下使用当前状态,但是如果同构集群在运行过程中变得homogeneous(反之亦然),这可能会产生问题。

get [!]

获取作业结果。作业必须已完成运行(或已停止(使用`ptnt stop job;`)。如果作业尚未完成,`get`将等待最后一个作业完成(或直到超时)。或者,如果 使用`!`作为`get`的第一个参数,从设备立即停止(使用默认停止信号,见下文)。如果 get 正在主设备中执行,则可以按 <esc> 停止(这会调用错误 处理程序,清除所有输入缓冲区),或按`.`(句点,它会跳过 get,但会正常继续其余操作。如果正在检索单个作业,则 `maxtrees` 会自动重置(如果需要)。如果检索多个作业,则 `maxtrees` 会自动重置(如果需要)。 同时,`maxtrees` 不会自动重置(多余的树会丢失)。

getbufs

从作业获取文本缓冲区。

goto N

类似于skipto,但如果已经执行`tagset N;`,则重置指令。

gwait ()

监视,当条件满足时,停止作业并获取它们。(注意:`gwait`永远不会重置`maxtrees`;多余的树将被清除)。

halt

= `stop`

hgroup

 定义主机组(语法与`tgroup`相同)。

hosts

列出可用主机。

hpause

暂停在给定主机上工作的所有从任务。

hresume

恢复在给定主机上工作的所有从任务。

kill

杀死作业(不返回结果)。

load

 显示主机使用情况

mnemonic

如果可能,请记住在最后一个 `ptnt` 等待中读取的值(然后在从属设备中后续访问树的数量、分数等,无需花费时间;但请注意,这些值可能不再是当前的)。 如果重新分配内存(例如更改`maxtrees`),则会忘记值。 使用 `+/-` 打开/关闭`mnemonic`。

pause

暂停作业; 释放从属设备上的 CPU 时间(但不释放 RAM) 可以使用`ptnt Pause jobname = 0 3;`暂停作业 jobname 的单个任务(例如 0 3)。 如果master在后台运行,可以通过在工作目录中创建文件`pause_tnt_ID`(其中ID是master的进程id号)来暂停所有作业(使用`stop_tnt_ID`代替,所有作业都停止)

reset

重置作业列表(没有活动作业可以运行)。如果经常这样做,可以减轻TNT上的内存需求。

resume

恢复中断的作业(自动和`get`一起工作)。可以使用`ptnt resume jobname = 0 3;`恢复特定任务(例如,0 3)的作业jobname。

setdata

在指定的主机中写入数据文件(`.tnt_tmpfile`)(可以在主机列表后面的方括号中指示其他目录;在这种情况下,在启动作业之前,您必须告诉 TNT 该目录在哪里,使用`ptnt setdata = dirname;`)。 设置磁盘数据后,随后启动的作业可以使用`dskdata`选项从磁盘读取数据,而不是让 PVM 传输数据(这会消耗时间和内存)。

setram N

将RAM分配给从节点(基于当前设置)而不是总控平台分配RAM,分配固定数量的N(MBytes)。

skipto N

在指定的作业/从节点中跳过指令,到标记为`tagset N;`的点(如果已经在那里,则忽略)。从机(slave)不能在循环内找到标记,必须继续执行指令(如果slave已处于`return`阶段即最后一个标记,则忽略`skipto`)。

spy

从工作中获取树,但让工作继续运行。如果指定了单个作业,则还可以指定任务列表(在斜杠后面)。注意:这仅从直接子slave获得树(而不是它们的子孙)。`Maxtrees`在`spy`单个工作时会自动重置(如在`get` 中)。

status

报告所有活动作业的状态。

stop [s]

停止作业(返回到目前为止的结果)。或者,可以在方括号内确定停止信号:等待、循环、搜索或全部。 等待会停止对从属设备(当前和未来)的监视,但不会停止计算或搜索本身。 循环允许当前执行的循环继续,但后续循环将停止。 搜索假设当前和后续搜索的超时始终得到满足; 它不会停止其他计算(例如合意计算)。 全部停止计算、搜索、监视(等待)和循环。 默认停止信号(即 `get !` 使用的信号)根据从设备正在执行的操作而具有不同的效果; 如果正在监视,(使用 `pt wait`)监视将被中断并执行后续指令(如搜索); 如果正在搜索,则中断搜索并且从机立即返回。

target N

定义标签为`N`(在从机内部很有用,用于协调任务;请参见help+attag,并查看上面的`skipto`和`goto`)。这也是一个普通的命令。标签设置的截断被认为是设置值,但`skipto/goto`只会识别整个性状串。

timeout

时间设置超时时间(以秒为单位),等待从机使用`get`返回结果。默认情况下没有超时时间(=0),但这可能会导致故障容忍性(即如果从机主机死机,则TNT可能会死机)。

wait ()

监视指定的作业(直到括号内指示的条件满足为止)。树的数量、复制次数、剩余任务等等,定期进行访问(如果TNT正在监控,则评估速度更快;否则,除非`mnemonic`打开,否则必须向从属发送请求值的信号,并且父项必须等待响应)。如果未指定条件,则等待所有任务完成。在方括号内括号前可以指定超时时间;如果超时,则即使条件未满足,等待也会退出(但然后`wait_successful=0`)。