def search_variants(request): """Handles requests to the /variants/search method""" conditional = validate_search_variants_request(request) if conditional: return conditional else: try: protocol_variable = json_format.Parse( request.body, variant_service.SearchVariantsRequest()) except Exception as e: return HttpResponseBadRequest(json.dumps( {"message": e.message.replace("\"", "'")}), content_type='application/json') variant_set_id = protocol_variable.variant_set_id reference_name = protocol_variable.reference_name start = protocol_variable.start end = protocol_variable.end page_size = protocol_variable.page_size page_token = protocol_variable.page_token if not page_size or page_size == 0: page_size = DEFAULT_PAGE_SIZE if not page_token: page_token = '0' response = variant_service.SearchVariantsResponse() variants = CurrentVariant.objects dataset_id, reference_genome = variant_set_id.split('-') if dataset_id != DATASET_ID: return HttpResponseBadRequest(json.dumps( ErrorMessages['variantSetId']), content_type='application/json') variants = range_filter(reference_genome, variants, reference_name, start, end) variants = ga4gh_brca_page(variants, int(page_size), int(page_token)) ga_variants = [] for i in variants.values(): try: ga_variants.append(brca_to_ga4gh(i, reference_genome)) except ValueError as e: print e if len(ga_variants) > page_size: ga_variants.pop() page_token = str(1 + int(page_token)) response.next_page_token = page_token response.variants.extend(ga_variants) resp = json_format.MessageToDict(response, True) return JsonResponse(resp)
def search_variants(request): """Handles requests to the /variants/search method""" conditional = validate_search_variants_request(request) if conditional: return conditional else: try: protocol_variable = json_format.Parse(request.body, variant_service.SearchVariantsRequest()) except Exception as e: return HttpResponseBadRequest(json.dumps({"message": e.message.replace("\"", "'")}), content_type='application/json') variant_set_id = protocol_variable.variant_set_id reference_name = protocol_variable.reference_name start = protocol_variable.start end = protocol_variable.end page_size = protocol_variable.page_size page_token = protocol_variable.page_token if not page_size or page_size == 0: page_size = DEFAULT_PAGE_SIZE if not page_token: page_token = '0' response = variant_service.SearchVariantsResponse() variants = CurrentVariant.objects dataset_id, reference_genome = variant_set_id.split('-') if dataset_id != DATASET_ID: return HttpResponseBadRequest( json.dumps(ErrorMessages['variantSetId']), content_type='application/json') variants = range_filter(reference_genome, variants, reference_name, start, end) variants = ga4gh_brca_page(variants, int(page_size), int(page_token)) ga_variants = [brca_to_ga4gh(i, reference_genome) for i in variants.values()] if len(ga_variants) > page_size: ga_variants.pop() page_token = str(1 + int(page_token)) response.next_page_token = page_token response.variants.extend(ga_variants) resp = json_format.MessageToDict(response, True) return JsonResponse(resp)