def test_custom_gene_list_with_lc_results(self): db = create_db_connection(TestWithPostgres.config.dbconfig) custom_list_key = save_custom_file(db, 'john', GENE_LIST_TYPE, "ddx11l1") params = { SearchArgs.GENE_LIST: CUSTOM_GENE_LIST, SearchArgs.CUSTOM_LIST_DATA: custom_list_key, SearchArgs.CUSTOM_GENE_SEARCH_TYPE: CUSTOM_GENE_NAME_TYPE, SearchArgs.MODEL: "E2F1_0001(JS)", SearchArgs.UPSTREAM: "100", SearchArgs.DOWNSTREAM: "100", SearchArgs.PAGE: "1", SearchArgs.PER_PAGE: "10", } predictions, search_args, search_warning = get_predictions_with_guess(db, TestWithPostgres.config, "hg19", params) self.assertEqual(len(predictions), 1)
def test_custom_range_list(self): db = create_db_connection(TestWithPostgres.config.dbconfig) custom_list_key = save_custom_file(db, 'john', RANGE_TYPE, "chr1 11873 11895") params = { SearchArgs.GENE_LIST: CUSTOM_RANGES_LIST, SearchArgs.CUSTOM_LIST_DATA: custom_list_key, SearchArgs.MODEL: "E2F1_0001(JS)", SearchArgs.UPSTREAM: "100", SearchArgs.DOWNSTREAM: "100", SearchArgs.PAGE: "1", SearchArgs.PER_PAGE: "10", } predictions, search_args, search_warning = get_predictions_with_guess(db, TestWithPostgres.config, "hg19", params) self.assertEqual(len(predictions), 1) self.assertEqual(0.4, float(predictions[0]['max']))
def test_custom_range_list_bad_range(self): db = create_db_connection(TestWithPostgres.config.dbconfig) custom_list_key = save_custom_file(db, 'john', RANGE_TYPE, "chr1 91873 91883") params = { SearchArgs.GENE_LIST: CUSTOM_RANGES_LIST, SearchArgs.CUSTOM_LIST_DATA: custom_list_key, SearchArgs.MODEL: "E2F1_0001(JS)", SearchArgs.UPSTREAM: "100", SearchArgs.DOWNSTREAM: "100", SearchArgs.PAGE: "1", SearchArgs.PER_PAGE: "10", } predictions, search_args, search_warning = get_predictions_with_guess(db, TestWithPostgres.config, "hg19", params) self.assertEqual(len(predictions), 1) # we always return a record for range requests just with empty data for the matches self.assertEqual('None', predictions[0]['max'])
def test_prediction_query(self): db = create_db_connection(TestWithPostgres.config.dbconfig) params = { SearchArgs.GENE_LIST: "knowngene", SearchArgs.MODEL: "E2F1_0001(JS)", SearchArgs.UPSTREAM: "100", SearchArgs.DOWNSTREAM: "50", SearchArgs.PAGE: "1", SearchArgs.PER_PAGE: "10", } predictions, search_args, search_warning = get_predictions_with_guess(db, TestWithPostgres.config, "hg19", params) self.assertEqual(len(predictions), 1) first_pred = predictions[0] self.assertEqual(first_pred['name'], 'uc001aaa.3; uc010nxq.1; uc010nxr.1') values = first_pred['values'] self.assertEqual(len(values), 3) pred_value_set = set([v['value'] for v in values]) self.assertIn(0.4, pred_value_set) self.assertIn(0.1, pred_value_set)
def prediction_search(genome): log_info("Finding predictions.") predictions, args, warning = get_predictions_with_guess(get_db(), g_config, genome, request.args) response_format = args.get_format() if response_format == 'json': r = make_json_response({ 'predictions': predictions, 'page': args.page, 'warning': warning, }) elif response_format == 'tsv' or response_format == 'csv': filename = make_download_filename(genome, args, response_format) content_disposition = 'attachment; filename="{}"'.format(filename) headers = {'Content-Disposition': content_disposition} gen = make_predictions_csv_response(predictions, args) r = Response(gen, mimetype='application/octet-stream', headers=headers) else: raise ValueError("Unexpected format:{}".format(response_format)) log_info("Returning predictions.") return r
def prediction_search(genome): log_info("Finding predictions.") predictions, args, warning = get_predictions_with_guess( get_db(), g_config, genome, request.args) response_format = args.get_format() if response_format == 'json': r = make_json_response({ 'predictions': predictions, 'page': args.page, 'warning': warning, }) elif response_format == 'tsv' or response_format == 'csv': filename = make_download_filename(genome, args, response_format) content_disposition = 'attachment; filename="{}"'.format(filename) headers = {'Content-Disposition': content_disposition} gen = make_predictions_csv_response(predictions, args) r = Response(gen, mimetype='application/octet-stream', headers=headers) else: raise ValueError("Unexpected format:{}".format(response_format)) log_info("Returning predictions.") return r
def test_custom_gene_list_id_results(self): """ These two splice variants belong to the same gene so they should list together in a single prediction. """ db = create_db_connection(TestWithPostgres.config.dbconfig) custom_list_key = save_custom_file(db, 'john', GENE_LIST_TYPE, "uc001aaa.3\nuc010nxr.1") params = { SearchArgs.GENE_LIST: CUSTOM_GENE_LIST, SearchArgs.CUSTOM_LIST_DATA: custom_list_key, SearchArgs.CUSTOM_GENE_SEARCH_TYPE: CUSTOM_ID_TYPE, SearchArgs.MODEL: "E2F1_0001(JS)", SearchArgs.UPSTREAM: "100", SearchArgs.DOWNSTREAM: "100", SearchArgs.PAGE: "1", SearchArgs.PER_PAGE: "10", } predictions, search_args, search_warning = get_predictions_with_guess(db, TestWithPostgres.config, "hg19", params) self.assertEqual(len(predictions), 1) first_pred_name = predictions[0]['name'] first_pred_name_parts = first_pred_name.split("; ") self.assertEqual(len(first_pred_name_parts), 2) self.assertIn("uc001aaa.3", first_pred_name_parts) self.assertIn("uc010nxr.1", first_pred_name_parts)