#将fasta拆分N份 import sys import pandas as pd import os #这里我写了一个判断参数,这里输入参数:py文件,fa文件,拆分数,输出文件夹 if len(sys.argv)>3 and len(sys.argv)<5: fasta=sys.argv[1] #读取文件 n=sys.argv[2] #分成数 n=int(n) out_file = sys.argv[3] #路径 #判断目录是否存在,不存在创建 if not os.path.exists(out_file): os.mkdir(out_file) #处理输入的文件并保存到另一个文件中;这里主要是将文件全部处理成一行,便于后续拆分成N份 fr = open(fasta, 'r') fw = open('fa.fasta', 'w') seq = {} for line in fr: if line.startswith('>'): name = line.split()[0] seq[name] = '' else: seq[name] += line.replace('\n', '') for i in seq.keys(): fw.write(i) fw.write(':') fw.write(seq[i]) fw.write('\n') fr.close() fa_file =pd.read_table('fa.fasta') num = 0 #进入输入的文件夹中 os.chdir(out_file) for i in range(1,n+1): start = num num = num +int(fa_file.shape[0]/n) file =fa_file.iloc[start:num] #每个文件保存到输入的文件夹中 file.to_csv( str(i) + "transcripts_mRNA.fa", index=False) else: print(f"Usage:\n\tpython {sys.argv[0]} input.fa split_num out_dir\n")
【python拆分fasta文件为多个小的fasta文件】
于 2022-03-23 14:51:36 首次发布