Mercurial > repos > melissacline > ucsc_xena_platform
annotate getXenaData.py @ 53:09fdd4d23a3a
version 17
author | jingchunzhu |
---|---|
date | Mon, 21 Sep 2015 13:25:05 -0700 |
parents | bb840cc2603d |
children |
rev | line source |
---|---|
52 | 1 #!/usr/bin/env python |
2 | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
3 import os, sys, string, json, csv |
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
4 import xena_query as xena |
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
5 |
52 | 6 if len(sys.argv[:])!=5: |
7 print "python getXenaData.py hub datasetId outputfile galaxy_url\n" | |
8 sys.exit(2) | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
9 |
50 | 10 def main(): |
11 url = sys.argv[1] | |
12 dataset = sys.argv[2] | |
13 output = sys.argv[3] | |
52 | 14 GALAXY_URL = sys.argv[4] |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
15 |
50 | 16 fout = open(output,'w') |
42
bc9784300015
more reliable, error handling
jingchunzhu <jingchunzhu@gmail.com>
parents:
41
diff
changeset
|
17 |
50 | 18 contactUrl = url |
19 if string.find(url,"galaxyxena") !=-1 and string.find(url,"ucsc.edu")!=-1: | |
20 contactUrl = "https://galaxyxena.soe.ucsc.edu:443/xena" | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
21 |
50 | 22 #testing if the url is reachable |
23 try: | |
24 r =json.loads(xena.post(contactUrl, "(+ 1 2)")) | |
25 | |
26 if r!=3.0: | |
52 | 27 fout.write("There is an error\n\n") |
50 | 28 fout.write("You entered hub: %s\n" % (url)) |
52 | 29 fout.write("Possible causes for error:\n") |
30 fout.write("1. The hub is not running.\n") | |
31 fout.write("2. The hub is not accessible to this galaxy instance at: %s.\n" %(GALAXY_URL)) | |
32 fout.write("3. The hub url has a typo.\n") | |
50 | 33 fout.close() |
34 sys.exit(1) | |
35 | |
36 except: | |
52 | 37 fout.write("There is an error\n\n") |
43 | 38 fout.write("You entered hub: %s\n" % (url)) |
52 | 39 fout.write("Possible causes for error:\n") |
40 fout.write("1. The hub is not running.\n") | |
41 fout.write("2. The hub is not accessible to this galaxy instance at: %s.\n" %(GALAXY_URL)) | |
42 fout.write("3. The hub url has a typo.\n") | |
43 | 43 fout.close() |
44 sys.exit(1) | |
42
bc9784300015
more reliable, error handling
jingchunzhu <jingchunzhu@gmail.com>
parents:
41
diff
changeset
|
45 |
50 | 46 samples = xena.dataset_samples (contactUrl, dataset) |
47 if not samples: | |
52 | 48 fout.write("There is an error\n\n") |
50 | 49 fout.write("You entered dataset id: %s\n" % (dataset)) |
52 | 50 fout.write("Possible causes for error:\n") |
51 fout.write("1. Dataset does not exist.\n") | |
50 | 52 fout.close() |
53 sys.exit(1) | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
54 |
50 | 55 type = xena.dataset_type(contactUrl, dataset) |
56 if type[0] not in ["genomicMatrix", "clinicalMatrix"]: | |
52 | 57 fout.write("There is an error\n\n") |
58 fout.write("You entered dataset id: %s\n" % (dataset)) | |
59 fout.write("It's datatype=%s\n" % (type[0])) | |
60 fout.write("This type of data is not supported yet.\n") | |
50 | 61 fout.close() |
62 sys.exit(1) | |
63 | |
64 writer = csv.writer(fout, delimiter='\t') | |
65 writer.writerow(["sample"]+samples) | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
66 |
50 | 67 probes = xena.dataset_field(contactUrl, dataset) |
68 start=0 | |
69 size =100 | |
70 N= len(probes) | |
71 for i in range (start, N,size): | |
72 results = xena.dataset_probe_values (contactUrl, dataset, samples, probes[i:i+size]) | |
73 print ".", | |
74 for j in range (0, size): | |
75 if i+j == N: | |
76 break | |
77 writer.writerow([probes[i+j]]+results[j]) | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
78 |
50 | 79 fout.close() |
80 sys.exit(0) | |
41
02b0824c7d60
Download data from any hub in the federated xena platform
jingchunzhu <jingchunzhu@gmail.com>
parents:
diff
changeset
|
81 |
50 | 82 if __name__ == "__main__": |
83 main() | |
84 |