## ~!/usr/bin/env python3 from urllib import request import sys import re def ParseRST(result): p = re.compile('.*AC:\s+(.*?)#') m = p.match(result) ac = m.group(1) q = re.compile('.*UPCOUNT:\s+(.*?)#') n = q.match(result) upresnum = int(n.group(1)) return(ac, upresnum) def ReadPDBSWS(pdbcode, chain, resnum): url = 'http://www.bioinf.org.uk/servers/pdbsws/query.cgi?plain=1&qtype=pdb' url += '&id=' + pdbcode if ('&chain' != ''): url += '&chain=' + chain url += '&res=' + str(resnum) result = request.urlopen(url).read() result = str(result, encoding='utf-8') result = result.replace('\n', '#') if (result != ''): rst = ParseRST(result) return(rst) else: sys.stderr.write('Nothing was returned\n') return('') ## Main program ## pdbcode = input('Enter the pdbcode: ') chain = input('Enter the chain label (optional): ') resnum = input('Enter the residue number: ') (ac, upresnum) = ReadPDBSWS(pdbcode, chain, resnum) print('Accession: ' + ac) print('UniProt Resnum: ' + str(upresnum))