如何获取mostly单拷贝和strictly单拷贝基因

news2024/11/26 7:51:15

参考这篇文章的有意思的分析脚本~

如何严格定义单拷贝基因的类型,值得思考。

Insights into angiosperm evolution, floral development and chemical biosynthesis from the Aristolochia fimbriata genome

https://github.com/yihenghu/Aristolochia_fimbriata_genome_analysis    #脚本github地址

orthoMCL分析

get_coalescent_codon.py 从单基因第一和第二密码子位置、第三密码子位置的拼接比对中估计的基于共祖模型的系统树。
get_concatenated_codon.py 从所有基因的第一和第二密码子位置、第三密码子位置的拼接比对中估计的基于拼接模型的系统树。

01 trictly_single_copy

get_strictly_single_copy_orthogroup.py 这个脚本用于从OrthoMCL中选择严格的单拷贝直系同源组。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import re
import collections

# read orthogroup of orthoMCL or orthoFinder
def readGroups(groups):
    orthogroups = {}
    with open(groups, "r") as OGs:
        for og in OGs:
            if not og.startswith("\t"):
                orthogroups0 = re.split(r'\s*', re.sub(',', ' ', og.rstrip()))
                orthogroups[orthogroups0[0]] = orthogroups0[1:]
    return orthogroups  # {OG1:[geneA1,geneB1,geneC1],OG2:[geneA2,geneB2]}

# stat orthogroup
def statGroups(orthogroups):
    orthogroups_stat = {}
    for og_id in orthogroups.keys():
        species = re.findall(r"(\w+)\|", "\t".join(orthogroups[og_id]))
        species_copy = dict(collections.Counter(species))
        orthogroups_stat[og_id] = species_copy
    return orthogroups_stat

# multiple of list
def mult(list0):
    result = 1
    for i in list0:
        result *= i
    return result


def main():
    orthogroups = readGroups(sys.argv[1])
    orthogroups_stat = statGroups(orthogroups)

    # select "Pso==2,Pni==2", and other species are single copy
    for og, stats in orthogroups_stat.items():
        if len(stats) == 22:
            if stats["Pso"] <= 2 and stats["Pni"] <= 2:
                sp_num = {}
                for sp, number in stats.items():
                    if sp == "Pso" or sp == "Pni":
                        pass
                    else:
                        if number == 1:
                            sp_num[sp] = number
                if sum(sp_num.values()) == 20 and mult(sp_num.values())  == 1:
                    print og


if __name__ == "__main__":
    main()
02 mostly_single_copy

get_mostly_single_copy_orthogroup.py 这个脚本用于从OrthoMCL中选择主要是单拷贝的直系同源组。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import re
import collections

# read orthogroup of orthoMCL
def readGroups(groups):
    orthogroups = {}
    with open(groups, "r") as OGs:
        for og in OGs:
            if not og.startswith("\t"):
                orthogroups0 = re.split(r'\s*', re.sub(',', ' ', og.rstrip()))
                orthogroups[orthogroups0[0]] = orthogroups0[1:]
    return orthogroups  # {OG1:[geneA1,geneB1,geneC1],OG2:[geneA2,geneB2]}

# stat orthogroup
def statGroups(orthogroups):
    orthogroups_stat = {}
    for og_id in orthogroups.keys():
        species = re.findall(r"(\w+)\|", "\t".join(orthogroups[og_id]))
        species_copy = dict(collections.Counter(species))
        orthogroups_stat[og_id] = species_copy
    return orthogroups_stat

# multiple of list
def mult(list0):
    result = 1
    for i in list0:
        result *= i
    return result

# stat monocots, eudicots, magnoliids, basal angiosperm per OGs cotain number of genes
division = {
    "Smo": "Out",
    "Pab": "Out",
    "Gbi": "Out",
    "Atr": "Out",
    "Nad": "Out",
    "Spo": "Mon",
    "Peq": "Mon",
    "Mac": "Mon",
    "Sbi": "Mon",
    "Osa": "Mon",
    "Afi": "Mog",
    "Cmi": "Mog",
    "Lir": "Mog",
    "Pni": "Mog",
    "Pam": "Mog",
    "Aco": "Eud",
    "Pso": "Eud",
    "Nnu": "Eud",
    "Vvi": "Eud",
    "Sly": "Eud",
    "Ptr": "Eud",
    "Ath": "Eud"}


