代码的主要功能是将输入的数据进行处理和分析,并将结果输出到指定的目录中。以下是对代码的一些检查和修正建议:

  1. 第一行的-- coding: UTF-8 --应改为# coding: utf-8,并且可以省略不写。
  2. 第一行的#!/usr/bin/python是用于指定解释器的路径,如果不需要指定解释器路径,可以省略不写。
  3. if name == 'main':应改为if __name__ == '__main__':
  4. 第27行的genusdt0=genusdt0.loc[(genusdt0.sum(axis=1,numeric_only=True) != 0),]中的numeric_only=True是不需要的,可以直接使用genusdt0.sum(axis=1) != 0
  5. 第75行的print('OK!')可以改为print('OK!'),以避免在Python 2中出现语法错误。

修改后的代码如下所示:

# coding: utf-8
import argparse
import sys
import os
import pandas as pd
from datatable import dt, join, f, by, g

parser = argparse.ArgumentParser(prog='mergspko_meta.py',
                                 epilog='''
Usage:
mergspko_meta.py -g gnct_rel.txt -s orf-sp.csv -k kotab.csv -r orfidko.txt -o out_dir
''', formatter_class=argparse.RawDescriptionHelpFormatter)

parser.add_argument('-g', '--gnct', required=True, type=str,
                    help='gnct_rel.txt: 为orf丰度表')
parser.add_argument('-s', '--orfsp', required=True, type=str,
                    help='orf-sp.csv: 组内流程物种注释结果文件')
parser.add_argument('-k', '--kotab', required=True, type=str,
                    help='kotab.csv, : 为用户提供的KO表,列名必须为"ko"')
parser.add_argument('-r', '--orfidko', required=True, type=str,
                    help='orfidko.txt: 组内kegg注释结果的文件')
parser.add_argument('-m', '--merge', required=False, type=str, default=None,
                    help='merge: 不同KO是否需要合并,默认不合并,若要合并,可给出任意值')
parser.add_argument('-o', '--output', required=True, type=str,
                    help='out_dir: 输出目录')

if __name__ == '__main__':
    args = parser.parse_args()
    genusdt0 = dt.fread(args.gnct)
    orfsp = dt.fread(args.orfsp)
    kodt = dt.fread(args.kotab)
    orfko = dt.fread(args.orfidko)
    kodt.key = 'ko'
    orfko = orfko[g[-1] != None, :, join(kodt)]
    orfko.key = 'orfid'
    orfsp = orfsp[g[-1] != None, :, join(orfko)]
    orfsp.to_csv(os.path.join(args.output, 'orf-ko-sp.csv'))
    orfsp.key = 'orfid'
    genusdt0 = genusdt0[g[-1] != None, :, join(orfsp)]

    if args.merge:
        genusdt0 = genusdt0[:, f[:].remove([f.orfid, f.spid])]
    genusdt0 = genusdt0.to_pandas()
    genusdt0 = genusdt0.groupby('taxonomy').agg('sum')
    genusdt0 = genusdt0.reset_index()
    genusdt0 = pd.concat([genusdt0, genusdt0['taxonomy'].str.split('|', expand=True)], axis=1)
    genusdt0 = genusdt0.rename(columns={0: 'K', 1: 'P', 2: 'C', 3: 'O', 4: 'F', 5: 'G', 6: 'S', 7: 'T'})
    genusdt0 = genusdt0.drop(['T'], axis=1)
    genusdt0['taxonomy'] = genusdt0['K'] + str(';') + genusdt0['P'] + str(';') + genusdt0['C'] + str(';') + genusdt0[
        'O'] + str(';') + genusdt0['F'] + str(';') + genusdt0['G'] + str(';') + genusdt0['S']
    genusdt0 = genusdt0.groupby('taxonomy').agg('sum')
    genusdt0 = genusdt0.loc[(genusdt0.sum(axis=1) != 0), ]
    genusdt0.to_csv(os.path.join(args.output, 'species.txt'), index=1, sep="\t")

    # G
    genusdt0 = genusdt0.reset_index()  # 将索引(index)转换为列名
    genusdt0 = pd.concat([genusdt
检查下面的python代码:#!usrbinpython-- coding UTF-8 --import argparseimport sysimport osimport pandas as pdfrom datatable import dtjoinfbyg####################################################parser = argparse

原文地址: http://www.cveoy.top/t/topic/iosc 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录