예제 #1
0
def test_search_bool_term():
    concepts = []
    bool_term = {}
    bool_term[TERM_FIELD] = TERM_VALUE
    search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                          semanticType=SEMTYPE)
    concepts.append(search_concept)
    date_range = wh.Range(begin=RANGE_BEGIN, end=RANGE_END)
    range_map = {}
    range_map[RANGE_FIELD] = date_range
    query = wh.Query(concepts=concepts, date_range=range_map, boolTerm=bool_term)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #2
0
def test_search_keyword():
    phrase = 'COPD AND (smoker OR smoking)'
    operands = []
    copd_operand = {}
    copd_operand['ontology'] = 'text'
    copd_operand['operandName'] = 'COPD'
    copd_operand['text'] = 'COPD'
    operands.append(copd_operand)
    smoker_operand = {}
    smoker_operand['ontology'] = 'text'
    smoker_operand['operandName'] = 'smoker'
    smoker_operand['text'] = 'smoker'
    operands.append(smoker_operand)
    smoking_operand = {}
    smoking_operand['ontology'] = 'text'
    smoking_operand['operandName'] = 'smoking'
    smoking_operand['text'] = 'smoking'
    operands.append(smoking_operand)
    query = wh.Query(boolExpression=phrase, concepts=operands)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #3
0
def test_search_multiple_concepts():
    concepts = []
    search_concept1 = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                           semanticType=SEMTYPE)
    concepts.append(search_concept1)
    search_concept2 = wh.SearchableConcept(cui=SECOND_CUI, ontology=ONTOLOGY, rank='10',
                                           semanticType=SECOND_SEMTYPE)
    concepts.append(search_concept2)
    query = wh.Query(concepts=concepts)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #4
0
def test_search_returns_attributes():
    attributes = wh.Attributes()
    returns = wh.ReturnsModel(None, None, None, attributes)
    response = IML_TEST.search(CORPUS, returns, query=None)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_attributes = search_model.attributes
    for attribute in result_attributes:
        assert attribute.attribute_id is not None
        assert attribute.count > 0
예제 #5
0
def test_search_returns_typeahead():
    type_list = []
    type_list.append(SEMTYPE)
    typeahead = wh.Typeahead(ONTOLOGY, "hear", type_list, 5, True)
    returns = wh.ReturnsModel(typeahead=typeahead)
    response = IML_TEST.search(CORPUS, returns, query=None)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_typehead = search_model.typeahead
    for concept in result_typehead:
        assert concept.cui is not None
예제 #6
0
def test_search_returns_passages():
    concepts = []
    search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                          semanticType=SEMTYPE)
    concepts.append(search_concept)
    query = wh.Query(concepts=concepts)
    documents = wh.Documents("10", "0")
    matches = [search_concept]
    passages = wh.Passages(concepts_to_highlight=matches, limit=3, search_tag_begin='<search_span>',
                           search_tag_end='</search_span>', related_tag_begin='<related_span>',
                           related_tag_end='</related_tag_end>', min_score='0.1')
    returns = wh.ReturnsModel(documents, passages=passages)
예제 #7
0
def test_search_returns_concepts():
    title = wh.Title(0)
    concepts = []
    search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                          semanticType=SEMTYPE)
    concepts.append(search_concept)
    query = wh.Query(title=title, concepts=concepts)
    cooccurring_concepts = wh.Concepts(ONTOLOGY, 20)
    returns = wh.ReturnsModel(None, cooccurring_concepts)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_concepts = search_model.concepts
    for concept in result_concepts:
        assert concept.cui is not None
예제 #8
0
def test_search_sorted_results():
    concepts = []
    search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                          semanticType=SEMTYPE)
    concepts.append(search_concept)
    query = wh.Query(concepts=concepts)
    metadata = []
    metadata.append("abstract")
    metadata.append(SORT_FIELD)
    sort_entries = []
    order = wh.Order('ASC')
    sort = wh.SortEntry(SORT_FIELD, order)
    sort_entries.append(sort)
    documents = wh.Documents("10", "0", metadata, None, sort=sort_entries)
    returns = wh.ReturnsModel(documents)
예제 #9
0
def test_returns_aggregations():
    agg_map = {}
    aggregations = wh.Aggregations(limit=VALID_LIMIT)
    authors = {}
    authors['limit'] = 20
    agg_map['authors'] = aggregations
    returns = wh.ReturnsModel(aggregations=agg_map)
    response = IML_TEST.search(CORPUS, returns, query=None)
    search_model = wh.SearchModel._from_dict(response.get_result())
    results_aggregations = search_model.aggregations
    for key in results_aggregations:
        aggregations = results_aggregations[key]
        for aggregation in aggregations:
            agg = wh.AggregationModel._from_dict(aggregation)
            assert agg.name is not None
            assert agg.document_count > 0
예제 #10
0
def test_search_bool_regexp():
    bool_regexp = {}
    bool_regexp['title'] = BOOLEAN_REGEX
    query = wh.Query(boolRegexp=bool_regexp)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #11
0
def test_search_boolean_phrase():
    concepts = []
    phrase = BOOL_PHRASE
    query = wh.Query(boolExpression=phrase, concepts=concepts)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #12
0
def test_search_regexp():
    regexps = []
    regexp = {}
    regexp[REGEX_FIELD] = REGEX
    regexps.append(regexp)
    query = wh.Query(regexp=regexps)
    documents = wh.Documents("10", "0")
    returns = wh.ReturnsModel(documents)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
예제 #13
0
def test_returns_date_histogram():
    concepts = []
    search_concept = wh.SearchableConcept(cui=CUI, ontology=ONTOLOGY, rank='10',
                                          semanticType=SEMTYPE)
    concepts.append(search_concept)
    query = wh.Query(concepts=concepts)
    date_histogram = wh.DateHistograms(interval='1y')
    metadata = []
    metadata.append("abstract")
    metadata.append(RANGE_FIELD)
    histogram_map = {}
    histogram_map[RANGE_FIELD] = date_histogram
    documents = wh.Documents(limit="10", offset="0", metadata=metadata)
    returns = wh.ReturnsModel(documents, None, None, None, None, None, None, None, histogram_map)
    response = IML_TEST.search(corpus=CORPUS, query=query, returns=returns)
    search_model = wh.SearchModel._from_dict(response.get_result())
    result_documents = search_model.documents
    for ranked_doc in result_documents:
        assert ranked_doc.document_id is not None
        assert ranked_doc.metadata is not None
        for key in ranked_doc.metadata:
            assert key is not None
            assert ranked_doc.metadata[key] is not None
        assert ranked_doc.corpus == CORPUS
        assert ranked_doc.links is not None
        doc_links = ranked_doc.links
        assert doc_links.href_search_matches is not None
        assert doc_links.href_categories is not None
    result_histograms = search_model.date_histograms
    for histogram_key in result_histograms:
        years_and_hits = result_histograms[histogram_key]
        for year in years_and_hits:
            year_date = wh.YearAndHits()
            year_and_hits = year_date._from_dict(year)
            assert year_and_hits.date is not None
            assert year_and_hits.hits > -1
예제 #14
0
def test_search_no_corpus():
    try:
        returns = wh.ReturnsModel()
        IML_TEST.search(None, returns)
    except ValueError as exp:
        assert exp is not None