def main():
    orthogroups = readGroups(sys.argv[1])
    orthogroups_stat = statGroups(orthogroups)
    new_orthogroups_stat = {}
    for og,stats in orthogroups_stat.items():
        new_stats = {}
        for sp in stats:
            new_stats[(sp, division[sp])] = stats[sp]
        new_orthogroups_stat[og] = new_stats
    for og, stats in new_orthogroups_stat.items():
        out, mon, mog, eud = 0, 0, 0, 0
        out0, mon0, mog0, eud0 = 0, 0, 0, 0
        for sp_di in stats:
            if sp_di[1] == "Out":
                if stats[sp_di] == 1:
                    out += 1
                else:
                    out0 += 1
            elif sp_di[1] == "Mon":
                if stats[sp_di] == 1:
                    mon += 1
                else:
                    mon0 += 1
            elif sp_di[1] == "Mog":
                if sp_di[0] == "Pni":
                    if 0 < stats[sp_di] <= 2:
                        mog += 1
                    else:
                        mog0 += 1
                else:
                    if stats[sp_di] == 1:
                        mog += 1
                    else:
                        mog0 += 1
            elif sp_di[1] == "Eud":
                if sp_di[0] == "Pso":
                    if 0 < stats[sp_di] <= 2:
                        eud += 1
                    else:
                        eud0 += 1
                else:
                    if stats[sp_di] == 1:
                        eud += 1
                    else:
                        eud0 += 1
        if out0 == 0 and mon0 == 0 and mog0 == 0 and eud0 == 0:
            if out >= 3 and mon >= 3 and mog >= 3 and eud >= 4:
                print og

if __name__ == "__main__":
    main()


get_supermatrix_from_MSA_for_low_copy.py 这个脚本用于从OrthoMCL中获取基于拼接比对的超级矩阵(supermatrix)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2063270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据驱动下的优化渠道管理与决策支持

在当今竞争激烈的市场环境中&#xff0c;渠道管理作为企业连接产品与消费者的重要桥梁&#xff0c;其效率与效果直接关系到企业的市场竞争力和可持续发展能力。随着大数据技术的广泛应用&#xff0c;数据驱动下的优化渠道管理与决策支持正成为企业提升管理效能、精准把握市场脉…

企业网站制作流程,企业网页怎么制作

​企业网站建设&#xff0c;需要对自身的需求进行分析&#xff0c;确定网站的基本功能和定位。这包括确定网站的目标受众、内容类型、功能模块、风格定位等方面。只有明确了需求&#xff0c;才能为后续的网站建设提供指导。 01、网站建设流程 02、网站制作多少钱 一、网站制…

Adobe Audition AU 2023-23.6.6.1 解锁版下载及安装教程(一款优秀的音频处理工具)

前言 Audition是Adobe旗下一款非常好用的音频处理工具&#xff0c;软件为用户们提供了功能强大的音频编辑功能和一个相对完善的工作流程&#xff0c;用户们无论是录制音乐、无线电广播还是视频配音&#xff0c;多音频合成&#xff0c;这款软件都能够给你足够的创作动力。audit…

https://mvnrepository.com cannot access

https://mvnrepository.com 有时候无法访问 1&#xff09;设置下DNS&#xff0c;看下行不行 WLAN DNS proxy settings (Win 10)-CSDN博客 2)或者直接找个链接试一下 https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans https://mvnrepository.com

一、hal库配置0.96寸oled屏幕+tftlcd屏幕演示

一、硬件iic配置&#xff08;使用oled演示&#xff09; 图省事复制即可&#xff08;注意&#xff1a;从机地址0x78或0x7a&#xff09; //初始化 void MX_I2C1_Init(void) {hi2c1.Instance I2C1;hi2c1.Init.ClockSpeed 100000;//标准hi2c1.Init.DutyCycle I2C_DUTYCYCLE_2;/…

如何高效应对团队中的低效程序员?

目录 引言&#xff1a;理解“低效”的真正含义 自我反思&#xff1a;领导者的责任 分析问题根源&#xff1a;环境与流程的影响 行动方案&#xff1a;培训与重新评估 总结&#xff1a;领导力的关键在于共赢 其它视角&#xff1a;中国与西方管理文化的对比 作为Leader&…

渠道管理是什么?一文教你优化渠道管理!

在当今竞争激烈的市场环境中&#xff0c;渠道管理已成为企业实现持续增长和市场份额扩张的关键。本文旨在深入探讨渠道管理的定义、重要性、优化策略及面临的挑战&#xff0c;并为企业提供一套全面的渠道管理优化指南&#xff0c;同时植入关于分销推广系统的广告&#xff0c;助…

websocket的介绍及springBoot集成示例

目录 一、什么是Websocket 二、Websocket特点 三、WebSocket与HTTP的区别 四、常见应用场景 五、SpringBoot集成WebSocket 1. 原生注解 2. Spring封装 一、什么是Websocket WebSocket 是一种在单个 TCP 连接上进行 全双工 通信的协议&#xff0c;它可以让客户端和服务器…

Djangorestframework+Vue搭建前后端分离项目

文章目录 1、Django环境搭建2、安装Vue3、安装ant-design插件4、echarts图标插件5、解决跨域问题 1、Django环境搭建 安装anaconda https://www.anaconda.com/download 打开命令行工具&#xff0c;出现base就表示安装成功了&#xff0c;表示当前的虚拟环境名 创建虚拟环境的p…

