comparison STACKS_sort_read_pairs.py @ 0:d6ba40f6c824

first commit
author cmonjeau
date Mon, 24 Aug 2015 09:29:12 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d6ba40f6c824
1 #!/usr/bin/env python
2
3 import sys, re
4 import os
5 import tempfile
6 import shutil, subprocess, glob
7 import optparse
8 from os.path import basename
9 import zipfile, tarfile, gzip
10 from galaxy.datatypes.checkers import *
11 from stacks import *
12
13 """
14
15 Created by Yvan Le Bras
16 yvan.le_bras@irisa.fr
17
18 Last modifications : 02/17/2014
19
20 WARNING :
21
22 STACKS_sort_read_pairs.py needs:
23
24 - STACKS scripts in your $PATH
25
26 These scripts are available after compiling the sources of STACKS :
27
28 http://creskolab.uoregon.edu/stacks/
29
30 or with the galaxy_stacks package in the Genouest toolshed
31
32
33 """
34
35 def __main__():
36
37
38 # create the working dir
39 os.mkdir("sort_read_outputs")
40 os.mkdir("assembly_outputs")
41 os.mkdir("samples_inputs")
42 os.mkdir("stacks_inputs")
43
44 # arguments recuperation
45 parser = optparse.OptionParser()
46 parser.add_option("-a")
47 parser.add_option("-e")
48 parser.add_option("-b")
49 parser.add_option("-c")
50 parser.add_option("-d")
51 parser.add_option("-o")
52 (options, args) = parser.parse_args()
53
54 # edit the command line
55 cmd_line1 = ["sort_read_pairs.pl"]
56
57 #parse config files and create symlink if individual files are selected
58
59 # STACKS_archive
60 # check if zipped files are into the tab
61 extract_compress_files(options.a, os.getcwd()+"/stacks_inputs")
62
63 # samples_archive
64 # check if zipped files are into the tab and change tab content
65 extract_compress_files(options.e, os.getcwd()+"/samples_inputs")
66
67 # create the sort_read_pairs command input line
68 cmd_line1.extend(["-p", "stacks_inputs", "-s", "samples_inputs", "-o", "sort_read_outputs"])
69
70 if options.b:
71 cmd_line1.extend(["-w", options.b])
72 if options.c:
73 cmd_line1.extend(["-r", options.c])
74
75 # exec command line 1
76 p1 = subprocess.Popen(cmd_line1)
77 p1.communicate()
78
79 # parse all files list and remove empty files from the output dir
80 for fasta_file in glob.glob("sort_read_outputs/*"):
81 if os.stat(fasta_file).st_size==0:
82 print "File "+fasta_file+" is empty"
83 os.remove(fasta_file)
84
85
86 # create the exec_velvet command input line
87 cmd_line2 = ["exec_velvet.pl"]
88 cmd_line2.extend(["-s", "sort_read_outputs", "-o", "assembly_outputs"])
89 cmd_line2.append("-c")
90
91 if options.d:
92 cmd_line2.extend(["-M", options.d])
93
94 # version
95 #cmd = 'sort_read_pairs.pl'+cmd_files+" "+cmd_options+" 2>&1"
96 #cmd2 = 'exec_velvet.pl'+cmd_files2+" -c -e /softs/local/velvet/velvet_1.2.03/ "+cmd_options2+" 2>&1"
97
98 # launch the command line 2
99 p2 = subprocess.Popen(cmd_line2)
100 p2.communicate()
101
102 # get collated.fa file
103 try:
104 shutil.copy("assembly_outputs/collated.fa", options.o)
105 except:
106 print "No result file"
107 sys.exit(1)
108
109 if __name__ == "__main__": __main__()