annotate antiSMASH_wrapper.py @ 0:6a37d0a4510a default tip

initial uploaded
author bjoern-gruening
date Thu, 15 Mar 2012 05:23:03 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
1 #!/usr/bin/env python
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
2 # -*- coding: UTF-8 -*-
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
3
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
4 import os, sys, subprocess, commands
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
5 import random, shutil
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
6 import zipfile
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
7
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
8
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
9 blastdbpath = '/home/galaxy/bin/antismash-1.1.0/db'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
10 pfamdbpath = '/home/galaxy/bin/antismash-1.1.0/db'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
11 antismash_path = '/home/galaxy/bin/antismash-1.1.0/antismash.py'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
12
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
13
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
14 def zipper(dir, zip_file):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
15 zip = zipfile.ZipFile(zip_file, 'w', compression=zipfile.ZIP_DEFLATED)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
16 root_len = len(os.path.abspath(dir))
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
17 for root, dirs, files in os.walk(dir):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
18 # only inlcude the result directory
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
19 # assumption, each galaxy file and so the result directory starts with dataset_xxx
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
20 if root.find('dataset_') != -1:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
21 archive_root = os.path.abspath(root)[root_len:]
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
22 for f in files:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
23 fullpath = os.path.join(root, f)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
24 archive_name = os.path.join(archive_root, f)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
25 zip.write(fullpath, archive_name, zipfile.ZIP_DEFLATED)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
26 zip.close()
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
27 return zip_file
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
28
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
29
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
30 def anitSMASH(args):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
31 #./antismash.py Tue6071_genome.fasta --geneclustertypes 1 --fullhmm y
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
32 rint = random.randint(1,10000000)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
33 tmp_dir = '/tmp/galaxy_%s' % rint
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
34 os.mkdir(tmp_dir)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
35 os.mkdir(os.path.join( tmp_dir, 'geneprediction' ))
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
36 os.chdir(tmp_dir)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
37 new_input_path = os.path.join(tmp_dir, os.path.basename(args.input) + '.fasta')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
38
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
39 # try to generate the same name as in antismash.py
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
40 genomename = ".".join( (os.path.basename(args.input) + '.fasta').split(".")[:-1] )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
41 for i in """!"#$%&()*+,./:;=>?@[]^`{|}'""":
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
42 genomename = genomename.replace(i,"")
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
43 result_path = os.path.join( tmp_dir, genomename )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
44
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
45 shutil.copy(args.input, new_input_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
46
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
47 if args.eukaryotic:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
48 taxon = '--taxon e'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
49 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
50 taxon = '--taxon p'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
51
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
52 if args.clusterblast:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
53 clusterblast = '--clusterblast y'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
54 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
55 clusterblast = '--clusterblast n'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
56
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
57 if args.smcogs:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
58 smcogs = '--smcogs y'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
59 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
60 smcogs = '--smcogs n'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
61
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
62 if args.fullhmm:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
63 fullhmm = '--fullhmm y'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
64 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
65 fullhmm = '--fullhmm n'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
66
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
67 if args.fullblast:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
68 fullblast = '--fullblast y'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
69 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
70 fullblast = '--fullblast n'
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
71
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
72 h = [antismash_path, new_input_path,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
73 '--geneclustertypes %s' % args.geneclustertypes,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
74 taxon,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
75 clusterblast,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
76 smcogs,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
77 fullhmm,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
78 fullblast,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
79 '--glimmer_prediction %s' % args.glimmer_prediction,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
80 '--blastdbpath %s' % blastdbpath,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
81 '--pfamdbpath %s' % pfamdbpath,
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
82 '--cores 10',
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
83 ]
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
84 a = ' '.join(h)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
85 subprocess.call(a, shell=True)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
86
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
87
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
88 shutil.copy(os.path.join(result_path, '%s.final.embl' % genomename), args.embl_path)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
89
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
90 clustername_mapping = {}
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
91 for line in open( os.path.join(result_path, 'clusterblast/geneclusters.txt') ):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
92 token = line.split('\t')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
93 clustername_mapping[token[2]] = token[3]
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
94
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
95 for line in open( os.path.join(result_path, 'clusterblast/geneclusterprots.fasta') ):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
96 if line.startswith('>'):
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
97 for k,v in clustername_mapping.items():
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
98 if '|%s|' % k in line:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
99 args.geneclusterprots.write( line.replace('|%s|' % k, '|%s|%s|' % (k,v)) )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
100 else:
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
101 args.geneclusterprots.write( line )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
102
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
103 zipper(result_path, args.zip)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
104
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
105 # html output
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
106 shutil.copy( os.path.join(result_path, 'display.xhtml'), args.html_file)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
107 os.mkdir( args.html_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
108 html_dest_path = os.path.join(args.html_path, 'html/')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
109 images_dest_path = os.path.join(args.html_path, 'images/')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
110 svg_dest_path = os.path.join(args.html_path, 'svg/')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
111 substrspecs_dest_path = os.path.join(args.html_path, 'substrspecs/')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
112 shutil.copytree( os.path.join(result_path, 'html/'), html_dest_path)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
113 shutil.copytree( os.path.join(result_path, 'images/'), images_dest_path)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
114 shutil.copytree( os.path.join(result_path, 'svg/'), svg_dest_path)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
115 shutil.copytree( os.path.join(result_path, 'substrspecs/'), substrspecs_dest_path)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
116 shutil.copy( os.path.join(result_path, 'jquery.svg.js'), args.html_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
117 shutil.copy( os.path.join(result_path, 'jquery.svgdom.js'), args.html_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
118 shutil.copy( os.path.join(result_path, 'jquery-1.4.2.min.js'), args.html_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
119 shutil.copy( os.path.join(result_path, 'style.css'), args.html_path )
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
120
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
121 # remove tmp directory
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
122 shutil.rmtree(tmp_dir)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
123
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
124
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
125 def arg_parse():
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
126 import argparse
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
127 parser = argparse.ArgumentParser(prog = 'antiSMASH-Wrapper')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
128 parser.add_argument('--version', action='version', version='%(prog)s 0.01')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
129 parser.add_argument('--geneclustertypes',
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
130 help='Fingerprint Type, currently FP2, FP3, FP4')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
131 parser.add_argument('--clusterblast', action='store_true')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
132 parser.add_argument('--eukaryotic', action='store_true')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
133 parser.add_argument('--fullhmm', action='store_true')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
134 parser.add_argument('--smcogs', action='store_true')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
135 parser.add_argument('--fullblast', action='store_true')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
136
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
137 parser.add_argument('--input', '-i', help='FASTA Sequence File')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
138 parser.add_argument('--glimmer_prediction', help='Glimmer Prediction File')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
139
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
140 parser.add_argument('--zip', help='output: all files as zip file')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
141 parser.add_argument('--html_file', help='output: the path to the index html file')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
142 parser.add_argument('--html_path', help='output: the path to the output html dir')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
143 parser.add_argument('--embl_path', help='output: the path to the embl output file')
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
144 parser.add_argument('--geneclusterprots', help='output: Genecluster Fasta File', type=argparse.FileType('w'))
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
145
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
146 args = parser.parse_args()
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
147 return args
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
148
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
149
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
150 if __name__ == '__main__':
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
151 args = arg_parse()
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
152 anitSMASH(args)
6a37d0a4510a initial uploaded
bjoern-gruening
parents:
diff changeset
153