Isaac Sim仿真平台学习(2)系统架构

目录 0.前言 1.isaac sim的系统架构 1.Design&#xff08;设计&#xff09; 2.Tune&#xff08;调试&#xff09;和Train&#xff08;训练&#xff09; 1.PhysX 2.RTX 3.Sensors 1.感知型扩展传感器 2.物理传型感器 4.Replicator 5.Digital Twins 6.Omnigraph 7.I…

火爆国内外的《黑神话:悟空》,需要什么显卡才能玩?

一路西行&#xff0c;大圣归来&#xff01; 8月20日&#xff0c;国产游戏《黑神话&#xff1a;悟空》上午10时正式上线。这款游戏在Steam平台的同时在线玩家突破了114万&#xff0c;超越《CS2》登顶Steam热玩榜。 仅单日实际在线人数就超过了210万 &#xff0c;超过《幻兽帕鲁…

在线问诊平台开发指南:基于互联网医院系统源码的实现路径

今天&#xff0c;小编将详细讲解如何通过互联网医院系统源码开发在线问诊平台。 一、在线问诊平台的需求分析 在线问诊平的核心目标是通过互联网技术&#xff0c;实现患者与医生之间的远程交流与诊断。因此&#xff0c;在开发过程中&#xff0c;首先需要明确平台的核心功能需求…

Excel的使用总结2

目录 1、数据的分割 2、根据某个条件筛选出来的数据&#xff0c;想要直接复制&#xff0c;并粘贴到与筛选数据对应的位置 3、几个单元格中的内容连接 4、如果一个表格数据很多&#xff0c;但是你想查看一列中是否有数据&#xff0c;如何查看 1、数据的分割 首先&#xff0c…

什么是光伏气象站—光伏气象站的简述

随着全球对可再生能源需求的日益增长&#xff0c;光伏发电作为清洁、可再生的能源形式&#xff0c;正逐步成为能源结构转型的重要力量。然而&#xff0c;光伏电站的发电效率受到多种气象因素的影响&#xff0c;如太阳辐射强度、温度、风速、湿度等。为了最大化光伏系统的发电潜…

洛谷 P4516 [JSOI2018] 潜入行动

题目来源于&#xff1a;洛谷 题目本质&#xff1a;背包&#xff0c;树形dp 解题思路&#xff1a; 假设当前合并两个背包f[u][a][p1][q1] 和f[v][b][p2][q2] &#xff0c;其中 v 是 u 的儿子。考虑合并后的f[u][ab][p3][q3],q3 是合并后点 u 是否被监听&#xff0c;有两种情况…

C++拾趣——使用VSCode跨平台调试CMake编译的C/C++项目

大纲 远程连接编译调试安装插件/组件VSCode插件调试组件 配置CMakePresets.json配置CMake Tools调试 参考资料 VSCode的远程开发功能为开发者带来了诸多好处&#xff0c;极大地提升了开发效率和灵活性。首先&#xff0c;它允许开发者在本地编辑环境中直接连接到远程服务器或容器…

03 网络故障排查思路

一 排查思路 1 以业务流量路径为核心的故障排除思想 确认业务流量路径&#xff1a;在网络层和数据链路层中&#xff0c;需要根据报文转发过程确认业务流量的传输路径&#xff0c;以及数据帧在二层网络环境中是如何被交换机转发的。分层故障处理法&#xff1a;从OSI模型的底层…

【游戏行业秋招提前批最新动向应届生入职指南!】

游戏行业秋招提前批最新动向&应届生入职指南&#xff01; 秋招非常非常重要&#xff01;绝不能轻易错过&#xff01;&#xff01;! 早起的鸟儿有虫吃&#xff0c; 这句话对于企业和应届生双方而言都是适用的。 对于有校招需求的企业而言&#xff0c; 秋招是一年中规模最…

IDEA XML文件去掉黄色和绿色底色

XML映射文件去掉黄色背景&#xff1a;Settings ⇒ Editor ⇒ Inspections ⇒ SQL XML映射文件去掉绿色背景&#xff1a;Settings ⇒ Editor ⇒ Color Scheme ⇒ General ⇒ Code Java去掉重复代码提示&#xff1a;Settings ⇒ Editor ⇒ Inspections ⇒ General

页面设计任务 个人信息页面

目录 成品: 任务要求&#xff1a; 1. 创建一个基本的个人简介网页 2. 样式和布局要求 3. 详细样式要求 源码&#xff1a; 详细讲解&#xff1a; 1.导航栏部分&#xff1a; 2.头像和介绍部分: 3.技能列表部分 4.作品集部分 成品: 任务要求&#xff1a; 1. 创建一个基本…