Mercurial > repos > jmariette > pyrocleaner
comparison pyrocleaner_galaxy_tool_V1.2/pyrocleaner_wrapper.py @ 0:ef5dd11c01e6 default tip
pyrocleaner v1.2
author | g2cmnty@test-web1.g2.bx.psu.edu |
---|---|
date | Thu, 09 Jun 2011 06:09:09 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:ef5dd11c01e6 |
---|---|
1 # | |
2 # Pyrocleaner wrapper for galaxy | |
3 # Copyright (C) 2009 INRA | |
4 # | |
5 # This program is free software: you can redistribute it and/or modify | |
6 # it under the terms of the GNU General Public License as published by | |
7 # the Free Software Foundation, either version 3 of the License, or | |
8 # (at your option) any later version. | |
9 # | |
10 # This program is distributed in the hope that it will be useful, | |
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 # GNU General Public License for more details. | |
14 # | |
15 # You should have received a copy of the GNU General Public License | |
16 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 # | |
18 # | |
19 | |
20 __author__ = 'Plateforme bioinformatique Midi Pyrenees' | |
21 __copyright__ = 'Copyright (C) 2009 INRA' | |
22 __license__ = 'GNU General Public License' | |
23 __version__ = '1.2' | |
24 __email__ = 'support.genopole@toulouse.inra.fr' | |
25 __status__ = 'beta' | |
26 | |
27 import optparse, os, shutil, subprocess, sys, tempfile, re, string | |
28 | |
29 if __name__ == "__main__": | |
30 | |
31 parser = optparse.OptionParser() | |
32 | |
33 parser.add_option( '-s', '--options', dest='options', help='The pyrocleaner options' ) | |
34 parser.add_option( '-l', '--log', dest='log', help='Path to the pyrocleaner log' ) | |
35 parser.add_option( '-f', '--format', dest='format', help='The input file format (sff|fastq)' ) | |
36 parser.add_option( '-o', '--output', dest='output', help='The output file path' ) | |
37 parser.add_option( '-a', '--out-pe-qual', dest='out_pe_qual', help='The output pairends qual file path' ) | |
38 parser.add_option( '-b', '--out-pe-fasta', dest='out_pe_fasta', help='The output pairends fasta file path' ) | |
39 parser.add_option( '-d', '--out-dir', dest='out_dir', help='The output dir where to process the data' ) | |
40 | |
41 (options, args) = parser.parse_args() | |
42 | |
43 buffsize = 1048576 | |
44 tmp_dir = tempfile.mkdtemp() | |
45 | |
46 try: | |
47 | |
48 if options.format == "sff": format = "sff" | |
49 else : format = "fastq" | |
50 | |
51 tmp_stderr_name = tempfile.NamedTemporaryFile( dir=tmp_dir,suffix='.err' ).name | |
52 tmp_stderr = open( tmp_stderr_name, 'wb' ) | |
53 tmp_stdout_name = tempfile.NamedTemporaryFile( dir=tmp_dir,suffix='.out' ).name | |
54 tmp_stdout = open( tmp_stdout_name, 'wb' ) | |
55 cmd = 'pyrocleaner --format %s %s --out %s' % (format, options.options, options.out_dir) | |
56 proc = subprocess.Popen( args=cmd, shell=True, cwd=tmp_dir, stderr=tmp_stderr.fileno(), stdout=tmp_stdout.fileno() ) | |
57 returncode = proc.wait() | |
58 tmp_stderr.close() | |
59 # get stderr, allowing for case where it's very large | |
60 tmp_stderr = open( tmp_stderr_name, 'rb' ) | |
61 stderr = '' | |
62 try: | |
63 while True: | |
64 stderr += tmp_stderr.read( buffsize ) | |
65 if not stderr or len( stderr ) % buffsize != 0: | |
66 break | |
67 except OverflowError: | |
68 pass | |
69 tmp_stderr.close() | |
70 if returncode != 0: | |
71 raise Exception, stderr | |
72 | |
73 # Move the log file to the right place | |
74 shutil.move(os.path.join(options.out_dir, "pyrocleaner.log"), options.log) | |
75 | |
76 for file in os.listdir(options.out_dir): | |
77 # If the file has the input file format and is not a shotgun file | |
78 if file.endswith(format): | |
79 shutil.move(os.path.join(options.out_dir, file), options.output) | |
80 # If it's a quality file from shotgun | |
81 if file.endswith(".qual") : | |
82 shutil.move(os.path.join(options.out_dir, file), options.out_pe_qual) | |
83 # If it's a fasta file from shotgun | |
84 elif file.endswith(".fasta") : | |
85 shutil.move(os.path.join(options.out_dir, file), options.out_pe_fasta) | |
86 | |
87 except Exception: | |
88 raise Exception, 'Error executing pyrocleaner.' |