- Biopython 教程
- Biopython - 首页
- Biopython - 简介
- Biopython - 安装
- 创建简单的应用程序
- Biopython - 序列
- 高级序列操作
- 序列 I/O 操作
- Biopython - 序列比对
- Biopython - BLAST 概述
- Biopython - Entrez 数据库
- Biopython - PDB 模块
- Biopython - 基元对象
- Biopython - BioSQL 模块
- Biopython - 群体遗传学
- Biopython - 基因组分析
- Biopython - 表型微阵列
- Biopython - 绘图
- Biopython - 聚类分析
- Biopython - 机器学习
- Biopython - 测试技术
- Biopython 资源
- Biopython - 快速指南
- Biopython - 有用资源
- Biopython - 讨论
Biopython - 群体遗传学
群体遗传学在进化论中扮演着重要的角色。它分析物种之间以及同一种类中两个或多个个体之间的遗传差异。
Biopython 提供 Bio.PopGen 模块用于群体遗传学,主要支持 `GenePop`,这是一个由 Michel Raymond 和 Francois Rousset 开发的流行遗传学软件包。
一个简单的解析器
让我们编写一个简单的应用程序来解析 GenePop 格式并理解其概念。
下载 Biopython 团队提供的 GenePop 文件,链接如下:https://raw.githubusercontent.com/biopython/biopython/master/Tests/PopGen/c3line.gen
使用以下代码片段加载 GenePop 模块:
from Bio.PopGen import GenePop
使用 GenePop.read 方法解析文件,如下所示:
record = GenePop.read(open("c3line.gen"))
显示如下所示的基因座和群体信息:
>>> record.loci_list ['136255903', '136257048', '136257636'] >>> record.pop_list ['4', 'b3', '5'] >>> record.populations [[('1', [(3, 3), (4, 4), (2, 2)]), ('2', [(3, 3), (3, 4), (2, 2)]), ('3', [(3, 3), (4, 4), (2, 2)]), ('4', [(3, 3), (4, 3), (None, None)])], [('b1', [(None, None), (4, 4), (2, 2)]), ('b2', [(None, None), (4, 4), (2, 2)]), ('b3', [(None, None), (4, 4), (2, 2)])], [('1', [(3, 3), (4, 4), (2, 2)]), ('2', [(3, 3), (1, 4), (2, 2)]), ('3', [(3, 2), (1, 1), (2, 2)]), ('4', [(None, None), (4, 4), (2, 2)]), ('5', [(3, 3), (4, 4), (2, 2)])]] >>>
这里,文件中存在三个基因座和三组群体:第一组群体有 4 条记录,第二组群体有 3 条记录,第三组群体有 5 条记录。record.populations 显示所有包含每个基因座等位基因数据的群体集。
操作 GenePop 文件
Biopython 提供了删除基因座和群体数据的选项。
按位置移除群体集:
>>> record.remove_population(0) >>> record.populations [[('b1', [(None, None), (4, 4), (2, 2)]), ('b2', [(None, None), (4, 4), (2, 2)]), ('b3', [(None, None), (4, 4), (2, 2)])], [('1', [(3, 3), (4, 4), (2, 2)]), ('2', [(3, 3), (1, 4), (2, 2)]), ('3', [(3, 2), (1, 1), (2, 2)]), ('4', [(None, None), (4, 4), (2, 2)]), ('5', [(3, 3), (4, 4), (2, 2)])]] >>>
按位置移除基因座:
>>> record.remove_locus_by_position(0) >>> record.loci_list ['136257048', '136257636'] >>> record.populations [[('b1', [(4, 4), (2, 2)]), ('b2', [(4, 4), (2, 2)]), ('b3', [(4, 4), (2, 2)])], [('1', [(4, 4), (2, 2)]), ('2', [(1, 4), (2, 2)]), ('3', [(1, 1), (2, 2)]), ('4', [(4, 4), (2, 2)]), ('5', [(4, 4), (2, 2)])]] >>>
按名称移除基因座:
>>> record.remove_locus_by_name('136257636') >>> record.loci_list ['136257048'] >>> record.populations [[('b1', [(4, 4)]), ('b2', [(4, 4)]), ('b3', [(4, 4)])], [('1', [(4, 4)]), ('2', [(1, 4)]), ('3', [(1, 1)]), ('4', [(4, 4)]), ('5', [(4, 4)])]] >>>
与 GenePop 软件交互
Biopython 提供了与 GenePop 软件交互的接口,从而暴露出其许多功能。Bio.PopGen.GenePop 模块用于此目的。一个易于使用的接口是 EasyController。让我们检查如何解析 GenePop 文件并使用 EasyController 进行一些分析。
首先,安装 GenePop 软件并将安装文件夹放在系统路径中。要获取有关 GenePop 文件的基本信息,请创建一个 EasyController 对象,然后调用 get_basic_info 方法,如下所示:
>>> from Bio.PopGen.GenePop.EasyController import EasyController >>> ec = EasyController('c3line.gen') >>> print(ec.get_basic_info()) (['4', 'b3', '5'], ['136255903', '136257048', '136257636']) >>>
这里,第一项是群体列表,第二项是基因座列表。
要获取特定基因座的所有等位基因列表,请通过传递基因座名称来调用 get_alleles_all_pops 方法,如下所示:
>>> allele_list = ec.get_alleles_all_pops("136255903") >>> print(allele_list) [2, 3]
要获取特定群体和基因座的等位基因列表,请通过传递基因座名称和群体位置来调用 get_alleles 方法,如下所示:
>>> allele_list = ec.get_alleles(0, "136255903") >>> print(allele_list) [] >>> allele_list = ec.get_alleles(1, "136255903") >>> print(allele_list) [] >>> allele_list = ec.get_alleles(2, "136255903") >>> print(allele_list) [2, 3] >>>
同样,EasyController 公开了许多功能:等位基因频率、基因型频率、多基因座 F 统计量、Hardy-Weinberg 平衡、连锁不平衡等。