-
Notifications
You must be signed in to change notification settings - Fork 0
/
Run_SawyerGeneconv.py
39 lines (31 loc) · 1.72 KB
/
Run_SawyerGeneconv.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import os
import subprocess
def initialize(paralog, out_path = './GeneconvOutput/', alignment_path = './'):
if not os.path.isdir(out_path + '_'.join(paralog)):
os.mkdir(out_path + '_'.join(paralog))
input_alignment = out_path + '_'.join(paralog) + '_Cleaned.fasta'
if not os.path.isfile(input_alignment):
subprocess.check_output(['cp', input_alignment.replace(out_path, alignment_path), input_alignment])
def run_SawyerGeneconv(paralog, out_path = './GeneconvOutput/', software_dir = '/Users/xji3/Gitfolders/JGT_MBE_2016/Sawyer_Geneconv/geneconv', protein = False):
if protein:
SawyerGeneconvCmd = [software_dir,out_path + '_'.join(paralog) + '_Cleaned.fasta', '-nolog', '/lp', '/w822', '/p']
else:
SawyerGeneconvCmd = [software_dir,out_path + '_'.join(paralog) + '_Cleaned.fasta', '-nolog', '/lp', '/w822']
subprocess.check_output(SawyerGeneconvCmd)
def read_SawyerGeneconv(paralog, file_path = './GeneconvOutput/'):
file_name = file_path + '_'.join(paralog) + '_Cleaned.frags'
with open(file_name, 'r') as f:
content = f.readlines()
pline = 0
for i in range(2, len(content)):
#print content[i][:7], content[i][:7] == '# SCORE', content[i - 1][:8] == '# frags', content[i - 2][:8] == '# Inner '
if content[i][:7] == '# SCORE' and content[i - 1][:8] == '# frags' and content[i - 2][:8] == '# Inner ':
pline = i
return float(content[pline].split()[3])
if __name__ == '__main__':
paralog = ['EDN', 'ECP']
initialize(paralog)
run_SawyerGeneconv(paralog)
print '_'.join(paralog), read_SawyerGeneconv(paralog)
run_SawyerGeneconv(paralog, protein = True)
print '_'.join(paralog), read_SawyerGeneconv(paralog)