def worker(in_list, **kwargs): """ Still need to work on handling of cases that did not extract correctly """ filepath = in_list[0] case_tube_idx = in_list[1] fFCS = FCS(filepath=filepath, case_tube_idx=case_tube_idx, import_dataframe=True) try: fFCS.comp_scale_FCS_data(compensation_file=comp_file, gate_coords=gate_coords, strict=False, auto_comp=False, **kwargs) fFCS.extract_FCS_histostats() fFCS.clear_FCS_cache() except: fFCS.flag = 'stats_extraction_fail' fFCS.error_message = str(sys.exc_info()[0]) return fFCS
def action(args): # Connect to database log.info("Loading database input %s" % args.db) db = FCSdatabase(db=args.db, rebuild=False) # Copy database to out database shutil.copyfile(args.db, args.outdb) out_db = FCSdatabase(db=args.outdb, rebuild=False) # Create query q = db.query(exporttype='dict_dict', getfiles=True, **vars(args)) n = 0 done = False for case, case_info in q.results.items(): for case_tube_idx, relpath in case_info.items(): log.info("Case: %s, Case_tube_idx: %s, File: %s" % (case, case_tube_idx, relpath)) filepath = path.join(args.dir, relpath) fFCS = FCS(filepath=filepath, case_tube_idx=case_tube_idx, import_dataframe=True) try: fFCS.comp_scale_FCS_data(compensation_file=comp_file, gate_coords=gate_coords, strict=False, auto_comp=False, **vars(args)) fFCS.extract_FCS_histostats() except: fFCS.flag = 'stats_extraction_fail' fFCS.error_message = str(sys.exc_info()[0]) fFCS.histostats_to_db(db=out_db) n += 1 if args.n is not None and n >= args.n: done = True break if done is True: break