多序列比对&建树

目录

  • 目标物种和序列

    • 相关Seq列表
  • 多序列比对的原理和方法
    • 相关的工具
  • 建树的几种方法
  • 实际操作
    • Muscle&ClustalW

      • 可视化结果
      • newick文本
    • MEGAX本地
      • 构建流程
      • 距离矩阵和自带建树
      • 手动建树结果
    • 关于NEWICK格式

相关链接

http://journals.sagepub.com/doi/10.3181/0903-MR-94 (冠状病毒的Minireview)

http://www.biotrainee.com/thread-2253-1-1.html (系统发育树相关)

https://blog.csdn.net/Cccrush/article/details/90695891 (详细介绍进化树的几种构建方法和原理)

目标物种和序列

物种:冠状病毒中能够感染人的7种病毒

序列来源:NCBI上已经公布的Ref序列,我们只采用了其中的6种。

相关Seq列表

多序列比对的原理和方法

相关的工具

  1. ClustalX/W(前者为图形界面,后者为命令行界面)
  2. T-Coffee工具
  3. MultAlin工具
  4. MAFFT工具
  5. MEGAX工具(常用)

建树的几种方法

  1. 非加权分组平均法( unweighted pair group method with arithmetic mean, UPGAM
  2. 最小进化法( minimum evolution,ME)
  3. 最小二乘法( least squares,LS)
  4. 邻接法 (neighbor-joining, NJ)

以上的4种方法其实都属于距离法,即通过计算各物种之间的进化距离来作为建树的依据。

实际上还有一类建树的法则:Character-based methods 特征法,这里先跳过去,日后在看(挖坑ing)。

实际操作

Muscle&ClustalW

上面的几种工具在EBI的网站上都有公布(实际上里面还有很多的工具可以实现多序列比对),我们采用了其中的MUSCLE方法+ClustalW方法+MAFFT方法,能够直接得到最终的建树结果。

相关网页:

https://www.ebi.ac.uk/Tools/msa/muscle/

https://www.ebi.ac.uk/Tools/msa/clustalo/

可视化结果

Muscle:Accurate MSA tool, especially good with proteins. Suitable for medium alignments.

ClustalW:New MSA tool that uses seeded guide trees and HMM profile-profile techniques to generate alignments. Suitable for medium-large alignments.

MAFFT:MSA tool that uses Fast Fourier Transforms. Suitable for medium-large alignments.

后面两个的结果相近,可能更加接近真实情况。

newick文本

# Muscle
(
(
KP198610:0.22253,
(
NC_002645.1:0.16531,
MK334047.1:0.15607)
:0.08099)
:0.01856,
NC_019843.3:0.22538,
(
NC_045512.2:0.09935,
NC_004718.3:0.10340)
:0.11661);

# ClustalW
(
(
NC_019843.3:0.23351,
(
NC_045512.2:0.09863,
NC_004718.3:0.10330)
:0.12454)
:0.02357,
KP198610:0.23317,
(
MK334047.1:0.16005,
NC_002645.1:0.16886)
:0.09141);

# MAFFT
(
KP198610:0.23000,
(
MK334047.1:0.15815,
NC_002645.1:0.16536)
:0.08813,
(
NC_019843.3:0.22966,
(
NC_045512.2:0.09772,
NC_004718.3:0.10361)
:0.12929)
:0.03177);

MEGAX本地

构建流程

graph TB;
Align -->Input_integrated_fasta;
Input_integrated_fasta --> Align_by_ClusterW;
Align_by_ClusterW --takes_long_time--> Phylogenetic_analysis_in_Data_option;
Phylogenetic_analysis_in_Data_option --> Compute_pairwise_distance_in_Distance_option;

距离矩阵和自带建树

手动建树结果

关于NEWICK格式

原文地址:https://www.cnblogs.com/zhengjm/p/12640256.html

时间: 2024-11-06 12:36:20

多序列比对&建树的相关文章

POJ2104 K-th Number[主席树]

K-th Number Time Limit: 20000MS   Memory Limit: 65536K Total Submissions: 51440   Accepted: 17594 Case Time Limit: 2000MS Description You are working for Macrohard company in data structures department. After failing your previous task about key inse

学大伟业 Day 6 培训总结

今天接着昨天的继续讲数据结构 今天先是 分块 在统计问题中,尤其是序列问题,经常涉及到区间的操作,比如修改一段区间的元素,询问某个区间的元素的信息. 如果每次都对一整个区间的每一个元素进行操作的话,那可能就很笨重,所以怎么快速地统计某一段区间的信息就成为了问题所在. 我们考虑把整个序列分成若干个区间,每一个区间称为一个“块”,这样,修改或者询问的每一个区间都能被表示为若干个连续的整块和若干个单个元素的拼接. 对于连续的整块,我们直接询问或者修改这个整块的信息即可,对于单个的元素我们暴力遍历一遍.

[三叉链表]利用三叉链表找后序线索二叉树的后继

//Three.h #ifndef THREE_H #define THREE_H #include <iostream> #include <string.h> using namespace std; typedef enum{Link, Thread} Tag; typedef struct ThreeNode { char data; struct ThreeNode *lChild, *rChild, *Parent;//采用三叉链表,增加一个指向双亲的结点 Tag lT

1020. Tree Traversals (序列建树)

Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level order traversal sequence of the corresponding binary tree. Input Specification: Each

天梯赛 L2-006 树的遍历(序列建树)

L2-006 树的遍历 (25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点的个数.第二行给出其后序遍历序列.第三行给出其中序遍历序列.数字间以空格分隔. 输出格式: 在一行中输出该树的层序遍历的序列.数字间以1个空格分隔,行首尾不得有多余空格. 输入样例: 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7 输出样例: 4 1 6 3 5 7 2 作者: 陈越 单

根据前序/后序遍历和中序遍历序列建树

根据前序遍历和中序遍历序列建树: 1 // 先序序列pre[preL,preR],中序序列in[inL,inR] 2 node* BuildTree(int preL,int preR,int inL,int inR){ 3 if(preL>preR){ 4 return NULL; 5 } 6 node *root=new node; 7 root->data=pre[preL]; 8 int k; 9 for(k=inL;in[k]!=pre[preL];k++){ 10 ; 11 } 1

先序+中序和中序+后序建树

思路:先序的第一个元素和后序的最后一个元素是当前子树的根,然后遍历中序序列,找到左右子树的分界线,递归建左子树和右子树. class Solution { public: /*由于是oj,这里假设给的序列是合法的,正常情况是需要判断不合法情况的 */ TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder,int instart,int inend,int poststart,int post

二叉树总结—建树和4种遍历方式(递归&amp;&amp;非递归)

今天总结一下二叉树,要考离散了,求不挂!二叉树最重要的就是 建立.4种遍历方式,简单应用,如何判断两颗二叉树是否相似 二叉树分为 :1.完全二叉树  2.满二叉树 结构性质: 1).满二叉树 高度为h ,节点数则为 2^h - 1,且叶子节点全在最下层,且叶子节点数为2^(n-1)个{n代表二叉树层数,也叫深度} 2).n个节点的 完全二叉树 深度为 int(log2n)(以2为底n的对数)+ 1: 3).非空二叉树 叶子节点个数==双分支节点数+1 4).非空二叉树 某节点编号 n  若有左孩

数据结构之 二叉树---求二叉树后序遍历和层次遍历(先建树,再遍历)

数据结构实验之求二叉树后序遍历和层次遍历 Time Limit: 1000MS Memory limit: 65536K 题目描述 已知一棵二叉树的前序遍历和中序遍历,求二叉树的后序遍历. 输入 输入数据有多组,第一行是一个整数t (t<1000),代表有t组测试数据.每组包括两个长度小于50 的字符串,第一个字符串表示二叉树的先序遍历序列,第二个字符串表示二叉树的中序遍历序列. 输出 每组第一行输出二叉树的后序遍历序列,第二行输出二叉树的层次遍历序列 示例输入 2 abdegcf dbgeaf