- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字典中的蛋白质序列比对(id_prot 作为键,比对序列作为值;可以是另一种格式),我想使用这个比对来用 Biopython 构建 NJ 树
但是,根据文档,加载用于系统发育分析的序列的唯一方法是从输入文件中加载。例如:
aln = AlignIO.read('Tests/TreeConstruction/msa.phy', 'phylip')
有谁知道如何在不读取输入文件的情况下加载 aln 变量中的序列?
最佳答案
从您的字典中以 Phylip 格式创建所需的输入并使用 StringIO
加载它。请注意,序列/蛋白质 ID 最长可达 10 个字符。 IDs less than 10 characters must have spaces appended to them to reach the 10 character fixed width.
from Bio.Phylo.TreeConstruction import DistanceCalculator, DistanceTreeConstructor
from Bio import AlignIO
from io import StringIO
dct = {'Alpha': 'AACGTGGCCACAT',
'Beta': 'AAGGTCGCCACAC',
'Gamma': 'CAGTTCGCCACAA',
'Delta': 'GAGATTTCCGCCT',
'Epsilon': 'GAGATCTCCGCCC'}
count = len(dct)
length = max(map(len, dct.values()))
msa = f" {count} {length}\n"
msa += '\n'.join(f"{prot_id:<10} {sequence}" for prot_id, sequence in dct.items())
print(msa)
print()
aln = AlignIO.read(StringIO(msa), 'phylip')
print(aln)
print()
calculator = DistanceCalculator('identity')
dm = calculator.get_distance(aln)
print(dm)
print()
constructor = DistanceTreeConstructor(calculator, 'nj')
tree = constructor.build_tree(aln)
print(tree)
输出:
5 13
Alpha AACGTGGCCACAT
Beta AAGGTCGCCACAC
Gamma CAGTTCGCCACAA
Delta GAGATTTCCGCCT
Epsilon GAGATCTCCGCCC
SingleLetterAlphabet() alignment with 5 rows and 13 columns
AACGTGGCCACAT Alpha
AAGGTCGCCACAC Beta
CAGTTCGCCACAA Gamma
GAGATTTCCGCCT Delta
GAGATCTCCGCCC Epsilon
Alpha 0
Beta 0.23076923076923073 0
Gamma 0.3846153846153846 0.23076923076923073 0
Delta 0.5384615384615384 0.5384615384615384 0.5384615384615384 0
Epsilon 0.6153846153846154 0.3846153846153846 0.46153846153846156 0.15384615384615385 0
Alpha Beta Gamma Delta Epsilon
Tree(rooted=False)
Clade(branch_length=0, name='Inner3')
Clade(branch_length=0.18269230769230765, name='Alpha')
Clade(branch_length=0.04807692307692307, name='Beta')
Clade(branch_length=0.04807692307692307, name='Inner2')
Clade(branch_length=0.27884615384615385, name='Inner1')
Clade(branch_length=0.051282051282051266, name='Epsilon')
Clade(branch_length=0.10256410256410259, name='Delta')
Clade(branch_length=0.14423076923076922, name='Gamma')
关于biopython - 在没有输入文件的情况下在 Biopython 中创建比对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57736532/
我有一个字典中的蛋白质序列比对(id_prot 作为键,比对序列作为值;可以是另一种格式),我想使用这个比对来用 Biopython 构建 NJ 树 但是,根据文档,加载用于系统发育分析的序列的唯一方
我刚刚加入 python 和 biopython 工作,喜欢连接 Ensebml 并获取一些序列和其他数据,如 TSS、一些基因列表等。但我的问题是我似乎无法在 biopython 中找到任何方法或模
我想知道如何使用 biopython 库将多个 pdb 写入单个 pdb 文件。对于读取NMR结构等多个pdb,documentation中有内容但对于写作,我没有找到。有人对此有想法吗? 最佳答案
我是 Stackoverflow 的新手。我正在尝试使用 Biopython 自动化搜索过程。我有两个列表,一个是蛋白质 GI 编号,另一个是相应的核苷酸 GI 编号。 例如: 蛋白质_GI=[588
我正在尝试读取通过向 NCBIblast 网站提交多个序列而生成的 XML 文件列表。我想从每个文件中打印某些信息行。我想要读取的文件都带有后缀“_recombination.xml”。 for fi
我有一个 newick 格式的系统发育树。我想根据终端节点的标签(因此基于物种列表)拉出一棵子树。我正在使用的树的副本可以在这里找到:http://hgdownload.soe.ucsc.edu/go
import gzip import io from Bio import SeqIO infile = "myinfile.fastq.gz" fileout = open("myoutfile.f
我第一次使用biopython。如果这是一个基本问题,请原谅我。 我想输入序列,然后对齐它们,并能够引用原始序列(无间隙)和对齐序列(有间隙)的索引位置。 我的现实世界示例是烯醇 enzyme (Un
我目前正在(作为一个高级项目)构建和实现一个生物信息学 Web 应用程序来操作大数据以及一些复杂的工作 我正在使用biopython 哪种云计算平台最好,为什么? 提前致谢 最佳答案 我一直在尝试使用
Biopython 菜鸟,我正在尝试创建一个程序,该程序使用 Biopython 包 Alphabet 和字母表模块 IUPAC 将列出的类的字母写出到名为 AlphabetSoupOuput.txt
我正在尝试在 biopython 中循环运行大约 10000 对字符串的成对全局对齐方法。每个字符串平均长度为 20 个字符。为一对序列运行该方法效果很好。但是在一个循环中运行它,低至 4 对,会导致
我正在尝试为 Biopython 的朴素贝叶斯代码添加拉普拉斯平滑支持 1对于我的生物信息学项目。 我已经阅读了很多关于朴素贝叶斯算法和拉普拉斯平滑的文档,我想我已经了解了基本的想法,但我无法将其与该
我正在使用 BioPython MuscleCommanLine 来比对子进程中的序列。肌肉的输入和输出是标准输入和标准输出。这行得通,但是一旦 popen 调用 muscle,我就会在屏幕上从 mu
在讨论如何使用 Bio.SeqIO.parse() 导入序列数据时,BioPython 说明书指出: There is an optional argument alphabet to specify
我目前有以下查询 pubmed 的代码: from Bio import Entrez Entrez.email = "kuharrw@hiram.edu" # Always tell NCB
例如...我有两个脚本用于查看(多序列比对)MSA 是否具有超过 50 列且间隙少于 50%。 第一次使用 BioPython 需要 4.2 秒,在 609 列的 16281 个序列的 MSA 中(f
我正在尝试更改以前的脚本,该脚本利用 biopython 获取有关物种门的信息。编写此脚本是为了一次检索一个物种的信息。我想修改脚本,以便我可以一次对 100 个生物执行此操作。 这是初始代码 imp
在尝试使用biopython解析xml文件时,我遇到了一些我不明白的错误,有人可以帮助我理解这个错误吗? TypeError: object of type 'generator' has no le
我正在尝试将 Biopython (Entrez) 与搜索词一起使用,该搜索词将返回登录号(而不是 GI*)。 这是我的代码的一小段摘录: from Bio import Entrez Entrez.
我有一些蛋白质,我想找到它们相应的核苷酸序列。我还有发现该蛋白质的基因组。在基因组中,我找到了该蛋白质对应的基因ID。但是,我无法通过基因 ID 获取核苷酸序列。我尝试过使用 Entrez Efetc
我是一名优秀的程序员,十分优秀!