[Python は fasta ファイルを複数の小さな fasta ファイルに分割します]

#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] #read file 
    n=sys.argv[2] #数値に分割
    n=int(n) 
    out_file = sys.argv[3] #path 
#ディレクトリが存在する、存在しない場合は作成
    os.path.exists(out_file): 
        os.mkdir(out_file) 
#入力ファイルを処理し、別のファイルに保存します; ここでは主にすべてのファイルを 1 行に処理するため、これが便利ですフォローアップ用 N 個の部分に分割
    fr = open(fasta, 'r') 
    fw = open('fa.fasta', 'w') 
    seq = {} 
    for line in fr: 
        if line.startswith('>') : 
            name = line.split()[0] 
            seq[name] = ''
        それ以外の場合:
            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")

おすすめ

転載: blog.csdn.net/whiteof/article/details/123685985