KarrLab/datanator_rest_api

View on GitHub
datanator_rest_api/routes/ftx.py

Summary

Maintainability
A
2 hrs
Test Coverage
F
54%
""" Full text search
perform full text search

:Author: Zhouyang Lian < zhouyang.lian@familian.life >
:Date: 2019-10-20
:Copyright: 2019, Karr Lab
:License: MIT
"""
from datanator_query_python.config import query_manager


f_manager = query_manager.FtxManager().ftx_manager()

class text_search:

    def get(query_message, index, from_, size, fields, _source_includes=[]):
        r = f_manager.simple_query_string(query_message, index, from_=from_, 
                                          size=size, fields=fields, _source_includes=_source_includes)
        return r


    class indices_in_page:
        
        def get(query_message, iof, index, from_, size, fields):
            r = f_manager.simple_query_string(query_message, index, from_=from_, 
                                              size=size, fields=fields)
            result = f_manager.get_index_in_page(r, iof)
            return result

    
    class num_of_index:

        def get(query_message, index, from_, size, fields,
                includes, excludes):
            print(includes)
            r = f_manager.get_single_index_count(query_message, index, size,
                                                 fields=fields, from_=from_,
                                                 includes=includes, excludes=excludes)
            return r


    class frontend_num_of_index:

        def get(query_message, indices, size, fields, from_=0):
            result = []
            indices = indices.split(',')
            r = {}
            for index in indices:
                if index == 'protein' or index == 'rna':
                    r = f_manager.get_index_ko_count(query_message, size,
                                                     index=index, fields=fields, from_=from_)
                else:
                    r = f_manager.get_single_index_count(query_message, index, size,
                                                         fields=fields)
                result.append(r)
            return result


    class gene_ranked_by_ko:

        def get(query_message, from_, size, fields=['*']):
            r = f_manager.get_genes_orthodb_count(query_message, size,
                                                  fields=fields, from_=from_)
            return r