view build_ctb_gene.py @ 15:e6d850bb9fb6 draft

planemo upload for repository https://github.com/SANBI-SA/tools-sanbi-uwc.git commit c78b1532031ee875ff51cb2a4c73f4577bd07839
author sanbi-uwc
date Wed, 18 May 2016 08:28:36 -0400
parents 4caf3e2d10e8
children eb925a043a43
line wrap: on
line source

#!/usr/bin/env python
from __future__ import print_function
import argparse
import os
import sys
import glob
import shlex
import shutil
import datetime
from subprocess import check_call, CalledProcessError

import logging

log = logging.getLogger(__name__)


class BuildCtbRunner(object):
    def __init__(self, args=None):
        '''
        Initializes an object to run CtbRunner in Galaxy.
        '''
        # Check whether the options are specified and saves them into the object
        # assert args != None
        self.args = args

    def build_ctb_gene(self):
        # cmdline_str = "build_ctb_gene goterms ${}".format(input_file)
        cmdline_str = "touch /tmp/foo.bar"
        cmdline_str = self.newSplit(cmdline_str)
        build_ctb_run = True
        try:
            check_call(cmdline_str)
            build_ctb_run = False
        except CalledProcessError:
            print("Error running the build_ctb_gene goterms", file=sys.stderr)
        if build_ctb_run:
            self.copy_output_file_to_dataset()

    def newSplit(self, value):
        lex = shlex.shlex(value)
        lex.quotes = '"'
        lex.whitespace_split = True
        lex.commenters = ''
        return list(lex)

    def copy_output_file_to_dataset(self):
        '''
        Retrieves the output files from the output directory and copies them to the Galaxy output files
        '''
        # retrieve neo4j files to the working gx directory
        result_file = glob.glob(self.args.mount_point + '/*')
        for file_name in result_file:
            shutil.copy(file_name, self.args.outputdir)


def main():
    parser = argparse.ArgumentParser(description="Tool used to extract data about genes using locus_tags")
    parser.add_argument('--outputfile')
    parser.add_argument('--outputdir')
    parser.add_argument('--input_file')
    parser.add_argument('--mount_point')
    parser.add_argument('--username')
    parser.add_argument('--password')
    parser.add_argument('--url')
    parser.add_argument('--port')
    args = parser.parse_args()

    export_cmd = "export NEO4J_REST_URL=http://${args.username}:${args.password}@${args.url}:${args.port}/db/data/"
    try:
        os.system(export_cmd)
    except (OSError, ValueError), e:
        print("Error exporting the NEO4J db environmental values", e)

    # make the output directory
    if not os.path.exists(args.outputdir):
        os.makedirs(args.outputdir)

    ctb_gene_runner = BuildCtbRunner(args)
    if ctb_gene_runner.build_ctb_gene():
        print("Building a new DB, current time: %s" % str(datetime.date.today()))
        print("Noe4j Database Name: http://%s:%s@%s:%s/db/data/" % (args.username, args.password, args.url, args.port))
        print("GFF File - Input: %s" % str(args.input_file))


if __name__ == "__main__": main()