Skip to content

Commit c88291e

Browse files
committed
muscle with multi cores
1 parent 2387821 commit c88291e

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

physpetool/phylotree/domuscle.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"""
2424
Module to call muscle to do alignment
2525
"""
26-
26+
import multiprocessing
2727
import subprocess
2828
import os
2929
import os.path
@@ -73,8 +73,10 @@ def domuscle(indata, outdata, musclepara):
7373
logdomuscle.info("Multiple sequence alignment by Muscle was completed.")
7474
return out_alg
7575

76+
def run_cmd(cmd):
77+
subprocess.call(cmd, shell=True)
7678

77-
def domuscle_file(indata_files, outdata, musclepara):
79+
def domuscle_file(indata_files, outdata, musclepara,thread):
7880
"""
7981
call muscle software to do align
8082
:param indata_files: a directory contain more than one file
@@ -92,10 +94,17 @@ def domuscle_file(indata_files, outdata, musclepara):
9294
pro_name = os.listdir(indata_files)
9395
if not os.path.exists(muscle_dir):
9496
os.makedirs(muscle_dir)
97+
all_cmd = []
9598
for i in pro_name:
9699
out_alg = os.path.join(muscle_dir, i.split('.')[0])
97100
each_pro = os.path.join(indata_files, i)
98101
cmd = mupath + "/muscle -in " + each_pro + " -out " + out_alg + " " + muscleparas
102+
all_cmd.append(cmd)
99103
subprocess.call(cmd, shell=True)
104+
105+
pool = multiprocessing.Pool(processes=thread)
106+
# method 1: map
107+
pool.map(run_cmd, all_cmd)
108+
100109
logdomuscle.info("Multiple sequence alignment by Muscle was completed.")
101110
return muscle_dir

0 commit comments

Comments
 (0)