Rosalind 040 Distances in Trees

这个问题涉及到图论中的树结构以及如何使用Newick格式来表示树。下面是关键概念的解释和解决问题的方法:

图论中的树理解

  1. 树中的唯一路径:在树这种图结构中,任意两个节点之间总是存在一条唯一的路径。这种唯一性是因为树是一个连通的、无循环的图。如果两个节点之间存在多条路径,就会形成一个循环,这在树中是不允许的。

  2. 在系统发育学中的应用:在系统发育学中,树用来表示物种或群体之间的进化关系。两个分类群(物种或群体)之间的距离通常被定义为树中连接它们的唯一路径上的边的数量。这对于理解进化距离非常重要。

Newick格式

Newick格式是一种表示树结构(特别是在系统发育学中)的简洁文本形式。它特别适用于未标记的树或内部节点未标记的树。

  • 有根树:在有根树中,连接到同一内部节点的叶子(外部节点)是邻居。Newick格式通过迭代地将这些节点合并为一个单一的节点来表示,合并节点的标签代表合并的叶子。
  • 无根树:对于无根树,可以选择任何一个内部节点作为树的根来表示。
  • 格式变化:根据节点是否被标记以及树是有根还是无根,格式可能会有所不同。

问题描述

给定一系列以Newick格式表示的树。每棵树后面跟着一对节点。我们的任务是找出每棵树中这两个节点之间的距离。距离定义为连接它们的唯一路径上的边的数量。

https://rosalind.info/problems/nwck/

解决方法

  1. 解析Newick格式:首先,你需要解析Newick格式来构建树。这涉及到根据文本表示创建节点和边。

  2. 查找距离:一旦树被构建,就在每棵树中找出指定节点之间的距离。这可以通过简单的深度优先搜索(DFS)或广度优先搜索(BFS)算法来完成,因为在树中任意两个节点之间都有唯一的路径。

  3. 返回距离:对每对节点在每棵树中计算并返回距离。

样本数据集解析

  1. 第一棵树: (cat)dog;dog cat

    • 这个Newick格式表示一个有两个节点(dogcat)的树,其中 catdog 的邻居(或子节点)。
    • 结构可以视为 dog 是根节点,cat 是它的直接子节点。
    • 查询的节点对是 dogcat
  2. 第二棵树: (dog,cat);dog cat

    • 这个Newick格式表示一个有两个叶子节点(dogcat)的树,这两个节点都是同一个未命名的内部节点的邻居。
    • 结构可以看作是一个根节点(未命名),它有两个子节点 dogcat
    • 查询的节点对同样是 dogcat

计算距离

在树中,两个节点之间的距离是连接这两个节点的唯一路径上的边的数量。

  1. 第一棵树的距离:

    • dogcat 的路径只有一条边,因此距离是 1。
  2. 第二棵树的距离:

    • dogcat 需要经过根节点,因此路径上有两条边(dog 到根节点,根节点到 cat),所以距离是 2。

代码:

这段代码是用于解析Newick格式的树,并计算其中两个指定节点之间的距离。这段代码使用了BioPython库中的Phylo模块,这是一个专门用于解析和操作生物信息学中的树结构(如系统发育树)的工具。

关键代码:

  • ancestor = tree.common_ancestor(x, y): 找到节点xy的最近公共祖先。
  • out.append(len(ancestor.get_path(x)) + len(ancestor.get_path(y))): 计算从最近公共祖先到节点xy的路径长度,并将它们的和添加到out列表中。
from io import StringIO
from Bio import Phylo
c = open(r'').read().rstrip().split('\n\n')
out = []
for i in c:t, x, y = i.split()tree = Phylo.read(StringIO(t), 'newick')ancestor = tree.common_ancestor(x, y)out.append(len(ancestor.get_path(x)) + len(ancestor.get_path(y)))
print(out)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597783.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教学类-综合练习-02】20231208 大3班 数字加减法练习(数字火车、X—Y加法减法、X乘法、X—Y数字分合)

