def info(sample_set_id): sample_type = db.sample_set[request.vars["id"]].sample_type if sample_type == "patient" : patient = db((db.patient.sample_set_id == request.vars["id"])).select()[0] name = vidjil_utils.anon_names(patient.id, patient.first_name, patient.last_name) return dict(name = name, filename = name, label = patient.id_label + " (" + str(patient.birth) + ")", info = patient.info ) if sample_type == "run" : run = db((db.run.sample_set_id == request.vars["id"])).select()[0] return dict(name = "run : " + run.name + " (" + str(run.run_date) + ")", filename = "run : " + run.name + "_" + str(run.run_date), label = run.id_label + " (" + str(run.run_date) + ")", info = run.info ) return dict(name = "sample_set : " +db.sample_set[request.vars["id"]].sample_type, filename = "sample_set_" + request.vars["id"], label = "", info = "" )
def info(): next_patient() patient = db.patient[request.vars["id"]] sample_set_id = patient.sample_set_id if request.vars["config_id"] and request.vars["config_id"] != "-1" and request.vars["config_id"] != "None": config_id = long(request.vars["config_id"]) patient_name = vidjil_utils.anon_names(patient.id, patient.first_name, patient.last_name) config_name = db.config[request.vars["config_id"]].name fused = db((db.fused_file.sample_set_id == sample_set_id) & (db.fused_file.config_id == config_id)) analysis = db(db.analysis_file.sample_set_id == sample_set_id).select(orderby=~db.analysis_file.analyze_date) config = True fused_count = fused.count() fused_file = fused.select() fused_filename = patient_name + "_" + config_name + ".data" analysis_count = len(analysis) analysis_file = analysis analysis_filename = patient_name + ".analysis" else: config_id = -1 config = False fused_count = 0 fused_file = "" fused_filename = "" analysis_count = 0 analysis_file = "" analysis_filename = "" if config: query = [] query2 = db( (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.sample_set_membership.sample_set_id == db.patient.sample_set_id) & (db.patient.id == request.vars["id"]) ).select( left=db.results_file.on( (db.results_file.sequence_file_id == db.sequence_file.id) & (db.results_file.config_id == str(config_id)) ), orderby=db.sequence_file.id | ~db.results_file.run_date, ) previous = -1 for row in query2: if row.sequence_file.id != previous: query.append(row) previous = row.sequence_file.id else: query = db( (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.sample_set_membership.sample_set_id == db.patient.sample_set_id) & (db.patient.id == request.vars["id"]) ).select( left=db.results_file.on( (db.results_file.sequence_file_id == db.sequence_file.id) & (db.results_file.config_id == str(config_id)) ) ) log.debug("patient (%s)" % request.vars["id"]) if auth.can_view_patient(request.vars["id"]): return dict( query=query, patient=patient, birth=vidjil_utils.anon_birth(request.vars["id"], auth.user.id), config_id=config_id, fused_count=fused_count, fused_file=fused_file, fused_filename=fused_filename, analysis_count=analysis_count, analysis_file=analysis_file, analysis_filename=analysis_filename, config=config, ) else: res = {"message": ACCESS_DENIED} log.error(res) return gluon.contrib.simplejson.dumps(res, separators=(",", ":"))
def get_name(self, data, anon=None): return vidjil_utils.anon_names(data['sample_set_id'], data['first_name'], data['last_name'], anon)
def custom(): start = time.time() if request.vars["config_id"] and request.vars["config_id"] != "-1" : config_id = long(request.vars["config_id"]) config_name = db.config[request.vars["config_id"]].name config = True else: request.vars["config_id"] = -1 config_id = -1 config_name = None config = False if "custom_list" not in request.vars : request.vars["custom_list"] = [] if type(request.vars["custom_list"]) is str : request.vars["custom_list"] = [request.vars["custom_list"]] myGroupBy = None helper = None if request.vars["id"] and auth.can_view_sample_set(request.vars["id"]): sample_set = db.sample_set[request.vars["id"]] factory = ModelFactory() helper = factory.get_instance(type=sample_set.sample_type) q = ((auth.vidjil_accessible_query(PermissionEnum.read_config.value, db.config)) & (db.sample_set.id == request.vars["id"]) & (db.sample_set_membership.sample_set_id == db.sample_set.id) & (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.results_file.sequence_file_id==db.sequence_file.id) & (db.results_file.data_file != '') & (db.config.id==db.results_file.config_id) ) else: q = ((auth.vidjil_accessible_query(PermissionEnum.read.value, db.patient) | auth.vidjil_accessible_query(PermissionEnum.read.value, db.run) | auth.vidjil_accessible_query(PermissionEnum.read.value, db.generic)) & (auth.vidjil_accessible_query(PermissionEnum.read_config.value, db.config)) & (db.sample_set_membership.sample_set_id == db.sample_set.id) & (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.results_file.sequence_file_id==db.sequence_file.id) & (db.results_file.data_file != '') & (db.config.id==db.results_file.config_id) ) myGroupBy = db.sequence_file.id|db.patient.id|db.run.id|db.generic.id|db.results_file.config_id query = db(q).select( db.patient.id, db.patient.info, db.patient.first_name, db.patient.last_name, db.run.id, db.run.info, db.run.name, db.generic.id, db.generic.info, db.generic.name, db.results_file.id, db.results_file.config_id, db.sequence_file.sampling_date, db.sequence_file.pcr, db.config.name, db.results_file.run_date, db.results_file.data_file, db.sequence_file.filename, db.sequence_file.data_file, db.sequence_file.id, db.sequence_file.info, db.sequence_file.size_file, left = [ db.patient.on(db.patient.sample_set_id == db.sample_set.id), db.run.on(db.run.sample_set_id == db.sample_set.id), db.generic.on(db.generic.sample_set_id == db.sample_set.id) ], orderby = db.sequence_file.id|db.results_file.run_date, groupby = myGroupBy ) ##filter if "filter" not in request.vars : request.vars["filter"] = "" for row in query : row.checked = False if (str(row.results_file.id) in request.vars["custom_list"]) : row.checked = True if row.patient.id is not None: row.names = vidjil_utils.anon_names(row.patient.id, row.patient.first_name, row.patient.last_name) info = row.patient.info elif row.run.id is not None: row.names = row.run.name info = row.run.info elif row.generic.id is not None: row.names = row.generic.name info = row.generic.info row.string = [row.names, row.sequence_file.filename, str(row.sequence_file.sampling_date), str(row.sequence_file.pcr), str(row.config.name), str(row.results_file.run_date), info] query = query.find(lambda row : ( vidjil_utils.advanced_filter(row.string,request.vars["filter"]) or row.checked) ) if config : query = query.find(lambda row : ( row.results_file.config_id==config_id or (str(row.results_file.id) in request.vars["custom_list"])) ) log.debug("sample_set/custom (%.3fs) %s" % (time.time()-start, request.vars["filter"])) return dict(query=query, config_id=config_id, config=config, helper=helper)
def get_name(self, data, anon=None): return vidjil_utils.anon_names(data.id, data.first_name, data.last_name, anon)
def info(): next_patient() patient = db.patient[request.vars["id"]] sample_set_id = patient.sample_set_id if request.vars["config_id"] and request.vars[ "config_id"] != "-1" and request.vars["config_id"] != "None": config_id = long(request.vars["config_id"]) patient_name = vidjil_utils.anon_names(patient.id, patient.first_name, patient.last_name) config_name = db.config[request.vars["config_id"]].name fused = db((db.fused_file.sample_set_id == sample_set_id) & (db.fused_file.config_id == config_id)) analysis = db(db.analysis_file.sample_set_id == sample_set_id).select( orderby=~db.analysis_file.analyze_date) config = True fused_count = fused.count() fused_file = fused.select() fused_filename = patient_name + "_" + config_name + ".data" analysis_count = len(analysis) analysis_file = analysis analysis_filename = patient_name + ".analysis" else: config_id = -1 config = False fused_count = 0 fused_file = "" fused_filename = "" analysis_count = 0 analysis_file = "" analysis_filename = "" if config: query = [] query2 = db( (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.sample_set_membership.sample_set_id == db.patient.sample_set_id) & (db.patient.id == request.vars["id"])).select( left=db.results_file.on( (db.results_file.sequence_file_id == db.sequence_file.id) & (db.results_file.config_id == str(config_id))), orderby=db.sequence_file.id | ~db.results_file.run_date) previous = -1 for row in query2: if row.sequence_file.id != previous: query.append(row) previous = row.sequence_file.id else: query = db( (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.sample_set_membership.sample_set_id == db.patient.sample_set_id) & (db.patient.id == request.vars["id"])).select( left=db.results_file.on( (db.results_file.sequence_file_id == db.sequence_file.id) & (db.results_file.config_id == str(config_id)))) log.debug('patient (%s)' % request.vars["id"]) if (auth.can_view('patient', request.vars["id"])): return dict(query=query, patient=patient, birth=vidjil_utils.anon_birth(request.vars["id"], auth.user.id), config_id=config_id, fused_count=fused_count, fused_file=fused_file, fused_filename=fused_filename, analysis_count=analysis_count, analysis_file=analysis_file, analysis_filename=analysis_filename, config=config) else: res = {"message": ACCESS_DENIED} log.error(res) return gluon.contrib.simplejson.dumps(res, separators=(',', ':'))
def custom(): start = time.time() if request.vars["config_id"] and request.vars["config_id"] != "-1" : config_id = long(request.vars["config_id"]) config_name = db.config[request.vars["config_id"]].name config = True else: request.vars["config_id"] = -1 config_id = -1 config_name = None config = False if "custom_list" not in request.vars : request.vars["custom_list"] = [] if type(request.vars["custom_list"]) is str : request.vars["custom_list"] = [request.vars["custom_list"]] myGroupBy = None if request.vars["id"] and auth.can_view_sample_set(request.vars["id"]): q = ((auth.vidjil_accessible_query(PermissionEnum.read_config.value, db.config)) & (db.sample_set.id == request.vars["id"]) & (db.sample_set_membership.sample_set_id == db.sample_set.id) & (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.results_file.sequence_file_id==db.sequence_file.id) & (db.results_file.data_file != '') & (db.config.id==db.results_file.config_id) ) else: q = ((auth.vidjil_accessible_query(PermissionEnum.read.value, db.patient) | auth.vidjil_accessible_query(PermissionEnum.read.value, db.run)) & (auth.vidjil_accessible_query(PermissionEnum.read_config.value, db.config)) & (db.sample_set_membership.sample_set_id == db.sample_set.id) & (db.sequence_file.id == db.sample_set_membership.sequence_file_id) & (db.results_file.sequence_file_id==db.sequence_file.id) & (db.results_file.data_file != '') & (db.config.id==db.results_file.config_id) ) myGroupBy = db.sequence_file.id|db.patient.id|db.run.id|db.results_file.config_id query = db(q).select( db.patient.id, db.patient.info, db.patient.first_name, db.patient.last_name, db.run.id, db.run.info, db.run.name, db.results_file.id, db.results_file.config_id, db.sequence_file.sampling_date, db.sequence_file.pcr, db.config.name, db.results_file.run_date, db.results_file.data_file, db.sequence_file.filename, db.sequence_file.data_file, db.sequence_file.id, db.sequence_file.info, db.sequence_file.size_file, left = [ db.patient.on(db.patient.sample_set_id == db.sample_set.id), db.run.on(db.run.sample_set_id == db.sample_set.id) ], orderby = ~db.patient.id|db.sequence_file.id|db.results_file.run_date, groupby = myGroupBy ) ##filter if "filter" not in request.vars : request.vars["filter"] = "" for row in query : row.checked = False if (str(row.results_file.id) in request.vars["custom_list"]) : row.checked = True if row.patient.id is not None: row.names = vidjil_utils.anon_names(row.patient.id, row.patient.first_name, row.patient.last_name) info = row.patient.info else: row.names = row.run.name info = row.run.info row.string = [row.names, row.sequence_file.filename, str(row.sequence_file.sampling_date), str(row.sequence_file.pcr), str(row.config.name), str(row.results_file.run_date), info] query = query.find(lambda row : ( vidjil_utils.advanced_filter(row.string,request.vars["filter"]) or row.checked) ) if config : query = query.find(lambda row : ( row.results_file.config_id==config_id or (str(row.results_file.id) in request.vars["custom_list"])) ) log.debug("sample_set/custom (%.3fs) %s" % (time.time()-start, request.vars["filter"])) return dict(query=query, config_id=config_id, config=config)