From 5f840e3fee7929cbc85e2fd0bfe962f6bd460ed5 Mon Sep 17 00:00:00 2001
From: Martijn Vermaat <martijn@vermaat.name>
Date: Thu, 16 Feb 2012 13:07:49 +0000
Subject: [PATCH] Entrez dbSNP api suddenly returns other XML structure

git-svn-id: https://humgenprojects.lumc.nl/svn/mutalyzer/trunk@478 eb6bd6ab-9ccd-42b9-aceb-e2899b4a52f1
---
 mutalyzer/Retriever.py | 33 +++++++++------------------------
 1 file changed, 9 insertions(+), 24 deletions(-)

diff --git a/mutalyzer/Retriever.py b/mutalyzer/Retriever.py
index 8ce25d43..3124c8f3 100644
--- a/mutalyzer/Retriever.py
+++ b/mutalyzer/Retriever.py
@@ -278,11 +278,17 @@ class Retriever(object) :
 
         response_text = response.read()
 
+        if response_text == '\n':
+            # This is apparently what dbSNP returns for non-existing dbSNP id
+            self._output.addMessage(__file__, 4, 'EENTREZ',
+                                    'ID rs%s could not be found in dbSNP.' \
+                                    % id)
+            return []
+
         try:
             # Parse the output.
             doc = minidom.parseString(response_text)
-            exchange_set = doc.getElementsByTagName('ExchangeSet')
-            rs = exchange_set[0].getElementsByTagName('Rs')
+            rs = doc.getElementsByTagName('Rs')[0]
         except expat.ExpatError as e:
             # Could not parse XML.
             self._output.addMessage(__file__, 4, 'EENTREZ', 'Unknown dbSNP ' \
@@ -300,29 +306,8 @@ class Retriever(object) :
                                     'Result from dbSNP: %s' % response_text)
             return []
 
-        if len(rs) < 1:
-            # No Rs result element.
-            text = []
-            for node in exchange_set[0].childNodes:
-                if node.nodeType == node.TEXT_NODE:
-                    text.append(node.data)
-            message = ''.join(text)
-            if message.find('cannot get document summary') != -1:
-                # Entrez does not have this rs ID.
-                self._output.addMessage(__file__, 4, 'EENTREZ',
-                                        'ID rs%s could not be found in dbSNP.' \
-                                        % id)
-            else:
-                # Something else was wrong (print {message} to see more).
-                self._output.addMessage(__file__, 4, 'EENTREZ',
-                                        'Unkown dbSNP error. Got no result ' \
-                                        'from dbSNP.')
-                self._output.addMessage(__file__, -1, 'INFO',
-                                        'Message from dbSNP: %s' % message)
-            return []
-
         snps = []
-        for i in rs[0].getElementsByTagName('hgvs'):
+        for i in rs.getElementsByTagName('hgvs'):
             snps.append(i.lastChild.data.encode('utf8'))
 
         return snps
-- 
GitLab