diff STACKS_procrad.py @ 0:d6ba40f6c824

first commit
author cmonjeau
date Mon, 24 Aug 2015 09:29:12 +0000
parents
children c9e10e0d6c10
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/STACKS_procrad.py	Mon Aug 24 09:29:12 2015 +0000
@@ -0,0 +1,177 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+import sys
+import os
+import re
+import tempfile
+import subprocess
+import glob
+import shutil
+import argparse
+from os.path import basename
+import zipfile
+import tarfile
+import gzip
+from stacks import *
+
+
+def __main__():
+
+    # arguments recuperation
+
+    parser = argparse.ArgumentParser()
+    parser.add_argument('--input_type')
+    parser.add_argument('--input_enzyme')
+    parser.add_argument('--input_single')
+    parser.add_argument('--input_paired1')
+    parser.add_argument('--input_paired2')
+    parser.add_argument('--inputype')
+    parser.add_argument('--sample_name')
+    parser.add_argument('--barcode')
+    parser.add_argument('--output_choice')
+    parser.add_argument('--output_archive')
+    parser.add_argument('--enzyme1')
+    parser.add_argument('--enzyme2')
+    parser.add_argument('--outype')
+    parser.add_argument('--qualitenc')
+    parser.add_argument('-D', action='store_true')
+    parser.add_argument('-t')
+    parser.add_argument('-q', action='store_true')
+    parser.add_argument('--activate_advanced_options')
+    parser.add_argument('-r', action='store_true')
+    parser.add_argument('-w', default='0.15')
+    parser.add_argument('-s', default='10')
+    parser.add_argument('-c', action='store_true')
+    parser.add_argument('--inline_null', action='store_true')
+    parser.add_argument('--index_null', action='store_true')
+    parser.add_argument('--inline_inline', action='store_true')
+    parser.add_argument('--index_index', action='store_true')
+    parser.add_argument('--inline_index', action='store_true')
+    parser.add_argument('--index_inline', action='store_true')
+    parser.add_argument('--logfile')
+    options = parser.parse_args()
+
+    # create the working dir
+    os.mkdir('inputs')
+    os.mkdir('job_outputs')
+    os.mkdir('galaxy_outputs')
+
+    cmd_line = []
+    cmd_line.append('process_radtags')
+    cmd_line.extend(['-p', 'inputs'])
+    cmd_line.extend(['-i', options.inputype])
+    cmd_line.extend(['-b', options.barcode])
+
+    # parse config files and create symlink into the temp dir
+
+    if options.input_type == 'single':
+
+        # load the config file
+        input_single = options.input_single
+
+        # parse the input_file to extract filenames and filepaths
+        tab_files = galaxy_config_to_tabfiles(input_single)
+
+        # create symlink into the temp dir
+        create_symlinks_from_tabfiles(tab_files, 'inputs')
+    else:
+
+        # load config files
+        input_paired1 = options.input_paired1
+        input_paired2 = options.input_paired2
+
+        # parse the input_file to extract filenames and filepaths
+
+        tab_files_paired1 = galaxy_config_to_tabfiles(input_paired1)
+        tab_files_paired2 = galaxy_config_to_tabfiles(input_paired2)
+
+        # create symlinks into the temp dir
+
+        create_symlinks_from_tabfiles(tab_files_paired1, 'inputs')
+        create_symlinks_from_tabfiles(tab_files_paired2, 'inputs')
+
+        cmd_line.append('-P')
+
+    # test nb enzyme
+    if options.input_enzyme == '1':
+        cmd_line.extend(['-e', options.enzyme1])
+
+    if options.input_enzyme == '2':
+        cmd_line.extend(['---renz_1', options.enzyme1, '--renz_2', options.enzyme2])
+
+    # quality
+    cmd_line.extend(['-E', options.qualitenc])
+
+    # outputs
+    cmd_line.extend(['-o', 'job_outputs/'])
+    cmd_line.extend(['-y', options.outype])
+    
+    # test capture discards
+    if options.D:
+        cmd_line.append('-D')
+    
+    # optional options
+    if options.activate_advanced_options == "true":
+
+        if options.q:
+            cmd_line.append('-q')
+        if options.r:
+            cmd_line.append('-r')
+        
+        cmd_line.extend(['-w', options.w, '-s', options.s])
+        
+        if options.c:
+            cmd_line.append('-c')
+        if options.t != '-1':
+            cmd_line.extend(['-t', options.t])
+        if options.inline_null:
+            cmd_line.append('--inline_null')
+        if options.index_null:
+            cmd_line.append('--index_null')
+        if options.inline_inline:
+            cmd_line.append('--inline_inline')
+        if options.index_index:
+            cmd_line.append('--index_index')
+        if options.inline_index:
+            cmd_line.append('--inline_index')
+        if options.index_inline:
+            cmd_line.append('--index_inline')
+
+    print '[CMD_LINE] : ' + ' '.join(cmd_line)
+
+    p = subprocess.call(cmd_line)
+
+    # postprocesses
+
+    try:
+        shutil.move('job_outputs/process_radtags.log', options.logfile)
+    except:
+        sys.stderr.write('Error in process_radtags execution; Please read the additional output (stdout)\n')
+        sys.exit(1)        
+
+    if options.discard_file:
+        discards_file_name = glob.glob('job_outputs/*.discards')[0]
+        shutil.move(discards_file_name, options.discard_file)
+
+    # manage outputs names
+
+    change_outputs_procrad_name(os.getcwd() + '/job_outputs', options.sample_name)
+
+    # generate additional output archive file
+
+    if options.output_choice != '1':
+        generate_additional_archive_file(os.getcwd() + '/job_outputs', options.output_archive)
+
+    # if user has not choose the only zip archive
+
+    if options.output_choice != '3':
+        list_files = glob.glob('job_outputs/*')
+        for i in list_files:
+            shutil.move(i, 'galaxy_outputs')
+
+
+if __name__ == '__main__':
+    __main__()
+
+