12
12
from functools import lru_cache
13
13
import re
14
14
import requests
15
- import xml .etree . ElementTree
15
+ from xml .etree import ElementTree
16
16
17
17
from bioluigi .tasks .utils import DynamicTaskWithOutputMixin , DynamicWrapperTask , TaskWithMetadataMixin
18
18
import luigi
@@ -37,7 +37,7 @@ def retrieve_geo_platform_miniml(geo_platform):
37
37
"""Retrieve a GEO platform MINiML metadata"""
38
38
res = requests .get ('https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi' , params = dict (acc = geo_platform , form = 'xml' ))
39
39
res .raise_for_status ()
40
- return xml . etree . ElementTree .fromstring (res .text ).find ('miniml:Platform' , ns )
40
+ return ElementTree .fromstring (res .text ).find ('miniml:Platform' , ns )
41
41
42
42
def match_geo_platform (geo_platform ):
43
43
"""Infer the type of platform given a GEO platform"""
@@ -73,6 +73,10 @@ def run(self):
73
73
logger .info ('%s is stale, redownloading...' , self .output ())
74
74
res = requests .get ('https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi' , params = dict (acc = self .gsm , form = 'xml' ))
75
75
res .raise_for_status ()
76
+ try :
77
+ ElementTree .fromstring (res .text )
78
+ except ElementTree .ParseError as e :
79
+ raise Exception ('Failed to parse XML from GEO sample metadata of ' + self .gsm ) from e
76
80
with self .output ().open ('w' ) as f :
77
81
f .write (res .text )
78
82
@@ -125,6 +129,10 @@ def run(self):
125
129
logger .info ('%s is stale, redownloading...' , self .output ())
126
130
res = requests .get ('https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi' , params = dict (acc = self .gse , form = 'xml' , targ = 'gsm' ))
127
131
res .raise_for_status ()
132
+ try :
133
+ ElementTree .fromstring (res .text )
134
+ except ElementTree .ParseError as e :
135
+ raise Exception ('Failed to parse XML from GEO series metadata of ' + self .gse ) from e
128
136
with self .output ().open ('w' ) as f :
129
137
f .write (res .text )
130
138
0 commit comments