Mercurial > repos > gga > apollo_fetch_jbrowse
comparison fetch_organism_jbrowse.py @ 10:dca2fb399ee6 draft
"planemo upload for repository https://github.com/galaxy-genome-annotation/galaxy-tools/tree/master/tools/apollo commit 08015be1ee8a784e0619f961aaa724857debfd6f"
author | gga |
---|---|
date | Mon, 02 Dec 2019 05:45:36 -0500 |
parents | 1a2976c6b161 |
children | 6905bb3ce9db |
comparison
equal
deleted
inserted
replaced
9:d8bb1f9b85b2 | 10:dca2fb399ee6 |
---|---|
7 import os | 7 import os |
8 import subprocess | 8 import subprocess |
9 import sys | 9 import sys |
10 import time | 10 import time |
11 | 11 |
12 from webapollo import GuessOrg, OrgOrGuess, PermissionCheck, WAAuth, WebApolloInstance | 12 from apollo import accessible_organisms |
13 from apollo.util import GuessOrg, OrgOrGuess | |
14 | |
15 from arrow.apollo import get_apollo_instance | |
16 | |
17 from webapollo import UserObj, handle_credentials | |
18 | |
13 logging.basicConfig(level=logging.INFO) | 19 logging.basicConfig(level=logging.INFO) |
14 log = logging.getLogger(__name__) | 20 log = logging.getLogger(__name__) |
15 | 21 |
16 | 22 |
17 def are_dir_trees_equal(dir1, dir2): | 23 def are_dir_trees_equal(dir1, dir2): |
50 return True | 56 return True |
51 | 57 |
52 | 58 |
53 if __name__ == '__main__': | 59 if __name__ == '__main__': |
54 parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') | 60 parser = argparse.ArgumentParser(description='Sample script to add an attribute to a feature via web services') |
55 WAAuth(parser) | |
56 OrgOrGuess(parser) | 61 OrgOrGuess(parser) |
57 parser.add_argument('target_dir', help='Target directory') | 62 parser.add_argument('target_dir', help='Target directory') |
58 parser.add_argument('email', help='User Email') | 63 parser.add_argument('email', help='User Email') |
59 | 64 |
60 args = parser.parse_args() | 65 args = parser.parse_args() |
61 | 66 |
62 wa = WebApolloInstance(args.apollo, args.username, args.password) | 67 wa = get_apollo_instance() |
63 # User must have an account | 68 # User must have an account |
64 org_cn = GuessOrg(args, wa) | 69 org_cn = GuessOrg(args, wa) |
65 if isinstance(org_cn, list): | 70 if isinstance(org_cn, list): |
66 org_cn = org_cn[0] | 71 org_cn = org_cn[0] |
67 org = wa.organisms.findOrganismByCn(org_cn) | |
68 | 72 |
69 # User must have an account, if not, create it | 73 # User must have an account, if not, create it |
70 gx_user = wa.users.assertOrCreateUser(args.email) | 74 gx_user = UserObj(**wa.users._assert_or_create_user(args.email)) |
75 handle_credentials(gx_user) | |
76 | |
77 all_orgs = wa.organisms.get_organisms() | |
78 if 'error' in all_orgs: | |
79 all_orgs = [] | |
80 all_orgs = [org['commonName'] for org in all_orgs] | |
81 if org_cn not in all_orgs: | |
82 raise Exception("Could not find organism %s" % org_cn) | |
71 | 83 |
72 # User must have READ access | 84 # User must have READ access |
73 | 85 orgs = accessible_organisms(gx_user, [org_cn], 'READ') |
74 if not PermissionCheck(gx_user, org_cn, "READ"): | 86 if not orgs: |
75 raise Exception("READ permissions are required for this action") | 87 raise Exception("You do not have write permission on this organism") |
88 org = wa.organisms.show_organism(org_cn) | |
76 | 89 |
77 if not os.path.exists(args.target_dir): | 90 if not os.path.exists(args.target_dir): |
78 os.makedirs(args.target_dir) | 91 os.makedirs(args.target_dir) |
79 | 92 |
80 if not os.path.exists(os.path.join(org['directory'], 'seq')): | 93 if not os.path.exists(os.path.join(org['directory'], 'seq')): |
92 # Our response is to run this 3 times (in case the issue is temporary), | 105 # Our response is to run this 3 times (in case the issue is temporary), |
93 # with delays in between. And ensure that we have the correct number of | 106 # with delays in between. And ensure that we have the correct number of |
94 # files / folders before and after. | 107 # files / folders before and after. |
95 sys.stderr.write(' '.join(cmd)) | 108 sys.stderr.write(' '.join(cmd)) |
96 sys.stderr.write('\n') | 109 sys.stderr.write('\n') |
97 sys.stderr.write(subprocess.check_output(cmd)) | 110 sys.stderr.write(subprocess.check_output(cmd).decode(sys.stderr.encoding)) |
98 if not are_dir_trees_equal( | 111 if not are_dir_trees_equal( |
99 os.path.join(org['directory'].rstrip('/')), | 112 os.path.join(org['directory'].rstrip('/')), |
100 os.path.join(args.target_dir, 'data') | 113 os.path.join(args.target_dir, 'data') |
101 ): | 114 ): |
102 # Not good | 115 # Not good |
103 time.sleep(5) | 116 time.sleep(5) |
104 sys.stderr.write('\n') | 117 sys.stderr.write('\n') |
105 sys.stderr.write(' '.join(cmd)) | 118 sys.stderr.write(' '.join(cmd)) |
106 sys.stderr.write('\n') | 119 sys.stderr.write('\n') |
107 sys.stderr.write(subprocess.check_output(cmd)) | 120 sys.stderr.write(subprocess.check_output(cmd).decode(sys.stderr.encoding)) |
108 if not are_dir_trees_equal( | 121 if not are_dir_trees_equal( |
109 os.path.join(org['directory'].rstrip('/'), 'data'), | 122 os.path.join(org['directory'].rstrip('/'), 'data'), |
110 os.path.join(args.target_dir, 'data') | 123 os.path.join(args.target_dir, 'data') |
111 ): | 124 ): |
112 time.sleep(5) | 125 time.sleep(5) |
113 sys.stderr.write('\n') | 126 sys.stderr.write('\n') |
114 sys.stderr.write(' '.join(cmd)) | 127 sys.stderr.write(' '.join(cmd)) |
115 sys.stderr.write('\n') | 128 sys.stderr.write('\n') |
116 sys.stderr.write(subprocess.check_output(cmd)) | 129 sys.stderr.write(subprocess.check_output(cmd).decode(sys.stderr.encoding)) |
117 if not are_dir_trees_equal( | 130 if not are_dir_trees_equal( |
118 os.path.join(org['directory'].rstrip('/'), 'data'), | 131 os.path.join(org['directory'].rstrip('/'), 'data'), |
119 os.path.join(args.target_dir, 'data') | 132 os.path.join(args.target_dir, 'data') |
120 ): | 133 ): |
121 sys.stderr.write('FAILED THREE TIMES TO COPY. SOMETHING IS WRONG WRONG WRONG.') | 134 sys.stderr.write('FAILED THREE TIMES TO COPY. SOMETHING IS WRONG WRONG WRONG.') |