在分层聚类中查找具有统计意义的节点

treecut的Python项目详细描述


Latest PyPI versionTravis-CI

AuthorHaibao Tang (tanghaibao)
Jingping Li (Jingping)
Emailtanghaibao@gmail.com
LicenseBSD

说明

层次聚类是挖掘有用数据的重要工具 多元生物数据之间的关系。但是,没有 从 确定了层次结构。大多数的努力都集中在不同的截止线上 评估组内和组间的相对优势 然后试探性地确定一个“好”的截止点。本研究 引入一种更动态的方法来提取 显著丰富的或不同于其他分支的。合并 系统发育信息消除了 传统的分析方法提高了性状关联的预测能力。

该算法需要两个输入,一个树模型和一些值的映射 所有终端分支。简单地说,算法执行 所有内部分支机构的独立统计测试,以及 计算每个节点的p值。在探索阶段, 统计检验是:1)对于定量值,检验差异 由每个节点分隔的两个组中的一个(学生的t检验);2) 类别值,测试特定类别的关联 每个内部节点的后代(Fisher精确测试)。

候选节点使用以下规则确定:p值 因为候选节点v必须是所有根到叶中最小的 通过v的路径。换句话说,根在节点v的组应该 包含最大级别的关联,从而避免冗余 克拉德斯。

服务器版本

Treecut软件的服务器版本可以在以下位置找到: http://chibba.agtec.uga.edu/duplication/cut/

安装

  • python版本=2.6
  • scipy用于t检验和fisher精确检验
  • ete2用于分析树结构
pip install scipy ete2

用法

看看data/文件夹中的示例:treefilelistfile

treefile应该是 Newick-formatted文件 (通常来自系统发育重建软件的输出, 例如phylip 或者MEGA)。

listfile应该包含每个分类单元的数量值 (用逗号分隔)。确保分类单元名称在 treefilelistfile

# continuous example
IS13,57.2
IS35,66.13

如果数据类型是离散的,请用分号分隔这些类。为了 示例:

# discrete example
AT1G02150,GO:0009507;GO:0005488
AT1G02160,GO:0005575;GO:0003674;GO:0008150

注意,#表示注释行,将被忽略。

运行软件:

python treecut.py data/tree.nwk data/continuous.csv tree.pdf

提取模块的摘要将写入stdout。每行 将包含一个子类,该子类显示显著的高表型 值或低表型值。此外,可视化还可用作 tree.pdf(支持的图像格式包括svgpngpdfjpg等)。模块以绿色突出显示(低值模块) 以及红色(高价值模块)颜色。

tree-value mapping

树值映射

食谱

treecut有几种即时应用。以下仅显示 案例二的例子,但还有更多。

提取表型值高/低

的分类群

请参阅data/文件夹中的示例。这是开花时间数据 高粱多样性小组。flowering.nwk是一个系统发生树 研究中使用的高粱材料。flowering.assoc有 到加入特征值的映射(在本例中 开花前的天数)。运行:

python treecut.py data/flowering.nwk data/flowering.assoc

如果你不想把开花数据当作离散值,比如 “高”对低。您可以添加--discrete选项:

python treecut.py data/flowering.nwk data/flowering_discrete.assoc --discrete flowering_discrete.png

显著不同的分类(如极端特征值)将是 写在屏幕上。

提取功能富集

的共表达基因

在这个例子中,我使用了eisen的CLUSTER软件 (here) 加工一系列拟南芥微阵列 AtGenExpress。 在^{tt之后19}$已运行。我找到两个文件-microarray.cdtmicroarray.gtr.gtr文件包含一个层次树 结构,但我需要将其转换为.nwk格式,以便 treecut.py要处理。

查看microarray.assoc,它包含来自 拟南芥基因的go术语,这是基于 下载于Gene Ontology website。 注意,一个基因可以有多个go项与之相关。这是 我用来创建microarray.assoc

的脚本
python scripts/parse_tair_go.py

一旦一切就绪,就像往常一样运行treecut.py(确保 打开--discrete选项:

python scripts/eisen_to_newick.py data/microarray.gtr data/microarray.cdt data/microarray.nwk
python treecut.py data/microarray.nwk data/microarray.assoc --discrete

在某些围棋术语中显著丰富的分支将是 写在屏幕上。

参考

Tang等人treecut:从中提取重要模块的算法 分层聚类

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

推荐PyPI第三方库


热门话题
java测试SpringAOP方面   java在使用groovy访问JSON字段时遇到问题   java需要但没有被调用:<Capturing argument>实际上,与这个mock没有任何交互   java在O(n)时间内遍历LinkedList并删除k个元素   java在Hibernate中执行条件查询后,是否需要提交/关闭会话?   java提供apacheshiro作为JBoss7、WildFly8的模块   使用标头读取CSV,同时忽略JAVA中的某些行   java如何验证kotlin中的数据类是否为null   java墙纸未缩放到设备的显示   java以独立于实现的方式列出所有注册的JAXRS 2提供程序   java Apache ANT Exec Handle Exec/CakePHP控制台提示   java无法从dropwizard项目中排除logbackclassic依赖项   java如何通过对象向构造函数发送日期值,以及如何返回该日期值?   java为什么使用静态记录器比不使用它花费更多的时间   JavaAndroid:解析webview的内容而不重新加载和发布   java如何仅捕获异常类型   eclipse无法从Java独立项目中的ATL EMFTVM转换中读取模块   另一个路由中的java Apache camel blueprint web服务响应