遗传系谱工具与消费者dna检测结果分析

lineage的Python项目详细描述


沿袭

沿袭 提供了一个分析从直接到消费者的基因型(原始数据)文件的框架 (dtc)dna检测公司,主要用于基因谱系研究。

功能

  • 使用hapmap第二阶段遗传图计算个体间共享dna的厘米数(cms)
  • 绘制个体之间共享的DNA
  • 确定个体间共享的基因(即从共享DNA片段转录的基因)
  • 查找子级和父级之间不一致的snp
  • 通过snps包为个人读、写、合并和重新映射snps

支持的基因型文件

沿袭 支持vcf文件和 来自下列dtc dna检测公司的基因型文件:

依赖关系

沿袭 需要 python 3.5+和以下python包:

在Linux系统上,可能还需要以下系统级安装:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)

安装

沿袭 python包索引 。安装沿袭(及其所需的 python依赖项)通过pip

$ pip install lineage

示例

初始化沿袭框架

导入沿袭并实例化沿袭对象:

>>> from lineage import Lineage
>>> l = Lineage()

下载示例数据

让我们从opensnp下载一些示例数据

>>> paths = l.download_example_datasets()
Downloading resources/662.23andme.304.txt.gz
Downloading resources/662.23andme.340.txt.gz
Downloading resources/662.ftdna-illumina.341.csv.gz
Downloading resources/663.23andme.305.txt.gz
Downloading resources/4583.ftdna-illumina.3482.csv.gz
Downloading resources/4584.ftdna-illumina.3483.csv.gz

我们将这些数据集称为 user662 user663 user4583 ,以及 user4584

加载原始数据

沿袭框架的上下文中创建一个 个体 用户662 数据集:

>>> user662 = l.create_individual('User662', 'resources/662.ftdna-illumina.341.csv.gz')
Loading resources/662.ftdna-illumina.341.csv.gz

在这里,我们创建了名为user662的用户662并加载了一个原始数据文件。

重新映射snp

哎哟!我们刚刚加载的数据是构建36,但是我们希望构建37,因为 数据集已构建37…让我们重新映射snp:

>>> user662.build
36
>>> chromosomes_remapped, chromosomes_not_remapped = user662.remap_snps(37)
Downloading resources/NCBI36_GRCh37.tar.gz
>>> user662.build
37
>>> user662.assembly
'GRCh37'

snp可以在构建36( ncbi36 )、构建37( grch37 )和构建38之间重新映射。 ( GRCH38 )。

合并原始数据文件

user662的数据集由来自两个不同dna测试的三个原始数据文件组成 公司。让我们加载剩下的两个文件。

随着数据的增加,它与现有的数据进行了比较,并且snp的位置和基因型 发现差异。(可通过参数调整差异阈值。)

>>> user662.snp_count
708092
>>> user662.load_snps(['resources/662.23andme.304.txt.gz', 'resources/662.23andme.340.txt.gz'],
...                   discrepant_genotypes_threshold=300)
Loading resources/662.23andme.304.txt.gz
3 SNP positions were discrepant; keeping original positions
8 SNP genotypes were discrepant; marking those as null
Loading resources/662.23andme.340.txt.gz
27 SNP positions were discrepant; keeping original positions
156 SNP genotypes were discrepant; marking those as null
>>> len(user662.discrepant_positions)
30
>>> user662.snp_count
1006960

保存snp

好的,到目前为止,我们已经将snp重新映射到同一个构建并合并了来自三个文件的snp, 确定一路上的差异。让我们保存由超过1百万个+ snps到csv文件:

>>> saved_snps = user662.save_snps()
Saving output/User662_GRCh37.csv

所有输出文件都保存到输出中 目录。

比较个体

让我们为 user663 数据集创建另一个 个体

>>> user663 = l.create_individual('User663', 'resources/663.23andme.305.txt.gz')
Loading resources/663.23andme.305.txt.gz

现在我们可以在 user662 user663 数据集之间执行一些分析。

查找不一致的snp

首先,让我们找出不一致的snp(即snp数据与孟德尔的不一致)。 继承):

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
0

此方法还返回一个 pandas.dataframe ,可以在 提示,尽管csv文件中有相同的输出。

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
1

不算mtdna单核苷酸,这两个数据集之间有37个不一致的单核苷酸。

找到共享的DNA

