# HG changeset patch # User ric # Date 1474551000 14400 # Node ID 8d405ac8a8372dc13da3e36ef12c1fba3391c70f # Parent 1fcf2875d39da19b72cb2ba0ba3c982aaf7a0b39 Deleted selected files diff -r 1fcf2875d39d -r 8d405ac8a837 galaxy-tools/biobank/updater/update_titerplates.py --- a/galaxy-tools/biobank/updater/update_titerplates.py Thu Sep 22 09:29:21 2016 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -''' -From a file like this -label barcode container_status rows columns -A_TITERPLATE XXYYZZ111 INSTOCK 8 12 -B_TITERPLATE XXYYZZ112 INSTOCK 8 12 -C_TITERPLATE XXYYZZ113 READY 8 12 - -updates barcode, status and geography of given titerplates -''' -import sys, csv, argparse - -from bl.vl.kb import KnowledgeBase as KB -import bl.vl.utils.ome_utils as vlu -from bl.vl.utils import get_logger, LOG_LEVELS -from bl.vl.kb.drivers.omero.objects_collections import ContainerStatus - - -def make_parser(): - parser = argparse.ArgumentParser(description='update titerplates') - parser.add_argument('--logfile', type=str, help='log file (default=stderr)') - parser.add_argument('--loglevel', type=str, choices=LOG_LEVELS, - help='logging level (default=INFO)', default='INFO') - parser.add_argument('-H', '--host', type=str, help='omero hostname') - parser.add_argument('-U', '--user', type=str, help='omero user') - parser.add_argument('-P', '--passwd', type=str, help='omero password') - parser.add_argument('-O', '--operator', type=str, help='operator', - required=True) - parser.add_argument('-i', '--in_file', type=str, required=True, - help='input file with information to update') - parser.add_argument('--overwrite', dest='overwrite', action='store_true', - help='enable overwrite of data. Default is disabled ') - parser.set_defaults(overwrite=False) - return parser - - -def update_titerplates(titerplate, barcode, container_status, rows, columns, - overwrite, logger): - logger.info("Updating {}".format(titerplate.label)) - r = False - if overwrite: - if barcode is not None: - titerplate.barcode = barcode - if container_status is not None: - titerplate.status = getattr(ContainerStatus, container_status) - if rows is not None: - titerplate.rows = rows - if columns is not None: - titerplate.columns = columns - r = True - else: - if titerplate.barcode is None and barcode is not None: - titerplate.barcode = barcode - r = True - if titerplate.status is None and container_status is not None: - titerplate.status = getattr(ContainerStatus, container_status) - r = True - if titerplate.rows is None and rows is not None: - titerplate.rows = rows - r = True - if titerplate.columns is None and columns is not None: - titerplate.columns = columns - r = True - - if r: - return titerplate - else: - logger.info('Update denied for titerplate {}'.format( - titerplate.label)) - return None - - -def main(argv): - parser = make_parser() - args = parser.parse_args(argv) - - logger = get_logger('update_titerplates', level=args.loglevel, - filename=args.logfile) - - try: - host = args.host or vlu.ome_host() - user = args.user or vlu.ome_user() - passwd = args.passwd or vlu.ome_passwd() - except ValueError, ve: - logger.critical(ve) - sys.exit(ve) - - kb = KB(driver='omero')(host, user, passwd) - - with open(args.in_file) as in_file: - to_be_updated = [] - reader = csv.DictReader(in_file, delimiter='\t') - barcode = None - container_status = None - rows = None - columns = None - if 'label' in reader.fieldnames: - for row in reader: - tp_label = row['label'] - tp = kb.get_by_label(kb.TiterPlate, tp_label) - if tp != None: - if 'barcode' in reader.fieldnames: - barcode = row['barcode'] - if 'container_status' in reader.fieldnames: - container_status = row['container_status'] - if 'rows' in reader.fieldnames: - rows = row['rows'] - if 'columns' in reader.fieldnames: - columns = row['columns'] - - tp_up = update_titerplates(tp, barcode, - container_status,rows, - columns, args.overwrite, - logger) - if tp_up: - to_be_updated.append(tp_up) - else: - msg = 'Missing required field "label"' - logger.critical(msg) - sys.exit(msg) - - logger.info('%d titerplates are going to be updated' % len(to_be_updated)) - kb.save_array(to_be_updated) - logger.info('Update complete') - -if __name__ == '__main__': - main(sys.argv[1:]) diff -r 1fcf2875d39d -r 8d405ac8a837 galaxy-tools/biobank/updater/update_titerplates.xml --- a/galaxy-tools/biobank/updater/update_titerplates.xml Thu Sep 22 09:29:21 2016 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ - - - Update titerplates infodata - - - #if $__app__.config.vl_import_enabled_users.split(',').count($__user_email__)==1 #update_titerplates.py - #else #unauthorized_access.py - #end if - #if $advanced_configuration.configuration_level == 'advanced' - --host=${advanced_configuration.vl_host} - --user=${advanced_configuration.vl_user} - --passwd=${advanced_configuration.vl_passwd} - #end if - --in_file=${input1} - --operator=$__user_email__ - --loglevel=$__app__.config.vl_loglevel - --logfile=${logfile} - - - - - - - - - - - - - - - - - - - - - - - -It will update titerplates data using informations from a file like this:: - - label barcode container_status rows columns - A_TP 55555555 DISCARDED 8 12 - B_TP 66666666 DISCARDED 8 12 - - -The first column is mandatory, the others only for the information that you want to update. - -For example, if you want to update a barcode data only that column is required - - - - -