首页 > 其他分享 >将每一个OTU拆分成不同的分类级别

将每一个OTU拆分成不同的分类级别

时间:2023-09-20 14:44:21浏览次数:34  
标签:分成 __ startswith tax part dict Unassigned 级别 OTU

import pandas as pd
# 读取OTU表
otu_df = pd.read_csv('C:\\Users\\Administrator\\Desktop\\1.txt', header=None)
# 创建一个空的DataFrame来存储结果
df = pd.DataFrame(columns=["OTUID", "Kingdom", "Phylum", "Class", "Order", "Family", "Genus", "Species"])
for i, otu in enumerate(otu_df[0]):
    # 使用"|"拆分每个OTU
    split_otu = otu.split("|")
    
    # 初始化一个字典来存储每个分类级别
    tax_dict = {"Kingdom": "Unassigned", "Phylum": "Unassigned", "Class": "Unassigned",
                "Order": "Unassigned", "Family": "Unassigned", "Genus": "Unassigned", 
                "Species": "Unassigned"}
    
    # 遍历拆分后的列表,并根据前缀将每个部分分配到相应的分类级别
    for part in split_otu:
        if part.startswith("k__"):
            tax_dict["Kingdom"] = part
        elif part.startswith("p__"):
            tax_dict["Phylum"] = part
        elif part.startswith("c__"):
            tax_dict["Class"] = part
        elif part.startswith("o__"):
            tax_dict["Order"] = part
        elif part.startswith("f__"):
            tax_dict["Family"] = part
        elif part.startswith("g__"):
            tax_dict["Genus"] = part
        elif part.startswith("s__"):
            tax_dict["Species"] = part
    
    # 删除分类级别前缀(如"k__")
    tax_dict = {key: value.split("__")[1] if "__" in value else value for key, value in tax_dict.items()}
    
    # 将结果添加到DataFrame中
    df.loc[i] = ["ASV_" + str(i+1)] + list(tax_dict.values())
# 将结果保存为新的txt文件
df.to_csv('C:\\Users\\Administrator\\Desktop\\annotated_otu_table.txt', sep='\t', index=False)

 

标签:分成,__,startswith,tax,part,dict,Unassigned,级别,OTU
From: https://www.cnblogs.com/wzbzk/p/17717279.html

相关文章

  • 支持多级别日志消息
    1、项目介绍本项目主要实现一个日志系统,其主要支持以下功能:支持多级别日志消息将日志分为不同等级的日志,有调试级别的日志、提示级别的日志、警告级别的日志、错误级别的日志、致命级别的日志……不同级别的日志应对着不同的场景。可以通过日志级别来实现限制输出的级别:当调试......
  • MySQL事务隔离级别详解
    MySQL事务隔离级别详解|JavaGuide(Java面试+学习指南)事务隔离级别总结SQL标准定义了四个隔离级别:READ-UNCOMMITTED(读取未提交):最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。READ-COMMITTED(读取已提交):允许读取并发事务已经提交的数......
  • 【设计模式】访问者模式Visitor:实现对象级别的矩阵结构
    (目录)访问者模式:一个原理看似很简单,但是理解起来有一定难度,使用场景相对较少的行为型模式:它能将算法与其所作⽤的对象隔离开来假如有这样⼀位⾮常希望赢得新客户的资深保险代理⼈。他可以拜访街区中的每栋楼,尝试向每个路⼈推销保险。所以,根据⼤楼内组织类型的不同,他可......
  • 开启read_committed_snapshot 读快照隔离级别的方法
    --修改sqlserver数据库隔离级别--开启read_committed_snapshot 读快照隔离级别,推荐值是1:--可以解决sqlserver大多数无脑死锁现象selectname,is_read_committed_snapshot_onfromsys.databaseswherename='kingdee_prod'usemasterdeclare@dbnameassysnamedeclare@s......
  • DB2 设置诊断错误捕捉级别
    [b]1.查看及更改数据库head的配置[/b]请注意,在大多数情况下,更改了数据的配置后,只有在所有的连接全部断掉后才会生效。[i]查看数据库head的配制[/i]db2getdbcfgforhead[i]更改数据库head的某个设置的值[/i][b]1.1改排序堆的大小[/b]db2update......
  • 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组
    2023-09-13:用go语言,给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。输入:nums=[4,3,2,3,5,2,1],k=4。输出:True。来自左程云。答案2023-09-13:第一种算法(canPartitionKSubsets1)使用动态规划的思想,具体过程如下:1.计算数组......
  • 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组
    2023-09-13:用go语言,给定一个整数数组nums和一个正整数k,找出是否有可能把这个数组分成k个非空子集,其总和都相等。输入:nums=[4,3,2,3,5,2,1],k=4。输出:True。来自左程云。答案2023-09-13:第一种算法(canPartitionKSubsets1)使用动态规划的思想,具体过程如下:1.......
  • 记录一次部署Hugo主题lotusdocs到Github Pages实践
    引言随着开源项目的越来越复杂,项目文档的重要性日渐突出。一个好的项目要有一个清晰明了的文档来帮助大家使用。最近一直有在找寻一个简洁明了的文档主题来放置项目的各种相关文档。最终找到这次的主角:LotusDocs基于Hugo的主题。LotusDocs的样子,可以移步这里查看。下面着重......
  • template标签中slot=“title”级别显示空白的问题的解决
    问题描述按照网上的教程进行element-ui组件的引入时,发现这行代码不能再浏览器里面显示出来:问题解决上面的问题就很抓马,直觉告诉我,这是由于vue3版本的缘故,查资料去!<templateslot="title"></template>名为具名插槽;可以使用这种形式代替:<templatev-slot:name></template>......
  • 按性别年龄将成绩分级别
     问题:按性别和年龄分组将成绩分为优秀、良好和不及格,具体规则如下:函数公式解决:=IF(B2=11,IF(A2="男",IF(C2<160,"不及格",IF(C2<=170,"良好","优秀")),IF(C2<150,"不及格",IF(C2<=160,"良好","优秀"))),IF(A2="男",IF(C2<......