def diagnostic_search(request): project, family = utils.get_project_and_family_for_user(request.user, request.GET) if not project.can_view(request.user): raise PermissionDenied form = api_forms.DiagnosticSearchForm(family, request.GET) if form.is_valid(): search_spec = form.cleaned_data['search_spec'] search_spec.family_id = family.family_id gene_list = form.cleaned_data['gene_list'] diagnostic_info_list = [] for gene_id in gene_list.gene_id_list(): diagnostic_info = get_gene_diangostic_info(family, gene_id, search_spec.variant_filter) add_extra_info_to_variants_family(get_reference(), family, diagnostic_info._variants) diagnostic_info_list.append(diagnostic_info) return JSONResponse({ 'is_error': False, 'gene_diagnostic_info_list': [d.toJSON() for d in diagnostic_info_list], 'gene_list_info': gene_list.toJSON(details=True), 'data_summary': family.get_data_summary(), }) else: return JSONResponse({ 'is_error': True, 'error': server_utils.form_error_string(form) })
def family_gene_lookup(request): project, family = utils.get_project_and_family_for_user(request.user, request.GET) if not project.can_view(request.user): raise PermissionDenied gene_id = request.GET.get('gene_id') if not get_reference().is_valid_gene_id(gene_id): return JSONResponse({ 'is_error': True, 'error': 'Invalid gene', }) family_gene_data = get_gene_diangostic_info(family, gene_id) add_extra_info_to_variants_family(get_reference(), family, family_gene_data._variants) return JSONResponse({ 'is_error': False, 'family_gene_data': family_gene_data.toJSON(), 'data_summary': family.get_data_summary(), 'gene': get_reference().get_gene(gene_id), })