检查下面的python代码:#!usrbinpython-- coding UTF-8 --import argparseimport sysimport osimport pandas as pdfrom datatable import dtjoinfbyg####################################################parser = argparse
代码的主要功能是将输入的数据进行处理和分析,并将结果输出到指定的目录中。以下是对代码的一些检查和修正建议:
- 第一行的
-- coding: UTF-8 --应改为# coding: utf-8,并且可以省略不写。 - 第一行的
#!/usr/bin/python是用于指定解释器的路径,如果不需要指定解释器路径,可以省略不写。 if name == 'main':应改为if __name__ == '__main__':。- 第27行的
genusdt0=genusdt0.loc[(genusdt0.sum(axis=1,numeric_only=True) != 0),]中的numeric_only=True是不需要的,可以直接使用genusdt0.sum(axis=1) != 0。 - 第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
原文地址: http://www.cveoy.top/t/topic/iosc 著作权归作者所有。请勿转载和采集!