def cohort_gene_search(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) sys.stderr.write("cohort_gene_search %s %s: starting ... \n" % (project.project_id, cohort.cohort_id)) form = api_forms.CohortGeneSearchForm(request.GET) if form.is_valid(): search_spec = form.cleaned_data['search_spec'] search_spec.cohort_id = cohort.cohort_id sys.stderr.write("cohort_gene_search %s %s: search spec: %s \n" % (project.project_id, cohort.cohort_id, str(search_spec.toJSON()))) genes = api_utils.calculate_cohort_gene_search(cohort, search_spec) sys.stderr.write("cohort_gene_search %s %s: get %s genes \n" % (project.project_id, cohort.cohort_id, len(genes))) search_hash = cache_utils.save_results_for_spec(project.project_id, search_spec.toJSON(), genes) api_utils.add_extra_info_to_genes(project, get_reference(), genes) sys.stderr.write("cohort_gene_search %s %s: done adding extra info \n" % (project.project_id, cohort.cohort_id)) return JSONResponse({ 'is_error': False, 'genes': genes, 'search_hash': search_hash, }) else: return JSONResponse({ 'is_error': True, 'error': server_utils.form_error_string(form) })
def cohort_variant_search(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) if not project.can_view(request.user): return PermissionDenied form = api_forms.CohortVariantSearchForm(request.GET) if form.is_valid(): search_spec = form.cleaned_data['search_spec'] search_spec.family_id = cohort.cohort_id sys.stderr.write("cohort_variant_search - starting: %s %s\n" % (json.dumps(search_spec.toJSON()), cohort.xfamily().family_id)) variants = api_utils.calculate_mendelian_variant_search(search_spec, cohort.xfamily()) list_of_variants = [v.toJSON() for v in variants] sys.stderr.write("cohort_variant_search - done calculate_mendelian_variant_search: %s %s %s\n" % (json.dumps(search_spec.toJSON()), cohort.xfamily().family_id, len(list_of_variants))) search_hash = cache_utils.save_results_for_spec(project.project_id, search_spec.toJSON(), list_of_variants) sys.stderr.write("cohort_variant_search - done save_results_for_spec: %s %s\n" % (json.dumps(search_spec.toJSON()), cohort.xfamily().family_id)) api_utils.add_extra_info_to_variants_cohort(get_reference(), cohort, variants) sys.stderr.write("cohort_variant_search - done add_extra_info_to_variants_cohort: %s %s\n" % (json.dumps(search_spec.toJSON()), cohort.xfamily().family_id)) return JSONResponse({ 'is_error': False, 'variants': [v.toJSON() for v in variants], 'search_hash': search_hash, }) else: return JSONResponse({ 'is_error': True, 'error': server_utils.form_error_string(form) })
def cohort_variant_search(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) if not project.can_view(request.user): return HttpResponse('unauthorized') form = api_forms.CohortVariantSearchForm(request.GET) if form.is_valid(): search_spec = form.cleaned_data['search_spec'] search_spec.family_id = cohort.cohort_id variants = api_utils.calculate_mendelian_variant_search(search_spec, cohort.xfamily()) search_hash = cache_utils.save_results_for_spec(project.project_id, search_spec.toJSON(), [v.toJSON() for v in variants]) api_utils.add_extra_info_to_variants_cohort(get_reference(), cohort, variants) return JSONResponse({ 'is_error': False, 'variants': [v.toJSON() for v in variants], 'search_hash': search_hash, }) else: return JSONResponse({ 'is_error': True, 'error': server_utils.form_error_string(form) })
def cohort_gene_search_spec(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) search_spec, genes = cache_utils.get_cached_results(project.project_id, request.GET.get('search_hash')) if genes is None: genes = api_utils.calculate_cohort_gene_search(cohort, search_spec) api_utils.add_extra_info_to_genes(project, get_reference(), genes) return JSONResponse({ 'is_error': False, 'genes': genes, 'search_spec': search_spec, })
def cohort_gene_search_variants(request): # TODO: this view not like the others - refactor to forms error = None project, cohort = get_project_and_cohort_for_user(request.user, request.GET) if not project.can_view(request.user): return PermissionDenied form = api_forms.CohortGeneSearchVariantsForm(request.GET) if form.is_valid(): gene_id = form.cleaned_data['gene_id'] inheritance_mode = form.cleaned_data['inheritance_mode'] variant_filter = form.cleaned_data['variant_filter'] quality_filter = form.cleaned_data['quality_filter'] else: error = server_utils.form_error_string(form) if not error: indivs_with_inheritance, gene_variation = cohort_search.get_individuals_with_inheritance_in_gene( get_datastore(project.project_id), get_reference(), cohort.xcohort(), inheritance_mode, gene_id, variant_filter=variant_filter, quality_filter=quality_filter ) relevant_variants = gene_variation.get_relevant_variants_for_indiv_ids(cohort.indiv_id_list()) api_utils.add_extra_info_to_variants_family(get_reference(), cohort, relevant_variants) ret = { 'is_error': False, 'variants': [v.toJSON() for v in relevant_variants], 'gene_info': get_reference().get_gene(gene_id), } return JSONResponse(ret) else: ret = { 'is_error': True, 'error': error } return JSONResponse(ret)
def cohort_gene_search_variants(request): # TODO: this view not like the others - refactor to forms error = None project, cohort = get_project_and_cohort_for_user(request.user, request.GET) if not project.can_view(request.user): return HttpResponse('unauthorized') form = api_forms.CohortGeneSearchVariantsForm(request.GET) if form.is_valid(): gene_id = form.cleaned_data['gene_id'] inheritance_mode = form.cleaned_data['inheritance_mode'] variant_filter = form.cleaned_data['variant_filter'] quality_filter = form.cleaned_data['quality_filter'] else: error = server_utils.form_error_string(form) if not error: indivs_with_inheritance, gene_variation = cohort_search.get_individuals_with_inheritance_in_gene( get_datastore(project.project_id), get_reference(), cohort.xcohort(), inheritance_mode, gene_id, variant_filter=variant_filter, quality_filter=quality_filter) relevant_variants = gene_variation.get_relevant_variants_for_indiv_ids( cohort.indiv_id_list()) api_utils.add_extra_info_to_variants_family(get_reference(), cohort, relevant_variants) ret = { 'is_error': False, 'variants': [v.toJSON() for v in relevant_variants], 'gene_info': get_reference().get_gene(gene_id), } return JSONResponse(ret) else: ret = {'is_error': True, 'error': error} return JSONResponse(ret)
def cohort_variant_search_spec(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) # TODO: use form search_spec_dict, variants = cache_utils.get_cached_results(project.project_id, request.GET.get('search_hash')) search_spec = MendelianVariantSearchSpec.fromJSON(search_spec_dict) if variants is None: variants = api_utils.calculate_mendelian_variant_search(search_spec, cohort.xfamily()) else: variants = [Variant.fromJSON(v) for v in variants] api_utils.add_extra_info_to_variants_cohort(get_reference(), cohort, variants) return JSONResponse({ 'is_error': False, 'variants': [v.toJSON() for v in variants], 'search_spec': search_spec.toJSON(), })
def cohort_gene_search(request): project, cohort = get_project_and_cohort_for_user(request.user, request.GET) form = api_forms.CohortGeneSearchForm(request.GET) if form.is_valid(): search_spec = form.cleaned_data['search_spec'] search_spec.cohort_id = cohort.cohort_id genes = api_utils.calculate_cohort_gene_search(cohort, search_spec) search_hash = cache_utils.save_results_for_spec(project.project_id, search_spec.toJSON(), genes) api_utils.add_extra_info_to_genes(project, get_reference(), genes) return JSONResponse({ 'is_error': False, 'genes': genes, 'search_hash': search_hash, }) else: return JSONResponse({ 'is_error': True, 'error': server_utils.form_error_string(form) })