-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathget_ab_dists.py
104 lines (93 loc) · 11.1 KB
/
get_ab_dists.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
import sys
import urllib
import cgi
import cgitb
import cPickle
import re
AB_SERVER_URL = 'http://www.bioinf.org.uk/abysis/searches/distributions/aaFrequencyPanel.cgi'
AB_ORGANISMS = {'homo_sapiens': '30', 'mus_musculus': '34', 'gallus_gallus': '81', 'all_species': 'not_selected'}
AB_NUMBERS = AB_NUMBERS = {'Kabat': {'H1': '593', 'H10': '606', 'H100': '716', 'H100A': '717', 'H100B': '718', 'H100C': '719', 'H100D': '720', 'H100E': '721', 'H100F': '722', 'H100G': '723', 'H100H': '724', 'H100I': '725',
'H100J': '726', 'H100K': '727', 'H100L': '728', 'H100M': '729', 'H100N': '730', 'H100O': '731', 'H100P': '732', 'H100Q': '733', 'H100R': '734', 'H100S': '735', 'H100T': '736',
'H101': '737', 'H102': '738', 'H103': '739', 'H104': '740', 'H105': '741', 'H106': '742', 'H107': '743', 'H108': '744', 'H109': '745', 'H11': '607', 'H110': '746', 'H111': '747',
'H112': '748', 'H113': '749', 'H114': '750', 'H12': '608', 'H13': '609', 'H14': '610', 'H15': '611', 'H16': '612', 'H17': '613', 'H18': '614', 'H19': '615', 'H2': '594',
'H20': '616', 'H21': '617', 'H22': '618', 'H23': '619', 'H24': '620', 'H25': '621', 'H26': '622', 'H27': '623', 'H28': '624', 'H29': '625', 'H3': '595', 'H30': '626',
'H31': '627', 'H32': '628', 'H33': '629', 'H34': '630', 'H35': '631', 'H35A': '632', 'H35B': '633', 'H35C': '634', 'H35D': '635', 'H35E': '636', 'H35F': '637', 'H35G': '638',
'H35H': '639', 'H36': '640', 'H37': '641', 'H38': '642', 'H39': '643', 'H4': '596', 'H40': '644', 'H41': '645', 'H42': '646', 'H43': '647', 'H44': '648', 'H45': '649', 'H46': '650',
'H47': '651', 'H48': '652', 'H49': '653', 'H5': '597', 'H50': '654', 'H51': '655', 'H52': '656', 'H52A': '657', 'H52B': '658', 'H52C': '659', 'H52D': '660', 'H52E': '661', 'H52F': '662',
'H52G': '663', 'H53': '664', 'H54': '665', 'H55': '666', 'H56': '667', 'H57': '668', 'H58': '669', 'H59': '670', 'H6': '598', 'H60': '671', 'H61': '672', 'H62': '673',
'H63': '674', 'H64': '675', 'H65': '676', 'H66': '677', 'H67': '678', 'H68': '679', 'H69': '680', 'H6A': '599', 'H6B': '600', 'H6C': '601', 'H6D': '602', 'H7': '603',
'H70': '681', 'H71': '682', 'H72': '683', 'H73': '684', 'H74': '685', 'H75': '686', 'H76': '687', 'H77': '688', 'H78': '689', 'H79': '690', 'H8': '604', 'H80': '691',
'H81': '692', 'H82': '693', 'H82A': '694', 'H82B': '695', 'H82C': '696', 'H82D': '697', 'H82E': '698', 'H83': '699', 'H84': '700', 'H85': '701', 'H86': '702', 'H87': '703',
'H88': '704', 'H89': '705', 'H9': '605', 'H90': '706', 'H91': '707', 'H92': '708', 'H93': '709', 'H94': '710', 'H95': '711', 'H96': '712', 'H97': '713', 'H98': '714', 'H99': '715',
'L1': '751', 'L10': '760', 'L100': '876', 'L101': '877', 'L102': '878', 'L103': '879', 'L104': '880', 'L105': '881', 'L106': '882', 'L106A': '883',
'L107': '884', 'L108': '885', 'L109': '886', 'L11': '761', 'L110': '887', 'L111': '888', 'L12': '762', 'L13': '763', 'L14': '764', 'L15': '765',
'L16': '766', 'L17': '767', 'L18': '768', 'L19': '769', 'L2': '752', 'L20': '770', 'L21': '771', 'L22': '772', 'L23': '773', 'L24': '774', 'L25': '775',
'L26': '776', 'L27': '777', 'L27A': '778', 'L27B': '779', 'L27C': '780', 'L27D': '781', 'L27E': '782', 'L27F': '783', 'L28': '784', 'L29': '785',
'L3': '753', 'L30': '786', 'L31': '787', 'L32': '788', 'L33': '789', 'L34': '790', 'L35': '791', 'L36': '792', 'L37': '793', 'L38': '794', 'L39': '795',
'L39A': '796', 'L4': '754', 'L40': '797', 'L41': '798', 'L42': '799', 'L43': '800', 'L44': '801', 'L45': '802', 'L46': '803', 'L47': '804', 'L48': '805',
'L49': '806', 'L5': '755', 'L50': '807', 'L51': '808', 'L52': '809', 'L53': '810','L54': '811', 'L54A': '812', 'L54B': '813', 'L54C': '814', 'L54D': '815',
'L54E': '816', 'L55': '817', 'L56': '818', 'L57': '819', 'L58': '820', 'L59': '821', 'L6': '756', 'L60': '822', 'L61': '823', 'L62': '824', 'L63': '825',
'L64': '826', 'L65': '827', 'L66': '828', 'L66A': '829', 'L66B': '830', 'L66C': '831', 'L66D': '832', 'L66E': '833', 'L66F': '834', 'L66G': '835',
'L66H': '836', 'L67': '837', 'L68': '838', 'L69': '839', 'L7': '757', 'L70': '840', 'L71': '841', 'L72': '842', 'L73': '843', 'L74': '844', 'L75': '845',
'L76': '846', 'L77': '847', 'L78': '848', 'L79': '849', 'L8': '758', 'L80': '850', 'L81': '851', 'L82': '852', 'L83': '853', 'L84': '854', 'L85': '855',
'L86': '856', 'L87': '857', 'L88': '858', 'L89': '859', 'L9': '759', 'L90': '860', 'L91': '861', 'L92': '862', 'L93': '863', 'L94': '864', 'L95': '865',
'L95A': '866', 'L95B': '867', 'L95C': '868', 'L95D': '869', 'L95E': '870', 'L95F': '871', 'L96': '872', 'L97': '873', 'L98': '874', 'L99': '875'},
'Chothia': {'H1': '1', 'H10': '14', 'H100': '124', 'H100A': '125', 'H100B': '126', 'H100C': '127', 'H100D': '128', 'H100E': '129', 'H100F': '130', 'H100G': '131', 'H100H': '132', 'H100I': '133', 'H100J': '134', 'H100K': '135', 'H100L': '136', 'H100M': '137', 'H100N': '138', 'H100O': '139', 'H100P': '140',
'H100Q': '141', 'H100R': '142', 'H100S': '143', 'H100T': '144', 'H101': '145', 'H102': '146', 'H103': '147', 'H104': '148', 'H105': '149', 'H106': '150', 'H107': '151',
'H108': '152', 'H109': '153', 'H11': '15', 'H110': '154', 'H111': '155', 'H112': '156', 'H113': '157', 'H114': '158', 'H12': '16', 'H13': '17', 'H14': '18', 'H15': '19',
'H16': '20', 'H17': '21', 'H18': '22', 'H19': '23', 'H2': '2', 'H20': '24', 'H21': '25', 'H22': '26', 'H23': '27', 'H24': '28', 'H25': '29', 'H26': '30', 'H27': '31',
'H28': '32', 'H29': '33', 'H3': '3', 'H30': '34','H31': '35', 'H31A': '36', 'H31B': '37', 'H31C': '38', 'H31D': '39', 'H31E': '40', 'H31F': '41', 'H31G': '42', 'H31H': '43',
'H32': '44', 'H33': '45', 'H34': '46', 'H35': '47', 'H36': '48', 'H37': '49', 'H38': '50', 'H39': '51', 'H4': '4', 'H40': '52', 'H41': '53', 'H42': '54', 'H43': '55', 'H44': '56',
'H45': '57', 'H46': '58', 'H47': '59', 'H48': '60', 'H49': '61', 'H5': '5', 'H50': '62', 'H51': '63', 'H52': '64', 'H52A': '65', 'H52B': '66', 'H52C': '67', 'H52D': '68',
'H52E': '69', 'H52F': '70', 'H52G': '71', 'H53': '72', 'H54': '73', 'H55': '74', 'H56': '75', 'H57': '76', 'H58': '77', 'H59': '78', 'H6': '6', 'H60': '79', 'H61': '80', 'H62': '81',
'H63': '82', 'H64': '83', 'H65': '84', 'H66': '85', 'H67': '86', 'H68': '87', 'H69': '88', 'H6A': '7', 'H6B': '8', 'H6C': '9', 'H6D': '10', 'H7': '11', 'H70': '89', 'H71': '90',
'H72': '91', 'H73': '92', 'H74': '93', 'H75': '94', 'H76': '95', 'H77': '96', 'H78': '97', 'H79': '98', 'H8': '12', 'H80': '99', 'H81': '100', 'H82': '101',
'H82A': '102', 'H82B': '103', 'H82C': '104', 'H82D': '105', 'H82E': '106', 'H83': '107', 'H84': '108', 'H85': '109', 'H86': '110', 'H87': '111', 'H88': '112',
'H89': '113', 'H9': '13', 'H90': '114', 'H91': '115', 'H92': '116', 'H93': '117', 'H94': '118', 'H95': '119', 'H96': '120', 'H97': '121', 'H98': '122', 'H99': '123',
'L1': '159', 'L10': '168', 'L100': '284', 'L101': '285', 'L102': '286', 'L103': '287', 'L104': '288',
'L105': '289', 'L106': '290', 'L106A': '291', 'L107': '292', 'L108': '293', 'L109': '294', 'L11': '169', 'L110': '295', 'L111': '296',
'L12': '170', 'L13': '171', 'L14': '172', 'L15': '173', 'L16': '174', 'L17': '175', 'L18': '176', 'L19': '177', 'L2': '160', 'L20': '178',
'L21': '179', 'L22': '180', 'L23': '181', 'L24': '182', 'L25': '183', 'L26': '184', 'L27': '185', 'L28': '186', 'L29': '187', 'L3': '161','L30': '188',
'L30A': '189', 'L30B': '190', 'L30C': '191', 'L30D': '192', 'L30E': '193', 'L30F': '194', 'L31': '195', 'L32': '196', 'L33': '197', 'L34': '198', 'L35': '199',
'L36': '200', 'L37': '201', 'L38': '202', 'L39': '203', 'L39A': '204', 'L4': '162', 'L40': '205', 'L41': '206', 'L42': '207', 'L43': '208',
'L44': '209', 'L45': '210', 'L46': '211', 'L47': '212', 'L48': '213', 'L49': '214', 'L5': '163', 'L50': '215', 'L51': '216', 'L52': '217',
'L53': '218', 'L54': '219', 'L54A': '220', 'L54B': '221', 'L54C': '222', 'L54D': '223', 'L54E': '224', 'L55': '225', 'L56': '226', 'L57': '227',
'L58': '228', 'L59': '229', 'L6': '164', 'L60': '230', 'L61': '231', 'L62': '232', 'L63': '233', 'L64': '234', 'L65': '235', 'L66': '236',
'L66A': '237', 'L66B': '238', 'L66C': '239', 'L66D': '240', 'L66E': '241', 'L66F': '242', 'L66G': '243', 'L66H': '244', 'L67': '245', 'L68': '246',
'L69': '247', 'L7': '165', 'L70': '248', 'L71': '249', 'L72': '250', 'L73': '251', 'L74': '252', 'L75': '253', 'L76': '254','L77': '255',
'L78': '256', 'L79': '257', 'L8': '166', 'L80': '258', 'L81': '259', 'L82': '260', 'L83': '261', 'L84': '262', 'L85': '263', 'L86': '264',
'L87': '265', 'L88': '266', 'L89': '267', 'L9': '167', 'L90': '268', 'L91': '269', 'L92': '270', 'L93': '271', 'L94': '272', 'L95': '273',
'L95A': '274', 'L95B': '275', 'L95C': '276', 'L95D': '277', 'L95E': '278', 'L95F': '279', 'L96': '280', 'L97': '281', 'L98': '282', 'L99': '283'}
}
################################################################################
def calc_aa_dist(f):
txt = f.read().split('\n')
total = 0
dist = {}
for l in txt:
aa = re.findall('<tr><td >([A-Z])</td>', l)
count = re.findall('<td >([0-9]*)</td>', l)
if(aa != []):
dist[aa[0]] = int(count[0])
total += int(count[0])
dist = dict([(aa, dist[aa]/float(total)) for aa in dist])
return dist
################################################################################
if __name__ == '__main__':
if(len(sys.argv) < 2):
print 'Usage: python get_ab_dists.py <output file>'
sys.exit(1)
distributions = {}
for organism in AB_ORGANISMS:
for numbering in AB_NUMBERS:
distributions[(organism, numbering)] = {}
for position in AB_NUMBERS[numbering]:
params = {}
params['s'] = AB_NUMBERS[numbering][position]
params['o'] = AB_ORGANISMS[organism]
params = urllib.urlencode(params)
f = urllib.urlopen(AB_SERVER_URL, params)
aaDist = calc_aa_dist(f)
distributions[(organism, numbering)][position] = aaDist
of = open(sys.argv[1], 'wb')
cPickle.dump(distributions, of, -1)