谱系 使用来自 国际hapmap项目 计算两个人之间的共享DNA(以摄氏度为单位)。另外, 沿袭 表示共享DNA在一对染色体中的一条或两条染色体上共享的时间。例如, 当兄弟姐妹在两条染色体上共享一段DNA时,他们从他们的 母亲和父亲为这一部分工作。

在这种背景下,让我们找到 user662 user663 数据集之间的共享dna, 计算g共享DNA的中心点和绘制结果:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
2

注意,每个dna片段的centimorgan和snp阈值都可以调整。另外, 注意,下载了两个文件以便于分析和绘图-以后的分析 将使用下载的文件,而不是再次下载文件。最后,请注意 个人被传递到find_shared_dna 。这个列表可以包含任意数量的 个体, 血统 将在列表中的所有个体中找到共享的DNA(即, 所有个体共享一条或两条染色体上的DNA片段。

输出作为字典返回,并带有以下键( pandas.dataframe 熊猫.index 项目:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
3

在本例中,共有27段DNA:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
4

此外,输出文件是 已创建;这些文件在文档中有详细说明,可以使用 save_output=false 参数。在本例中,输出文件由csv文件组成 详细说明一条染色体上的共享DNA片段,以及说明共享DNA的绘图:

https://raw.githubusercontent.com/apriha/lineage/master/docs/images/shared_dna_user662_user663.png
找到共享基因

分子生物学的中心教条 说明遗传信息从dna到mrna再到蛋白质:dna被转录到 mrna,mrna被翻译成蛋白质。比这更复杂(这是生物学 但通常情况下,一个mrna产生一个蛋白质,mrna/蛋白质被认为是 基因<<P>

因此,不仅要了解个体之间共享的DNA是什么, 但是, 基因在具有相同变异的个体之间共享。换句话说, 什么基因产生了相同的蛋白质?因为血统可以确定共享的DNA 在个体之间,它可以利用这些信息来确定哪些基因也被共享 一条或两条染色体。

< COL/> < COL/> <正文>
[*] 理论上,dna的共享片段应该产生相同的蛋白质,但是有很多 复杂性,如拷贝数变异(CNV)、基因表达等 < > <表>

在本例中,我们再为 user4583 user4584 创建两个 个体 数据集:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
5
$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
6

现在让我们找到共享的基因:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
7

下面显示了说明共享DNA的图。注意,除了输出 一条或两条染色体上的共享DNA片段,一条或两条染色体上的共享基因 染色体也被输出。

在这个例子中,有15976个共享基因在两个染色体上转录自36个片段 共有的DNA:

$ sudo apt-get install python3-tk
$ sudo apt-get install gfortran
$ sudo apt-get install python-dev
$ sudo apt-get install python-devel
$ sudo apt-get install python3.X-dev # (where X == Python minor version)
8 https://raw.githubusercontent.com/apriha/lineage/master/docs/images/shared_dna_user4583_user4584.png

文档

文档可用 这里

致谢

感谢惠特·阿西、瑞安·戴尔、平布、杰夫·吉尔、戈帕尔·瓦希什塔, cs50 ,以及 opensnp

许可证

版权所有(c)2016 Andrew Riha

此程序是免费软件:您可以重新分发和/或修改 根据由 自由软件基金会,或者许可证的第3版,或者 (由您选择)任何更高版本。

这个程序的发布是希望它能有用, 但没有任何保证;甚至没有 适销性为特定目的的适销性或适合性见 GNU通用公共许可证了解更多详细信息。

你应该收到GNU通用公共许可证的副本 还有这个节目。如果没有,请参见http://www.gnu.org/licenses/" rel="nofollow">http://www.gnu.org/licenses/>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在未知属性上的PUT和POST失败会引发不同的行为   java无法使GWTRPC正常工作   java如何在安卓中更改一个特定视图的主题?   机器学习为什么改变了java中等式的两面?   java继承和重定向标准输出   java为什么Clojure中嵌套循环/重复速度慢?   使用JavaParser解析Java代码并查找父节点的语句类型   java读取类的方法并在arraylist中存储Web服务的路径名   java模板聚合匹配和投影一个没有id的字段   java为什么给定数组不返回false   java如何链接JLabel和JSpinner以调整大小   在java中,当过滤器只返回一个对象时,如何使用流和过滤器将值填充到对象中   java为什么使用getInstance   如何得到我的。运行java命令的bat文件