1

非常に巨大な .bam ファイルを .bed ファイルに変換する必要がありますが、bedops の bam2bed 並列を使用して解決策を見つけましたが、その並列は SEG と gnuParallel をサポートし、アクセスできる 2 つのクラスターは slurm とトルク スケジューラのみをサポートします。私は tcsh についてよく知っていますが、スラームとトルクの要件を満たすためにスクリプトを変更することさえできません。

私は Python について少し知っているので、Python のマルチプロセッシング モジュールを使用してこれを行う予定ですが、次のコードでは奇妙なメッセージが表示されます。

「calignmentfile.so プラグインの使用中に Python が予期せず終了しました」

# The code here is just a test code, ignore its real meaning.
import multiprocessing as mp
import pysam

def work(read):
    return read.query
    # return read.split()[0]

if __name__ == '__main__':
    cpu = mp.cpu_count()
    pool = mp.Pool(cpu)

    sam = pysam.AlignmentFile('foo.bam', 'rb')
    read = sam.fetch(until_eof=True)

    # f = open('foo.text', 'rb')
    # results = pool.map(work, f, cpu)

    results = pool.map(work, read, cpu)
    print(results)

このメッセージは、pysam.AlignmentFile() からの読み取りが並列処理をサポートしていないことを意味しますか、それとも Python がこの種の並列処理をサポートしていませんか? 通常のテキスト ファイルを使用してこのコードをテストすると、うまく機能します (たとえば、コードにコメントが付けられています)。

4

1 に答える 1