annotate galaxy-tools/biobank/tools/enrollments_by_platewells.py @ 4:f833f23d38a3 draft

Deleted selected files
author ric
date Thu, 22 Sep 2016 09:28:03 -0400
parents 43be74e62bfe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
43be74e62bfe Uploaded
ric
parents:
diff changeset
1 """
43be74e62bfe Uploaded
ric
parents:
diff changeset
2 From a list of platewells retrieves the enrollments code of the connected individual
43be74e62bfe Uploaded
ric
parents:
diff changeset
3 """
43be74e62bfe Uploaded
ric
parents:
diff changeset
4 import argparse
43be74e62bfe Uploaded
ric
parents:
diff changeset
5 import csv
43be74e62bfe Uploaded
ric
parents:
diff changeset
6 import sys
43be74e62bfe Uploaded
ric
parents:
diff changeset
7
43be74e62bfe Uploaded
ric
parents:
diff changeset
8 from bl.vl.kb import KnowledgeBase as KB
43be74e62bfe Uploaded
ric
parents:
diff changeset
9 import bl.vl.utils.ome_utils as vlu
43be74e62bfe Uploaded
ric
parents:
diff changeset
10 from bl.vl.utils import LOG_LEVELS, get_logger
43be74e62bfe Uploaded
ric
parents:
diff changeset
11
43be74e62bfe Uploaded
ric
parents:
diff changeset
12 def make_parser():
43be74e62bfe Uploaded
ric
parents:
diff changeset
13 parser = argparse.ArgumentParser(description='From platewells 2 enrollments code')
43be74e62bfe Uploaded
ric
parents:
diff changeset
14 parser.add_argument('--logfile', type=str, help='log file (default=stderr)')
43be74e62bfe Uploaded
ric
parents:
diff changeset
15 parser.add_argument('--loglevel', type=str, choices = LOG_LEVELS,
43be74e62bfe Uploaded
ric
parents:
diff changeset
16 help='logging level', default='INFO')
43be74e62bfe Uploaded
ric
parents:
diff changeset
17 parser.add_argument('-H', '--host', type=str, help='omero hostname')
43be74e62bfe Uploaded
ric
parents:
diff changeset
18 parser.add_argument('-U', '--user', type=str, help='omero user')
43be74e62bfe Uploaded
ric
parents:
diff changeset
19 parser.add_argument('-P', '--passwd', type=str, help='omero password')
43be74e62bfe Uploaded
ric
parents:
diff changeset
20 parser.add_argument('-S', '--study', type=str, required=True,
43be74e62bfe Uploaded
ric
parents:
diff changeset
21 help='a study used to retrieve individuals')
43be74e62bfe Uploaded
ric
parents:
diff changeset
22 parser.add_argument('--ifile', type=str, required=True,
43be74e62bfe Uploaded
ric
parents:
diff changeset
23 help='list of platewells used to fetch data')
43be74e62bfe Uploaded
ric
parents:
diff changeset
24 parser.add_argument('--ofile', type=str, help='output file path',
43be74e62bfe Uploaded
ric
parents:
diff changeset
25 required=True)
43be74e62bfe Uploaded
ric
parents:
diff changeset
26 return parser
43be74e62bfe Uploaded
ric
parents:
diff changeset
27
43be74e62bfe Uploaded
ric
parents:
diff changeset
28
43be74e62bfe Uploaded
ric
parents:
diff changeset
29 def main(argv):
43be74e62bfe Uploaded
ric
parents:
diff changeset
30 parser = make_parser()
43be74e62bfe Uploaded
ric
parents:
diff changeset
31 args = parser.parse_args(argv)
43be74e62bfe Uploaded
ric
parents:
diff changeset
32
43be74e62bfe Uploaded
ric
parents:
diff changeset
33 logger = get_logger('pws2enrolls', level=args.loglevel,
43be74e62bfe Uploaded
ric
parents:
diff changeset
34 filename=args.logfile)
43be74e62bfe Uploaded
ric
parents:
diff changeset
35 try:
43be74e62bfe Uploaded
ric
parents:
diff changeset
36 host = args.host or vlu.ome_host()
43be74e62bfe Uploaded
ric
parents:
diff changeset
37 user = args.user or vlu.ome_user()
43be74e62bfe Uploaded
ric
parents:
diff changeset
38 passwd = args.passwd or vlu.ome_passwd()
43be74e62bfe Uploaded
ric
parents:
diff changeset
39 except ValueError, ve:
43be74e62bfe Uploaded
ric
parents:
diff changeset
40 logger.critical(ve)
43be74e62bfe Uploaded
ric
parents:
diff changeset
41 sys.exit(ve)
43be74e62bfe Uploaded
ric
parents:
diff changeset
42
43be74e62bfe Uploaded
ric
parents:
diff changeset
43 kb = KB(driver='omero')(host, user, passwd)
43be74e62bfe Uploaded
ric
parents:
diff changeset
44 study = kb.get_study(args.study)
43be74e62bfe Uploaded
ric
parents:
diff changeset
45 enrolled_map = {e.individual.id:e for e in kb.get_enrolled(study)}
43be74e62bfe Uploaded
ric
parents:
diff changeset
46 logger.info('Loaded {} enrolled individuals for study {}'.format(len(enrolled_map), study.label))
43be74e62bfe Uploaded
ric
parents:
diff changeset
47 plates = kb.get_objects(kb.TiterPlate)
43be74e62bfe Uploaded
ric
parents:
diff changeset
48 logger.info('Loaded {} plates'.format(len(plates)))
43be74e62bfe Uploaded
ric
parents:
diff changeset
49 pws_map = {':'.join([w.container.barcode, w.label]):w for w in kb.get_objects(kb.PlateWell)
43be74e62bfe Uploaded
ric
parents:
diff changeset
50 if w.container.barcode}
43be74e62bfe Uploaded
ric
parents:
diff changeset
51 logger.info('Loaded {} platewells'.format(len(pws_map)))
43be74e62bfe Uploaded
ric
parents:
diff changeset
52 #records = []
43be74e62bfe Uploaded
ric
parents:
diff changeset
53 of=open(args.ofile, 'w')
43be74e62bfe Uploaded
ric
parents:
diff changeset
54 writer=csv.DictWriter(of, ['platewell', 'status', 'enrollment'],
43be74e62bfe Uploaded
ric
parents:
diff changeset
55 delimiter='\t', quotechar='"', restval='None')
43be74e62bfe Uploaded
ric
parents:
diff changeset
56 writer.writeheader()
43be74e62bfe Uploaded
ric
parents:
diff changeset
57 with open(args.ifile, 'r') as f:
43be74e62bfe Uploaded
ric
parents:
diff changeset
58 reader=csv.DictReader(f, delimiter='\t')
43be74e62bfe Uploaded
ric
parents:
diff changeset
59 logger.info('Searching individuals connected to the platewells')
43be74e62bfe Uploaded
ric
parents:
diff changeset
60 for r in reader:
43be74e62bfe Uploaded
ric
parents:
diff changeset
61 ind=kb.dt.get_connected(pws_map[r['platewell']], aklass = kb.Individual,
43be74e62bfe Uploaded
ric
parents:
diff changeset
62 direction = kb.dt.DIRECTION_INCOMING)
43be74e62bfe Uploaded
ric
parents:
diff changeset
63 try:
43be74e62bfe Uploaded
ric
parents:
diff changeset
64 record = {'platewell': r['platewell'],
43be74e62bfe Uploaded
ric
parents:
diff changeset
65 'status': pws_map[r['platewell']].status.enum_label(),
43be74e62bfe Uploaded
ric
parents:
diff changeset
66 'enrollment': ':'.join([study.label,enrolled_map[ind[0].id].studyCode])}
43be74e62bfe Uploaded
ric
parents:
diff changeset
67 except KeyError as e:
43be74e62bfe Uploaded
ric
parents:
diff changeset
68 logger.warning('not enrolled {}'.format(r['platewell']))
43be74e62bfe Uploaded
ric
parents:
diff changeset
69 record = {'platewell': r['platewell'],
43be74e62bfe Uploaded
ric
parents:
diff changeset
70 'status': pws_map[r['platewell']].status.enum_label(),
43be74e62bfe Uploaded
ric
parents:
diff changeset
71 'enrollment': ':'.join([study.label,'not_enrolled'])}
43be74e62bfe Uploaded
ric
parents:
diff changeset
72 writer.writerow(record)
43be74e62bfe Uploaded
ric
parents:
diff changeset
73 of.close()
43be74e62bfe Uploaded
ric
parents:
diff changeset
74
43be74e62bfe Uploaded
ric
parents:
diff changeset
75
43be74e62bfe Uploaded
ric
parents:
diff changeset
76 if __name__ == "__main__":
43be74e62bfe Uploaded
ric
parents:
diff changeset
77 main(sys.argv[1:])