教学情况 时间:20231208 班级:大3班 人数:21 目的:幼儿根据自己的能力水平,选择适合的数学题(多款样式) 在昨天大4班制作的基础上,特地打印一些小纸片数学题(节省纸…

如何在vscode下,启动jupyter连接远程服务器

要使用Jupyter notebook远程连接服务器,可通过以下步骤: step1.首先,需要在远程服务器上安装Jupyter。这可以通过Python的包管理器pip完成: pip install jupyterstep2.然后,在该环境下创建一个新的内核。例如&#x…

Matlab/F#/R进行数据分析和建模算法的经验,vb.net输给他了

微软放弃了vb.net的开发,但是持续花费巨资投入F#,简单一看他的语法就是qbasic ,vb6一样。鹿死谁手,谁能相信vb.net竟然被f#给干掉了。外面有vb6语法的python成了全球第一的编程语言,内部还有强大的教授开发的这工具扯后腿。 有人说为什么中国搞不出像mat…

HttpRunner自动化之响应中文乱码处理

响应中文乱码: 当调用接口,响应正文返回的中文是乱码时,一般是响应正文的编码格式不为 utf-8 导致,此时需要根据实际的编码格式处理 示例: 图1中 extract 提取title标题,output 输出 title 变量值&#x…

vue项目使用vue-pdf插件预览pdf文件

1、安装vue-pdf&#xff1a;npm install --save vue-pdf 2、使用 具体实现代码&#xff1a;pdfPreview.vue <template><div class"container"><pdfref"pdf":src"pdfUrl":page"currentPage":rotate"pageRotate&qu…

三种解密 HTTPS 流量的方法介绍

Web 安全是一项系统工程&#xff0c;任何细微疏忽都可能导致整个安全堡垒土崩瓦解。拿 HTTPS 来说&#xff0c;它的「内容加密、数据完整性、身份认证」三大安全保证&#xff0c;也会受到非法根证书、服务端配置错误、SSL 库漏洞、私钥被盗等等风险的影响。很多同学认为只要访问…

Debezium发布历史47

原文地址&#xff1a; https://debezium.io/blog/2019/02/13/debezium-0-9-1-final-released/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. Debezium 0.9.1.Final 发布 二月 13, 2019 作者&#xff1a; Gunna…

2024年PMP考试新考纲-【人员领域】真题解析(3)

今天华研荟继续为您分享PMP新考纲下的【人员People领域】近年真题&#xff0c;帮助大家举一反三&#xff0c;一次性通过2024年的PMP考试。 这两天有读者朋友和我探讨&#xff0c;做机构提供的模拟题是否有必要。华研荟的态度是&#xff1a;完全没必要&#xff0c;做模拟题是浪费…

Feign远程调用

Feign远程调用 Fegin的使用步骤如下&#xff1a; 1&#xff09;引入依赖 我们在order-service服务的pom文件中引入feign的依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign&…

6-Docker Compose-tomcat application(指定官方镜像)

1.创建docker-compose.yml文件,添加如下内容并保存 vim docker-compose.yml [root@centos79 ~]# cat docker-compose.yml #yml文件 version: 3 #版本号,默认为3 services:tomcat-ztj: #定…

Module-Federation[微前端]

Module-Federation 微前端简介我们为什么没有延续使用【乾坤】使用Module-Federation 优/缺EMP 优EMP 缺图解DEMO详解`Tips:` [文件资源](https://download.csdn.net/download/alnorthword/88699315)微前端简介 微前端是借鉴了微服务的理念,将一个庞大的应用拆分成多个独立灵活…

嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目(开源)

嵌入式-stm32-感应开关盖垃圾桶项目&#xff08;开源&#xff09; 网盘资料 《嵌入式-stm32-基于HAL库的感应开关盖垃圾桶项目&#xff08;开源&#xff09;》 目录 一&#xff1a;项目概述 二&#xff1a;材料准备 三&#xff1a;细节分析&#xff08;重点&#xff09; 四&…

【CSS】浅学一下filter

目录 1、基本概念 2、用法 3、应用案例 更加智能的阴影效果&#xff1a; 元素、网页置灰 元素强调、高亮 毛玻璃效果 调整网页sepia 褐色值可以实现护眼效果 1、基本概念 CSS filter 属性将模糊或颜色偏移等图形效果&#xff08;对比度、亮度、饱和度、模糊等等&#…

机器人制作开源方案 | 清洁机器人

作者&#xff1a;胡志宇、白永康、颉志国、刘昭迅、王维浩 单位&#xff1a;北京石油化工学院 指导老师&#xff1a;陈亚、王殿军 1. 设计方案论证 1.1 清洁机器人方案选择 目前&#xff0c;市场上清洁机器人比比皆是&#xff0c;各大品牌之间的竞争也相当激烈&#xff0c;…

MongoDB快速实战与基本原理

MongoDB 介绍 什么是 MongoDB MongoDB 是一个文档数据库&#xff08;以 JSON 为数据模型&#xff09;&#xff0c;由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。文档来自于“JSON Document”&#xff0c;并非我们一般理解的 PDF、WORD 文档…

【MySQL】数据库之MHA高可用

目录 一、MHA 1、什么是MHA 2、MHA 的组成 3、MHA的特点 4、MHA的工作原理 二、有哪些数据库集群高可用方案 三、实操&#xff1a;一主两从部署MHA 1、完成主从复制 步骤一&#xff1a;完成所有MySQL的配置文件修改 步骤二&#xff1a;完成所有MySQL的主从授权&#x…

vue3中集成sass实现全局scss样式变量

一、安装sass npm i sass 二&#xff0c;在style/variable.scss创建一个variable.scss文件 // 给项目提供的scss全局变量 $mycolor:red; 三、在vite.config.ts文件配置如下: export default defineConfig({ plugins: [ vue(), // scss全局变量的一个配置 css: {…

三款红外接收二极管电路图

红外接收二极管电路图一&#xff1a; 如图所示&#xff0c;图是红外线遥控接收装置实例。红外线传感器有多种&#xff0c;这里选用光电二极管TPS604。工作原理简介如下&#xff1a;光电二极管TPS604接收到被调制的红外线的微弱信号&#xff0c;先经场效应晶体管VT1的前级放大&…

Embree使用指南(无SYCL)

IntelEmbree是由Intel开发的高性能光线跟踪库&#xff0c;以Apache 2.0许可证的开源形式发布。 Embree的目标是图形应用程序开发人员&#xff0c;以提高逼真照片渲染应用程序的性能。Embree针对生产渲染进行了优化&#xff0c;重点关注非相干光线性能、高质量的加速结构构建、丰…

分布式系统的CAP理论详解

介绍 CP 系统是指在 CAP 理论中偏向于一致性&#xff08;Consistency&#xff09;和分区容错性&#xff08;Partition tolerance&#xff09;&#xff0c;牺牲了可用性&#xff08;Availability&#xff09;。在这样的系统中&#xff0c;一致性是非常重要的&#xff0c;即使在…