首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R语言ggtree:进化序列id改成物种名称

通常我们会使用比对好fasta文件构建进化,fasta文件中大于号后内容就是最终进化树上文字标签。如果拿到进化文件后你想替换掉其中一些内容,那该怎么办呢?...大家可以关注我公众号 小明数据分析笔记本 留言相关问题,如果我恰巧会的话,我会抽出时间介绍对应解决办法 首先你已经有了构建好进化文件 (Synergus:0.1976902387,(((((Periclistus...image.png 第一列x就是进化中原本序列名称 第二列y是想要替换成id名称 读入进化文件 library(treeio) tree<-read.newick("ggtree_practice_aligned.fasta.treefile...tree1<-tree tree1@phylo$tip.label<- df[match(tree1@phylo$tip.label,df$x),]$y 这样就替换过来了 接下来可视化展示一下新进化...image.png 把这个新进化写出到文件里 write.tree(tree1@phylo,file = "pra.nwk") 这样就达成目的了 这里导出进化文件没有了最初支持率信息,我们再通过一行代码给他加上就好了

2.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

并查集应用在图论最小生成算法——Kruskal

我们先不讲什么叫生成,怎么生成,有向图、无向图这些,先简单点,从最基本内容开始,完整地这个算法梳理一遍。 是什么 首先,我们先来看看最简单数据结构——。...是一个很抽象数据结构,因为它在自然界当中能找到对应物体。我们在初学时候,往往都会根据自然界真实来理解这个概念。所以在我们认知当中,往往是长这样: ?...上面这张图就是自然界抽象,我们很容易理解。但是一般情况下,我们看到树结构往往不是这样,而是倒过来。也就是树根在上,树叶在下。...情况2也不对,因为有了环,是不应该有环。自然界是没有环,不存在某根树枝自己绕一圈,同样,我们逻辑也是没有环,否则我们递归访问永远也找不到终点。...而水管是有成本,那么显然自来水公司希望水管总长度尽量短。比如山里村庄通电,要用尽量少电缆所有村庄连通,这些类似的问题其实都可以抽象成最小生成来解决。

83230

二叉搜索转化为排序双向链表(BST序循环遍历)

题目 一个 二叉搜索 就地转化为一个 已排序双向循环链表 。...对于双向循环列表,你可以左右孩子指针作为双向循环链表前驱和后继指针,第一个节点前驱是最后一个节点,最后一个节点后继是第一个节点。 特别地,我们希望可以 就地 完成转换操作。...当转化完成以后,节点左指针需要指向前驱,节点右指针需要指向后继。 还需要返回链表中最小元素指针。 示例 1: ?...示例 2: 输入:root = [2,1,3] 输出:[1,2,3] 示例 3: 输入:root = [] 输出:[] 解释:输入是空,所以输出也是空链表。...解题 采用二叉非递归遍历写法即可 /* // Definition for a Node. class Node { public: int val; Node* left;

1.1K20

LeetCode 102 | 二叉同层元素归并在一起

题意 给定一个二叉,要求我们树上元素根据所在深进行归类。也可以理解成横向遍历这棵,最后返回归类结果。 这样描述有些干,我们来结合样例看下。...3 / \ 9 20 / \ 15 7 这棵二叉深为0点就只有一个3,所以这一层元素是[3],深为1点有两个,分别是9和20。...所以最终返回结果就是: [ [3], [9,20], [15,7] ] 题解 我们仔细来分析一下问题,可以发现本题关键点有两个,一个是我们要按照深来这些元素归类。...所以稍微剩下就是保证元素从左到右顺序存储了,但稍微想一下就可以发现这其实也并不是什么问题。因为无论是先序、序还是后序遍历,对于同一层元素来说,一定是先左后右。...1) # 当前元素append到ret[d]list当中 ret[d].append(u.val) dfs(root, 0)

55810

【化解数据结构】详解堆结构,并实现最小堆结构

大家好,我是小丞同学,一名大二前端爱好者 这篇文章讲解数据结构堆 非常感谢你阅读,不对地方欢迎指正 愿你忠于自己,热爱生活 欢迎大家关注本专栏,持续关注最新文章~ 本专栏其他内容...完全二叉和满二叉又类似,我们先来看看什么是满二叉 1. 满二叉 除了叶子节点,每个节点都有两个子节点 一个二叉,如果每一个层结点数都达到最大值,则这个二叉就是满二叉。...在上一篇文章结尾也说了,无论什么数据结构,在内存中都只是数组,或者对象罢了,所有的数据结构都是我们心中存在,我们知道这么做好处是怎么怎么样 在这里选用数组来实现一个堆 利用广度优先遍历,填入数组里...采用递归 首先我们需要先判断节点位置是否在堆顶部,这也是递归结束标记之一 接下来进行递归体内容,我们递归实现目的是通过交换使元素到达合适位置 因此判断插入元素和父节点值关系,如果父节点值大于当前节点值...数据流第 K 大元素 总结 在这篇文章我们详细讲解了,什么是一个堆,如何实现一个堆,到最后手写封装了一个最小堆,在这过程我们知道了如何一个元素插入堆,如何获取堆特定元素。

59130

【化解数据结构】详解堆结构,并实现最小堆结构

大家好,我是小丞同学,一名大二前端爱好者 这篇文章讲解数据结构堆 非常感谢你阅读,不对地方欢迎指正 愿你忠于自己,热爱生活 欢迎大家关注本专栏,持续关注最新文章~...完全二叉和满二叉又类似,我们先来看看什么是满二叉 1. 满二叉 除了叶子节点,每个节点都有两个子节点 一个二叉,如果每一个层结点数都达到最大值,则这个二叉就是满二叉。...在上一篇文章结尾也说了,无论什么数据结构,在内存中都只是数组,或者对象罢了,所有的数据结构都是我们心中存在,我们知道这么做好处是怎么怎么样 在这里选用数组来实现一个堆 利用广度优先遍历,填入数组里...采用递归 首先我们需要先判断节点位置是否在堆顶部,这也是递归结束标记之一 接下来进行递归体内容,我们递归实现目的是通过交换使元素到达合适位置 因此判断插入元素和父节点值关系,如果父节点值大于当前节点值...数据流第 K 大元素 总结 在这篇文章我们详细讲解了,什么是一个堆,如何实现一个堆,到最后手写封装了一个最小堆,在这过程我们知道了如何一个元素插入堆,如何获取堆特定元素。

50610

数据结构学习笔记分享

虽然如此久远,但是我从听第一节课开始就深深被郝斌老师所折服,从未见过谁可以这门枯燥课教授地如此生动有趣(想当年我数据结构只考了61分......)。.../data_structure_learning 课堂笔记如下: 一、基本概念 数据结构定义: 我们如何把现实中大量而复杂问题以特定数据类型和特定存储结构保存到主存储器(内存),以及在此基础上为实现某个功能...这样结果就是,无论是入队还是出队,两个都往上,空间就越来越少,操作不方便。 所以,关键是需要,在添加元素时候,如果rear已经到顶部,rear可以从上面跳到下面接上去。...主要思想就是: 通过先序或者后序确定每个根节点,然后就可以利用序把左右分开,得到新之后,就又可以通过先序或者后序确定根节点。以此类推。 6. 应用 是数据库数据组织一种重要形式。...操作系统子父进程就是。 面向对象编程继承关系就是

83420

【集创赛】arm杯国奖作品推荐--技术文档!

该算法以图像特定位置两个像素点强度关系作为决策内部节点判断依据,每个内部节点都有且只有两个分支,也就是说,这是个二叉决策模型。...级联决策将在采集到图像上进行窗检测,在经过一轮窗后,根据缩放因子改变检测区大小,进行新一轮窗。每一步窗都会通过级联决策判断该位置是否为人脸区域,并进行记录与累加。...得到特定格式hex文件后,我们就可以在ITCMVerilog代码通过readmemh语句编译得到可执行代码初始化到ROM。...图3.3 axf文件转换为特定格式hex文件 4....4.3.2 多线程窗并行 我们算法决策级联检测器需要将检测区或检测窗口在摄像头采集到图像上进行多轮窗检测。

1.6K10

B-

概念 B-可以理解为平衡二叉拓展, 它也是平衡, 但是每个节点可以有多个关键字. ‘B’ 后面的 ‘-‘ 不是减号....下面是一棵 B-例子: image.png B-存储结构 image.png 其中, n 为当前结点关键字个数, \text{p}_i 是指向孩子结点指针....性质 对于 m 阶 B-: image.png 注意: 严格来讲, B-阶数不是指含有最多关键字结点度数. 有争议问题: B-高度是否应该包含失败结点? 此处认为是不包括....插入(以 5 阶 B-为例) image.png 删除(以 5 阶 B-为例) 直接删除, 位于终端, 且删除后该结点关键字数仍然大于等于 \lceil m/2 \rceil image.png...image.png 当删除后关键字数小于 \lceil m/2 \rceil , 父结点关键码下移, 兄弟结点关键码上, 上关键码位置子树指针移动到被删关键码位置 image.png 若该结点和左右兄弟关键字数都达到下限

56710

Recursion递归

递归定义 编程角度来看,程序调用自身编程技巧称为递归(recursion)。 本质上将原来问题转化成更小同一问题。...每一个递归程序都可以把它改写为非递归版本。我们只需利用栈,通过入栈和出栈两个操作就可以模拟递归过程,二叉遍历无疑是这方面的代表。 但是并不是每个递归程序都是那么容易被改写为非递归。...A 杆上有 N 个穿孔圆盘,盘尺寸由上到下依次变大,B,C 杆为空。要求按下列规则将所有圆盘移至 C 杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 问:如何?最少要移动多少次?...很简单,我们首先用 N 个圆盘移动到 C 上方法 N 个圆盘都移动到 B 上,然后再把第 N+1 个圆盘(最后一个)移动到 C 上,再用同样方法将在 B 杠上 N 个圆盘移动到 C 上,问题解决...image 首先看下基本情况,即终止条件:当为空时,节点数为 0; 再来看下通用情况:当前节点左,右子树节点数都被求出,则以当前结点为根二叉节点总数就是 “左子树 + 右子树 + 1”。

74320

editplus快捷键大全之editplus光标快捷键

快捷键大全之editplus文件快捷键,现在我们介绍一下editplus快捷键大全之editplus光标快捷键 移动光标到上一个制表符Shift+Tab 移动光标到上一个制表符位置...上 Up 光标上一行 选区扩展到上一行 Shift+Up 选定区域扩展到上一行...光标上一页 Page Up 光标上一页 选区扩展到上一页 Shift+Page Up 选定区域扩展到上一页...Ctrl+Page Down 光标移动到当前屏幕底部 选区扩展到屏幕底部 Ctrl+Shift+Page Down 选定区域扩展到当前屏幕底部 光标移动到屏幕顶部...Ctrl+Page Up 光标移动到当前屏幕顶部 选区扩展到屏幕顶部 Ctrl+Shift+Page Up 选定区域扩展到当前屏幕顶部动到上一个单词

1K30

如何实现一个能精确同步滚动Markdown编辑器

unified独特之处在于允许一个处理流程中进行不同格式之间转换,所以能满足我们本文需求,也就是Markdown语法转换成HTML语法,我们会用到其生态remark(解析Markdown)、...具体来说就是使用remark生态下remark-parse插件来输入Markdown文本转换成Markdown语法,然后使用remark-rehype桥接插件来Markdown语法转换成HTML...当然仅仅对应还不够,DOM节点能通过DOM相关属性获取到它高度信息,语法某个节点我们也需要能获取到它在编辑器高度信息,这个能实现依赖两点,一是语法提供了某个节点定位信息: 二是CodeMirror...为80,为什么不是0呢,上面CodeMirror文档截图里其实有说明,返回高度是这一行底部到文档顶部距离,所以要获取某行顶部所在高度相当于获取上一行底部所在高度,所以行数减1即可: let offsetTop...解决这个问题方法也很简单,还记得文章开头介绍非精准滚动原理吗,这里我们也可以这么计算:编辑区域当前滚动距离是已知,当前滚动到节点顶部距离文档顶部距离也是已知,那么它们差值就可以计算出来

86810

MySQL 索引

官方来讲就是:索引是对数据库表中一列或多列值进行排序一种结构,使用索引可快速访问数据库表特定信息。 ?...稍微分析一下会发现,每种查找算法都只能应用于特定数据结构之上,例如:二分查找要求被检索数据有序,而二叉查找只能应用于二叉查找树上,但是数据本身组织结构不可能完全满足各种数据结构,所以在数据之外,数据库系统还维护着满足特定查找算法数据结构...P4 页 ③ P4 加载到内存,采用二分法找到 105 记录后退出 1.4.2 查询某个值所有记录 ?...如上图,查询 105 所有记录,过程如下: ① P1 页加载到内存 ② 在内存采用二分法查找,可以确定 105 位于[100,150)中间,所以我们需要去加载 100 关联 P4 页 ③... P4 加载到内存,采用二分法找到最有一个小于 105 记录,即 100,然后通过链表从 100 开始向后访问,找到所有的 105 记录,直到遇到第一个大于 100 值为止 1.4.3 范围查找

2K41

数据结构和算法

数据通过推送添加,并通过pop顶部删除。 ? image 队列:队列是FIFO数据结构。在该结构,在一端插入新元件,从另一端移除现有元件。 ?...image Max-Heap:堆是基于数据结构,其中所有节点都按特定顺序排列。最大堆是二叉。它是完整。存储在每个节点中数据项大于或等于存储在其子节点中数据项。 ?...在trie,每个节点(根节点除外)存储一个字符或一个数字。通过trie从根节点向下遍历到特定节点n,可以形成字符或数字公共前缀,其也由特里结构其他分支共享。 ?...image 二进制搜索:二进制搜索是一种有效算法,用于从有序项目列表查找项目。它工作原理是反复列表可能包含该项目的部分分成两半; 直到你将可能位置缩小到一个。...合并排序:数组分成两半,对每一半进行排序,然后将它们合并在一起。这些半部分每一部分都应用了相同排序算法。最终,它合并了两个单元素数组。O(nlogn)平均值和最差值。 ?

2K40

哈希简介

顶部哈希(top hash)是哈希 0 和 1 连接后所获取哈希值 大多数哈希实现都是二叉(每个节点下有两个子结点),但它们也可以在每个结点下用更多子结点。...得到顶部哈希后,则整棵哈希就可以通过 P2P 网络非受信来源获取。下载得到哈希后,即可根据可信顶部哈希对其进行校验,验证哈希是否完整未遭破坏。...如果哈希损坏或伪造,则将尝试来自另一个来源另一棵哈希,直到程序找到与顶部哈希匹配哈希。...例如,在上图中,如果树已经包含哈希 0-0 和哈希 1,则可以立即验证数据块 L2 完整性,方法是对数据块进行散列,然后结果与哈希 0-0 和哈希 1 迭代组合,最后结果与顶部哈希进行比较。...挑战者提供随机数据 D1,D2 和 D3,或由证明人生成(需要加入特定信息避免被人复用证明过程)。 证明人构造如图所示默克尔,公布 N1,N5,Root。

1.4K10

2019高考编程卷:谷歌面试编程题及解题技巧(MIT版)

问题 2:在数组中进行查找 给定一个已排序整数数组,如何找出特定整数 x 位置? 优秀答案:使用二分搜索法。数组中间数字与 x 进行比较。如果相同,则找出了 x。...优秀答案:跟踪链表两个指针,并在链表开始处启动它们。在算法每轮迭代第一个指针往前一个节点,把第二个指针往前两个节点。如果两个指针始终相同(不是在算法起点处),那么就有一个循环。...例如,如果我们想在上面的搜索 15,我们从最上方 17 开始。由于 15 6,我们移动到右边节点 12;由于 15>12,我们再次移动到正确节点 15,最终找到了需要数字。 要将元素加入二叉搜索,我们就要像搜索元素一样,遵循从父节点到子节点正确连接。...如果该节点有两个子节点,我们通过一种算法确定中下一个更小或下一个更大元素。为简单起见,这里就不赘述所使用算法了。我们节点中存储元素设定为该值。之后,我们从拼接包含该值节点。

95210

论文拾萃|利用GLAH算法解决集装箱翻箱问题

4、retrieval:一次访问库存,相当于区域中一个block 拿到区域外目的地中,如移动到卡车上等。...在定义了优先度后,我们relocation表示为 ,其中C表示被移动block优先度, 表示该block从 堆顶部动到了 。...我们retrieval表示为 ,与relocation区别在于block C从 移动到了最终目的地。...情况二:若不存在能够使箱子正确放置堆叠,我们考虑能否另外移动一个箱子为其腾出空间。 检查是否存在满足以下条件堆栈s’及其顶部箱子c’: 1. 顶部箱子c’目前是堆栈s’优先级最大箱子 2. ...若存在这样情况,则s’选择由所有候选堆栈顶部箱子优先级最小堆栈决定,而辅助堆栈选择由所有候选堆栈 中最小优先度最小堆栈决定。

1.1K41

【愚公系列】2023年12月 五大常用算法(一)-分治算法

贪心:在处理问题过程,每次做出局部最优选择,希望通过局部最优选择达到全局最优。贪心算法特点是快速、简单,但是无法保证每个局部最优解会导致全局最优解。常见应用领域为最小生成、活动安排等。...1.3 分治常见应用 寻找最近点对:通过分治算法点集分为左右两个部分,然后递归求解这两部分最近点对,最后考虑跨越两个部分最近点对。...汉诺塔问题: n 个盘子从原始柱子移动到目标柱子,需要将 n-1 个盘子从原始柱子移动到辅助柱子,然后最后一个盘子从原始柱子移动到目标柱子,最后 n-1 个盘子从辅助柱子移动到目标柱子,递归执行这个过程即可...求解逆序对:数组划分为两个部分,递归计算每个部分逆序对数,然后考虑跨越两个部分逆序对数。可以使用归并排序思想来实现。在归并时候,统计两个有序子数组之间逆序对数,逆序对数加到最终结果。...起始塔前n-1个盘子移动到中转塔上。 起始塔上第n个盘子移动到目标塔上。 中转塔上n-1个盘子移动到目标塔上。 这个过程可以看做是一个递归过程。

27422
领券