Mercurial > repos > earlhaminst > ensembl_get_feature_info
annotate get_feature_info.py @ 8:37cdb55f5258 draft default tip
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
author | earlhaminst |
---|---|
date | Mon, 17 Feb 2025 14:49:19 +0000 |
parents | d6bb417dc831 |
children |
rev | line source |
---|---|
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
1 # A simple tool to connect to the Ensembl server and retrieve feature |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
2 # information using the Ensembl REST API. |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
3 import json |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
4 import optparse |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
5 from itertools import islice |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
6 from urllib.parse import urljoin |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
7 |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
8 import requests |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
9 |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
10 parser = optparse.OptionParser() |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
11 parser.add_option("-i", "--input", help="List of Ensembl IDs") |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
12 parser.add_option( |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
13 "-e", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
14 "--expand", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
15 type="choice", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
16 choices=["0", "1"], |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
17 default="0", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
18 help="Expands the search to include any connected features. e.g. If the object is a gene, its transcripts, translations and exons will be returned as well.", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
19 ) |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
20 |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
21 parser.add_option( |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
22 "-f", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
23 "--format", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
24 type="choice", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
25 choices=["full", "condensed"], |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
26 default="full", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
27 help="Specify the formats to emit from this endpoint", |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
28 ) |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
29 options, args = parser.parse_args() |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
30 if options.input is None: |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
31 raise Exception("-i option must be specified") |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
32 |
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
33 |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
34 server = "https://rest.ensembl.org" |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
35 ext = "lookup/id" |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
36 |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
37 headers = {"Content-Type": "application/json", "Accept": "application/json"} |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
38 params = {k: getattr(options, k) for k in ("format", "expand")} |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
39 |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
40 first = True |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
41 |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
42 print("{") |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
43 |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
44 with open(options.input) as f: |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
45 while True: |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
46 ids = [line.strip() for line in islice(f, 50)] |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
47 if not ids: |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
48 break |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
49 if not first: |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
50 print(",") |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
51 data = {"ids": ids} |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
52 r = requests.post( |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
53 urljoin(server, ext), |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
54 params=params, |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
55 headers=headers, |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
56 data=json.dumps(data), |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
57 allow_redirects=False, |
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
58 ) |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
59 |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
60 if not r.ok: |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
61 r.raise_for_status() |
1
396f0f54d115
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit aaf8d501c3a92ed415fdf9293a65468c72aae984-dirty
earlhaminst
parents:
diff
changeset
|
62 |
5
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
63 print(r.text[1:-1]) |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
64 |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
65 first = False |
234d7babf34b
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 95bab1105cf8a7b07c668f08f712399e8775a4ae
earlhaminst
parents:
2
diff
changeset
|
66 |
8
37cdb55f5258
planemo upload for repository https://github.com/TGAC/earlham-galaxytools/tree/master/tools/Ensembl-REST commit 8f8808de862973aedbf87abd4dfa9d2dc7219322
earlhaminst
parents:
7
diff
changeset
|
67 print("}") |