Mercurial > repos > cmonjeau > stacks
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__() |
