Mercurial > repos > gga > apollo_create_account
diff create_or_update_organism.py @ 7:0d9cb9e56ca0 draft
planemo upload for repository https://github.com/galaxy-genome-annotation/galaxy-tools/tree/master/tools/apollo commit b9143221aee2cd09e1334ee56ff9651550b1797a
author | gga |
---|---|
date | Fri, 15 Mar 2019 06:05:10 -0400 |
parents | 356b43302b16 |
children | e80d29fd2a33 |
line wrap: on
line diff
--- a/create_or_update_organism.py Tue Oct 30 04:32:30 2018 -0400 +++ b/create_or_update_organism.py Fri Mar 15 06:05:10 2019 -0400 @@ -4,18 +4,33 @@ import argparse import json import logging +import os import shutil +import subprocess import sys +import tempfile import time + from webapollo import GuessOrg, OrgOrGuess, PermissionCheck, WAAuth, WebApolloInstance logging.basicConfig(level=logging.INFO) log = logging.getLogger(__name__) + +def IsBlatEnabled(): + if 'BLAT_ENABLED' not in os.environ: + return False + value = os.environ['BLAT_ENABLED'] + if value.lower() in ('true', 't', '1'): + return True + else: + return False + + if __name__ == '__main__': parser = argparse.ArgumentParser(description='Create or update an organism in an Apollo instance') WAAuth(parser) - + parser.add_argument('jbrowse_src', help='Old JBrowse Data Directory') parser.add_argument('jbrowse', help='JBrowse Data Directory') parser.add_argument('email', help='User Email') OrgOrGuess(parser) @@ -24,8 +39,38 @@ parser.add_argument('--public', action='store_true', help='Make organism public') parser.add_argument('--group', help='Give access to a user group') parser.add_argument('--remove_old_directory', action='store_true', help='Remove old directory') + args = parser.parse_args() + CHUNK_SIZE = 2**20 + blat_db = None - args = parser.parse_args() + # Cleanup if existing + if(os.path.exists(args.jbrowse)): + shutil.rmtree(args.jbrowse) + # Copy files + shutil.copytree(args.jbrowse_src, args.jbrowse) + + path_fasta = args.jbrowse + '/seq/genome.fasta' + path_2bit = args.jbrowse + '/seq/genome.2bit' + + # Convert fasta if existing + if(IsBlatEnabled() and os.path.exists(path_fasta)): + arg = ['faToTwoBit', path_fasta, path_2bit] + tmp_stderr = tempfile.NamedTemporaryFile(prefix="tmp-twobit-converter-stderr") + proc = subprocess.Popen(args=arg, shell=False, cwd=args.jbrowse, stderr=tmp_stderr.fileno()) + return_code = proc.wait() + if return_code: + tmp_stderr.flush() + tmp_stderr.seek(0) + print("Error building index:", file=sys.stderr) + while True: + chunk = tmp_stderr.read(CHUNK_SIZE) + if not chunk: + break + sys.stderr.write(chunk) + sys.exit(return_code) + blat_db = path_2bit + tmp_stderr.close() + wa = WebApolloInstance(args.apollo, args.username, args.password) org_cn = GuessOrg(args, wa) @@ -56,7 +101,8 @@ # mandatory genus=args.genus, species=args.species, - public=args.public + public=args.public, + blatdb=blat_db ) time.sleep(2) if args.remove_old_directory and args.jbrowse != old_directory: @@ -72,7 +118,8 @@ args.jbrowse, genus=args.genus, species=args.species, - public=args.public + public=args.public, + blatdb=blat_db ) # Must sleep before we're ready to handle